Project import generated by Copybara.

GitOrigin-RevId: 83cbad92d73216bb0d9187c56cce0b91f9121d5a
This commit is contained in:
Default email 2020-12-07 07:45:13 +00:00
parent 5a70ea48eb
commit 78efc47b99
758 changed files with 17888 additions and 5784 deletions

View file

@ -1,6 +1,6 @@
# Emacs {#sec-emacs} # Emacs {#sec-emacs}
## Configuring Emacs ## Configuring Emacs {#sec-emacs-config}
The Emacs package comes with some extra helpers to make it easier to configure. `emacsWithPackages` allows you to manage packages from ELPA. This means that you will not have to install that packages from within Emacs. For instance, if you wanted to use `company` `counsel`, `flycheck`, `ivy`, `magit`, `projectile`, and `use-package` you could use this as a `~/.config/nixpkgs/config.nix` override: The Emacs package comes with some extra helpers to make it easier to configure. `emacsWithPackages` allows you to manage packages from ELPA. This means that you will not have to install that packages from within Emacs. For instance, if you wanted to use `company` `counsel`, `flycheck`, `ivy`, `magit`, `projectile`, and `use-package` you could use this as a `~/.config/nixpkgs/config.nix` override:

View file

@ -1,4 +1,4 @@
# Firefox # Firefox {#sec-firefox}
## Build wrapped Firefox with extensions and policies ## Build wrapped Firefox with extensions and policies
@ -7,7 +7,7 @@ The `wrapFirefox` function allows to pass policies, preferences and extension th
```nix ```nix
{ {
myFirefox = wrapFirefox firefox-unwrapped { myFirefox = wrapFirefox firefox-unwrapped {
extraExtensions = [ nixExtensions = [
(fetchFirefoxAddon { (fetchFirefoxAddon {
name = "ublock"; name = "ublock";
url = "https://addons.mozilla.org/firefox/downloads/file/3679754/ublock_origin-1.31.0-an+fx.xpi"; url = "https://addons.mozilla.org/firefox/downloads/file/3679754/ublock_origin-1.31.0-an+fx.xpi";
@ -38,3 +38,12 @@ The `wrapFirefox` function allows to pass policies, preferences and extension th
}; };
} }
``` ```
If `nixExtensions != null` then all manually installed addons will be uninstalled from your browser profile.
To view available enterprise policies visit [enterprise policies](https://github.com/mozilla/policy-templates#enterprisepoliciesenabled)
or type into the Firefox url bar: `about:policies#documentation`.
Nix installed addons do not have a valid signature, which is why signature verification is disabled. This does not compromise security because downloaded addons are checksumed and manual addons can't be installed.
## Troubleshooting {#sec-firefox-troubleshooting}
If addons do not appear installed although they have been defined in your nix configuration file reset the local addon state of your Firefox profile by clicking `help -> restart with addons disabled -> restart -> refresh firefox`. This can happen if you switch from manual addon mode to nix addon mode and then back to manual mode and then again to nix addon mode.

View file

@ -17,10 +17,10 @@
<xi:include href="locales.xml" /> <xi:include href="locales.xml" />
<xi:include href="nginx.section.xml" /> <xi:include href="nginx.section.xml" />
<xi:include href="opengl.section.xml" /> <xi:include href="opengl.section.xml" />
<xi:include href="shell-helpers.xml" /> <xi:include href="shell-helpers.section.xml" />
<xi:include href="steam.xml" /> <xi:include href="steam.xml" />
<xi:include href="cataclysm-dda.section.xml" /> <xi:include href="cataclysm-dda.section.xml" />
<xi:include href="urxvt.xml" /> <xi:include href="urxvt.section.xml" />
<xi:include href="weechat.section.xml" /> <xi:include href="weechat.section.xml" />
<xi:include href="xorg.section.xml" /> <xi:include href="xorg.section.xml" />
</chapter> </chapter>

View file

@ -0,0 +1,12 @@
# Interactive shell helpers {#sec-shell-helpers}
Some packages provide the shell integration to be more useful. But unlike other systems, nix doesn't have a standard `share` directory location. This is why a bunch `PACKAGE-share` scripts are shipped that print the location of the corresponding shared folder. Current list of such packages is as following:
- `fzf` : `fzf-share`
E.g. `fzf` can then used in the `.bashrc` like this:
```bash
source "$(fzf-share)/completion.bash"
source "$(fzf-share)/key-bindings.bash"
```

View file

@ -1,21 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-shell-helpers">
<title>Interactive shell helpers</title>
<para>
Some packages provide the shell integration to be more useful. But unlike other systems, nix doesn't have a standard share directory location. This is why a bunch <command>PACKAGE-share</command> scripts are shipped that print the location of the corresponding shared folder. Current list of such packages is as following:
<itemizedlist>
<listitem>
<para>
<literal>fzf</literal>: <command>fzf-share</command>
</para>
</listitem>
</itemizedlist>
E.g. <literal>fzf</literal> can then used in the .bashrc like this:
<screen>
source "$(fzf-share)/completion.bash"
source "$(fzf-share)/key-bindings.bash"
</screen>
</para>
</section>

View file

@ -0,0 +1,71 @@
# Urxvt {#sec-urxvt}
Urxvt, also known as rxvt-unicode, is a highly customizable terminal emulator.
## Configuring urxvt {#sec-urxvt-conf}
In `nixpkgs`, urxvt is provided by the package `rxvt-unicode`. It can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, use an overlay or directly install an expression that overrides its configuration, such as
```nix
rxvt-unicode.override {
configure = { availablePlugins, ... }: {
plugins = with availablePlugins; [ perls resize-font vtwheel ];
};
}
```
If the `configure` function returns an attrset without the `plugins` attribute, `availablePlugins` will be used automatically.
In order to add plugins but also keep all default plugins installed, it is possible to use the following method:
```nix
rxvt-unicode.override {
configure = { availablePlugins, ... }: {
plugins = (builtins.attrValues availablePlugins) ++ [ custom-plugin ];
};
}
```
To get a list of all the plugins available, open the Nix REPL and run
```ShellSession
$ nix repl
:l <nixpkgs>
map (p: p.name) pkgs.rxvt-unicode.plugins
```
Alternatively, if your shell is bash or zsh and have completion enabled, simply type `nixpkgs.rxvt-unicode.plugins.<tab>`.
In addition to `plugins` the options `extraDeps` and `perlDeps` can be used to install extra packages. `extraDeps` can be used, for example, to provide `xsel` (a clipboard manager) to the clipboard plugin, without installing it globally:
```nix
rxvt-unicode.override {
configure = { availablePlugins, ... }: {
pluginsDeps = [ xsel ];
};
}
```
`perlDeps` is a handy way to provide Perl packages to your custom plugins (in `$HOME/.urxvt/ext`). For example, if you need `AnyEvent` you can do:
```nix
rxvt-unicode.override {
configure = { availablePlugins, ... }: {
perlDeps = with perlPackages; [ AnyEvent ];
};
}
```
## Packaging urxvt plugins {#sec-urxvt-pkg}
Urxvt plugins resides in `pkgs/applications/misc/rxvt-unicode-plugins`. To add a new plugin create an expression in a subdirectory and add the package to the set in `pkgs/applications/misc/rxvt-unicode-plugins/default.nix`.
A plugin can be any kind of derivation, the only requirement is that it should always install perl scripts in `$out/lib/urxvt/perl`. Look for existing plugins for examples.
If the plugin is itself a perl package that needs to be imported from other plugins or scripts, add the following passthrough:
```nix
passthru.perlPackages = [ "self" ];
```
This will make the urxvt wrapper pick up the dependency and set up the perl path accordingly.

View file

@ -1,115 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-urxvt">
<title>Urxvt</title>
<para>
Urxvt, also known as rxvt-unicode, is a highly customizable terminal emulator.
</para>
<section xml:id="sec-urxvt-conf">
<title>Configuring urxvt</title>
<para>
In <literal>nixpkgs</literal>, urxvt is provided by the package
<literal>rxvt-unicode</literal>. It can be configured to include your choice
of plugins, reducing its closure size from the default configuration which
includes all available plugins. To make use of this functionality, use an
overlay or directly install an expression that overrides its configuration,
such as
<programlisting>
rxvt-unicode.override {
configure = { availablePlugins, ... }: {
plugins = with availablePlugins; [ perls resize-font vtwheel ];
};
}
</programlisting>
If the <literal>configure</literal> function returns an attrset without the
<literal>plugins</literal> attribute, <literal>availablePlugins</literal>
will be used automatically.
</para>
<para>
In order to add plugins but also keep all default plugins installed, it is
possible to use the following method:
<programlisting>
rxvt-unicode.override {
configure = { availablePlugins, ... }: {
plugins = (builtins.attrValues availablePlugins) ++ [ custom-plugin ];
};
}
</programlisting>
</para>
<para>
To get a list of all the plugins available, open the Nix REPL and run
<screen>
<prompt>$ </prompt>nix repl
:l &lt;nixpkgs&gt;
map (p: p.name) pkgs.rxvt-unicode.plugins
</screen>
Alternatively, if your shell is bash or zsh and have completion enabled,
simply type <literal>nixpkgs.rxvt-unicode.plugins.&lt;tab&gt;</literal>.
</para>
<para>
In addition to <literal>plugins</literal> the options
<literal>extraDeps</literal> and <literal>perlDeps</literal> can be used
to install extra packages.
<literal>extraDeps</literal> can be used, for example, to provide
<literal>xsel</literal> (a clipboard manager) to the clipboard plugin,
without installing it globally:
<programlisting>
rxvt-unicode.override {
configure = { availablePlugins, ... }: {
pluginsDeps = [ xsel ];
};
}
</programlisting>
<literal>perlDeps</literal> is a handy way to provide Perl packages to
your custom plugins (in <literal>$HOME/.urxvt/ext</literal>). For example,
if you need <literal>AnyEvent</literal> you can do:
<programlisting>
rxvt-unicode.override {
configure = { availablePlugins, ... }: {
perlDeps = with perlPackages; [ AnyEvent ];
};
}
</programlisting>
</para>
</section>
<section xml:id="sec-urxvt-pkg">
<title>Packaging urxvt plugins</title>
<para>
Urxvt plugins resides in
<literal>pkgs/applications/misc/rxvt-unicode-plugins</literal>.
To add a new plugin create an expression in a subdirectory and add the
package to the set in
<literal>pkgs/applications/misc/rxvt-unicode-plugins/default.nix</literal>.
</para>
<para>
A plugin can be any kind of derivation, the only requirement is that it
should always install perl scripts in <literal>$out/lib/urxvt/perl</literal>.
Look for existing plugins for examples.
</para>
<para>
If the plugin is itself a perl package that needs to be imported from
other plugins or scripts, add the following passthrough:
<programlisting>
passthru.perlPackages = [ "self" ];
</programlisting>
This will make the urxvt wrapper pick up the dependency and set up the perl
path accordingly.
</para>
</section>
</section>

View file

@ -28,6 +28,22 @@
</para> </para>
</section> </section>
<section xml:id="ssec-gnome-gdk-pixbuf-loaders">
<title>GdkPixbuf loaders</title>
<para>
GTK applications typically use <link xlink:href="https://developer.gnome.org/gdk-pixbuf/stable/">GdkPixbuf</link> to load images. But <package>gdk-pixbuf</package> package only supports basic bitmap formats like JPEG, PNG or TIFF, requiring to use third-party loader modules for other formats. This is especially painful since GTK itself includes SVG icons, which cannot be rendered without a loader provided by <package>librsvg</package>.
</para>
<para>
Unlike other libraries mentioned in this section, GdkPixbuf only supports a single value in its controlling environment variable <envar>GDK_PIXBUF_MODULE_FILE</envar>. It is supposed to point to a cache file containing information about the available loaders. Each loader package will contain a <filename>lib/gdk-pixbuf-2.0/2.10.0/loaders.cache</filename> file describing the default loaders in <package>gdk-pixbuf</package> package plus the loader contained in the package itself. If you want to use multiple third-party loaders, you will need to create your own cache file manually. Fortunately, this is pretty rare as <link xlink:href="https://gitlab.gnome.org/federico/gdk-pixbuf-survey/blob/master/src/modules.md">not many loaders exist</link>.
</para>
<para>
<package>gdk-pixbuf</package> contains <link linkend="ssec-gnome-hooks-gdk-pixbuf">a setup hook</link> that sets <envar>GDK_PIXBUF_MODULE_FILE</envar> from dependencies but as mentioned in further section, it is pretty limited. Loaders should propagate this setup hook.
</para>
</section>
<section xml:id="ssec-gnome-icons"> <section xml:id="ssec-gnome-icons">
<title>Icons</title> <title>Icons</title>
@ -100,9 +116,16 @@ preFixup = ''
done done
''; '';
</programlisting> </programlisting>
Fortunately, there is <package>wrapGAppsHook</package>, that does the wrapping for us. In particular, it works in conjunction with other setup hooks that will populate the variable: </para>
<para>
Fortunately, there is <package xml:id="ssec-gnome-hooks-wrapgappshook">wrapGAppsHook</package>. It works in conjunction with other setup hooks that populate environment variables, and it will then wrap all executables in <filename>bin</filename> and <filename>libexec</filename> directories using said variables.
</para>
<para>
For convenience, it also adds <package>dconf.lib</package> for a GIO module implementing a GSettings backend using <package>dconf</package>, <package>gtk3</package> for GSettings schemas, and <package>librsvg</package> for GdkPixbuf loader to the closure. In case you are packaging a program without a graphical interface, you might want to use <package xml:id="ssec-gnome-hooks-wrapgappsnoguihook">wrapGAppsNoGuiHook</package>, which runs the same script as <package>wrapGAppsHook</package> but does not bring <package>gtk3</package> and <package>librsvg</package> into the closure.
</para>
<para>
<itemizedlist> <itemizedlist>
<listitem xml:id="ssec-gnome-hooks-wrapgappshook"> <listitem>
<para> <para>
<package>wrapGAppsHook</package> itself will add the packages <filename>share</filename> directory to <envar>XDG_DATA_DIRS</envar>. <package>wrapGAppsHook</package> itself will add the packages <filename>share</filename> directory to <envar>XDG_DATA_DIRS</envar>.
</para> </para>
@ -112,6 +135,11 @@ preFixup = ''
<package>glib</package> setup hook will populate <envar>GSETTINGS_SCHEMAS_PATH</envar> and then <package>wrapGAppsHook</package> will prepend it to <envar>XDG_DATA_DIRS</envar>. <package>glib</package> setup hook will populate <envar>GSETTINGS_SCHEMAS_PATH</envar> and then <package>wrapGAppsHook</package> will prepend it to <envar>XDG_DATA_DIRS</envar>.
</para> </para>
</listitem> </listitem>
<listitem xml:id="ssec-gnome-hooks-gdk-pixbuf">
<para>
<package>gdk-pixbuf</package> setup hook will populate <envar>GDK_PIXBUF_MODULE_FILE</envar> with the path to biggest <filename>loaders.cache</filename> file from the dependencies containing <link xlink:href="ssec-gnome-gdk-pixbuf-loaders">GdkPixbuf loaders</link>. This works fine when there are only two packages containing loaders (<package>gdk-pixbuf</package> and e.g. <package>librsvg</package>) it will choose the second one, reasonably expecting that it will be bigger since it describes extra loader in addition to the default ones. But when there are more than two loader packages, this logic will break. One possible solution would be constructing a custom cache file for each package containing a program like <filename>services/x11/gdk-pixbuf.nix</filename> NixOS module does. <package>wrapGAppsHook</package> copies the <envar>GDK_PIXBUF_MODULE_FILE</envar> environment variable into the produced wrapper.
</para>
</listitem>
<listitem xml:id="ssec-gnome-hooks-gtk-drop-icon-theme-cache"> <listitem xml:id="ssec-gnome-hooks-gtk-drop-icon-theme-cache">
<para> <para>
One of <package>gtk3</package>s setup hooks will remove <filename>icon-theme.cache</filename> files from packages icon theme directories to avoid conflicts. Icon theme packages should prevent this with <code>dontDropIconThemeCache = true;</code>. One of <package>gtk3</package>s setup hooks will remove <filename>icon-theme.cache</filename> files from packages icon theme directories to avoid conflicts. Icon theme packages should prevent this with <code>dontDropIconThemeCache = true;</code>.
@ -178,7 +206,7 @@ preFixup = ''
</term> </term>
<listitem> <listitem>
<para> <para>
There are no schemas avalable in <envar>XDG_DATA_DIRS</envar>. Temporarily add a random package containing schemas like <package>gsettings-desktop-schemas</package> to <literal>buildInputs</literal>. <link linkend="ssec-gnome-hooks-glib"><package>glib</package></link> and <link linkend="ssec-gnome-hooks-wrapgappshook"><package>wrapGAppsHook</package></link> setup hooks will take care of making the schemas available to application and you will see the actual missing schemas with the <link linkend="ssec-gnome-common-issues-missing-schema">next error</link>. Or you can try looking through the source code for the actual schemas used. There are no schemas available in <envar>XDG_DATA_DIRS</envar>. Temporarily add a random package containing schemas like <package>gsettings-desktop-schemas</package> to <literal>buildInputs</literal>. <link linkend="ssec-gnome-hooks-glib"><package>glib</package></link> and <link linkend="ssec-gnome-hooks-wrapgappshook"><package>wrapGAppsHook</package></link> setup hooks will take care of making the schemas available to application and you will see the actual missing schemas with the <link linkend="ssec-gnome-common-issues-missing-schema">next error</link>. Or you can try looking through the source code for the actual schemas used.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View file

@ -21,7 +21,7 @@
<xi:include href="lua.section.xml" /> <xi:include href="lua.section.xml" />
<xi:include href="maven.section.xml" /> <xi:include href="maven.section.xml" />
<xi:include href="node.section.xml" /> <xi:include href="node.section.xml" />
<xi:include href="ocaml.xml" /> <xi:include href="ocaml.section.xml" />
<xi:include href="perl.xml" /> <xi:include href="perl.xml" />
<xi:include href="php.section.xml" /> <xi:include href="php.section.xml" />
<xi:include href="python.section.xml" /> <xi:include href="python.section.xml" />

View file

@ -0,0 +1,70 @@
# OCaml {#sec-language-ocaml}
OCaml libraries should be installed in `$(out)/lib/ocaml/${ocaml.version}/site-lib/`. Such directories are automatically added to the `$OCAMLPATH` environment variable when building another package that depends on them or when opening a `nix-shell`.
Given that most of the OCaml ecosystem is now built with dune, nixpkgs includes a convenience build support function called `buildDunePackage` that will build an OCaml package using dune, OCaml and findlib and any additional dependencies provided as `buildInputs` or `propagatedBuildInputs`.
Here is a simple package example. It defines an (optional) attribute `minimumOCamlVersion` that will be used to throw a descriptive evaluation error if building with an older OCaml is attempted. It uses the `fetchFromGitHub` fetcher to get its source. It sets the `doCheck` (optional) attribute to `true` which means that tests will be run with `dune runtest -p angstrom` after the build (`dune build -p angstrom`) is complete. It uses `alcotest` as a build input (because it is needed to run the tests) and `bigstringaf` and `result` as propagated build inputs (thus they will also be available to libraries depending on this library). The library will be installed using the `angstrom.install` file that dune generates.
```nix
{ stdenv
, fetchFromGitHub
, buildDunePackage
, alcotest
, result
, bigstringaf
}:
buildDunePackage rec {
pname = "angstrom";
version = "0.10.0";
minimumOCamlVersion = "4.03";
src = fetchFromGitHub {
owner = "inhabitedtype";
repo = pname;
rev = version;
sha256 = "0lh6024yf9ds0nh9i93r9m6p5psi8nvrqxl5x7jwl13zb0r9xfpw";
};
buildInputs = [ alcotest ];
propagatedBuildInputs = [ bigstringaf result ];
doCheck = true;
meta = {
homepage = "https://github.com/inhabitedtype/angstrom";
description = "OCaml parser combinators built for speed and memory efficiency";
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ sternenseemann ];
};
}
```
Here is a second example, this time using a source archive generated with `dune-release`. It is a good idea to use this archive when it is available as it will usually contain substituted variables such as a `%%VERSION%%` field. This library does not depend on any other OCaml library and no tests are run after building it.
```nix
{ stdenv
, fetchurl
, buildDunePackage
}:
buildDunePackage rec {
pname = "wtf8";
version = "1.0.1";
minimumOCamlVersion = "4.01";
src = fetchurl {
url = "https://github.com/flowtype/ocaml-${pname}/releases/download/v${version}/${pname}-${version}.tbz";
sha256 = "1msg3vycd3k8qqj61sc23qks541cxpb97vrnrvrhjnqxsqnh6ygq";
};
meta = with stdenv.lib; {
homepage = "https://github.com/flowtype/ocaml-wtf8";
description = "WTF-8 is a superset of UTF-8 that allows unpaired surrogates.";
license = licenses.mit;
maintainers = [ maintainers.eqyiel ];
};
}
```

View file

@ -1,73 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-ocaml">
<title>OCaml</title>
<para>
OCaml libraries should be installed in <literal>$(out)/lib/ocaml/${ocaml.version}/site-lib/</literal>. Such directories are automatically added to the <literal>$OCAMLPATH</literal> environment variable when building another package that depends on them or when opening a <literal>nix-shell</literal>.
</para>
<para>
Given that most of the OCaml ecosystem is now built with dune, nixpkgs includes a convenience build support function called <literal>buildDunePackage</literal> that will build an OCaml package using dune, OCaml and findlib and any additional dependencies provided as <literal>buildInputs</literal> or <literal>propagatedBuildInputs</literal>.
</para>
<para>
Here is a simple package example. It defines an (optional) attribute <literal>minimumOCamlVersion</literal> that will be used to throw a descriptive evaluation error if building with an older OCaml is attempted. It uses the <literal>fetchFromGitHub</literal> fetcher to get its source. It sets the <literal>doCheck</literal> (optional) attribute to <literal>true</literal> which means that tests will be run with <literal>dune runtest -p angstrom</literal> after the build (<literal>dune build -p angstrom</literal>) is complete. It uses <literal>alcotest</literal> as a build input (because it is needed to run the tests) and <literal>bigstringaf</literal> and <literal>result</literal> as propagated build inputs (thus they will also be available to libraries depending on this library). The library will be installed using the <literal>angstrom.install</literal> file that dune generates.
</para>
<programlisting>
{ stdenv, fetchFromGitHub, buildDunePackage, alcotest, result, bigstringaf }:
buildDunePackage rec {
pname = "angstrom";
version = "0.10.0";
minimumOCamlVersion = "4.03";
src = fetchFromGitHub {
owner = "inhabitedtype";
repo = pname;
rev = version;
sha256 = "0lh6024yf9ds0nh9i93r9m6p5psi8nvrqxl5x7jwl13zb0r9xfpw";
};
buildInputs = [ alcotest ];
propagatedBuildInputs = [ bigstringaf result ];
doCheck = true;
meta = {
homepage = "https://github.com/inhabitedtype/angstrom";
description = "OCaml parser combinators built for speed and memory efficiency";
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ sternenseemann ];
};
}
</programlisting>
<para>
Here is a second example, this time using a source archive generated with <literal>dune-release</literal>. It is a good idea to use this archive when it is available as it will usually contain substituted variables such as a <literal>%%VERSION%%</literal> field. This library does not depend on any other OCaml library and no tests are run after building it.
</para>
<programlisting>
{ stdenv, fetchurl, buildDunePackage }:
buildDunePackage rec {
pname = "wtf8";
version = "1.0.1";
minimumOCamlVersion = "4.01";
src = fetchurl {
url = "https://github.com/flowtype/ocaml-${pname}/releases/download/v${version}/${pname}-${version}.tbz";
sha256 = "1msg3vycd3k8qqj61sc23qks541cxpb97vrnrvrhjnqxsqnh6ygq";
};
meta = with stdenv.lib; {
homepage = "https://github.com/flowtype/ocaml-wtf8";
description = "WTF-8 is a superset of UTF-8 that allows unpaired surrogates.";
license = licenses.mit;
maintainers = [ maintainers.eqyiel ];
};
}
</programlisting>
</section>

View file

@ -1989,7 +1989,7 @@ addEnvHooks "$hostOffset" myBashFunction
</term> </term>
<listitem> <listitem>
<para> <para>
Exports <envar>GDK_PIXBUF_MODULE_FILE</envar> environment variable to the builder. Add librsvg package to <varname>buildInputs</varname> to get svg support. Exports <envar>GDK_PIXBUF_MODULE_FILE</envar> environment variable to the builder. Add librsvg package to <varname>buildInputs</varname> to get svg support. See also <xref linkend="ssec-gnome-hooks-gdk-pixbuf" />.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View file

@ -569,9 +569,9 @@ rec {
standard GNU Autoconf scripts. standard GNU Autoconf scripts.
Example: Example:
enableFeature true "shared" "foo" enableFeatureAs true "shared" "foo"
=> "--enable-shared=foo" => "--enable-shared=foo"
enableFeature false "shared" (throw "ignored") enableFeatureAs false "shared" (throw "ignored")
=> "--disable-shared" => "--disable-shared"
*/ */
enableFeatureAs = enable: feat: value: enableFeature enable feat + optionalString enable "=${value}"; enableFeatureAs = enable: feat: value: enableFeature enable feat + optionalString enable "=${value}";
@ -593,9 +593,9 @@ rec {
standard GNU Autoconf scripts. standard GNU Autoconf scripts.
Example: Example:
with_Feature true "shared" "foo" withFeatureAs true "shared" "foo"
=> "--with-shared=foo" => "--with-shared=foo"
with_Feature false "shared" (throw "ignored") withFeatureAs false "shared" (throw "ignored")
=> "--without-shared" => "--without-shared"
*/ */
withFeatureAs = with_: feat: value: withFeature with_ feat + optionalString with_ "=${value}"; withFeatureAs = with_: feat: value: withFeature with_ feat + optionalString with_ "=${value}";
@ -674,7 +674,7 @@ rec {
else else
false; false;
/* Parse a string string as an int. /* Parse a string as an int.
Type: string -> int Type: string -> int

View file

@ -652,6 +652,12 @@
githubId = 56009; githubId = 56009;
name = "Arcadio Rubio García"; name = "Arcadio Rubio García";
}; };
archseer = {
email = "blaz@mxxn.io";
github = "archseer";
githubId = 1372918;
name = "Blaž Hrastnik";
};
arcnmx = { arcnmx = {
email = "arcnmx@users.noreply.github.com"; email = "arcnmx@users.noreply.github.com";
github = "arcnmx"; github = "arcnmx";
@ -1252,6 +1258,16 @@
githubId = 3043718; githubId = 3043718;
name = "Brett Lyons"; name = "Brett Lyons";
}; };
brodes = {
email = "me@brod.es";
github = "brhoades";
githubId = 4763746;
name = "Billy Rhoades";
keys = [{
longkeyid = "rsa4096/0x8AE74787A4B7C07E";
fingerprint = "BF4FCB85C69989B4ED95BF938AE74787A4B7C07E";
}];
};
bryanasdev000 = { bryanasdev000 = {
email = "bryanasdev000@gmail.com"; email = "bryanasdev000@gmail.com";
github = "bryanasdev000"; github = "bryanasdev000";

View file

@ -26,6 +26,19 @@
<listitem> <listitem>
<para>GNOME desktop environment was upgraded to 3.38, see its <link xlink:href="https://help.gnome.org/misc/release-notes/3.38/">release notes</link>.</para> <para>GNOME desktop environment was upgraded to 3.38, see its <link xlink:href="https://help.gnome.org/misc/release-notes/3.38/">release notes</link>.</para>
</listitem> </listitem>
<listitem>
<para>
<link xlink:href="https://www.gnuradio.org/">GNURadio</link> 3.8 was
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/82263">finnally</link>
packaged, along with a rewrite to the Nix expressions, allowing users to
override the features upstream supports selecting to compile or not to.
Additionally, the attribute <code>gnuradio</code> and <code>gnuradio3_7</code>
now point to an externally wrapped by default derivations, that allow you to
also add `extraPythonPackages` to the Python interpreter used by GNURadio.
Missing environmental variables needed for operational GUI were also added
(<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#7547</link>).
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>

View file

@ -217,7 +217,7 @@ in
manualCache = pkgs.runCommandLocal "man-cache" { } manualCache = pkgs.runCommandLocal "man-cache" { }
'' ''
echo "MANDB_MAP ${manualPages}/share/man $out" > man.conf echo "MANDB_MAP ${manualPages}/share/man $out" > man.conf
${pkgs.man-db}/bin/mandb -C man.conf -psc ${pkgs.man-db}/bin/mandb -C man.conf -psc >/dev/null 2>&1
''; '';
in in
'' ''

View file

@ -482,6 +482,7 @@
./services/misc/mediatomb.nix ./services/misc/mediatomb.nix
./services/misc/metabase.nix ./services/misc/metabase.nix
./services/misc/mwlib.nix ./services/misc/mwlib.nix
./services/misc/n8n.nix
./services/misc/nix-daemon.nix ./services/misc/nix-daemon.nix
./services/misc/nix-gc.nix ./services/misc/nix-gc.nix
./services/misc/nix-optimise.nix ./services/misc/nix-optimise.nix

View file

@ -11,10 +11,20 @@ let
} }
'' ''
mkdir -p $out/bin mkdir -p $out/bin
${lib.concatStringsSep "\n" (lib.mapAttrsToList (command: binary: '' ${lib.concatStringsSep "\n" (lib.mapAttrsToList (command: value:
let
opts = if builtins.isAttrs value
then value
else { executable = value; profile = null; extraArgs = []; };
args = lib.escapeShellArgs (
(optional (opts.profile != null) "--profile=${toString opts.profile}")
++ opts.extraArgs
);
in
''
cat <<_EOF >$out/bin/${command} cat <<_EOF >$out/bin/${command}
#! ${pkgs.runtimeShell} -e #! ${pkgs.runtimeShell} -e
exec /run/wrappers/bin/firejail ${binary} "\$@" exec /run/wrappers/bin/firejail ${args} -- ${toString opts.executable} "\$@"
_EOF _EOF
chmod 0755 $out/bin/${command} chmod 0755 $out/bin/${command}
'') cfg.wrappedBinaries)} '') cfg.wrappedBinaries)}
@ -25,12 +35,38 @@ in {
enable = mkEnableOption "firejail"; enable = mkEnableOption "firejail";
wrappedBinaries = mkOption { wrappedBinaries = mkOption {
type = types.attrsOf types.path; type = types.attrsOf (types.either types.path (types.submodule {
options = {
executable = mkOption {
type = types.path;
description = "Executable to run sandboxed";
example = literalExample "''${lib.getBin pkgs.firefox}/bin/firefox";
};
profile = mkOption {
type = types.nullOr types.path;
default = null;
description = "Profile to use";
example = literalExample "''${pkgs.firejail}/etc/firejail/firefox.profile";
};
extraArgs = mkOption {
type = types.listOf types.str;
default = [];
description = "Extra arguments to pass to firejail";
example = [ "--private=~/.firejail_home" ];
};
};
}));
default = {}; default = {};
example = literalExample '' example = literalExample ''
{ {
firefox = "''${lib.getBin pkgs.firefox}/bin/firefox"; firefox = {
mpv = "''${lib.getBin pkgs.mpv}/bin/mpv"; executable = "''${lib.getBin pkgs.firefox}/bin/firefox";
profile = "''${pkgs.firejail}/etc/firejail/firefox.profile";
};
mpv = {
executable = "''${lib.getBin pkgs.mpv}/bin/mpv";
profile = "''${pkgs.firejail}/etc/firejail/mpv.profile";
};
} }
''; '';
description = '' description = ''

View file

@ -103,7 +103,7 @@ in
programs.fish.shellAliases = mapAttrs (name: mkDefault) cfge.shellAliases; programs.fish.shellAliases = mapAttrs (name: mkDefault) cfge.shellAliases;
# Required for man completions # Required for man completions
documentation.man.generateCaches = true; documentation.man.generateCaches = lib.mkDefault true;
environment.etc."fish/foreign-env/shellInit".text = cfge.shellInit; environment.etc."fish/foreign-env/shellInit".text = cfge.shellInit;
environment.etc."fish/foreign-env/loginShellInit".text = cfge.loginShellInit; environment.etc."fish/foreign-env/loginShellInit".text = cfge.loginShellInit;

View file

@ -15,7 +15,7 @@ let
# This doesn't work in general because of missing development information. # This doesn't work in general because of missing development information.
jack-libs = pkgs.runCommand "jack-libs" {} '' jack-libs = pkgs.runCommand "jack-libs" {} ''
mkdir -p "$out/lib" mkdir -p "$out/lib"
ln -s "${pkgs.pipewire.jack}/lib" "$out/lib/pipewire" ln -s "${cfg.package.jack}/lib" "$out/lib/pipewire"
''; '';
in { in {
@ -28,6 +28,16 @@ in {
services.pipewire = { services.pipewire = {
enable = mkEnableOption "pipewire service"; enable = mkEnableOption "pipewire service";
package = mkOption {
type = types.package;
default = pkgs.pipewire;
defaultText = "pkgs.pipewire";
example = literalExample "pkgs.pipewire";
description = ''
The pipewire derivation to use.
'';
};
socketActivation = mkOption { socketActivation = mkOption {
default = true; default = true;
type = types.bool; type = types.bool;
@ -36,6 +46,32 @@ in {
''; '';
}; };
extraConfig = mkOption {
type = types.lines;
default = "";
description = ''
Literal string to append to /etc/pipewire/pipewire.conf.
'';
};
sessionManager = mkOption {
type = types.nullOr types.string;
default = null;
example = literalExample ''"''${pipewire}/bin/pipewire-media-session"'';
description = ''
Path to the pipewire session manager executable.
'';
};
sessionManagerArguments = mkOption {
type = types.listOf types.string;
default = [];
example = literalExample ''[ "-p" "bluez5.msbc-support=true" ]'';
description = ''
Arguments passed to the pipewire session manager.
'';
};
alsa = { alsa = {
enable = mkEnableOption "ALSA support"; enable = mkEnableOption "ALSA support";
support32Bit = mkEnableOption "32-bit ALSA support on 64-bit systems"; support32Bit = mkEnableOption "32-bit ALSA support on 64-bit systems";
@ -65,38 +101,83 @@ in {
} }
]; ];
environment.systemPackages = [ pkgs.pipewire ] services.pipewire.sessionManager = mkDefault "${cfg.package}/bin/pipewire-media-session";
environment.systemPackages = [ cfg.package ]
++ lib.optional cfg.jack.enable jack-libs; ++ lib.optional cfg.jack.enable jack-libs;
systemd.packages = [ pkgs.pipewire ] systemd.packages = [ cfg.package ]
++ lib.optional cfg.pulse.enable pkgs.pipewire.pulse; ++ lib.optional cfg.pulse.enable cfg.package.pulse;
# PipeWire depends on DBUS but doesn't list it. Without this booting # PipeWire depends on DBUS but doesn't list it. Without this booting
# into a terminal results in the service crashing with an error. # into a terminal results in the service crashing with an error.
systemd.user.sockets.pipewire.wantedBy = lib.mkIf cfg.socketActivation [ "sockets.target" ]; systemd.user.sockets.pipewire.wantedBy = lib.mkIf cfg.socketActivation [ "sockets.target" ];
systemd.user.sockets.pipewire-pulse.wantedBy = lib.mkIf (cfg.socketActivation && cfg.pulse.enable) ["sockets.target"]; systemd.user.sockets.pipewire-pulse.wantedBy = lib.mkIf (cfg.socketActivation && cfg.pulse.enable) ["sockets.target"];
systemd.user.services.pipewire.bindsTo = [ "dbus.service" ]; systemd.user.services.pipewire.bindsTo = [ "dbus.service" ];
services.udev.packages = [ pkgs.pipewire ]; services.udev.packages = [ cfg.package ];
# If any paths are updated here they must also be updated in the package test. # If any paths are updated here they must also be updated in the package test.
sound.extraConfig = mkIf cfg.alsa.enable '' environment.etc."alsa/conf.d/49-pipewire-modules.conf" = mkIf cfg.alsa.enable {
pcm_type.pipewire { text = ''
libs.native = ${pkgs.pipewire.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ; pcm_type.pipewire {
${optionalString enable32BitAlsaPlugins libs.native = ${cfg.package.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;
"libs.32Bit = ${pkgs.pkgsi686Linux.pipewire.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;"} ${optionalString enable32BitAlsaPlugins
} "libs.32Bit = ${pkgs.pkgsi686Linux.pipewire.lib}/lib/alsa-lib/libasound_module_pcm_pipewire.so ;"}
pcm.!default { }
@func getenv ctl_type.pipewire {
vars [ PCM ] libs.native = ${cfg.package.lib}/lib/alsa-lib/libasound_module_ctl_pipewire.so ;
default "plug:pipewire" ${optionalString enable32BitAlsaPlugins
playback_mode "-1" "libs.32Bit = ${pkgs.pkgsi686Linux.pipewire.lib}/lib/alsa-lib/libasound_module_ctl_pipewire.so ;"}
capture_mode "-1" }
} '';
''; };
environment.etc."alsa/conf.d/50-pipewire.conf" = mkIf cfg.alsa.enable { environment.etc."alsa/conf.d/50-pipewire.conf" = mkIf cfg.alsa.enable {
source = "${pkgs.pipewire}/share/alsa/alsa.conf.d/50-pipewire.conf"; source = "${cfg.package}/share/alsa/alsa.conf.d/50-pipewire.conf";
};
environment.etc."alsa/conf.d/99-pipewire-default.conf" = mkIf cfg.alsa.enable {
source = "${cfg.package}/share/alsa/alsa.conf.d/99-pipewire-default.conf";
}; };
environment.sessionVariables.LD_LIBRARY_PATH = environment.sessionVariables.LD_LIBRARY_PATH =
lib.optional cfg.jack.enable "/run/current-system/sw/lib/pipewire"; lib.optional cfg.jack.enable "/run/current-system/sw/lib/pipewire";
environment.etc."pipewire/pipewire.conf" = {
# Adapted from src/daemon/pipewire.conf.in
text = ''
set-prop link.max-buffers 16 # version < 3 clients can't handle more
add-spa-lib audio.convert* audioconvert/libspa-audioconvert
add-spa-lib api.alsa.* alsa/libspa-alsa
add-spa-lib api.v4l2.* v4l2/libspa-v4l2
add-spa-lib api.libcamera.* libcamera/libspa-libcamera
add-spa-lib api.bluez5.* bluez5/libspa-bluez5
add-spa-lib api.vulkan.* vulkan/libspa-vulkan
add-spa-lib api.jack.* jack/libspa-jack
add-spa-lib support.* support/libspa-support
load-module libpipewire-module-rtkit # rt.prio=20 rt.time.soft=200000 rt.time.hard=200000
load-module libpipewire-module-protocol-native
load-module libpipewire-module-profiler
load-module libpipewire-module-metadata
load-module libpipewire-module-spa-device-factory
load-module libpipewire-module-spa-node-factory
load-module libpipewire-module-client-node
load-module libpipewire-module-client-device
load-module libpipewire-module-portal
load-module libpipewire-module-access
load-module libpipewire-module-adapter
load-module libpipewire-module-link-factory
load-module libpipewire-module-session-manager
create-object spa-node-factory factory.name=support.node.driver node.name=Dummy priority.driver=8000
exec ${cfg.sessionManager} ${lib.concatStringsSep " " cfg.sessionManagerArguments}
${cfg.extraConfig}
'';
};
environment.etc."pipewire/media-session.d/with-alsa" = mkIf cfg.alsa.enable { text = ""; };
environment.etc."pipewire/media-session.d/with-pulseaudio" = mkIf cfg.pulse.enable { text = ""; };
environment.etc."pipewire/media-session.d/with-jack" = mkIf cfg.jack.enable { text = ""; };
}; };
} }

View file

@ -23,15 +23,6 @@ in {
default = null; default = null;
description = "the thermald manual configuration file."; description = "the thermald manual configuration file.";
}; };
adaptive = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable adaptive mode, only working on kernel versions greater than 5.8.
Thermald will detect this itself, safe to enable on kernel versions below 5.8.
'';
};
}; };
}; };
@ -48,8 +39,8 @@ in {
--no-daemon \ --no-daemon \
${optionalString cfg.debug "--loglevel=debug"} \ ${optionalString cfg.debug "--loglevel=debug"} \
${optionalString (cfg.configFile != null) "--config-file ${cfg.configFile}"} \ ${optionalString (cfg.configFile != null) "--config-file ${cfg.configFile}"} \
${optionalString cfg.adaptive "--adaptive"} \
--dbus-enable --dbus-enable
--adaptive
''; '';
}; };
}; };

View file

@ -0,0 +1,78 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.services.n8n;
format = pkgs.formats.json {};
configFile = format.generate "n8n.json" cfg.settings;
in
{
options.services.n8n = {
enable = mkEnableOption "n8n server";
openFirewall = mkOption {
type = types.bool;
default = false;
description = "Open ports in the firewall for the n8n web interface.";
};
settings = mkOption {
type = format.type;
default = {};
description = ''
Configuration for n8n, see <link xlink:href="https://docs.n8n.io/reference/configuration.html"/>
for supported values.
'';
};
};
config = mkIf cfg.enable {
services.n8n.settings = {
# We use this to open the firewall, so we need to know about the default at eval time
port = lib.mkDefault 5678;
};
systemd.services.n8n = {
description = "N8N service";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
environment = {
# This folder must be writeable as the application is storing
# its data in it, so the StateDirectory is a good choice
N8N_USER_FOLDER = "/var/lib/n8n";
N8N_CONFIG_FILES = "${configFile}";
};
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.n8n}/bin/n8n";
Restart = "on-failure";
StateDirectory = "n8n";
# Basic Hardening
NoNewPrivileges = "yes";
PrivateTmp = "yes";
PrivateDevices = "yes";
DevicePolicy = "closed";
DynamicUser = "true";
ProtectSystem = "strict";
ProtectHome = "read-only";
ProtectControlGroups = "yes";
ProtectKernelModules = "yes";
ProtectKernelTunables = "yes";
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
RestrictNamespaces = "yes";
RestrictRealtime = "yes";
RestrictSUIDSGID = "yes";
MemoryDenyWriteExecute = "yes";
LockPersonality = "yes";
};
};
networking.firewall = mkIf cfg.openFirewall {
allowedTCPPorts = [ cfg.settings.port ];
};
};
}

View file

@ -70,6 +70,7 @@ in
description = "Zigbee2mqtt Service"; description = "Zigbee2mqtt Service";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]; after = [ "network.target" ];
environment.ZIGBEE2MQTT_DATA = cfg.dataDir;
serviceConfig = { serviceConfig = {
ExecStart = "${cfg.package}/bin/zigbee2mqtt"; ExecStart = "${cfg.package}/bin/zigbee2mqtt";
User = "zigbee2mqtt"; User = "zigbee2mqtt";

View file

@ -741,7 +741,7 @@ in
+ "'boot.loader.grub.mirroredBoots' to make the system bootable."; + "'boot.loader.grub.mirroredBoots' to make the system bootable.";
} }
{ {
assertion = cfg.efiSupport || all (c: c < 2) (mapAttrsToList (_: c: c) bootDeviceCounters); assertion = cfg.efiSupport || all (c: c < 2) (mapAttrsToList (n: c: if n == "nodev" then 0 else c) bootDeviceCounters);
message = "You cannot have duplicated devices in mirroredBoots"; message = "You cannot have duplicated devices in mirroredBoots";
} }
{ {

View file

@ -231,6 +231,7 @@ in
mysql-autobackup = handleTest ./mysql/mysql-autobackup.nix {}; mysql-autobackup = handleTest ./mysql/mysql-autobackup.nix {};
mysql-backup = handleTest ./mysql/mysql-backup.nix {}; mysql-backup = handleTest ./mysql/mysql-backup.nix {};
mysql-replication = handleTest ./mysql/mysql-replication.nix {}; mysql-replication = handleTest ./mysql/mysql-replication.nix {};
n8n = handleTest ./n8n.nix {};
nagios = handleTest ./nagios.nix {}; nagios = handleTest ./nagios.nix {};
nano = handleTest ./nano.nix {}; nano = handleTest ./nano.nix {};
nar-serve = handleTest ./nar-serve.nix {}; nar-serve = handleTest ./nar-serve.nix {};

View file

@ -51,29 +51,31 @@ in makeTest {
networking.hostName = ""; networking.hostName = "";
}; };
testScript = '' testScript = ''
machine.wait_for_unit("cloud-init.service") # To wait until cloud-init terminates its run
machine.succeed("cat /tmp/cloudinit-write-file | grep -q 'cloudinit'") unnamed.wait_for_unit("cloud-final.service")
unnamed.succeed("cat /tmp/cloudinit-write-file | grep -q 'cloudinit'")
# install snakeoil ssh key and provision .ssh/config file # install snakeoil ssh key and provision .ssh/config file
machine.succeed("mkdir -p ~/.ssh") unnamed.succeed("mkdir -p ~/.ssh")
machine.succeed( unnamed.succeed(
"cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil" "cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil"
) )
machine.succeed("chmod 600 ~/.ssh/id_snakeoil") unnamed.succeed("chmod 600 ~/.ssh/id_snakeoil")
machine.wait_for_unit("sshd.service") unnamed.wait_for_unit("sshd.service")
# we should be able to log in as the root user, as well as the created nixos user # we should be able to log in as the root user, as well as the created nixos user
machine.succeed( unnamed.succeed(
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil root@localhost 'true'" "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil root@localhost 'true'"
) )
machine.succeed( unnamed.succeed(
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil nixos@localhost 'true'" "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil nixos@localhost 'true'"
) )
# test changing hostname via cloud-init worked # test changing hostname via cloud-init worked
assert ( assert (
machine.succeed( unnamed.succeed(
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil nixos@localhost 'hostname'" "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil nixos@localhost 'hostname'"
).strip() ).strip()
== "test" == "test"

View file

@ -11,6 +11,10 @@ import ./make-test-python.nix ({ pkgs, ...} : {
enable = true; enable = true;
wrappedBinaries = { wrappedBinaries = {
bash-jailed = "${pkgs.bash}/bin/bash"; bash-jailed = "${pkgs.bash}/bin/bash";
bash-jailed2 = {
executable = "${pkgs.bash}/bin/bash";
extraArgs = [ "--private=~/firejail-home" ];
};
}; };
}; };
@ -53,6 +57,11 @@ import ./make-test-python.nix ({ pkgs, ...} : {
) )
machine.fail("sudo -u alice bash-jailed -c 'cat ~/my-secrets/secret' | grep -q s3cret") machine.fail("sudo -u alice bash-jailed -c 'cat ~/my-secrets/secret' | grep -q s3cret")
# Test extraArgs
machine.succeed("sudo -u alice mkdir /home/alice/firejail-home")
machine.succeed("sudo -u alice bash-jailed2 -c 'echo test > /home/alice/foo'")
machine.fail("sudo -u alice cat /home/alice/foo")
machine.succeed("sudo -u alice cat /home/alice/firejail-home/foo | grep test")
# Test path acl with firejail executable # Test path acl with firejail executable
machine.succeed("sudo -u alice firejail -- bash -c 'cat ~/public' | grep -q publ1c") machine.succeed("sudo -u alice firejail -- bash -c 'cat ~/public' | grep -q publ1c")

25
third_party/nixpkgs/nixos/tests/n8n.nix vendored Normal file
View file

@ -0,0 +1,25 @@
import ./make-test-python.nix ({ lib, ... }:
with lib;
let
port = 5678;
in
{
name = "n8n";
meta.maintainers = with maintainers; [ freezeboy ];
nodes.machine =
{ pkgs, ... }:
{
services.n8n = {
enable = true;
};
};
testScript = ''
machine.wait_for_unit("n8n.service")
machine.wait_for_open_port("${toString port}")
machine.succeed("curl --fail http://localhost:${toString port}/")
'';
})

View file

@ -32,6 +32,11 @@ mkDerivation rec {
url = "https://github.com/falkTX/Cadence/commit/1fd3275e7daf4b75f59ef1f85a9e2e93bd5c0731.patch"; url = "https://github.com/falkTX/Cadence/commit/1fd3275e7daf4b75f59ef1f85a9e2e93bd5c0731.patch";
sha256 = "0q791jsh8vmjg678dzhbp1ykq8xrrlxl1mbgs3g8if1ccj210vd8"; sha256 = "0q791jsh8vmjg678dzhbp1ykq8xrrlxl1mbgs3g8if1ccj210vd8";
}) })
# Fix build with Qt 5.15
(fetchpatch {
url = "https://github.com/falkTX/Cadence/commit/c167f35fbb76c4246c730b29262a59da73010412.patch";
sha256 = "1gm9q6gx03sla5vcnisznc95pjdi2703f8b3mj2kby9rfx2pylyh";
})
]; ];
postPatch = '' postPatch = ''
@ -96,7 +101,5 @@ mkDerivation rec {
license = stdenv.lib.licenses.gpl2Plus; license = stdenv.lib.licenses.gpl2Plus;
maintainers = with stdenv.lib.maintainers; [ worldofpeace ]; maintainers = with stdenv.lib.maintainers; [ worldofpeace ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
# Needs QT 5.14
broken = true;
}; };
} }

View file

@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub { stdenv, fetchFromGitHub
, llvm, qt48Full, qrencode, libmicrohttpd, libjack2, alsaLib, faust, curl , llvm, qt48Full, qrencode, libmicrohttpd_0_9_70, libjack2, alsaLib, faust, curl
, bc, coreutils, which, libsndfile, pkg-config , bc, coreutils, which, libsndfile, pkg-config
}: }:
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
}; };
buildInputs = [ buildInputs = [
llvm qt48Full qrencode libmicrohttpd libjack2 alsaLib faust curl llvm qt48Full qrencode libmicrohttpd_0_9_70 libjack2 alsaLib faust curl
bc coreutils which libsndfile pkg-config bc coreutils which libsndfile pkg-config
]; ];

View file

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "geonkick"; pname = "geonkick";
version = "2.5.0"; version = "2.5.1";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "iurie-sw"; owner = "iurie-sw";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "19zbz4v2n5ph4af721xls7ignmis2q2yqyd0m97g9b3njrgnfy3n"; sha256 = "14svwrxqw15j6wjy3x8s28yyrafa31bm7d1ns5h6gvpndccwc1kw";
}; };
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];

View file

@ -14,13 +14,13 @@
mkDerivation rec { mkDerivation rec {
pname = "MellowPlayer"; pname = "MellowPlayer";
version = "3.6.6"; version = "3.6.7";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "ColinDuquesnoy"; owner = "ColinDuquesnoy";
repo = "MellowPlayer"; repo = "MellowPlayer";
rev = version; rev = version;
sha256 = "14y175fl6wg04fz0fhx553r8z3nwqrs2lr3rdls70bhwx5x6lavw"; sha256 = "1p0z8hkbxaxrqjmknjwxb0mpf3xdssik3m5cwrsv1881k1x2x5qs";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];

View file

@ -0,0 +1,53 @@
{ stdenv
, fetchFromGitHub
, cmake
, pkg-config
, mpd_clientlib
, openssl
, lua5_3
, libid3tag
, flac
, mongoose
}:
stdenv.mkDerivation rec {
pname = "mympd";
version = "6.8.1";
src = fetchFromGitHub {
owner = "jcorporation";
repo = "myMPD";
rev = "v${version}";
sha256 = "dIGg2mLxN6XBDH3GFXtF7nB9a/zf/qMlPCvIulFRXn8=";
};
nativeBuildInputs = [
pkg-config
cmake
];
buildInputs = [
mpd_clientlib
openssl
lua5_3
libid3tag
flac
];
cmakeFlags = [
"-DENABLE_LUA=ON"
# Otherwise, it tries to parse $out/etc/mympd.conf on startup.
"-DCMAKE_INSTALL_SYSCONFDIR=/etc"
# similarly here
"-DCMAKE_INSTALL_LOCALSTATEDIR=/var/lib/mympd"
];
# See https://github.com/jcorporation/myMPD/issues/315
hardeningDisable = [ "strictoverflow" ];
meta = {
homepage = "https://jcorporation.github.io/mympd";
description = "A standalone and mobile friendly web mpd client with a tiny footprint and advanced features";
maintainers = [ stdenv.lib.maintainers.doronbehar ];
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.gpl2Plus;
};
}

View file

@ -8,13 +8,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "pt2-clone"; pname = "pt2-clone";
version = "1.25_fix"; version = "1.26_fix";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "8bitbubsy"; owner = "8bitbubsy";
repo = "pt2-clone"; repo = "pt2-clone";
rev = "v${version}"; rev = "v${version}";
sha256 = "1slv8qjxsj67z6984nl67g53mq0sdls2cbikvfjmgmad1wkh98ma"; sha256 = "1ikhgagniiq4irsy8i3g64m6cl61lnfvs163n8gs4hm426yckyb8";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl { stdenv, fetchFromGitHub, rustPackages_1_45, pkgconfig, openssl
, withALSA ? true, alsaLib ? null , withALSA ? true, alsaLib ? null
, withPulseAudio ? false, libpulseaudio ? null , withPulseAudio ? false, libpulseaudio ? null
, withPortAudio ? false, portaudio ? null , withPortAudio ? false, portaudio ? null
@ -7,7 +7,10 @@
, dbus ? null , dbus ? null
}: }:
rustPlatform.buildRustPackage rec { # rust >= 1.48 causes a panic within spotifyd on music playback. as long as
# there is no upstream fix for the issue we use an older version of rust.
# Upstream issue: https://github.com/Spotifyd/spotifyd/issues/719
rustPackages_1_45.rustPlatform.buildRustPackage rec {
pname = "spotifyd"; pname = "spotifyd";
version = "0.2.24"; version = "0.2.24";

View file

@ -4,11 +4,11 @@ cups, vivaldi-ffmpeg-codecs, libpulseaudio, at-spi2-core }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "exodus"; pname = "exodus";
version = "20.11.23"; version = "20.12.4";
src = fetchurl { src = fetchurl {
url = "https://downloads.exodus.io/releases/${pname}-linux-x64-${version}.zip"; url = "https://downloads.exodus.io/releases/${pname}-linux-x64-${version}.zip";
sha256 = "0hcvgph2m4nbrarhw2cggc8q5jxwnibiz2mbkypgizphk5svdj9l"; sha256 = "1j1iqmcbwfj72l7g83ah701bipas9cqwazyhh0af5hp2ckj9nmmf";
}; };
sourceRoot = "."; sourceRoot = ".";

View file

@ -2,12 +2,12 @@
let let
pname = "ledger-live-desktop"; pname = "ledger-live-desktop";
version = "2.17.1"; version = "2.18.0";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage"; url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage";
sha256 = "1r0cl4jfgg0b3zr46bh9dhhg2qgsh3xj99w3ryyjdxydfvychvz8"; sha256 = "19sx9n5mij68v07vy65h1c16rgbpll3kagr437cjb7r95k3nk2zn";
}; };
appimageContents = appimageTools.extractType2 { appimageContents = appimageTools.extractType2 {

View file

@ -1,6 +1,5 @@
{ stdenv, wrapQtAppsHook, makeDesktopItem { stdenv, wrapQtAppsHook, makeDesktopItem
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, cmake, qttools, pkgconfig , cmake, qttools, pkgconfig
, qtbase, qtdeclarative, qtgraphicaleffects , qtbase, qtdeclarative, qtgraphicaleffects
, qtmultimedia, qtxmlpatterns , qtmultimedia, qtxmlpatterns
@ -28,13 +27,13 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "monero-gui"; pname = "monero-gui";
version = "0.17.1.4"; version = "0.17.1.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "monero-project"; owner = "monero-project";
repo = "monero-gui"; repo = "monero-gui";
rev = "v${version}"; rev = "v${version}";
sha256 = "1ixjfdlvwr2an2s9jaql240bk7jpq5hhm5c4hww0bicyy3fp12ng"; sha256 = "0qlcqli0wvrjfy89mbgh1hpmk60dxgn5sws93h8lhgyfwx557iw0";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -59,14 +58,7 @@ stdenv.mkDerivation rec {
chmod -R +w source/monero chmod -R +w source/monero
''; '';
patches = [ patches = [ ./move-log-file.patch ];
./move-log-file.patch
# fix build failure due to invalid use of CMAKE_PREFIX_PATH
(fetchpatch {
url = "https://github.com/monero-project/monero-gui/commit/ef2be82c21b0934522ad8e110805b66f5948da1f.patch";
sha256 = "1rhazk2xwa5dv1cmkrkq8yr08qxslg4k929cvlliabrx20kbr5z5";
})
];
postPatch = '' postPatch = ''
# set monero-gui version # set monero-gui version

View file

@ -17,13 +17,13 @@ assert trezorSupport -> all (x: x!=null) [ libusb1 protobuf python3 ];
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "monero"; pname = "monero";
version = "0.17.1.3"; version = "0.17.1.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "monero-project"; owner = "monero-project";
repo = "monero"; repo = "monero";
rev = "v${version}"; rev = "v${version}";
sha256 = "1ddkdfd8i5q509qziwcx1f6nm8axs4a1ppzv2y5lgsqpq375if6j"; sha256 = "0yy9n2qng02j314h8fh5n0mcy6vpdks0yk4d8ifn8hj03f3g2c8b";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "turbo-geth"; pname = "turbo-geth";
version = "2020.11.04"; version = "2020.12.01";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ledgerwatch"; owner = "ledgerwatch";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "1iidj7cvpazk2v419l6k7h67rkx0mni3fcxfjpwrp0815fy1c2ri"; sha256 = "0l1qj10vhfkrk66zihz8m24pnyj8jbb65a7amvphp07r199swy2a";
}; };
vendorSha256 = "16vawkky612zf45d8dhipjmhrprmi28z9wdcnjy07x3bxdyfbhfr"; vendorSha256 = "16vawkky612zf45d8dhipjmhrprmi28z9wdcnjy07x3bxdyfbhfr";

View file

@ -14,14 +14,14 @@ let
sha256Hash = "sha256-aAMhhJWcVFdvEZt8fI3tF12Eg3TzlU+kUFMNeCYN1os="; sha256Hash = "sha256-aAMhhJWcVFdvEZt8fI3tF12Eg3TzlU+kUFMNeCYN1os=";
}; };
betaVersion = { betaVersion = {
version = "4.1.0.18"; # "Android Studio 4.1 RC 3" version = "4.2.0.17"; # "Android Studio 4.2 Beta 1"
build = "201.6823847"; build = "202.6987402";
sha256Hash = "sha256-qbxmR9g8DSKzcP09bJuc+am79BSXWG39UQxFEb1bZ88="; sha256Hash = "07qr0b1zdzpc1nsi6593518dxp89dcjfp4lznb1d3id8vbqla4i7";
}; };
latestVersion = { # canary & dev latestVersion = { # canary & dev
version = "4.2.0.16"; # "Android Studio 4.2 Canary 16" version = "2020.3.1.2"; # "Android Studio Arctic Fox Canary 2"
build = "202.6939830"; build = "202.7006259";
sha256Hash = "sha256-2Xh0GR4BHZI6ofdyMI2icrztI2BmiHWT+1bEZIZ58IE="; sha256Hash = "1d4brfx1fh1vlcjkb0x8hjj2qgz2dl5wbaiy8dj8w03vcf493nc5";
}; };
in { in {
# Attributes are named by their corresponding release channels # Attributes are named by their corresponding release channels

View file

@ -154,6 +154,8 @@ in stdenv.mkDerivation {
'' + lib.optionalString withNS '' '' + lib.optionalString withNS ''
mkdir -p $out/Applications mkdir -p $out/Applications
mv nextstep/Emacs.app $out/Applications mv nextstep/Emacs.app $out/Applications
'' + lib.optionalString (nativeComp && withNS) ''
ln -snf $out/lib/emacs/*/native-lisp $out/Applications/Emacs.app/Contents/native-lisp
''; '';
postFixup = lib.concatStringsSep "\n" [ postFixup = lib.concatStringsSep "\n" [

View file

@ -21,6 +21,6 @@ buildGoModule rec {
description = "Render markdown on the CLI, with pizzazz!"; description = "Render markdown on the CLI, with pizzazz!";
homepage = "https://github.com/charmbracelet/glow"; homepage = "https://github.com/charmbracelet/glow";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ ehmry Br1ght0ne penguwin ]; maintainers = with maintainers; [ Br1ght0ne penguwin ];
}; };
} }

View file

@ -0,0 +1,38 @@
{ stdenv, fetchurl, makeWrapper, jdk }:
stdenv.mkDerivation rec {
pname = "greenfoot";
version = "3.6.1";
src = fetchurl {
# We use the deb here. First instinct might be to go for the "generic" JAR
# download, but that is actually a graphical installer that is much harder
# to unpack than the deb.
url = "https://www.greenfoot.org/download/files/Greenfoot-linux-${builtins.replaceStrings ["."] [""] version}.deb";
sha256 = "112h6plpclj8kbv093m4pcczljhpd8d47d7a2am1yfgbyckx6hf0";
};
nativeBuildInputs = [ makeWrapper ];
unpackPhase = ''
ar xf $src
tar xf data.tar.xz
'';
installPhase = ''
mkdir -p $out
cp -r usr/* $out
rm -r $out/share/greenfoot/jdk
rm -r $out/share/greenfoot/javafx
makeWrapper ${jdk}/bin/java $out/bin/greenfoot \
--add-flags "-Djavafx.embed.singleThread=true -Dawt.useSystemAAFontSettings=on -Xmx512M -cp \"$out/share/greenfoot/bluej.jar\" bluej.Boot -greenfoot=true -bluej.compiler.showunchecked=false -greenfoot.scenarios=$out/share/doc/Greenfoot/scenarios -greenfoot.url.javadoc=file://$out/share/doc/Greenfoot/API"
'';
meta = with stdenv.lib; {
description = "A simple integrated development environment for Java";
homepage = "https://www.greenfoot.org/";
license = licenses.gpl2ClasspathPlus;
maintainers = [ maintainers.charvp ];
platforms = platforms.unix;
};
}

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "kdev-php"; pname = "kdev-php";
version = "5.5.2"; version = "5.6.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz"; url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
sha256 = "0z32x0297g078jk3jhzb4vrf8jhw0qprvqzm9p097h8x0026w42l"; sha256 = "1j5m9mhjzp2r4wdwnnnckms8ic536s6y0iyry2zdndbsy215hqlz";
}; };
nativeBuildInputs = [ cmake extra-cmake-modules ]; nativeBuildInputs = [ cmake extra-cmake-modules ];

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "kdev-python"; pname = "kdev-python";
version = "5.5.2"; version = "5.6.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz"; url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
sha256 = "1qxvsz19iv5fr0nvz75b13knmsbkhkgvlvrhip8y4j66ypscs652"; sha256 = "1bm6jk7gkl4vi579x99mja4znrzzp15zk66ss600dn8aq11jrxv2";
}; };
cmakeFlags = [ cmakeFlags = [

View file

@ -10,11 +10,11 @@
mkDerivation rec { mkDerivation rec {
pname = "kdevelop"; pname = "kdevelop";
version = "5.5.2"; version = "5.6.0";
src = fetchurl { src = fetchurl {
url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz"; url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz";
sha256 = "1nkl3z1n1l7ly2zvmbx2sdhx5q72wcvpwhzsz3qgw1474qd9i3i2"; sha256 = "0cpmavxz5fi0f1rjinvn6id1nplvjwg00l0n36s0ybygqkacgb9q";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -6,13 +6,13 @@
mkDerivation rec { mkDerivation rec {
pname = "sigil"; pname = "sigil";
version = "1.4.2"; version = "1.4.3";
src = fetchFromGitHub { src = fetchFromGitHub {
repo = "Sigil"; repo = "Sigil";
owner = "Sigil-Ebook"; owner = "Sigil-Ebook";
rev = version; rev = version;
sha256 = "1vn444ax5af1gbhkm9lz46jc7zi4grf16cb4wqyb6hvgj2gbl0iw"; sha256 = "1hk8kmhvkwfimbxzhwbnb8qdpf4n36cdzl9wfvi574i9pps36hnz";
}; };
pythonPath = with python3Packages; [ lxml ]; pythonPath = with python3Packages; [ lxml ];

View file

@ -10,14 +10,14 @@
pythonPackages.buildPythonPackage { pythonPackages.buildPythonPackage {
pname = "hydrus"; pname = "hydrus";
version = "413"; version = "420";
format = "other"; format = "other";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hydrusnetwork"; owner = "hydrusnetwork";
repo = "hydrus"; repo = "hydrus";
rev = "9fbed11bef499e01a6799b298bea7d0967d30430"; rev = "067c4862a0ed8dd9264b464c69975b520139809f";
sha256 = "1dl7qpzmlxl376lzm0chmwvf4nl55wz6fwcsw0ikb33rm8r33gq4"; sha256 = "12x0rv2yxsczdaxvpb5ggf4jwzjd1vd7ml0r61s4342zwvjrhji9";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -5,11 +5,11 @@ watchdog, wtforms }:
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "archivy"; pname = "archivy";
version = "0.8.5"; version = "0.9.2";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "144ckgxjaw29yp5flyxd1rnkm7hlim4zgy6xng7x0a9j54h527iq"; sha256 = "5cb760da57dc9dcdd62c0af824993d1715ec7035915629b4046d8bf50442756c";
}; };
# Relax some dependencies # Relax some dependencies

View file

@ -3,13 +3,13 @@
mkDerivation rec { mkDerivation rec {
pname = "AusweisApp2"; pname = "AusweisApp2";
version = "1.20.2"; version = "1.22.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Governikus"; owner = "Governikus";
repo = "AusweisApp2"; repo = "AusweisApp2";
rev = version; rev = version;
sha256 = "1vibk3wmn54qr2mwz537hrr959y0r1zabp0gsijhzj2mk68g9pnb"; sha256 = "00isb8xcbm419nvxx2ri0n8x5d403733h2whjqjcd3hmpx3x4q1h";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];

View file

@ -1,26 +1,27 @@
{ mkDerivation, lib, fetchFromGitHub, cmake, python3, qtbase, qtquickcontrols2, qtgraphicaleffects, curaengine, plugins ? [] }: { mkDerivation, lib, fetchFromGitHub, cmake, python3, qtbase,
qtquickcontrols2, qtgraphicaleffects, curaengine, plugins ? [] }:
mkDerivation rec { mkDerivation rec {
pname = "cura"; pname = "cura";
version = "4.7.1"; version = "4.8.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Ultimaker"; owner = "Ultimaker";
repo = "Cura"; repo = "Cura";
rev = version; rev = version;
sha256 = "19an168iad3cb5w8i71c0wbr79qnz5qnpxqx1j6dgh64qz6ffn2r"; sha256 = "060fqzspipm93ks0inrj7yrj5wmvkdfv8xaxrv22590yb9f95s9m";
}; };
materials = fetchFromGitHub { materials = fetchFromGitHub {
owner = "Ultimaker"; owner = "Ultimaker";
repo = "fdm_materials"; repo = "fdm_materials";
rev = version; rev = version;
sha256 = "1w6i0dlff8b30q987x3y0zv8847fc8ppfcr9vi982msmv284c89z"; sha256 = "0hi9w1fsnazlr0vvxdr3alsdb8m1vjjfp5zhmlz4kyyxhsy3bc33";
}; };
buildInputs = [ qtbase qtquickcontrols2 qtgraphicaleffects ]; buildInputs = [ qtbase qtquickcontrols2 qtgraphicaleffects ];
propagatedBuildInputs = with python3.pkgs; [ propagatedBuildInputs = with python3.pkgs; [
libsavitar numpy-stl pyserial requests uranium zeroconf libsavitar numpy-stl pyserial requests uranium zeroconf pynest2d
sentry-sdk trimesh sentry-sdk trimesh
] ++ plugins; ] ++ plugins;
nativeBuildInputs = [ cmake python3.pkgs.wrapPython ]; nativeBuildInputs = [ cmake python3.pkgs.wrapPython ];

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "curaengine"; pname = "curaengine";
version = "4.7.1"; version = "4.8.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Ultimaker"; owner = "Ultimaker";
repo = "CuraEngine"; repo = "CuraEngine";
rev = version; rev = version;
sha256 = "177fk6j4gn3ssi8j1qxj8p4486f7jkz328vc75agxnh7vhd4mwsm"; sha256 = "083l327ry6hv3yaa1p8dx1hx7fm12b0lh5nlbshxjyym0vi15rw2";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -16,6 +16,10 @@ buildGoModule rec {
vendorSha256 = "1552k85z4s6gv7sss7dccv3h8x22j2sr12icp6s7s0a3i4iwyksw"; vendorSha256 = "1552k85z4s6gv7sss7dccv3h8x22j2sr12icp6s7s0a3i4iwyksw";
buildFlagsArray = ''
-ldflags=-s -w -X github.com/tomwright/dasel/internal.Version=${version}
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Query and update data structures from the command line"; description = "Query and update data structures from the command line";
longDescription = '' longDescription = ''

View file

@ -19,7 +19,7 @@
}: }:
let let
version = "4.0.5"; version = "4.0.6";
# electrum is not compatible with dnspython 2.0.0 yet # electrum is not compatible with dnspython 2.0.0 yet
# use the latest 1.x release instead # use the latest 1.x release instead
@ -43,7 +43,7 @@ let
owner = "spesmilo"; owner = "spesmilo";
repo = "electrum"; repo = "electrum";
rev = version; rev = version;
sha256 = "0fdsgxzgsxvx6hhjag894nzzdfq989bx1d4anljzcz2ppy4ivpxg"; sha256 = "0mdbg2sq56nv0hx0rrcbgrv1lv89nqc6cqigivgk665hhjm4v5kq";
extraPostFetch = '' extraPostFetch = ''
mv $out ./all mv $out ./all
@ -58,7 +58,7 @@ py.pkgs.buildPythonApplication {
src = fetchurl { src = fetchurl {
url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz"; url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz";
sha256 = "06ml9lwa5k2dp56sm5s7dsl6qirqmgim7rn853cqcq9n45z41437"; sha256 = "0sp8p720g3rqnh52ddhaw2v4hjgpxcwbackw9qc1g9xac1q0942d";
}; };
postUnpack = '' postUnpack = ''

View file

@ -1,16 +1,32 @@
{ fetchurl, stdenv, pkg-config, wrapGAppsHook, curl, gnome2, gpsd, gtk2 { stdenv, fetchbzr, autoreconfHook, texinfo, help2man, imagemagick, pkg-config
, curl, gnome2, gpsd, gtk2, wrapGAppsHook
, intltool, libexif, python3Packages, sqlite }: , intltool, libexif, python3Packages, sqlite }:
stdenv.mkDerivation rec { let
pname = "foxtrotgps"; srcs = {
version = "1.2.2"; foxtrot = fetchbzr {
url = "lp:foxtrotgps";
src = fetchurl { rev = "326";
url = "https://www.foxtrotgps.org/releases/foxtrotgps-${version}.tar.xz"; sha256 = "191pgcy5rng8djy22a5z9s8gssc73f9p5hm4ig52ra189cb48d8k";
sha256 = "0grn35j5kwc286dxx18fv32qa330xmalqliwy6zirxmj6dffvrkg"; };
screenshots = fetchbzr {
url = "lp:foxtrotgps/screenshots";
rev = "2";
sha256 = "1sgysn3dhfhrv7rj7wf8f2119vmhc1s1zzsp4r3nlrr45d20wmsv";
};
}; };
in stdenv.mkDerivation rec {
pname = "foxtrotgps";
version = "1.2.2+326";
nativeBuildInputs = [ pkg-config wrapGAppsHook ]; # Pull directly from bzr because gpsd API version 9 is not supported on latest release
src = srcs.foxtrot;
patches = [
./gps-status-fix.patch
];
nativeBuildInputs = [ pkg-config autoreconfHook texinfo help2man imagemagick wrapGAppsHook ];
buildInputs = [ buildInputs = [
curl.dev curl.dev
@ -22,7 +38,16 @@ stdenv.mkDerivation rec {
sqlite.dev sqlite.dev
(python3Packages.python.withPackages (pythonPackages: with python3Packages; (python3Packages.python.withPackages (pythonPackages: with python3Packages;
[ beautifulsoup4 feedparser sqlalchemy ])) [ beautifulsoup4 feedparser sqlalchemy ]))
]; ];
postUnpack = ''
cp -R ${srcs.screenshots} $sourceRoot/doc/screenshots
chmod -R u+w $sourceRoot/doc/screenshots
'';
preConfigure = ''
intltoolize --automake --copy --force
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "GPS/GIS application optimized for small screens"; description = "GPS/GIS application optimized for small screens";

View file

@ -0,0 +1,14 @@
--- foxtrot/src/gps_functions.c.orig 2020-12-04 15:02:22.290163204 -0600
+++ foxtrot/src/gps_functions.c 2020-12-04 15:04:54.470648534 -0600
@@ -762,7 +762,11 @@
{
gpsdata->fix.time = (time_t) 0;
}
+#if GPSD_API_MAJOR_VERSION >= 9
+ gpsdata->valid = (libgps_gpsdata.fix.status != STATUS_NO_FIX);
+#else
gpsdata->valid = (libgps_gpsdata.status != STATUS_NO_FIX);
+#endif
if (gpsdata->valid)
{
gpsdata->seen_valid = TRUE;

View file

@ -1,17 +1,38 @@
{ stdenv, fetchurl, pkgconfig, libgphoto2, libexif, popt, gettext { stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
, libjpeg, readline, libtool , gettext
, libexif
, libgphoto2
, libjpeg
, libtool
, popt
, readline
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gphoto2-2.5.26"; pname = "gphoto2";
version = "2.5.26";
src = fetchurl { src = fetchFromGitHub {
url = "mirror://sourceforge/gphoto/${name}.tar.bz2"; owner = "gphoto";
sha256 = "0bxbcn31xalsvjp8fra324hf2105y3ps7zlyfz11v71j0lxj2lvn"; repo = "gphoto2";
rev = "v${version}";
sha256 = "1w01j3qvjl2nlfs38rnsmjvn3r0r2xf7prxz1i6yarbpj3fzwqqc";
}; };
nativeBuildInputs = [ pkgconfig gettext libtool ]; nativeBuildInputs = [
buildInputs = [ libgphoto2 libexif popt libjpeg readline ]; autoreconfHook
pkgconfig
gettext
libtool
];
buildInputs = [
libexif
libgphoto2
libjpeg
popt
readline
];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A ready to use set of digital camera software applications"; description = "A ready to use set of digital camera software applications";

View file

@ -2,7 +2,7 @@
let let
pname = "joplin-desktop"; pname = "joplin-desktop";
version = "1.4.15"; version = "1.4.19";
name = "${pname}-${version}"; name = "${pname}-${version}";
inherit (stdenv.hostPlatform) system; inherit (stdenv.hostPlatform) system;
@ -16,8 +16,8 @@ let
src = fetchurl { src = fetchurl {
url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}.${suffix}"; url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}.${suffix}";
sha256 = { sha256 = {
x86_64-linux = "12wh7f1a9sn250lqnb8c9b5gqr8r76kxrhl0kgsm2lg93jgpvvbb"; x86_64-linux = "1xyj30pnlczchbh4awb955sxh51v89d170f4yk0v1jkj7dg2wjgj";
x86_64-darwin = "1jzfqwyz3vkmmkdzx3iw36fbjq7fns46v8crmg5n09w9kvf22qil"; x86_64-darwin = "166yp2rr87p0lh64ngs498a50ahcann8z5s0g2p0azs6wi54a6kw";
}.${system} or throwSystem; }.${system} or throwSystem;
}; };

View file

@ -35,13 +35,13 @@
buildPythonApplication rec { buildPythonApplication rec {
pname = "orca"; pname = "orca";
version = "3.38.0"; version = "3.38.1";
format = "other"; format = "other";
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1vkg6p1dlrgx1yyscmy0m58inaq4ljshbdxw0nhi1nwqk3bpjchw"; sha256 = "1sqmq9xhcm3rc3mbhj1bdn55bkpzbk72xhmgka75syxh77gzz0ld";
}; };
patches = [ patches = [

View file

@ -5,13 +5,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "pdfarranger"; pname = "pdfarranger";
version = "1.6.0"; version = "1.6.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jeromerobert"; owner = pname;
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "03siz4ar6flyvrrgh7hr7sslc6n9x5d9i13lc5rm2qnssd0qdich"; sha256 = "wJ6ImWpszfgErfLh7YgHirVKFIt0ij8A/CdYJmkNBP0=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -33,6 +33,10 @@ python3Packages.buildPythonApplication rec {
# incompatible with wrapGAppsHook # incompatible with wrapGAppsHook
strictDeps = false; strictDeps = false;
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
doCheck = false; # no tests doCheck = false; # no tests

View file

@ -27,13 +27,13 @@ assert i3GapsSupport -> ! i3Support && jsoncpp != null && i3-gaps != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "polybar"; pname = "polybar";
version = "3.4.3"; version = "3.5.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "0fsfh3xv0c0hz10xqzvd01c0p0wvzcnanbyczi45zhaxfrisb39w"; sha256 = "1kga98cgllsjcq692l27y01sgl8ii4wxp70kmdcwxkrliylg3dji";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View file

@ -32,6 +32,10 @@ mkDerivation rec {
url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-qtgui-include.patch?h=qlandkartegt"; url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-qtgui-include.patch?h=qlandkartegt";
sha256 = "16hql8ignzw4n1hlp4icbvaddqcadh2rjns0bvis720535112sc8"; sha256 = "16hql8ignzw4n1hlp4icbvaddqcadh2rjns0bvis720535112sc8";
}) })
(fetchpatch {
url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-timespec.patch?h=qlandkartegt";
sha256 = "1yzdwfsgjn7q04r9f7s5qk50y25hdl384dxrmpfmkm97fmpgyr7w";
})
(fetchpatch { (fetchpatch {
url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-ver_str.patch?h=qlandkartegt"; url = "https://aur.archlinux.org/cgit/aur.git/plain/fix-ver_str.patch?h=qlandkartegt";
sha256 = "13fg05gqrjfa9j00lrqz1b06xf6r5j01kl6l06vkn0hz1jzxss5m"; sha256 = "13fg05gqrjfa9j00lrqz1b06xf6r5j01kl6l06vkn0hz1jzxss5m";

View file

@ -17,10 +17,10 @@ let
pname = "simplenote"; pname = "simplenote";
version = "2.1.0"; version = "2.2.0";
sha256 = { sha256 = {
x86_64-linux = "0lg48nq493anpnm20vw72y242nxa1g903bxzp4pngzxyi986jddz"; x86_64-linux = "123b0fh14068s2z3k6s5mmh46xwlz02qfnpmj838zlm5hckjmifv";
}.${system} or throwSystem; }.${system} or throwSystem;
meta = with stdenv.lib; { meta = with stdenv.lib; {

View file

@ -20,14 +20,14 @@
}: }:
mkDerivation rec { mkDerivation rec {
version = "1.0.1"; version = "1.1.0";
pname = "syncthingtray"; pname = "syncthingtray";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Martchus"; owner = "Martchus";
repo = "syncthingtray"; repo = "syncthingtray";
rev = "v${version}"; rev = "v${version}";
sha256 = "1dln5gh3p8nz9qmg07cw2s0lpzp3rfhyrwdhczj89g27bwk0lr4k"; sha256 = "0nzkzx870hzil2kny1irp4w2kxz5gmpchr2qxb7q4f9cnih92n0j";
}; };
buildInputs = [ qtbase cpp-utilities qtutilities ] buildInputs = [ qtbase cpp-utilities qtutilities ]

View file

@ -1,5 +1,5 @@
{ stdenv, stdenvGcc6, lib { stdenv, stdenvGcc6, lib
, fetchFromGitHub, cmake, libmicrohttpd, openssl , fetchFromGitHub, cmake, libmicrohttpd_0_9_70, openssl
, opencl-headers, ocl-icd, hwloc, cudatoolkit , opencl-headers, ocl-icd, hwloc, cudatoolkit
, devDonationLevel ? "0.0" , devDonationLevel ? "0.0"
, cudaSupport ? false , cudaSupport ? false
@ -27,7 +27,7 @@ stdenv'.mkDerivation rec {
++ lib.optional (!openclSupport) "-DOpenCL_ENABLE=OFF"; ++ lib.optional (!openclSupport) "-DOpenCL_ENABLE=OFF";
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ libmicrohttpd openssl hwloc ] buildInputs = [ libmicrohttpd_0_9_70 openssl hwloc ]
++ lib.optional cudaSupport cudatoolkit ++ lib.optional cudaSupport cudatoolkit
++ lib.optionals openclSupport [ opencl-headers ocl-icd ]; ++ lib.optionals openclSupport [ opencl-headers ocl-icd ];

View file

@ -13,9 +13,15 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake qttools wrapQtAppsHook ]; nativeBuildInputs = [ cmake qttools wrapQtAppsHook ];
buildInputs = [ bzip2 qtbase libnova proj openjpeg libpng ]; buildInputs = [ bzip2 qtbase libnova proj openjpeg libpng ];
cmakeFlags = [ "-DOPENJPEG_INCLUDE_DIR=${openjpeg.dev}/include/openjpeg-2.3" ]; cmakeFlags = [ "-DOPENJPEG_INCLUDE_DIR=${openjpeg.dev}/include/openjpeg-2.3" ]
++ stdenv.lib.optionals stdenv.isDarwin [ "-DLIBNOVA_LIBRARY=${libnova}/lib/libnova.dylib" ];
postInstall = '' postInstall = if stdenv.isDarwin then ''
mkdir -p "$out/Applications" "$out/XyGrib/XyGrib.app/Contents/Resources"
cp "../data/img/xyGrib.icns" "$out/XyGrib/XyGrib.app/Contents/Resources/xyGrib.icns"
mv $out/XyGrib/XyGrib.app $out/Applications
wrapQtApp "$out/Applications/XyGrib.app/Contents/MacOS/XyGrib"
'' else ''
wrapQtApp $out/XyGrib/XyGrib wrapQtApp $out/XyGrib/XyGrib
mkdir -p $out/bin mkdir -p $out/bin
ln -s $out/XyGrib/XyGrib $out/bin/xygrib ln -s $out/XyGrib/XyGrib $out/bin/xygrib
@ -29,6 +35,6 @@ stdenv.mkDerivation rec {
of global and large area atmospheric and wave models.''; of global and large area atmospheric and wave models.'';
license = licenses.gpl3; license = licenses.gpl3;
platforms = platforms.all; platforms = platforms.all;
maintainers = [ maintainers.j03 ]; maintainers = with maintainers; [ j03 SuperSandro2000 ];
}; };
} }

View file

@ -18,20 +18,14 @@
, ffmpeg, libxslt, libxml2, at-spi2-core , ffmpeg, libxslt, libxml2, at-spi2-core
, jre8 , jre8
, pipewire_0_2 , pipewire_0_2
, libva
# optional dependencies # optional dependencies
, libgcrypt ? null # gnomeSupport || cupsSupport , libgcrypt ? null # gnomeSupport || cupsSupport
, libva ? null # useVaapi
, libdrm ? null, wayland ? null, mesa ? null, libxkbcommon ? null # useOzone , libdrm ? null, wayland ? null, mesa ? null, libxkbcommon ? null # useOzone
# package customization # package customization
, useOzone ? false , useOzone ? true
, useVaapi ? !(useOzone || stdenv.isAarch64) # Built if supported, but disabled in the wrapper
# VA-API TODOs:
# - Ozone: M81 fails to build due to "ozone_platform_gbm = false"
# - Possible solutions: Write a patch to fix the build (wrong gn dependencies)
# or build with minigbm
# - AArch64: Causes serious regressions (https://github.com/NixOS/nixpkgs/pull/85253#issuecomment-614405879)
, gnomeSupport ? false, gnome ? null , gnomeSupport ? false, gnome ? null
, gnomeKeyringSupport ? false, libgnome-keyring3 ? null , gnomeKeyringSupport ? false, libgnome-keyring3 ? null
, proprietaryCodecs ? true , proprietaryCodecs ? true
@ -141,8 +135,8 @@ let
pciutils protobuf speechd libXdamage at-spi2-core pciutils protobuf speechd libXdamage at-spi2-core
jre jre
pipewire_0_2 pipewire_0_2
] ++ optional useVaapi libva libva
++ optional gnomeKeyringSupport libgnome-keyring3 ] ++ optional gnomeKeyringSupport libgnome-keyring3
++ optionals gnomeSupport [ gnome.GConf libgcrypt ] ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
++ optionals cupsSupport [ libgcrypt cups ] ++ optionals cupsSupport [ libgcrypt cups ]
++ optional pulseSupport libpulseaudio ++ optional pulseSupport libpulseaudio
@ -220,9 +214,8 @@ let
custom_toolchain = "//build/toolchain/linux/unbundle:default"; custom_toolchain = "//build/toolchain/linux/unbundle:default";
host_toolchain = "//build/toolchain/linux/unbundle:default"; host_toolchain = "//build/toolchain/linux/unbundle:default";
is_official_build = true; is_official_build = true;
is_debug = false;
proprietary_codecs = false; use_vaapi = !stdenv.isAarch64; # TODO: Remove once M88 is released
use_sysroot = false; use_sysroot = false;
use_gnome_keyring = gnomeKeyringSupport; use_gnome_keyring = gnomeKeyringSupport;
use_gio = gnomeSupport; use_gio = gnomeSupport;
@ -238,7 +231,6 @@ let
rtc_use_pipewire = true; rtc_use_pipewire = true;
treat_warnings_as_errors = false; treat_warnings_as_errors = false;
is_clang = stdenv.cc.isClang;
clang_use_chrome_plugins = false; clang_use_chrome_plugins = false;
blink_symbol_level = 0; blink_symbol_level = 0;
symbol_level = 0; symbol_level = 0;
@ -256,14 +248,11 @@ let
proprietary_codecs = true; proprietary_codecs = true;
enable_hangout_services_extension = true; enable_hangout_services_extension = true;
ffmpeg_branding = "Chrome"; ffmpeg_branding = "Chrome";
} // optionalAttrs useVaapi {
use_vaapi = true;
} // optionalAttrs pulseSupport { } // optionalAttrs pulseSupport {
use_pulseaudio = true; use_pulseaudio = true;
link_pulseaudio = true; link_pulseaudio = true;
} // optionalAttrs useOzone { } // optionalAttrs useOzone {
use_ozone = true; use_ozone = true;
ozone_platform_gbm = false;
use_xkbcommon = true; use_xkbcommon = true;
use_glib = true; use_glib = true;
use_gtk = true; use_gtk = true;

View file

@ -15,7 +15,6 @@
, enablePepperFlash ? false , enablePepperFlash ? false
, enableWideVine ? false , enableWideVine ? false
, enableVaapi ? false # Disabled by default due to unofficial support , enableVaapi ? false # Disabled by default due to unofficial support
, useOzone ? true
, cupsSupport ? true , cupsSupport ? true
, pulseSupport ? config.pulseaudio or stdenv.isLinux , pulseSupport ? config.pulseaudio or stdenv.isLinux
, commandLineArgs ? "" , commandLineArgs ? ""
@ -34,15 +33,13 @@ let
mkChromiumDerivation = callPackage ./common.nix ({ mkChromiumDerivation = callPackage ./common.nix ({
inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs
cupsSupport pulseSupport useOzone; cupsSupport pulseSupport;
gnChromium = gn.overrideAttrs (oldAttrs: { gnChromium = gn.overrideAttrs (oldAttrs: {
inherit (upstream-info.deps.gn) version; inherit (upstream-info.deps.gn) version;
src = fetchgit { src = fetchgit {
inherit (upstream-info.deps.gn) url rev sha256; inherit (upstream-info.deps.gn) url rev sha256;
}; };
}); });
# TODO: Cleanup useOzone and useVaapi in common.nix:
useVaapi = !stdenv.isAarch64; # TODO: Might be best to not set use_vaapi anymore (default is fine)
}); });
browser = callPackage ./browser.nix { inherit channel enableWideVine; }; browser = callPackage ./browser.nix { inherit channel enableWideVine; };

View file

@ -1,8 +1,8 @@
{ {
"stable": { "stable": {
"version": "87.0.4280.66", "version": "87.0.4280.88",
"sha256": "0hgpg31gkksqgyvycsan7l7vjypc7cr6ikjfygf2zv7dhbmf9a19", "sha256": "1h09g9b2zxad85vd146ymvg3w2kpngpi78yig3dn1vrmhwr4aiiy",
"sha256bin64": "09hjhxjihhxq5i2wadpa0g72a6iis0igarr8arrcah4122icdr77", "sha256bin64": "0n3fm6wf8zfkv135d50xl8xxrnng3q55vyxkck1da8jyvh18bijb",
"deps": { "deps": {
"gn": { "gn": {
"version": "2020-09-09", "version": "2020-09-09",
@ -12,28 +12,28 @@
} }
}, },
"chromedriver": { "chromedriver": {
"version": "87.0.4280.20", "version": "87.0.4280.88",
"sha256_linux": "1cpk7mb32z3a7c7cbaaxskpv91il3i8kgsdp2q8zw9w762kql953", "sha256_linux": "141mr2jiy3nslwd3s43m4i6plkv9wv5fgi78cn7mz0ac9x6fpcgx",
"sha256_darwin": "06mx2yk6xy46azvkbyvhqm11prxbh67pfi50fcwxb0zqllbq7scr" "sha256_darwin": "048hsqp6575r980m769lzznvxypmfcwn89f1d3ik751ymzmb5r78"
} }
}, },
"beta": { "beta": {
"version": "87.0.4280.66", "version": "88.0.4324.27",
"sha256": "0hgpg31gkksqgyvycsan7l7vjypc7cr6ikjfygf2zv7dhbmf9a19", "sha256": "0mciiyh3sn2zrl8g6znylc2pm9sb0wzsclgavf7mmlknri5sjblc",
"sha256bin64": "15n01jia8sxv3a7vfbla40rq45x54pyksg0kg14bm0br6m3n65pz", "sha256bin64": "0qf2j1j3p94s724rwh8fydpjn88cs9yxxhjf5axvqwi7q3h35cfx",
"deps": { "deps": {
"gn": { "gn": {
"version": "2020-09-09", "version": "2020-11-05",
"url": "https://gn.googlesource.com/gn", "url": "https://gn.googlesource.com/gn",
"rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2", "rev": "53d92014bf94c3893886470a1c7c1289f8818db0",
"sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk" "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9"
} }
} }
}, },
"dev": { "dev": {
"version": "88.0.4324.27", "version": "89.0.4343.0",
"sha256": "0mciiyh3sn2zrl8g6znylc2pm9sb0wzsclgavf7mmlknri5sjblc", "sha256": "0jmc1l0lysl5zax98fjhzsfq3c1sqh3n3xscidafflx362wcfpwa",
"sha256bin64": "0ax27j42167yyx90h5k6ra898kn626w5cvgmafm3al9kyfsx36m4", "sha256bin64": "1v6xik8kf531y0g5xj0c8szjmak0qvh77kwkw7p7hqxqmnwwp06d",
"deps": { "deps": {
"gn": { "gn": {
"version": "2020-11-05", "version": "2020-11-05",

View file

@ -27,7 +27,7 @@ rec {
meta = { meta = {
description = "A web browser built from Firefox source tree"; description = "A web browser built from Firefox source tree";
homepage = "http://www.mozilla.com/en-US/firefox/"; homepage = "http://www.mozilla.com/en-US/firefox/";
maintainers = with lib.maintainers; [ eelco andir ]; maintainers = with lib.maintainers; [ eelco ];
platforms = lib.platforms.unix; platforms = lib.platforms.unix;
badPlatforms = lib.platforms.darwin; badPlatforms = lib.platforms.darwin;
broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory". broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory".
@ -51,7 +51,7 @@ rec {
meta = { meta = {
description = "A web browser built from Firefox Extended Support Release source tree"; description = "A web browser built from Firefox Extended Support Release source tree";
homepage = "http://www.mozilla.com/en-US/firefox/"; homepage = "http://www.mozilla.com/en-US/firefox/";
maintainers = with lib.maintainers; [ eelco andir ]; maintainers = with lib.maintainers; [ eelco ];
platforms = lib.platforms.unix; platforms = lib.platforms.unix;
badPlatforms = lib.platforms.darwin; badPlatforms = lib.platforms.darwin;
broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory". broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory".

View file

@ -41,7 +41,7 @@ let
# https://github.com/mozilla/policy-templates#enterprisepoliciesenabled # https://github.com/mozilla/policy-templates#enterprisepoliciesenabled
, extraPolicies ? {} , extraPolicies ? {}
, firefoxLibName ? "firefox" # Important for tor package or the like , firefoxLibName ? "firefox" # Important for tor package or the like
, extraExtensions ? [ ] , nixExtensions ? null
}: }:
assert forceWayland -> (browser ? gtk3); # Can only use the wayland backend if gtk3 is being used assert forceWayland -> (browser ? gtk3); # Can only use the wayland backend if gtk3 is being used
@ -100,19 +100,21 @@ let
policiesJson = builtins.toFile "policies.json" policiesJson = builtins.toFile "policies.json"
(builtins.toJSON enterprisePolicies); (builtins.toJSON enterprisePolicies);
usesNixExtensions = nixExtensions != null;
extensions = builtins.map (a: extensions = builtins.map (a:
if ! (builtins.hasAttr "extid" a) then if ! (builtins.hasAttr "extid" a) then
throw "extraExtensions has an invalid entry. Missing extid attribute. Please use fetchfirefoxaddon" throw "nixExtensions has an invalid entry. Missing extid attribute. Please use fetchfirefoxaddon"
else else
a a
) extraExtensions; ) (if usesNixExtensions then nixExtensions else []);
enterprisePolicies = enterprisePolicies =
{ {
policies = { policies = lib.optionalAttrs usesNixExtensions {
DisableAppUpdate = true; DisableAppUpdate = true;
} // } //
{ lib.optionalAttrs usesNixExtensions {
ExtensionSettings = { ExtensionSettings = {
"*" = { "*" = {
blocked_install_message = "You can't have manual extension mixed with nix extensions"; blocked_install_message = "You can't have manual extension mixed with nix extensions";
@ -137,7 +139,7 @@ let
// to be able to install addons that do not have an extid // to be able to install addons that do not have an extid
// Security is maintained because only user whitelisted addons // Security is maintained because only user whitelisted addons
// with a checksum can be installed // with a checksum can be installed
lockPref("xpinstall.signatures.required", false); ${ lib.optionalString usesNixExtensions ''lockPref("xpinstall.signatures.required", false)'' };
${extraPrefs} ${extraPrefs}
''; '';

View file

@ -31,12 +31,12 @@ let
in mkDerivationWith python3Packages.buildPythonApplication rec { in mkDerivationWith python3Packages.buildPythonApplication rec {
pname = "qutebrowser"; pname = "qutebrowser";
version = "1.14.0"; version = "1.14.1";
# the release tarballs are different from the git checkout! # the release tarballs are different from the git checkout!
src = fetchurl { src = fetchurl {
url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz"; url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz";
sha256 = "0jip413yvyhdaywz0iadc32aaanjnhbx1d1vwzx3z1xbgc4i9svn"; sha256 = "15l7jphy1qjsh6y6kd5mgkxsl6ymm9564g1yypa946jbyrgi8k2m";
}; };
# Needs tox # Needs tox

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "k9s"; pname = "k9s";
version = "0.24.1"; version = "0.24.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "derailed"; owner = "derailed";
repo = "k9s"; repo = "k9s";
rev = "v${version}"; rev = "v${version}";
sha256 = "1b67a417b0914ccl7drdfd7bq1qsfkw9haqz4m5j96qb0l5p71w2"; sha256 = "0cr7ap9yfd9flcph98rxap2f46fc3v689v31mc8n7vxi9jr07irh";
}; };
buildFlagsArray = '' buildFlagsArray = ''

View file

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "starboard"; pname = "starboard";
version = "0.6.0"; version = "0.7.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "aquasecurity"; owner = "aquasecurity";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "00d3cnd3n6laa6rphw5w9xk8slpp4a603vzhixzg01sghq26gy22"; sha256 = "1xj0fa52973h7cg3scxn85lav98q6fz82dwd5cls3p39ghnhzn5l";
}; };
vendorSha256 = "0y816r75rp1a4rp7j0a8wzrfi2mdf4ji1vz2vaj5s7x9ik6rc13r"; vendorSha256 = "07cz4p8k927ash5ncw1r56bcn592imgywbyzkvhnn50pap91m0q0";
subPackages = [ "cmd/starboard" ]; subPackages = [ "cmd/starboard" ];

View file

@ -720,11 +720,11 @@
"version": "0.8.0" "version": "0.8.0"
}, },
"packet": { "packet": {
"owner": "terraform-providers", "owner": "packethost",
"repo": "terraform-provider-packet", "repo": "terraform-provider-packet",
"rev": "v2.9.0", "rev": "v3.2.0",
"sha256": "0d9r272gidkwn4zr130ml047512qq5d5d599s63blzy6m38vilha", "sha256": "sha256-YIv4OPRbR00YTVwz0iJ/y6qTbj50nsi5ylrWEx1kZck=",
"version": "2.9.0" "version": "3.2.0"
}, },
"pagerduty": { "pagerduty": {
"owner": "terraform-providers", "owner": "terraform-providers",

View file

@ -1,15 +1,13 @@
{ stdenv, lib, buildEnv, buildGoPackage, fetchFromGitHub, makeWrapper, coreutils { stdenv, lib, buildGoModule, fetchFromGitHub, makeWrapper, coreutils
, runCommand, runtimeShell, writeText, terraform-providers, fetchpatch }: , runCommand, runtimeShell, writeText, terraform-providers, fetchpatch }:
let let
goPackagePath = "github.com/hashicorp/terraform"; generic = { version, sha256, vendorSha256 ? null, ... }@attrs:
let attrs' = builtins.removeAttrs attrs [ "version" "sha256" "vendorSha256" ];
generic = { version, sha256, ... }@attrs: in buildGoModule ({
let attrs' = builtins.removeAttrs attrs [ "version" "sha256" ];
in buildGoPackage ({
name = "terraform-${version}"; name = "terraform-${version}";
inherit goPackagePath; inherit vendorSha256;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hashicorp"; owner = "hashicorp";
@ -18,7 +16,7 @@ let
inherit sha256; inherit sha256;
}; };
postPatch = '' postConfigure = ''
# speakeasy hardcodes /bin/stty https://github.com/bgentry/speakeasy/issues/22 # speakeasy hardcodes /bin/stty https://github.com/bgentry/speakeasy/issues/22
substituteInPlace vendor/github.com/bgentry/speakeasy/speakeasy_unix.go \ substituteInPlace vendor/github.com/bgentry/speakeasy/speakeasy_unix.go \
--replace "/bin/stty" "${coreutils}/bin/stty" --replace "/bin/stty" "${coreutils}/bin/stty"
@ -34,9 +32,12 @@ let
''; '';
preCheck = '' preCheck = ''
export HOME=$TMP export HOME=$TMPDIR
export TF_SKIP_REMOTE_TESTS=1
''; '';
subPackages = [ "." ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = description =
"Tool for building, changing, and versioning infrastructure"; "Tool for building, changing, and versioning infrastructure";
@ -163,6 +164,14 @@ in rec {
passthru = { inherit plugins; }; passthru = { inherit plugins; };
}); });
terraform_0_14 = pluggable (generic {
version = "0.14.0";
sha256 = "0pbglnvb6cx8zrz791lfa67dmjqfsyysbxm2083b1lhlmbybi9ax";
vendorSha256 = "1gxhdj98np482jm76aj6zbbmkn7vfk8b878hzz59iywgbdr1r4m1";
patches = [ ./provider-path.patch ];
passthru = { inherit plugins; };
});
# Tests that the plugins are being used. Terraform looks at the specific # Tests that the plugins are being used. Terraform looks at the specific
# file pattern and if the plugin is not found it will try to download it # file pattern and if the plugin is not found it will try to download it
# from the Internet. With sandboxing enable this test will fail if that is # from the Internet. With sandboxing enable this test will fail if that is

View file

@ -5,13 +5,13 @@ buildGoModule rec {
/* Do not use "dev" as a version. If you do, Tilt will consider itself /* Do not use "dev" as a version. If you do, Tilt will consider itself
running in development environment and try to serve assets from the running in development environment and try to serve assets from the
source tree, which is not there once build completes. */ source tree, which is not there once build completes. */
version = "0.17.12"; version = "0.17.13";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tilt-dev"; owner = "tilt-dev";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0l70nmxvk30h56bs46cgakddzdf3laj1y88d0jchij0yy7ixa61f"; sha256 = "sha256-x3U5OF8T3z9kHcYe7SwKVEKNiEsi8AEvA1rlOma4y+8=";
}; };
vendorSha256 = null; vendorSha256 = null;

View file

@ -0,0 +1,59 @@
{ stdenv, lib, python3Packages }:
python3Packages.buildPythonApplication rec {
pname = "dyndnsc";
version = "0.5.1";
src = python3Packages.fetchPypi {
inherit pname version;
hash = "sha256-Sy6U0XhIQ9mPmznmWKqoyqE34vaE84fwlivouaF7Dd0=";
};
postPatch = ''
substituteInPlace setup.py --replace "bottle==" "bottle>="
'';
nativeBuildInputs = with python3Packages; [ pytestrunner ];
propagatedBuildInputs = with python3Packages; [
daemonocle
dnspython
netifaces
requests
setuptools
];
checkInputs = with python3Packages; [ bottle pytestCheckHook ];
disabledTests = [
# dnswanip connects to an external server to discover the
# machine's IP address.
"dnswanip"
] ++ lib.optionals stdenv.isDarwin [
# The tests that spawn a server using Bottle cannot be run on
# macOS or Windows as the default multiprocessing start method
# on those platforms is 'spawn', which requires the code to be
# run to be picklable, which this code isn't.
# Additionaly, other start methods are unsafe and prone to failure
# on macOS; see https://bugs.python.org/issue33725.
"BottleServer"
];
# Allow tests that bind or connect to localhost on macOS.
__darwinAllowLocalNetworking = true;
meta = with lib; {
description = "Dynamic DNS update client with support for multiple protocols";
longDescription = ''
Dyndnsc is a command line client for sending updates to Dynamic
DNS (DDNS, DynDNS) services. It supports multiple protocols and
services, and it has native support for IPv6. The configuration
file allows using foreign, but compatible services. Dyndnsc
ships many different IP detection mechanisms, support for
configuring multiple services in one place and it has a daemon
mode for running unattended. It has a plugin system to provide
external notification services.
'';
homepage = "https://github.com/infothrill/python-dyndnsc";
license = licenses.mit;
maintainers = with maintainers; [ AluisioASG ];
platforms = platforms.unix;
};
}

View file

@ -1,7 +1,7 @@
{ callPackage, libsForQt5 }: { callPackage, libsForQt5 }:
let let
stableVersion = "2.2.16"; stableVersion = "2.2.17";
previewVersion = stableVersion; previewVersion = stableVersion;
addVersion = args: addVersion = args:
let version = if args.stable then stableVersion else previewVersion; let version = if args.stable then stableVersion else previewVersion;
@ -26,8 +26,8 @@ let
}; };
mkGui = args: libsForQt5.callPackage (import ./gui.nix (addVersion args // extraArgs)) { }; mkGui = args: libsForQt5.callPackage (import ./gui.nix (addVersion args // extraArgs)) { };
mkServer = args: callPackage (import ./server.nix (addVersion args // extraArgs)) { }; mkServer = args: callPackage (import ./server.nix (addVersion args // extraArgs)) { };
guiSrcHash = "1kz5gr5rwqp1hn9fw17v6sy2467506zks574nqcd2vgxzhr6cy6x"; guiSrcHash = "0dfyxr983w6lmbcvaf32bnm9cz7y7fp9jfaz8zxp1dvr6dr06cmv";
serverSrcHash = "1r6qj1l8jgyjm67agn83zp9c2n7pgfzwyh8a5q314zxi18nm6rqp"; serverSrcHash = "0m5ajd2zkafx89hvp202m351h1dygfc3jssl3m7nd7r42csyi2vj";
in { in {
guiStable = mkGui { guiStable = mkGui {
stable = true; stable = true;

View file

@ -7,10 +7,10 @@ in {
pname = "discord"; pname = "discord";
binaryName = "Discord"; binaryName = "Discord";
desktopName = "Discord"; desktopName = "Discord";
version = "0.0.12"; version = "0.0.13";
src = fetchurl { src = fetchurl {
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz"; url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
sha256 = "0qrzvc8cp8azb1b2wb5i4jh9smjfw5rxiw08bfqm8p3v74ycvwk8"; sha256 = "0d5z6cbj9dg3hjw84pyg75f8dwdvi2mqxb9ic8dfqzk064ssiv7y";
}; };
}; };
ptb = callPackage ./base.nix rec { ptb = callPackage ./base.nix rec {

View file

@ -4,13 +4,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "toxic"; pname = "toxic";
version = "0.9.1"; version = "0.10.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Tox"; owner = "Tox";
repo = "toxic"; repo = "toxic";
rev = "v${version}"; rev = "v${version}";
sha256 = "1j0yd33sm824dy4mhwfxqkywa46yhqy5hd5wq4lp7lgl6m6mypar"; sha256 = "1v9cdpy6i3xl70g75zg33sqi4aqp20by0pyjhjg5iz24fxvfaw6c";
}; };
makeFlags = [ "PREFIX=$(out)"]; makeFlags = [ "PREFIX=$(out)"];

View file

@ -27,11 +27,11 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "mutt"; pname = "mutt";
version = "2.0.2"; version = "2.0.3";
src = fetchurl { src = fetchurl {
url = "http://ftp.mutt.org/pub/mutt/${pname}-${version}.tar.gz"; url = "http://ftp.mutt.org/pub/mutt/${pname}-${version}.tar.gz";
sha256 = "1j0i2jmlk5sc78af9flj3ynj0iiwa8biw7jgf12qm5lppsx1h4j7"; sha256 = "1vf1ab3mnx7p4s4n4pssajj211s3zr4730bwgsjx9gxcnyppqclw";
}; };
patches = optional smimeSupport (fetchpatch { patches = optional smimeSupport (fetchpatch {

View file

@ -1,665 +1,665 @@
{ {
version = "78.5.0"; version = "78.5.1";
sources = [ sources = [
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/af/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/af/thunderbird-78.5.1.tar.bz2";
locale = "af"; locale = "af";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "011468ce085f2b5da8968b0622733d9fa25b47ec5e83b3bf4171323948aebb35"; sha256 = "87cb38398aaa5af68e562a5fc6d20d3d3477d871979bd4a635c94c440e66a482";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ar/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ar/thunderbird-78.5.1.tar.bz2";
locale = "ar"; locale = "ar";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "661b0f1981b21df20b910f9d833d86c2812b189097ad7e1affc7338abb4f0c5c"; sha256 = "935efae7caa116e16c341d64634954d77cafbc5e28626b46f5385b8416060f51";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ast/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ast/thunderbird-78.5.1.tar.bz2";
locale = "ast"; locale = "ast";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "c1acc2b6d5dd22adeab3106c3c6925ce0c1a434e1d38b3f699fab4ca319eab14"; sha256 = "a5868dc7987529790910e638b64b15295a2d57e449fa515f4e17a4ab88a830e6";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/be/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/be/thunderbird-78.5.1.tar.bz2";
locale = "be"; locale = "be";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "6f76341164c182dd8392d2d1abbb0408a3ab773a7389dbf1eb9bb4042d49f500"; sha256 = "af52b29567ce26159890f70fcdccd4cafd49c7fc75c620bb606727fd27b7049a";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/bg/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/bg/thunderbird-78.5.1.tar.bz2";
locale = "bg"; locale = "bg";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "4e97b38383d3a145645ca518449e37e42b5b25cbb98cb72f52657b4813f2b343"; sha256 = "91856a4745a8bdefac7c2b0193766a4f0009378dfe941dbbe1afcae2ffae2337";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/br/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/br/thunderbird-78.5.1.tar.bz2";
locale = "br"; locale = "br";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "1d5bcb706bf2eb589aa0c64589fc5b22021977947d6e1099f339a46c55a56f84"; sha256 = "d5ba5fe368c99377a264d8574607335fc4317dad447bb38fdc6a5b53d2e95b49";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ca/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ca/thunderbird-78.5.1.tar.bz2";
locale = "ca"; locale = "ca";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "3284b98707ee67977f148bd20d88750cc03799d9ba4aa5668c44901846fb8bcf"; sha256 = "396a1d7b668c7f47b56d7cb41e6e914f03e9e517a14b4698abedb501037ef2c1";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/cak/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/cak/thunderbird-78.5.1.tar.bz2";
locale = "cak"; locale = "cak";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "7998d66eaf3edc4ee156dff06a30de8abae08ff66b380ea93d7ec0b827a0ea29"; sha256 = "914b76ad8268db608be0595039a68189146ded384c23407ccbcd78a5e74e19ae";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/cs/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/cs/thunderbird-78.5.1.tar.bz2";
locale = "cs"; locale = "cs";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "5ba37c9dd7a1fc291bcc8b24ef025432dbd5f8a45ea2a4d1273177c6a7c8f6bd"; sha256 = "4b62702cabecfbb2567b19446f405936c9d948dad6f65a2e3f21809d4f2b1176";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/cy/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/cy/thunderbird-78.5.1.tar.bz2";
locale = "cy"; locale = "cy";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "baaad2ef28f51b6f57fa6f0583e8e0125c50ea3b4c94dea5854faf9826aecad0"; sha256 = "736d245bd7766ac8c611a6801b3769a84baf4abae94818e0cfcadde8521850ad";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/da/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/da/thunderbird-78.5.1.tar.bz2";
locale = "da"; locale = "da";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "6113ed3f5a36f16e64f0cc499eb683a0d7d377d0cce37882f46f203893b789d8"; sha256 = "53143b51b84ee74ee9131d3b3b80e2cf873e5a8c22478c87db34a9d2ac34607a";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/de/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/de/thunderbird-78.5.1.tar.bz2";
locale = "de"; locale = "de";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "81490e8cd8110285177c27f4057ff48ed1bdb55c94c83cc78e262b9cfcbd87ea"; sha256 = "2f3a4d8bf96e9653dd3883ac4399c650e87831d7df137358401966683d382e6c";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/dsb/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/dsb/thunderbird-78.5.1.tar.bz2";
locale = "dsb"; locale = "dsb";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "4c6abc365842c902ff184b403a6c271760bd8e71da9efa90d30310e032b03729"; sha256 = "81a3674dd2495da673a2fe3e3d200d7cadf83f9c67ff92bf2d607f6546bc2f38";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/el/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/el/thunderbird-78.5.1.tar.bz2";
locale = "el"; locale = "el";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "d492a83d3ddaf5beead77fd90a2334ca4ed90023d4c4ad478249a360f49cd5be"; sha256 = "651e8f535b2518bc4e56706cfb76da6d0e35d4fec031f8426cbefb404e4790d7";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/en-CA/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/en-CA/thunderbird-78.5.1.tar.bz2";
locale = "en-CA"; locale = "en-CA";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "d7ddc5a22e89827067255726824e46d3355906441051c9faa04e6241cb833955"; sha256 = "775983115d98e3581db993f6202fdad1de6b23d38e5bb7edfd965ad6bc0ae425";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/en-GB/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/en-GB/thunderbird-78.5.1.tar.bz2";
locale = "en-GB"; locale = "en-GB";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "10ff106bb933374661e3398ea4ce02c205242d1f7a647504161e295b5e3d1e11"; sha256 = "d0a3569c76b85fdca01e5098cf279b08a63d2d9023e92cadf3f8dc136d76c619";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/en-US/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/en-US/thunderbird-78.5.1.tar.bz2";
locale = "en-US"; locale = "en-US";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "297429aff3f10ab7c2859a37ec351b6b0a478495b8a34e8b492ae3473f052c7f"; sha256 = "4363d8fd759ac4f4783eeb76726c8cf22e5afb3c171f26fe5cca5ab194ab6959";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/es-AR/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/es-AR/thunderbird-78.5.1.tar.bz2";
locale = "es-AR"; locale = "es-AR";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "c8bafb3476d127d28f565ea5dd749b0c870087f395e0aabfb848a004846498e9"; sha256 = "3a04a2e42935c97c7ef003e4a690c0433783b57ce56700f07ad8b590e48b4ad0";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/es-ES/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/es-ES/thunderbird-78.5.1.tar.bz2";
locale = "es-ES"; locale = "es-ES";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "d8c5350627e7e6f48fbfa863bed1971254104ee299d81d1f36b99d6c6ee54313"; sha256 = "f70a3feb09b79153d18e2a382017abbd6e015c78d4d55ff66f8b199b450172c4";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/et/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/et/thunderbird-78.5.1.tar.bz2";
locale = "et"; locale = "et";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "f2a1001b0bb87965e40cd832102d2233b732273930d36715ff2db900b37c9ed2"; sha256 = "c739f5306a2526baf74e57a029371390d02f8c119681b0f154481ae32c67c18c";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/eu/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/eu/thunderbird-78.5.1.tar.bz2";
locale = "eu"; locale = "eu";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "30c6da377a8fc4596f6a67b189c1c9f7a9075df96ed3a59b4da7e0e77157d950"; sha256 = "9f95f4f1ec40e2732e053e68b31529b827f95876ad890d752f5380158f53b9e6";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/fa/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/fa/thunderbird-78.5.1.tar.bz2";
locale = "fa"; locale = "fa";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "8f98dd01764a5d244c25c3c409b8dbcaa1d3daf7b3a970c60d3d37fd5ffc4294"; sha256 = "e53dd458656ee9f39e996042016256949c974161c51b1bee63a401d90d59bace";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/fi/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/fi/thunderbird-78.5.1.tar.bz2";
locale = "fi"; locale = "fi";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "be5f152b28ee21d916b184999023a1a5adddd1d2c7448e7eb37bd08948f6a14c"; sha256 = "b0a96b08e986e49ee6526ab098fb0d44700b3a2aa7f96205b318fdd4b938ef51";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/fr/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/fr/thunderbird-78.5.1.tar.bz2";
locale = "fr"; locale = "fr";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "c1b2d725c43196dfe3f9bfd291dfae84ba392151222589d80e3921e627667d59"; sha256 = "872da741245da7466de58d766a0362983d59a111a65a333881d3636defe00eb4";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/fy-NL/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/fy-NL/thunderbird-78.5.1.tar.bz2";
locale = "fy-NL"; locale = "fy-NL";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "622c42950cc7d3889372b6e0c5833dc5c5f608ab23ca9962e0af67ce4b2f8ff5"; sha256 = "d57862f51ec01e63ab77916ab352276b7f4992b089508dee0c9c5d389ab88d95";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ga-IE/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ga-IE/thunderbird-78.5.1.tar.bz2";
locale = "ga-IE"; locale = "ga-IE";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "7293859380e07d362192cd9dcf88b8da04cde6e102f0b8d51a00021bf8fd9e98"; sha256 = "bda41b8eff5a5004f753944c49f15ddbd1f76c19b0310481251e04ff64309597";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/gd/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/gd/thunderbird-78.5.1.tar.bz2";
locale = "gd"; locale = "gd";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "f54b892150bd49d028337a88d3a0b2df896a47a6904067b381d385281d2c681e"; sha256 = "0671af342859574cb96dbe119d76d7ffa92a8c3fef11eee2a03f662ea71fb84a";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/gl/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/gl/thunderbird-78.5.1.tar.bz2";
locale = "gl"; locale = "gl";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "58c88bf739fde7e0f7e279106622abde617a0aa267f34f1c10f8d886800dc50b"; sha256 = "b458d6f79914fc4c551b3fa4444dc5ad4fa8d3310907a33a3480bf363bcdbfdb";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/he/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/he/thunderbird-78.5.1.tar.bz2";
locale = "he"; locale = "he";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "8278c7580356c360c74ad161a6ee052e9398e39a2a5b75217ac0239db28ee4cf"; sha256 = "146f2a8417827d2d6352f7cc20486ecca8fd1e0ad384d4eb2d8b2635edf2075f";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/hr/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/hr/thunderbird-78.5.1.tar.bz2";
locale = "hr"; locale = "hr";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "b20bef1b7fab8d63c5cc6336dd59264e7c62a9a4c6f2db4232ed27624b26a3cb"; sha256 = "5c510bd3a8f8015e5c8a7c0cff401e3557b0cdca83bff77d2384c8f75f287152";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/hsb/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/hsb/thunderbird-78.5.1.tar.bz2";
locale = "hsb"; locale = "hsb";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "ad4797a36c713b5026a4da131fc46f341cb8b72e5ad2f07a677bfedca8401163"; sha256 = "605ae5746f0df98c7a561550da9cc938d0e06a222f422910ab118fa89d09e793";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/hu/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/hu/thunderbird-78.5.1.tar.bz2";
locale = "hu"; locale = "hu";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "1f3dea138c4f82f91b9aaf891b9959d1cdda273f20af811d967ed55058f69064"; sha256 = "7d42f5e242e04d06bb9abd9bde8fe21571fa13f91b027369a048447d4de8526c";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/hy-AM/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/hy-AM/thunderbird-78.5.1.tar.bz2";
locale = "hy-AM"; locale = "hy-AM";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "836668531a555d9bd23fbb3c3b27cc647a327d02e6db1903248fc6b3d59c5dc1"; sha256 = "74b0b31089be36c0538eb24c98e57123f24599b4122aac5b08c4eb914f6a8f7d";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/id/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/id/thunderbird-78.5.1.tar.bz2";
locale = "id"; locale = "id";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "1d74cd88cddf7b22ef8b19ee6cfedaaade15cecf68712ec8568888d0708c9c81"; sha256 = "291ad6b1fcdc537e723ee76cf0a40a3084bdf1ebec68fc3c8c54714618f5d790";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/is/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/is/thunderbird-78.5.1.tar.bz2";
locale = "is"; locale = "is";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "a6e3320211b207e9a36c6197dbf97e746d2e9e9b7bda444a8511550b5846d329"; sha256 = "188e2cab8e00421b8a5f9c9a174e8a529ab404a0f4f3976797e41848eb0abc4d";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/it/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/it/thunderbird-78.5.1.tar.bz2";
locale = "it"; locale = "it";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "f0e659e6888590394a652033f3d15b29ff9318b4c88faae51d6347f1441201b3"; sha256 = "12daeb5314ae81a82ce95c35dc9e34d676fe8b666a84a38aea36367b52aa2c95";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ja/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ja/thunderbird-78.5.1.tar.bz2";
locale = "ja"; locale = "ja";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "a2ffc461e6d942222bef4229a820bf8536ef41dce83efc458d82476d5f98f5a4"; sha256 = "cdd41967d60abff6053f1736375cbbdb521bbdf5aa25110ca8e08bb365c853ca";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ka/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ka/thunderbird-78.5.1.tar.bz2";
locale = "ka"; locale = "ka";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "6a374b791fac25bfc3f10726d93497291163dd95b1372dc09db70c098822f4f9"; sha256 = "9548232d8df327e6282b5413d904d5742aadfa75574b1333a235df2097337032";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/kab/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/kab/thunderbird-78.5.1.tar.bz2";
locale = "kab"; locale = "kab";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "a23dc5cfef7bcbe32c32363d0048813a24cfbb19f17c3041b23fc751936dcadc"; sha256 = "ca35aa36ed5794661372e76f24dd6c98d11d35da76aff5396215ebe9331aa881";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/kk/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/kk/thunderbird-78.5.1.tar.bz2";
locale = "kk"; locale = "kk";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "2187f7d763d34787de0d9870f746548459bd0a2ef0676286d2f9ce9bc9092ef1"; sha256 = "dd90fff1a4ee8380e03e59ef324298d1591833a021d14a11fdb2829cd3a934f3";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ko/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ko/thunderbird-78.5.1.tar.bz2";
locale = "ko"; locale = "ko";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "ff88da9f6c77e8f5c1bebab542abc51266ba03d97fc5d22b86cf52a26db75e63"; sha256 = "4dae3766bf420a0cfb5473fa95356f0061b657a7ebfdc808b69a8e639564893b";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/lt/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/lt/thunderbird-78.5.1.tar.bz2";
locale = "lt"; locale = "lt";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "77531cad8587aba9c4091bd22c79e40e45d3c57083b5af3e54af3576ed45134b"; sha256 = "de4b448d9651692bc4eb38447d94c94e37d93dae816edb5f3936d56a58aa41af";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ms/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ms/thunderbird-78.5.1.tar.bz2";
locale = "ms"; locale = "ms";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "aaa346d9bcc1cbd84beedb75c9949d4a2cd8bf80496a31e2018c2493fed68339"; sha256 = "08593e72643de8f79b6d90a0c41d6031f915097d3f28f1e7e901c21caa0ab037";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/nb-NO/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/nb-NO/thunderbird-78.5.1.tar.bz2";
locale = "nb-NO"; locale = "nb-NO";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "dac3f1eeef73c247f9c79a09b7ffab1498be6c96865b5f21ee28d398941430a1"; sha256 = "21caa07be03725788c41fa527e7656a0467194e8a498de87f2455b571c4e14b2";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/nl/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/nl/thunderbird-78.5.1.tar.bz2";
locale = "nl"; locale = "nl";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "e0b3df7064e08e34f85b9a83d2bef990f66ad0e1bc86f764139fc57d005d1aa3"; sha256 = "7c1c00a8e03d0a8e4fa9cdc3b4acce51215e9f273660e48ad76347e6003a1985";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/nn-NO/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/nn-NO/thunderbird-78.5.1.tar.bz2";
locale = "nn-NO"; locale = "nn-NO";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "eb420586e8be191ffc41f4a920506336cc9dccbf229c260a7f193cbe169a6da4"; sha256 = "103bc1307f47c20102e14362fcd6da696eb122fe77f680e70cd0849c9c03c47a";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/pa-IN/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/pa-IN/thunderbird-78.5.1.tar.bz2";
locale = "pa-IN"; locale = "pa-IN";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "12f7c97b130ce40dd1dcd00a16a20000113b7be33c87ab9002848439ce626abd"; sha256 = "388d01d0881573164816d7ddf6a08c17ad966616f1c8e8e429f821d2bb179a62";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/pl/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/pl/thunderbird-78.5.1.tar.bz2";
locale = "pl"; locale = "pl";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "5ad96dee4b422c820da8a76ab64e62e919c21d99b01b92f346a55acada7cf8ac"; sha256 = "160651e72037bb89ac62534714ce9ecbebdec0cf1f8a6127396c68ab531745f9";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/pt-BR/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/pt-BR/thunderbird-78.5.1.tar.bz2";
locale = "pt-BR"; locale = "pt-BR";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "7d6568c067796f21079a4f6bf3374a1b91807a9b30270587cf815892d86e1590"; sha256 = "6d2064a6ed4bb684384f7e79b61cfceb66a9a26900e9947b3666c36d6b8793cd";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/pt-PT/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/pt-PT/thunderbird-78.5.1.tar.bz2";
locale = "pt-PT"; locale = "pt-PT";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "22058d65e2ba94f39ca6ada6750beacf2bacac0f296a34542fde01e897e4a4e2"; sha256 = "2ccc7a3d9d845f1a3e2ad3869cbd4cefa10e44992c27444a599f6f1429070f32";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/rm/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/rm/thunderbird-78.5.1.tar.bz2";
locale = "rm"; locale = "rm";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "c61ff10e4260eb2650fc1a4e0ca8df6c4e4e2e9525168ceaef86a9b8b2ddba54"; sha256 = "05e45497c19d46292617de4f247f014f7b14a684f74bfd314caf408416dc5b19";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ro/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ro/thunderbird-78.5.1.tar.bz2";
locale = "ro"; locale = "ro";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "2ec34bfd9fe4a0f0cf17f132146ab2a589c986a8b4317124f3bfc34ac48f732a"; sha256 = "bf01cf8c987e46f03236dbaab14aa551464019f471aa111299b6c7538e995f80";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/ru/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ru/thunderbird-78.5.1.tar.bz2";
locale = "ru"; locale = "ru";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "b835dd1757f5cdc580a2b91f01a8089c1396d9eacee665fe9976019f8523fdec"; sha256 = "a3cbdfa26ff487d0efdabfa9dc324b75ec1446964f1c0192afcd67565dfc4a51";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/si/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/si/thunderbird-78.5.1.tar.bz2";
locale = "si"; locale = "si";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "3722e47d39024c13dd799e0c89cf79a1302817605f7025388cd5f62fea15d168"; sha256 = "fb26eef7b0c5b233e41f8d4ad79f11aa7d0db21b155bf0d9284881cabb51f6e4";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/sk/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sk/thunderbird-78.5.1.tar.bz2";
locale = "sk"; locale = "sk";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "4717620562c338f533053677d8956490d2d42abfd52beb6a0d41466ba3e72a36"; sha256 = "d462f2606bfd7f6e0e45334a68d266889f0f9f927f08d5b92c39329711a8c4cf";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/sl/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sl/thunderbird-78.5.1.tar.bz2";
locale = "sl"; locale = "sl";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "d712c5b3dddfa181877353d28667d410bea3a1f3d85e92dc058a3f3ac5ff4824"; sha256 = "b6011aefaf1eb60c8849b4ecc7a7a6fa0a72def8ba690f5b7ca61de3e089c9a4";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/sq/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sq/thunderbird-78.5.1.tar.bz2";
locale = "sq"; locale = "sq";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "8443ae1161c6b3e807c9d4abc01824e894a11b6f6c9a52d3097b8301461ac0c3"; sha256 = "aeed36c0d6129dc58d496f8f6177a88950a4c4cfe2e4ac157fb389ea79488b11";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/sr/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sr/thunderbird-78.5.1.tar.bz2";
locale = "sr"; locale = "sr";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "13f093880d41748efa8f1566e5884d632f2fa80d4eb4f1a8dd1dc20ea626cee8"; sha256 = "f55cb398b3e6420acf6791d9ab5592b9915d299c5111ea917934b5729d22dd7f";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/sv-SE/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sv-SE/thunderbird-78.5.1.tar.bz2";
locale = "sv-SE"; locale = "sv-SE";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "ee9d7262a8b6cd8460b2f1c4c0102b68f9a0983e1f021f2283ead172f07e3f37"; sha256 = "036b4f2b3d6cd24bcdcdbc1da1f44df2fba012f22ab96d0840a8c7ae0b945055";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/th/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/th/thunderbird-78.5.1.tar.bz2";
locale = "th"; locale = "th";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "09cd7b862cb8caa511b6d550bb668f0fd51fdfee5b2f6a31814282785688e4de"; sha256 = "316ae39fb02b9ad1b28bbe7a21342e5e85dd7593978b4935b7be20253fe6b761";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/tr/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/tr/thunderbird-78.5.1.tar.bz2";
locale = "tr"; locale = "tr";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "0d9f63aa7b63d571d7414755bd4e8bc27b7c5fd093ee46ed0fc2db469940dcd5"; sha256 = "73811e185274d880abdb15503a928a537428460080245426a07cf1c01e38f1c6";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/uk/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/uk/thunderbird-78.5.1.tar.bz2";
locale = "uk"; locale = "uk";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "0aa64449381edeed7c37d18e03f74dac2f5038a6c3c5de9fa6ad037b139bb5bb"; sha256 = "8ff9e333cf16a02e7888f297851b5a9316c5b57cf546f592f12d2aab6e3bed48";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/uz/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/uz/thunderbird-78.5.1.tar.bz2";
locale = "uz"; locale = "uz";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "eabd24b838a072cb1aa9bebf3c573b3a6e7a364b759aebd62d12b16911956a00"; sha256 = "899c0c8c886fbaa6a6609a500bb374797bd36272138a6fcdc6aca7c7b6a6fe66";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/vi/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/vi/thunderbird-78.5.1.tar.bz2";
locale = "vi"; locale = "vi";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "ce9b5afcb60fc0f17a384a9096b26626f3d3f570222910a46872688009aee262"; sha256 = "13afdad34f64a1c96f9612c10c8af880e9718ae10d8a1578bc397b238a936dbd";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/zh-CN/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/zh-CN/thunderbird-78.5.1.tar.bz2";
locale = "zh-CN"; locale = "zh-CN";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "9d69c7ef37282a7741d2392456c9ef5f5700fa1b718889e93bf7010fa99617db"; sha256 = "00a1d01acabd210ba70ed6d0842ab5e1674109c7f39f561e8295d1ffd5f80a0d";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-x86_64/zh-TW/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/zh-TW/thunderbird-78.5.1.tar.bz2";
locale = "zh-TW"; locale = "zh-TW";
arch = "linux-x86_64"; arch = "linux-x86_64";
sha256 = "6001d4e74212b72b2a3583438925d2431bb28994a661b4b47e77268e7790e526"; sha256 = "19b84b15a6bbf593a342c874822764bd73022d2c846fe20a6d7d91aceeb1ee15";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/af/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/af/thunderbird-78.5.1.tar.bz2";
locale = "af"; locale = "af";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "e30adc9074f08e04a4477f59eff6af83bcdf22ccafa1aef5ace219a830c50f38"; sha256 = "4c1487a6b823a76d477085e66b377f536f2cfd95b4ddc6804b97c792af77c554";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ar/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ar/thunderbird-78.5.1.tar.bz2";
locale = "ar"; locale = "ar";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "6d9456fd3f76de33a3f7c46d8197d83c36c832922b83de64cf4c2f5a56f7729d"; sha256 = "d33576a1d8c346195a20c8a222281d682d14f604654ff173eb28ca8a9343574b";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ast/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ast/thunderbird-78.5.1.tar.bz2";
locale = "ast"; locale = "ast";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "1427f7741ba5c5da163ecfce3053bdab7b14c8fc2e8c046c244f7eea6d015a2e"; sha256 = "09d68977bc121e562f3c697bd1d87b21250c8a0bcac013940e3806d4a69a749d";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/be/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/be/thunderbird-78.5.1.tar.bz2";
locale = "be"; locale = "be";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "97258efe6425869e4710c07e880df2a3f6c14d626e6512374043cff226f141fb"; sha256 = "bb58501c902788b2d1f8f308468aa57447a15979cab59dc89c27e3738748b6d9";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/bg/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/bg/thunderbird-78.5.1.tar.bz2";
locale = "bg"; locale = "bg";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "a30496a969a954525dbcf1ec0e94d8533baea3809e61d6c1c6e299f883d9676d"; sha256 = "373bd3548f518a4ae56e8a103b64eb76c3139b984a5af8013de56b133a0d44c0";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/br/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/br/thunderbird-78.5.1.tar.bz2";
locale = "br"; locale = "br";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "16dfc1b869bb10ce7c56f1b22981586678cd81a42e13c4075ebc1da76728258d"; sha256 = "40934c8ec7070ad29cb0111624de431a0cdeeff9c7c01d8781444e33f65acbca";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ca/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ca/thunderbird-78.5.1.tar.bz2";
locale = "ca"; locale = "ca";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "bd29d4b8376355090adca0185194d3c9b6124c336bec0dababaa4a214f9945fb"; sha256 = "fbce4213fe7564f2af3f980f5844961cac9a7ec2a30b23d7cdd4e5db6aa4ebaa";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/cak/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/cak/thunderbird-78.5.1.tar.bz2";
locale = "cak"; locale = "cak";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "b9723a8f8b8a61d01f09b18f1dff6529d22c89653586ad032831c87683da12b8"; sha256 = "2aaf7ea23606be03f5f7168aaa4286760f236d084babd1f81540f8b62b37962c";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/cs/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/cs/thunderbird-78.5.1.tar.bz2";
locale = "cs"; locale = "cs";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "55ff98744b2f120a855c8a3bc435d39209504b7eda92560be40b8cb3fbe007f0"; sha256 = "880e36431f76161674fdb9f2902c9d5487bed528a198722458b7e6e76e80e9b5";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/cy/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/cy/thunderbird-78.5.1.tar.bz2";
locale = "cy"; locale = "cy";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "818a93f5a4f02e8cf7b3373c31c435dffca3fc1f86d5acc3fd4355bca21f9cf0"; sha256 = "eddb4dcac8063e5b245eb1c095c4ff98cb03714bf5b07f0366b89d670a9d95dd";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/da/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/da/thunderbird-78.5.1.tar.bz2";
locale = "da"; locale = "da";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "7df66098805f276e1498fa28c00aa7eaa8a8993b561261c54f7091a808ff6766"; sha256 = "2425487caaab7979f504d37cf6b100c7cb030e8e5495b6723fa4f953348e4f40";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/de/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/de/thunderbird-78.5.1.tar.bz2";
locale = "de"; locale = "de";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "194831e85294b41a4c1bcec8a2f20f337786054525d50e2fd6dfd6134385d2d8"; sha256 = "81df3e5ba46fe5959f785c06bef0b70daa55e8f8721cfff0bf55a76f7343b32f";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/dsb/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/dsb/thunderbird-78.5.1.tar.bz2";
locale = "dsb"; locale = "dsb";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "e7344c6b2c90bca56adfca1619e1bfdc0e473f7230d4c1059d6516cee8d51759"; sha256 = "995d3aaf3df22aa3166f161b98113fc25b813dc7cee2743b2bdd6913b4a620c4";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/el/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/el/thunderbird-78.5.1.tar.bz2";
locale = "el"; locale = "el";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "e2d4680ced58f78699f7bdc2c3493d6157cf2c9261aa697cd6092ed0687a7bbe"; sha256 = "ad5162a76dba9c37e2542fa7ed08c63edce9955600e9b50889abb03e352ddf23";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/en-CA/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/en-CA/thunderbird-78.5.1.tar.bz2";
locale = "en-CA"; locale = "en-CA";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "6afd7bb703c62763b787d77b7467881f07d12e73d32d07c6461642307e3b9f5f"; sha256 = "c605520e5e65449855c355147f18b813f66d38dce52e8d3a23b90afbec5bcbf1";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/en-GB/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/en-GB/thunderbird-78.5.1.tar.bz2";
locale = "en-GB"; locale = "en-GB";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "78114f1a1dff6c5430b148fbb8707e03cd3ec1d05af48082755190ae45e94dd4"; sha256 = "63b0d984ee8296c5185ed1aab279a0ef065986d989edbd0a7683b9db6a6d94bb";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/en-US/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/en-US/thunderbird-78.5.1.tar.bz2";
locale = "en-US"; locale = "en-US";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "beb328b15c7b981b10f26cad6325a04257be20e25e819fa771f88fe5e5c98aec"; sha256 = "b5404037f2678d36acbb225f43d426a86db9a4828a69b1beaf44dc3b5264ae7e";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/es-AR/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/es-AR/thunderbird-78.5.1.tar.bz2";
locale = "es-AR"; locale = "es-AR";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "3c096d5225f8fe273b6f0adc119ea419cf60e7a7723fb3a63a6dec1be6e4c3ef"; sha256 = "cefe0ff79bacc9c16fe649c0d7b4f932afca6ebb10c8426fac527485e92f4422";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/es-ES/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/es-ES/thunderbird-78.5.1.tar.bz2";
locale = "es-ES"; locale = "es-ES";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "68796cda86944bfb70207b79c162c0b2fdb66b17511300c799204fce58d2c2b2"; sha256 = "de7c6685c4e73ee334faf83c809b2f45d55c971282ba99aecfd5d1c8b05577da";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/et/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/et/thunderbird-78.5.1.tar.bz2";
locale = "et"; locale = "et";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "6187058a289cb43e89916e484ac46c2359fc9c452d07dd4dab2e3ff8ae397c47"; sha256 = "e5174b12c61221436a5926224f61f218bfe762086f1d5bb814af5f7708592392";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/eu/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/eu/thunderbird-78.5.1.tar.bz2";
locale = "eu"; locale = "eu";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "ad587a3b25de553b69ab9aa61b9d99c4f4d7dd37b05672540eda7907b21f2857"; sha256 = "66bfbb4edc775117a6f048f52084fff9828633166ac6234a7c1dc0d67311677f";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/fa/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/fa/thunderbird-78.5.1.tar.bz2";
locale = "fa"; locale = "fa";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "8c06bbd83b5485b113bf4d0ca69af9ca21c7854ff38b19831eadae0c586dc606"; sha256 = "072163a9d1a94b1f5c297c794791b4bd3e7f7e6897e7f7615df59a9dd2232a52";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/fi/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/fi/thunderbird-78.5.1.tar.bz2";
locale = "fi"; locale = "fi";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "bac6ecf3d22f6097f8cccb7da81866941426ee7bbb690937a2333b411a305fbd"; sha256 = "9c269f267251bee9828acfd78d04bf149767dfe5247ae4f53ec5b0bd65c410ba";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/fr/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/fr/thunderbird-78.5.1.tar.bz2";
locale = "fr"; locale = "fr";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "859457a9c0bae23e4acf901d38de814858c60fe1a5e28ee897b2c2f4c86bc29a"; sha256 = "6ccfac2b5d96491c4d5dc7b00e4458617ca68fe07917941559534a31424c977c";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/fy-NL/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/fy-NL/thunderbird-78.5.1.tar.bz2";
locale = "fy-NL"; locale = "fy-NL";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "d5a91d212e0c9c6c533bd7f05edca3dbea93eba0bf0d34eabd1e9ba7c7138e8b"; sha256 = "1b470c45c9d52a8a84c59dbb4ed0e6966d124ffdc3ea865e4d02289bd39b346f";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ga-IE/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ga-IE/thunderbird-78.5.1.tar.bz2";
locale = "ga-IE"; locale = "ga-IE";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "980e053f0bcd5096753213fd6cc252be388312980032132bf912af2d4249278a"; sha256 = "a1cbb9a4c1bf91f920da9e4e0e39e6ecff0a8c87413898c1930ce69dadad9a26";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/gd/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/gd/thunderbird-78.5.1.tar.bz2";
locale = "gd"; locale = "gd";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "7b61b433d2f55191f7ecc63e04ceabcebcc85ab211553b71de575bbf14db05ee"; sha256 = "909be2cc362ed839f373eb22d27c5f3c569b1c82fc2ba5aaf270d605029d336c";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/gl/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/gl/thunderbird-78.5.1.tar.bz2";
locale = "gl"; locale = "gl";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "2dbb2021eacf17f5d42d0f8edc32a3f4d0ae3964cc8b44b0875fcee9bbd8ebbe"; sha256 = "8ffadcffd16aca8befd4b9c230b7da750e6a694add7ee465227a0c3f31a5c655";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/he/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/he/thunderbird-78.5.1.tar.bz2";
locale = "he"; locale = "he";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "b64fdf97d7f3029ffe465bbe621735970c73682cbde03935c2ad94325a7a77cf"; sha256 = "a9242889345131a405d138d0ec8e470eb49c59ada18b1e8f78004f307ceb41b1";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/hr/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/hr/thunderbird-78.5.1.tar.bz2";
locale = "hr"; locale = "hr";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "05606268efa91e8266a75f9f53dae8e8095fd70bc1095e2cc160171eb32e9a0a"; sha256 = "eb1f5496811677e28b2ed034da40ebf1fef324673e0f3acb2c21f0db5c71f592";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/hsb/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/hsb/thunderbird-78.5.1.tar.bz2";
locale = "hsb"; locale = "hsb";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "8a2dd27b17cbfad0846a40b4863c72e0754137e4ae581998ff291b4428a069ef"; sha256 = "643a2b11a0775a71a8fa6c25097cfe297e6bc190fb29eee18ddd3d16fb61d989";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/hu/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/hu/thunderbird-78.5.1.tar.bz2";
locale = "hu"; locale = "hu";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "01daa9ab4f5d096a9a5e138db4debeee302fb875f885e644eea88103c5c62111"; sha256 = "61d91bed542a7e014a8d11e46e1b3d97e8bef1303bba397b3d4da0585b1e68af";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/hy-AM/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/hy-AM/thunderbird-78.5.1.tar.bz2";
locale = "hy-AM"; locale = "hy-AM";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "69159084189c5700e5c8c27bf4cc0345fcafe0879b7f7cca285246a41e411578"; sha256 = "2e6739d14a45529ed2a68abb8ed03ad901b4e7770efebd382f6e9626c86da036";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/id/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/id/thunderbird-78.5.1.tar.bz2";
locale = "id"; locale = "id";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "798203a12f76cb3c698363da72b235fc9abfc5a68913f3265c9b17b14318eb73"; sha256 = "8753bc4c7292cd0c6ee382bb5572e432222e7c39ed739904d91ed1ece5a8197e";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/is/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/is/thunderbird-78.5.1.tar.bz2";
locale = "is"; locale = "is";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "19544548a0b0217f5f5256949d74897c784298dfe762174487ab2ba2557a55e7"; sha256 = "4f624262b72fce7d258b6f7c264f7d2266ebcfdd59fce895e4e85c72fa784637";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/it/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/it/thunderbird-78.5.1.tar.bz2";
locale = "it"; locale = "it";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "b1ae17f3d4533db0107ab280ec4e8ecc610db9581d44ed52d8ca87c821c37c1b"; sha256 = "6298ce45c4a659e47877302d61a50dfc7e0634e7c3e7036aeec49da5a2839073";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ja/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ja/thunderbird-78.5.1.tar.bz2";
locale = "ja"; locale = "ja";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "c16c27372c28063a06e31fc440294a655fb72bc033efbfd797d150e99e6ebaed"; sha256 = "85a7b01f65c79b0e13c4f8a18f3950f0a250f380fc8756b8fb1709680a148554";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ka/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ka/thunderbird-78.5.1.tar.bz2";
locale = "ka"; locale = "ka";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "3057efd5078776f1690890d601153a73e2450051a0edb61e92d196318b644679"; sha256 = "f7b18243b9985b54eb8684b62bad47b7b021eb959f467fec9876c866d92b1727";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/kab/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/kab/thunderbird-78.5.1.tar.bz2";
locale = "kab"; locale = "kab";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "ce8010b362b601819fac825ce27b9efd8af8f0965f8f1cabb21bfcddb2ec7315"; sha256 = "cc8eb77d0d0ea95a1e2b13db51da4f18a9500aeacee1cbe505da67f2b6a9b979";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/kk/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/kk/thunderbird-78.5.1.tar.bz2";
locale = "kk"; locale = "kk";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "b73930d1508bdcaecfb9ce280f0d86fd5dc7a3d26160caa0eabbe47243956139"; sha256 = "6999faf34774806e1e4257a139dd97dd50a889a7729fef4f51a8b41bb4ad169e";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ko/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ko/thunderbird-78.5.1.tar.bz2";
locale = "ko"; locale = "ko";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "24d6e557b6419bb3a512646edb6e1e4d01ce1c0e134b9bb9cc54ad5acb6a0675"; sha256 = "42b0bf1ebfce252fdfca3ed8de9f227bbb054bf591e6155b716b18e9613a9cff";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/lt/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/lt/thunderbird-78.5.1.tar.bz2";
locale = "lt"; locale = "lt";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "c9dc7dc77a1c1acdc1e244e6b1201ecd3305b5c10ef946ceb880fb66d57c249a"; sha256 = "6ffe9b52189579bee34604499649901be5c8be2a026eb70a33ac9eb4e3b21880";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ms/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ms/thunderbird-78.5.1.tar.bz2";
locale = "ms"; locale = "ms";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "d3a0b9fc5b38de919515df9dc6ca696c7c70f629b192e8cae099a55432d466d3"; sha256 = "640942eb04d84d24bd28cf5e49e57497934810394b50693bad591cf3b783e1bf";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/nb-NO/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/nb-NO/thunderbird-78.5.1.tar.bz2";
locale = "nb-NO"; locale = "nb-NO";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "80f552a61288f1d1a6346d302919fd90f63c2d349a2d33921eac9a65c341a7d9"; sha256 = "c0d35274192ae664314e91fd9364609cbbf142f8177d37210c9c49fdf8d31086";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/nl/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/nl/thunderbird-78.5.1.tar.bz2";
locale = "nl"; locale = "nl";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "89007857be04b59bf724a2f6c295c0948a885c8da8c7a7060922e04f616baf30"; sha256 = "864ac834a0f44ce112deb107abce170802abaa63556f0aad88ee828bf3f8a98c";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/nn-NO/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/nn-NO/thunderbird-78.5.1.tar.bz2";
locale = "nn-NO"; locale = "nn-NO";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "b7a8060d3138a55a29374d890b326e77105f41e809053d34c24464a892c6bdbc"; sha256 = "e821eaf0388885e3b5e88001a2c4410cdf065059b79a3581c324f53d1cf59eb5";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/pa-IN/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/pa-IN/thunderbird-78.5.1.tar.bz2";
locale = "pa-IN"; locale = "pa-IN";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "69f803555cc9b3ba7fbf638e101b76bef10a234747cd0764e906e5d2adbb9a97"; sha256 = "5a0afbf815683afd24c258ac66a45dc300028b4d41a9950784355645874459ed";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/pl/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/pl/thunderbird-78.5.1.tar.bz2";
locale = "pl"; locale = "pl";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "4cd4da857d9cbdc5d89e07529d30df28a758c3c105160d2217b50206147c21e5"; sha256 = "cebdc0a0188edc63fce0b4fe0a4a3f22ab792ad486bd1e10e635ac8f641f1b5d";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/pt-BR/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/pt-BR/thunderbird-78.5.1.tar.bz2";
locale = "pt-BR"; locale = "pt-BR";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "43fca4ac927932589b58e60f7b3b1cdcdc1d73b6f9073e0c1eb2993527afe9be"; sha256 = "7bbf9aa4d48bf84a7455dcebc6b7476e4c1ffa085c1771fbdf302f71d10e4825";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/pt-PT/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/pt-PT/thunderbird-78.5.1.tar.bz2";
locale = "pt-PT"; locale = "pt-PT";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "25591b73b7ae5d28441baeeae3fb3a5a47f36ea21db763b95782494fd8491122"; sha256 = "b84c28dfb5d677768a6e0f69c8ea63fcaf884839739789ac72f50e7b8884f8ca";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/rm/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/rm/thunderbird-78.5.1.tar.bz2";
locale = "rm"; locale = "rm";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "14a0725f1083ab9c4baafe6944604cc5781cc9d3d44cbc406874b5ce01df785d"; sha256 = "f34eea430a9e929c25ad961b1c92724c5539a46cbbfb9a97a5c7edca4996115a";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ro/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ro/thunderbird-78.5.1.tar.bz2";
locale = "ro"; locale = "ro";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "f32af00602a13e262e6b34c8b5783b31a991dee72d82c841086d21e37d669dcd"; sha256 = "115cd666282822f35924d4de3b33fd0dd3d790d278bb35849ada579d43d5ac54";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/ru/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ru/thunderbird-78.5.1.tar.bz2";
locale = "ru"; locale = "ru";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "367e7865f1c5d10eb912fce96a34bf6ce25ca48e4ec9209bce8af06412be7781"; sha256 = "961eb62e639f8f7c7c5695bd39df50fe4b3401e7aeade8281600779bb8edd374";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/si/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/si/thunderbird-78.5.1.tar.bz2";
locale = "si"; locale = "si";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "da0494be7a26f0a531d108ca20a0bc9763860e44adaa6149ea059f46daabbe0c"; sha256 = "0887999609e47839a0f7600215c3083ce939fe13abc0c38cf701449224dbc87a";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/sk/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sk/thunderbird-78.5.1.tar.bz2";
locale = "sk"; locale = "sk";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "1c5078f413207049a35c69be32c6996cad169cadc009b3f079b3adc8a932ca22"; sha256 = "a3b9281efc4c0cd6cb454f2c5b97567b4d2c6567076cee188e85c30a45213f98";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/sl/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sl/thunderbird-78.5.1.tar.bz2";
locale = "sl"; locale = "sl";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "d8a5edf78b5a87c0b3baf0199231e6e9224e1afdf4eff05780b6c9b98657c1ef"; sha256 = "141e9a41dba4c2a3eee4370d2db6e14f8805fee2d70c20ecbb9865b7a0dcaa77";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/sq/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sq/thunderbird-78.5.1.tar.bz2";
locale = "sq"; locale = "sq";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "fefcb88c0c5f6ee62ba8224417a629d8a4f0c18b20fcb037c36af772b0d2b71c"; sha256 = "6a50fdac7993294937756a169b4b0ac7fe021611c5c6a730ea194ee7302c95dc";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/sr/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sr/thunderbird-78.5.1.tar.bz2";
locale = "sr"; locale = "sr";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "c42818c409de6447c1aa00f8aa6422a9fbb6fa16f01d5076331937c1145a4b87"; sha256 = "2ec4c2f367bceb3f05c75e55366cc66fae6593fc35c79d7bea57f34f93d79dba";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/sv-SE/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sv-SE/thunderbird-78.5.1.tar.bz2";
locale = "sv-SE"; locale = "sv-SE";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "c27d87cde88f38f3611358b5fb3622611c38860ee37d1d90aaabcb4db614a031"; sha256 = "4a9027f9aa74bd9c6e3cbf02ac1918f1b9dfbda57ed0344a99fccad9fa271f79";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/th/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/th/thunderbird-78.5.1.tar.bz2";
locale = "th"; locale = "th";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "df9b827a723675e70131d147fa6f6325f6e6a14a6b95f6f5b6fae4552501c6b0"; sha256 = "f394b18a364fa84ff5eeeee00c841248ba4095285833ce625b700fd500b9c0cc";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/tr/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/tr/thunderbird-78.5.1.tar.bz2";
locale = "tr"; locale = "tr";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "7a9d6e1b5927c7c54b73062a59d366cd5153896a89e95005177fdf4b789eda42"; sha256 = "9f180c1b6b604fc597bf1ecb10e3521c70953cb70d4292105cb3bc7cbeb806c0";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/uk/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/uk/thunderbird-78.5.1.tar.bz2";
locale = "uk"; locale = "uk";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "c421df09d5bbb5e4de273258757df28e5a6eba291a4eabbf28db71a50cb11da7"; sha256 = "f828ac8f52bda71f913462e60fb7ea2221de4f824063b95b85709320a820db8a";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/uz/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/uz/thunderbird-78.5.1.tar.bz2";
locale = "uz"; locale = "uz";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "296ca42b0c9f67ef0bb545f458334ec26e03be3327fd1e1b066d8324965704b2"; sha256 = "8d3dd4a1bbe008e4d346c22c01bafe988dde88fa6c9919c50194b9b155bc821f";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/vi/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/vi/thunderbird-78.5.1.tar.bz2";
locale = "vi"; locale = "vi";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "46579d9723f5ccc84700c2544f3d1235db338471306d87a1caa0ac4fb337c8bd"; sha256 = "4db40b3debca281c59e926bd0f9cb4e5cd2150bf27235f1178ed8e497616a031";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/zh-CN/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/zh-CN/thunderbird-78.5.1.tar.bz2";
locale = "zh-CN"; locale = "zh-CN";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "9bf0df6568eadf611891f49591975166da95eb4e78e1191eb3354a81637907d2"; sha256 = "399707f970a01e2f3c2eacc81f2f3bb33b1f49433c3ba6c49f4615b499f0c246";
} }
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.0/linux-i686/zh-TW/thunderbird-78.5.0.tar.bz2"; { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/zh-TW/thunderbird-78.5.1.tar.bz2";
locale = "zh-TW"; locale = "zh-TW";
arch = "linux-i686"; arch = "linux-i686";
sha256 = "8fee4fd8980d551317fc8f98f29938034f5ff90b765e73ef8cd09f8fe68f90c8"; sha256 = "27ad21908069582a4a7641dc9a7d9acc69d4842382499cef2cee2f84d0fc3856";
} }
]; ];
} }

View file

@ -71,13 +71,13 @@ assert waylandSupport -> gtk3Support == true;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "thunderbird"; pname = "thunderbird";
version = "78.5.0"; version = "78.5.1";
src = fetchurl { src = fetchurl {
url = url =
"mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz"; "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
sha512 = sha512 =
"0c32dz8p7rrr0w13l2ynf9snj59ij1v2ld3s75vz1hvks4dikwgcbm44wmvmbisvgyfgzdsphafzlq3kz3j1ja30qjigl0dj709vr6s"; "202s2h9fsvg4chy93rgxdf4vlavf3wbp9vqgh0nrgk5wcdhz17144vhw1bmxia8hf99snq2a3ix6haidwl8d2n6l2nfsjzcnphhxd9z";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -0,0 +1,18 @@
{ pkgs, nodejs, stdenv, lib, ... }:
let
nodePackages = import ./node-composition.nix {
inherit pkgs nodejs;
inherit (stdenv.hostPlatform) system;
};
in
nodePackages.n8n.override {
nativeBuildInputs = with pkgs.nodePackages; [
node-pre-gyp
];
meta = with lib; {
description = "Free and open fair-code licensed node based Workflow Automation Tool";
maintainers = with maintainers; [ freezeboy ];
license = licenses.asl20;
};
}

View file

@ -0,0 +1,8 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p nodePackages.node2nix
node2nix \
--node-env node-env.nix \
--input package.json \
--output node-packages.nix \
--composition node-composition.nix

View file

@ -0,0 +1,17 @@
# This file has been generated by node2nix 1.8.0. Do not edit!
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
let
nodeEnv = import ./node-env.nix {
inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
inherit nodejs;
libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
};
in
import ./node-packages.nix {
inherit (pkgs) fetchurl fetchgit;
inherit nodeEnv;
}

View file

@ -0,0 +1,542 @@
# This file originates from node2nix
{stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
let
python = if nodejs ? python then nodejs.python else python2;
# Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
tarWrapper = runCommand "tarWrapper" {} ''
mkdir -p $out/bin
cat > $out/bin/tar <<EOF
#! ${stdenv.shell} -e
$(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore
EOF
chmod +x $out/bin/tar
'';
# Function that generates a TGZ file from a NPM project
buildNodeSourceDist =
{ name, version, src, ... }:
stdenv.mkDerivation {
name = "node-tarball-${name}-${version}";
inherit src;
buildInputs = [ nodejs ];
buildPhase = ''
export HOME=$TMPDIR
tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
'';
installPhase = ''
mkdir -p $out/tarballs
mv $tgzFile $out/tarballs
mkdir -p $out/nix-support
echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
'';
};
includeDependencies = {dependencies}:
stdenv.lib.optionalString (dependencies != [])
(stdenv.lib.concatMapStrings (dependency:
''
# Bundle the dependencies of the package
mkdir -p node_modules
cd node_modules
# Only include dependencies if they don't exist. They may also be bundled in the package.
if [ ! -e "${dependency.name}" ]
then
${composePackage dependency}
fi
cd ..
''
) dependencies);
# Recursively composes the dependencies of a package
composePackage = { name, packageName, src, dependencies ? [], ... }@args:
builtins.addErrorContext "while evaluating node package '${packageName}'" ''
DIR=$(pwd)
cd $TMPDIR
unpackFile ${src}
# Make the base dir in which the target dependency resides first
mkdir -p "$(dirname "$DIR/${packageName}")"
if [ -f "${src}" ]
then
# Figure out what directory has been unpacked
packageDir="$(find . -maxdepth 1 -type d | tail -1)"
# Restore write permissions to make building work
find "$packageDir" -type d -exec chmod u+x {} \;
chmod -R u+w "$packageDir"
# Move the extracted tarball into the output folder
mv "$packageDir" "$DIR/${packageName}"
elif [ -d "${src}" ]
then
# Get a stripped name (without hash) of the source directory.
# On old nixpkgs it's already set internally.
if [ -z "$strippedName" ]
then
strippedName="$(stripHash ${src})"
fi
# Restore write permissions to make building work
chmod -R u+w "$strippedName"
# Move the extracted directory into the output folder
mv "$strippedName" "$DIR/${packageName}"
fi
# Unset the stripped name to not confuse the next unpack step
unset strippedName
# Include the dependencies of the package
cd "$DIR/${packageName}"
${includeDependencies { inherit dependencies; }}
cd ..
${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
'';
pinpointDependencies = {dependencies, production}:
let
pinpointDependenciesFromPackageJSON = writeTextFile {
name = "pinpointDependencies.js";
text = ''
var fs = require('fs');
var path = require('path');
function resolveDependencyVersion(location, name) {
if(location == process.env['NIX_STORE']) {
return null;
} else {
var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
if(fs.existsSync(dependencyPackageJSON)) {
var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
if(dependencyPackageObj.name == name) {
return dependencyPackageObj.version;
}
} else {
return resolveDependencyVersion(path.resolve(location, ".."), name);
}
}
}
function replaceDependencies(dependencies) {
if(typeof dependencies == "object" && dependencies !== null) {
for(var dependency in dependencies) {
var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
if(resolvedVersion === null) {
process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
} else {
dependencies[dependency] = resolvedVersion;
}
}
}
}
/* Read the package.json configuration */
var packageObj = JSON.parse(fs.readFileSync('./package.json'));
/* Pinpoint all dependencies */
replaceDependencies(packageObj.dependencies);
if(process.argv[2] == "development") {
replaceDependencies(packageObj.devDependencies);
}
replaceDependencies(packageObj.optionalDependencies);
/* Write the fixed package.json file */
fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
'';
};
in
''
node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
${stdenv.lib.optionalString (dependencies != [])
''
if [ -d node_modules ]
then
cd node_modules
${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
cd ..
fi
''}
'';
# Recursively traverses all dependencies of a package and pinpoints all
# dependencies in the package.json file to the versions that are actually
# being used.
pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
''
if [ -d "${packageName}" ]
then
cd "${packageName}"
${pinpointDependencies { inherit dependencies production; }}
cd ..
${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
fi
'';
# Extract the Node.js source code which is used to compile packages with
# native bindings
nodeSources = runCommand "node-sources" {} ''
tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
mv node-* $out
'';
# Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
addIntegrityFieldsScript = writeTextFile {
name = "addintegrityfields.js";
text = ''
var fs = require('fs');
var path = require('path');
function augmentDependencies(baseDir, dependencies) {
for(var dependencyName in dependencies) {
var dependency = dependencies[dependencyName];
// Open package.json and augment metadata fields
var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
var packageJSONPath = path.join(packageJSONDir, "package.json");
if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
console.log("Adding metadata fields to: "+packageJSONPath);
var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
if(dependency.integrity) {
packageObj["_integrity"] = dependency.integrity;
} else {
packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
}
if(dependency.resolved) {
packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
} else {
packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
}
if(dependency.from !== undefined) { // Adopt from property if one has been provided
packageObj["_from"] = dependency.from;
}
fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
}
// Augment transitive dependencies
if(dependency.dependencies !== undefined) {
augmentDependencies(packageJSONDir, dependency.dependencies);
}
}
}
if(fs.existsSync("./package-lock.json")) {
var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
if(packageLock.lockfileVersion !== 1) {
process.stderr.write("Sorry, I only understand lock file version 1!\n");
process.exit(1);
}
if(packageLock.dependencies !== undefined) {
augmentDependencies(".", packageLock.dependencies);
}
}
'';
};
# Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
reconstructPackageLock = writeTextFile {
name = "addintegrityfields.js";
text = ''
var fs = require('fs');
var path = require('path');
var packageObj = JSON.parse(fs.readFileSync("package.json"));
var lockObj = {
name: packageObj.name,
version: packageObj.version,
lockfileVersion: 1,
requires: true,
dependencies: {}
};
function augmentPackageJSON(filePath, dependencies) {
var packageJSON = path.join(filePath, "package.json");
if(fs.existsSync(packageJSON)) {
var packageObj = JSON.parse(fs.readFileSync(packageJSON));
dependencies[packageObj.name] = {
version: packageObj.version,
integrity: "sha1-000000000000000000000000000=",
dependencies: {}
};
processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
}
}
function processDependencies(dir, dependencies) {
if(fs.existsSync(dir)) {
var files = fs.readdirSync(dir);
files.forEach(function(entry) {
var filePath = path.join(dir, entry);
var stats = fs.statSync(filePath);
if(stats.isDirectory()) {
if(entry.substr(0, 1) == "@") {
// When we encounter a namespace folder, augment all packages belonging to the scope
var pkgFiles = fs.readdirSync(filePath);
pkgFiles.forEach(function(entry) {
if(stats.isDirectory()) {
var pkgFilePath = path.join(filePath, entry);
augmentPackageJSON(pkgFilePath, dependencies);
}
});
} else {
augmentPackageJSON(filePath, dependencies);
}
}
});
}
}
processDependencies("node_modules", lockObj.dependencies);
fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
'';
};
prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
let
forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
in
''
# Pinpoint the versions of all dependencies to the ones that are actually being used
echo "pinpointing versions of dependencies..."
source $pinpointDependenciesScriptPath
# Patch the shebangs of the bundled modules to prevent them from
# calling executables outside the Nix store as much as possible
patchShebangs .
# Deploy the Node.js package by running npm install. Since the
# dependencies have been provided already by ourselves, it should not
# attempt to install them again, which is good, because we want to make
# it Nix's responsibility. If it needs to install any dependencies
# anyway (e.g. because the dependency parameters are
# incomplete/incorrect), it fails.
#
# The other responsibilities of NPM are kept -- version checks, build
# steps, postprocessing etc.
export HOME=$TMPDIR
cd "${packageName}"
runHook preRebuild
${stdenv.lib.optionalString bypassCache ''
${stdenv.lib.optionalString reconstructLock ''
if [ -f package-lock.json ]
then
echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
rm package-lock.json
else
echo "No package-lock.json file found, reconstructing..."
fi
node ${reconstructPackageLock}
''}
node ${addIntegrityFieldsScript}
''}
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
if [ "''${dontNpmInstall-}" != "1" ]
then
# NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
rm -f npm-shrinkwrap.json
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
fi
'';
# Builds and composes an NPM package including all its dependencies
buildNodePackage =
{ name
, packageName
, version
, dependencies ? []
, buildInputs ? []
, production ? true
, npmFlags ? ""
, dontNpmInstall ? false
, bypassCache ? false
, reconstructLock ? false
, preRebuild ? ""
, dontStrip ? true
, unpackPhase ? "true"
, buildPhase ? "true"
, ... }@args:
let
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
in
stdenv.mkDerivation ({
name = "node_${name}-${version}";
buildInputs = [ tarWrapper python nodejs ]
++ stdenv.lib.optional (stdenv.isLinux) utillinux
++ stdenv.lib.optional (stdenv.isDarwin) libtool
++ buildInputs;
inherit nodejs;
inherit dontStrip; # Stripping may fail a build for some package deployments
inherit dontNpmInstall preRebuild unpackPhase buildPhase;
compositionScript = composePackage args;
pinpointDependenciesScript = pinpointDependenciesOfPackage args;
passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
installPhase = ''
# Create and enter a root node_modules/ folder
mkdir -p $out/lib/node_modules
cd $out/lib/node_modules
# Compose the package and all its dependencies
source $compositionScriptPath
${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
# Create symlink to the deployed executable folder, if applicable
if [ -d "$out/lib/node_modules/.bin" ]
then
ln -s $out/lib/node_modules/.bin $out/bin
fi
# Create symlinks to the deployed manual page folders, if applicable
if [ -d "$out/lib/node_modules/${packageName}/man" ]
then
mkdir -p $out/share
for dir in "$out/lib/node_modules/${packageName}/man/"*
do
mkdir -p $out/share/man/$(basename "$dir")
for page in "$dir"/*
do
ln -s $page $out/share/man/$(basename "$dir")
done
done
fi
# Run post install hook, if provided
runHook postInstall
'';
} // extraArgs);
# Builds a development shell
buildNodeShell =
{ name
, packageName
, version
, src
, dependencies ? []
, buildInputs ? []
, production ? true
, npmFlags ? ""
, dontNpmInstall ? false
, bypassCache ? false
, reconstructLock ? false
, dontStrip ? true
, unpackPhase ? "true"
, buildPhase ? "true"
, ... }@args:
let
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
nodeDependencies = stdenv.mkDerivation ({
name = "node-dependencies-${name}-${version}";
buildInputs = [ tarWrapper python nodejs ]
++ stdenv.lib.optional (stdenv.isLinux) utillinux
++ stdenv.lib.optional (stdenv.isDarwin) libtool
++ buildInputs;
inherit dontStrip; # Stripping may fail a build for some package deployments
inherit dontNpmInstall unpackPhase buildPhase;
includeScript = includeDependencies { inherit dependencies; };
pinpointDependenciesScript = pinpointDependenciesOfPackage args;
passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
installPhase = ''
mkdir -p $out/${packageName}
cd $out/${packageName}
source $includeScriptPath
# Create fake package.json to make the npm commands work properly
cp ${src}/package.json .
chmod 644 package.json
${stdenv.lib.optionalString bypassCache ''
if [ -f ${src}/package-lock.json ]
then
cp ${src}/package-lock.json .
fi
''}
# Go to the parent folder to make sure that all packages are pinpointed
cd ..
${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
# Expose the executables that were installed
cd ..
${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
mv ${packageName} lib
ln -s $out/lib/node_modules/.bin $out/bin
'';
} // extraArgs);
in
stdenv.mkDerivation {
name = "node-shell-${name}-${version}";
buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
buildCommand = ''
mkdir -p $out/bin
cat > $out/bin/shell <<EOF
#! ${stdenv.shell} -e
$shellHook
exec ${stdenv.shell}
EOF
chmod +x $out/bin/shell
'';
# Provide the dependencies in a development shell through the NODE_PATH environment variable
inherit nodeDependencies;
shellHook = stdenv.lib.optionalString (dependencies != []) ''
export NODE_PATH=${nodeDependencies}/lib/node_modules
export PATH="${nodeDependencies}/bin:$PATH"
'';
};
in
{
buildNodeSourceDist = stdenv.lib.makeOverridable buildNodeSourceDist;
buildNodePackage = stdenv.lib.makeOverridable buildNodePackage;
buildNodeShell = stdenv.lib.makeOverridable buildNodeShell;
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,3 @@
[
"n8n"
]

View file

@ -14,16 +14,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "espanso"; pname = "espanso";
version = "0.7.2"; version = "0.7.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "federico-terzi"; owner = "federico-terzi";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "11b02i254dn5nwk8m2g21ixz22qcqgcf90vwll0n3yny78p40hn0"; sha256 = "1q47r43midkq9574gl8gdv3ylvrnbhdc39rrw4y4yk6jbdf5wwkm";
}; };
cargoSha256 = "1cnz6rbqbb08j67bw485qi22pi31b3l3yzgr6w1qx780ldf1zd54"; cargoSha256 = "0mxksifjagx25qkyg6ym0zlhal8014j8iim54cd44ndbkkiqlyxc";
nativeBuildInputs = [ nativeBuildInputs = [
extra-cmake-modules extra-cmake-modules

View file

@ -344,8 +344,6 @@ in (mkDrv rec {
# Schema files for validation are not included in the source tarball # Schema files for validation are not included in the source tarball
"--without-export-validation" "--without-export-validation"
"--disable-libnumbertext" # system-libnumbertext"
# We do tarball prefetching ourselves # We do tarball prefetching ourselves
"--disable-fetch-external" "--disable-fetch-external"
"--enable-build-opensymbol" "--enable-build-opensymbol"
@ -368,6 +366,7 @@ in (mkDrv rec {
"--without-system-libfreehand" "--without-system-libfreehand"
"--without-system-liblangtag" "--without-system-liblangtag"
"--without-system-libmspub" "--without-system-libmspub"
"--without-system-libnumbertext"
"--without-system-libpagemaker" "--without-system-libpagemaker"
"--without-system-libstaroffice" "--without-system-libstaroffice"
"--without-system-libepubgen" "--without-system-libepubgen"

View file

@ -10,11 +10,11 @@ let
in in
buildPythonApplication rec { buildPythonApplication rec {
pname = "todoman"; pname = "todoman";
version = "3.8.0"; version = "3.9.0";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "1aq7f63bhs9dnwzp15nfr07f2ki6s3lnqfap3b09rhchn6lfznwb"; sha256 = "e7e5cab13ecce0562b1f13f46ab8cbc079caed4b462f2371929f8a4abff2bcbe";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -1,50 +1,41 @@
{ stdenv, fetchFromGitHub { stdenv, fetchFromGitHub, cmake, alsaLib, espeak, glibc, gpsd
, alsaLib, espeak, glibc, gpsd
, hamlib, perl, python, udev }: , hamlib, perl, python, udev }:
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "direwolf"; pname = "direwolf";
version = "1.5"; version = "1.6";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wb2osz"; owner = "wb2osz";
repo = "direwolf"; repo = "direwolf";
rev = version; rev = version;
sha256 = "1w55dv9xqgc9mpincsj017838vmvdy972fhis3ddskyfvhhzgcsk"; sha256 = "0xmz64m02knbrpasfij4rrq53ksxna5idxwgabcw4n2b1ig7pyx5";
}; };
nativeBuildInputs = [ cmake ];
buildInputs = [ buildInputs = [
espeak gpsd hamlib perl python espeak gpsd hamlib perl python
] ++ (optionals stdenv.isLinux [alsaLib udev]); ] ++ (optionals stdenv.isLinux [alsaLib udev]);
makeFlags = [ "DESTDIR=$(out)" ]; patches = [
./udev-fix.patch
];
postPatch = '' postPatch = ''
substituteInPlace symbols.c \ substituteInPlace src/symbols.c \
--replace /usr/share/direwolf/symbols-new.txt $out/share/direwolf/symbols-new.txt \ --replace /usr/share/direwolf/symbols-new.txt $out/share/direwolf/symbols-new.txt \
--replace /opt/local/share/direwolf/symbols-new.txt $out/share/direwolf/symbols-new.txt --replace /opt/local/share/direwolf/symbols-new.txt $out/share/direwolf/symbols-new.txt
substituteInPlace decode_aprs.c \ substituteInPlace src/decode_aprs.c \
--replace /usr/share/direwolf/tocalls.txt $out/share/direwolf/tocalls.txt \ --replace /usr/share/direwolf/tocalls.txt $out/share/direwolf/tocalls.txt \
--replace /opt/local/share/direwolf/tocalls.txt $out/share/direwolf/tocalls.txt --replace /opt/local/share/direwolf/tocalls.txt $out/share/direwolf/tocalls.txt
substituteInPlace dwespeak.sh \ substituteInPlace scripts/dwespeak.sh \
--replace espeak ${espeak}/bin/espeak --replace espeak ${espeak}/bin/espeak
'' + (optionalString stdenv.isLinux '' substituteInPlace cmake/cpack/direwolf.desktop.in \
substituteInPlace Makefile.linux \ --replace 'Terminal=false' 'Terminal=true' \
--replace /usr/include/pthread.h ${stdenv.glibc.dev}/include/pthread.h \ --replace 'Exec=@APPLICATION_DESKTOP_EXEC@' 'Exec=direwolf' \
--replace /usr/include/alsa ${alsaLib.dev}/include/alsa \
--replace /usr/include/gps.h ${gpsd}/include/gps.h \
--replace /usr/include/hamlib ${hamlib}/include/hamlib \
--replace /usr/include/libudev.h ${udev.dev}/include/libudev.h \
--replace /etc/udev $out/etc/udev \
--replace 'Exec=xterm -hold -title \"Dire Wolf\" -bg white -e \"$(DESTDIR)/bin/direwolf\"' "Exec=$out/bin/direwolf" \
--replace '#Terminal=true' 'Terminal=true' \
--replace 'Path=$(HOME)' '#Path='
'');
preInstall = ''
mkdir -p $out/bin
''; '';
meta = { meta = {

View file

@ -0,0 +1,11 @@
--- direwolf/conf/CMakeLists.txt.orig 2020-12-04 11:12:59.739390894 -0600
+++ direwolf/conf/CMakeLists.txt 2020-12-04 11:23:09.146594795 -0600
@@ -26,7 +26,7 @@
# install udev rules for CM108
if(LINUX)
- install(FILES "${CUSTOM_CONF_DIR}/99-direwolf-cmedia.rules" DESTINATION /etc/udev/rules.d/)
+ install(FILES "${CUSTOM_CONF_DIR}/99-direwolf-cmedia.rules" DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/udev/rules.d/")
endif()
install(FILES "${CMAKE_BINARY_DIR}/direwolf.conf" DESTINATION ${INSTALL_CONF_DIR})

View file

@ -2,12 +2,12 @@
libsamplerate, libpulseaudio, libXinerama, gettext, pkgconfig, alsaLib }: libsamplerate, libpulseaudio, libXinerama, gettext, pkgconfig, alsaLib }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "4.1.16"; version = "4.1.17";
pname = "fldigi"; pname = "fldigi";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz"; url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
sha256 = "1dfkvhs0ri5kbyskk730ik8ix5z138qys26b31p6kixd8jjkw3k4"; sha256 = "1gzff60sn3h05279f9mdi1rkdws52m28shcil16911lvlq6ki13m";
}; };
buildInputs = [ libXinerama gettext hamlib fltk14 libjpeg libpng portaudio buildInputs = [ libXinerama gettext hamlib fltk14 libjpeg libpng portaudio

View file

@ -6,12 +6,12 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.3.52"; version = "1.3.53";
pname = "flrig"; pname = "flrig";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz"; url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz";
sha256 = "18c154080vl25cy4l5amh96abm6kzm7mzld9h58pabc28yqq8zl8"; sha256 = "1m0fa891scpaf719002w9gpg1famx84kpzav1mw1fafmbzyvjw1i";
}; };
buildInputs = [ buildInputs = [

View file

@ -41,6 +41,7 @@ stdenv.mkDerivation rec {
orc orc
pkgconfig pkgconfig
pythonPackages.Mako pythonPackages.Mako
pythonPackages.six
# UHD support is optional, but gnuradio is built with it, so there's # UHD support is optional, but gnuradio is built with it, so there's
# nothing to be gained by leaving it out. # nothing to be gained by leaving it out.

View file

@ -0,0 +1,295 @@
{ stdenv
, fetchFromGitHub
, fetchpatch
, cmake
# Remove gcc and python references
, removeReferencesTo
, pkgconfig
, cppunit
, swig
, orc
, boost
, log4cpp
, mpir
, doxygen
, python
, codec2
, gsm
, fftwFloat
, alsaLib
, libjack2
, CoreAudio
, uhd
, comedilib
, libusb1
, SDL
, gsl
, cppzmq
, zeromq
# GUI related
, gtk2
, pango
, cairo
, qt4
, qwt6_qt4
# Features available to override, the list of them is in featuresInfo. They
# are all turned on by default
, features ? {}
# If one wishes to use a different src or name for a very custom build
, overrideSrc ? {}
, pname ? "gnuradio"
, versionAttr ? {
major = "3.7";
minor = "14";
patch = "0";
}
, fetchSubmodules ? true
}:
let
sourceSha256 = "1nh4f9dmygprlbqybd3j1byg9fsr6065n140mvc4b0v8qqygmhrc";
featuresInfo = {
# Needed always
basic = {
native = [
cmake
pkgconfig
orc
];
runtime = [ boost log4cpp mpir ];
pythonNative = with python.pkgs; [ Mako six ];
};
volk = {
cmakeEnableFlag = "VOLK";
};
doxygen = {
native = [ doxygen ];
cmakeEnableFlag = "DOXYGEN";
};
sphinx = {
pythonNative = with python.pkgs; [ sphinx ];
cmakeEnableFlag = "SPHINX";
};
python-support = {
pythonRuntime = [ python.pkgs.six ];
native = [
swig
python
];
cmakeEnableFlag = "PYTHON";
};
testing-support = {
native = [ cppunit ];
cmakeEnableFlag = "TESTING";
};
gnuradio-runtime = {
cmakeEnableFlag = "GNURADIO_RUNTIME";
};
gr-ctrlport = {
cmakeEnableFlag = "GR_CTRLPORT";
native = [
swig
];
};
gnuradio-companion = {
pythonRuntime = with python.pkgs; [
pyyaml
cheetah
lxml
pygtk
numpy
# propagated by pygtk, but since wrapping is done externally, it help
# the wrapper if it's here
pycairo
pygobject2
];
runtime = [
gtk2
pango
cairo
];
cmakeEnableFlag = "GRC";
};
gr-blocks = {
cmakeEnableFlag = "GR_BLOCKS";
};
gr-fec = {
cmakeEnableFlag = "GR_FEC";
};
gr-fft = {
runtime = [ fftwFloat ];
cmakeEnableFlag = "GR_FFT";
};
gr-filter = {
runtime = [ fftwFloat ];
cmakeEnableFlag = "GR_FILTER";
};
gr-analog = {
cmakeEnableFlag = "GR_ANALOG";
};
gr-digital = {
cmakeEnableFlag = "GR_DIGITAL";
};
gr-dtv = {
cmakeEnableFlag = "GR_DTV";
};
gr-atsc = {
cmakeEnableFlag = "GR_ATSC";
};
gr-audio = {
runtime = []
++ stdenv.lib.optionals stdenv.isLinux [ alsaLib libjack2 ]
++ stdenv.lib.optionals stdenv.isDarwin [ CoreAudio ]
;
cmakeEnableFlag = "GR_AUDIO";
};
gr-comedi = {
runtime = [ comedilib ];
cmakeEnableFlag = "GR_COMEDI";
};
gr-channels = {
cmakeEnableFlag = "GR_CHANNELS";
};
gr-noaa = {
cmakeEnableFlag = "GR_NOAA";
};
gr-pager = {
cmakeEnableFlag = "GR_PAGER";
};
gr-qtgui = {
runtime = [ qt4 qwt6_qt4 ];
pythonRuntime = [ python.pkgs.pyqt4 ];
cmakeEnableFlag = "GR_QTGUI";
};
gr-trellis = {
cmakeEnableFlag = "GR_TRELLIS";
};
gr-uhd = {
runtime = [ uhd ];
cmakeEnableFlag = "GR_UHD";
};
gr-utils = {
cmakeEnableFlag = "GR_UTILS";
};
gr-video-sdl = {
runtime = [ SDL ];
cmakeEnableFlag = "GR_VIDEO_SDL";
};
gr-vocoder = {
runtime = [ codec2 gsm ];
cmakeEnableFlag = "GR_VOCODER";
};
gr-fcd = {
runtime = [ libusb1 ];
cmakeEnableFlag = "GR_FCD";
};
gr-wavelet = {
cmakeEnableFlag = "GR_WAVELET";
runtime = [ gsl ];
};
gr-zeromq = {
runtime = [ cppzmq zeromq ];
cmakeEnableFlag = "GR_ZEROMQ";
};
gr-wxgui = {
pythonRuntime = with python.pkgs; [ numpy wxPython ];
cmakeEnableFlag = "GR_WXGUI";
};
};
shared = (import ./shared.nix {
inherit
stdenv
python
removeReferencesTo
featuresInfo
features
versionAttr
sourceSha256
overrideSrc
fetchFromGitHub
fetchSubmodules
;
qt = qt4;
gtk = gtk2;
});
inherit (shared)
version
src
hasFeature # function
nativeBuildInputs
buildInputs
disallowedReferences
postInstall
passthru
doCheck
dontWrapPythonPrograms
meta
;
cmakeFlags = shared.cmakeFlags
# From some reason, if these are not set, libcodec2 and gsm are
# not detected properly (slightly different then what's in
# ./default.nix).
++ stdenv.lib.optionals (hasFeature "gr-vocoder" features) [
"-DLIBCODEC2_LIBRARIES=${codec2}/lib/libcodec2.so"
"-DLIBCODEC2_INCLUDE_DIR=${codec2}/include"
"-DLIBGSM_LIBRARIES=${gsm}/lib/libgsm.so"
"-DLIBGSM_INCLUDE_DIR=${gsm}/include/gsm"
]
;
stripDebugList = shared.stripDebugList
# gr-fcd feature was dropped in 3.8
++ stdenv.lib.optionals (hasFeature "gr-fcd" features) [ "share/gnuradio/examples/fcd" ]
;
preConfigure = ''
''
# wxgui and pygtk are not looked up properly, so we force them to be
# detected as found, if they are requested by the `features` attrset.
+ stdenv.lib.optionalString (hasFeature "gr-wxgui" features) ''
sed -i 's/.*wx\.version.*/set(WX_FOUND TRUE)/g' gr-wxgui/CMakeLists.txt
''
+ stdenv.lib.optionalString (hasFeature "gnuradio-companion" features) ''
sed -i 's/.*pygtk_version.*/set(PYGTK_FOUND TRUE)/g' grc/CMakeLists.txt
''
# If python-support is disabled, don't install volk's (git submodule)
# volk_modtool - it references python.
#
# NOTE: The same is done for 3.8, but we don't put this string in
# ./shared.nix since on the next release of 3.8 it won't be needed there,
# but it will be needed for 3.7, probably for ever.
+ stdenv.lib.optionalString (!hasFeature "python-support" features) ''
sed -i -e "/python\/volk_modtool/d" volk/CMakeLists.txt
''
;
patches = [
# Don't install python referencing files if python support is disabled.
# See: https://github.com/gnuradio/gnuradio/pull/3856
(fetchpatch {
url = "https://github.com/gnuradio/gnuradio/commit/acef55433d15c231661fa44751f9a2d90a4baa4b.diff";
sha256 = "2CEX44Ll8frfLXTIWjdDhKl7aXcjiAWsezVdwrynelE=";
})
(fetchpatch {
url = "https://github.com/gnuradio/gnuradio/commit/a2681edcfaabcb1ecf878ae861161b6a6bf8459d.diff";
sha256 = "2Pitgu8accs16B5X5+/q51hr+IY9DMsA15f56gAtBs8=";
})
];
in
stdenv.mkDerivation rec {
inherit
pname
version
src
nativeBuildInputs
buildInputs
cmakeFlags
preConfigure
# disallowedReferences
stripDebugList
patches
postInstall
passthru
doCheck
dontWrapPythonPrograms
meta
;
}

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