Merge branch 'staging' into staging-next

This commit is contained in:
Vladimír Čunát 2020-07-19 12:55:44 +02:00
commit 99a531da75
No known key found for this signature in database
GPG key ID: E747DF1F9575A3AA
280 changed files with 7749 additions and 7082 deletions

2
.github/stale.yml vendored
View file

@ -17,7 +17,7 @@ pulls:
If this is still important to you and you'd like to remove the stale label, we ask that you leave a comment. Your comment can be as simple as "still important to me". But there's a bit more you can do:
If you received an approval by an unpriviledged maintainer and you are just waiting for a merge, you can @ mention someone with merge permissions and ask them to help. You might be able to find someone relevant by using [Git blame](https://git-scm.com/docs/git-blame) on the relevant files, or via [GitHub's web interface](https://docs.github.com/en/github/managing-files-in-a-repository/tracking-changes-in-a-file). You can see if someone's a member of the [nixpkgs-committers](https://github.com/orgs/NixOS/teams/nixpkgs-committers) team, by hovering with the mouse over their username on the web interface, or by searching them directly on [the list](https://github.com/orgs/NixOS/teams/nixpkgs-committers).
If you received an approval by an unprivileged maintainer and you are just waiting for a merge, you can @ mention someone with merge permissions and ask them to help. You might be able to find someone relevant by using [Git blame](https://git-scm.com/docs/git-blame) on the relevant files, or via [GitHub's web interface](https://docs.github.com/en/github/managing-files-in-a-repository/tracking-changes-in-a-file). You can see if someone's a member of the [nixpkgs-committers](https://github.com/orgs/NixOS/teams/nixpkgs-committers) team, by hovering with the mouse over their username on the web interface, or by searching them directly on [the list](https://github.com/orgs/NixOS/teams/nixpkgs-committers).
If your PR wasn't reviewed at all, it might help to find someone who's perhaps a user of the package or module you are changing, or alternatively, ask once more for a review by the maintainer of the package/module this is about. If you don't know any, you can use [Git blame](https://git-scm.com/docs/git-blame) on the relevant files, or [GitHub's web interface](https://docs.github.com/en/github/managing-files-in-a-repository/tracking-changes-in-a-file) to find someone who touched the relevant files in the past.

View file

@ -4,34 +4,36 @@
<title>Citrix Workspace</title>
<para>
<note>
<para>
Please note that the <literal>citrix_receiver</literal> package has been deprecated since its development was <link xlink:href="https://docs.citrix.com/en-us/citrix-workspace-app.html">discontinued by upstream</link> and has been replaced by <link xlink:href="https://www.citrix.com/products/workspace-app/">the citrix workspace app</link>.
</para>
</note>
<link xlink:href="https://www.citrix.com/products/receiver/">Citrix Receiver</link> and <link xlink:href="https://www.citrix.com/products/workspace-app/">Citrix Workspace App</link> are a remote desktop viewers which provide access to <link xlink:href="https://www.citrix.com/products/xenapp-xendesktop/">XenDesktop</link> installations.
The <link xlink:href="https://www.citrix.com/products/workspace-app/">Citrix Workspace App</link> is a remote desktop viewer which provides access to <link xlink:href="https://www.citrix.com/products/xenapp-xendesktop/">XenDesktop</link> installations.
</para>
<section xml:id="sec-citrix-base">
<title>Basic usage</title>
<para>
The tarball archive needs to be downloaded manually as the license agreements of the vendor for <link xlink:href="https://www.citrix.com/downloads/citrix-receiver/">Citrix Receiver</link> or <link xlink:href="https://www.citrix.de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html">Citrix Workspace</link> need to be accepted first. Then run <command>nix-prefetch-url file://$PWD/linuxx64-$version.tar.gz</command>. With the archive available in the store the package can be built and installed with Nix.
The tarball archive needs to be downloaded manually as the license agreements of the vendor for <link xlink:href="https://www.citrix.de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html">Citrix Workspace</link> needs to be accepted first. Then run <command>nix-prefetch-url file://$PWD/linuxx64-$version.tar.gz</command>. With the archive available in the store the package can be built and installed with Nix.
</para>
</section>
<warning>
<title>Caution with <command>nix-shell</command> installs</title>
<para>
It's recommended to install <literal>Citrix Receiver</literal> and/or <literal>Citrix Workspace</literal> using <literal>nix-env -i</literal> or globally to ensure that the <literal>.desktop</literal> files are installed properly into <literal>$XDG_CONFIG_DIRS</literal>. Otherwise it won't be possible to open <literal>.ica</literal> files automatically from the browser to start a Citrix connection.
</para>
</warning>
<section xml:id="sec-citrix-selfservice">
<title>Citrix Selfservice</title>
<para>
The <link xlink:href="https://support.citrix.com/article/CTX200337">selfservice</link> is an application managing Citrix desktops and applications. Please note that this feature only works with at least <package>citrix_workspace_20_06_0</package> and later versions.
</para>
<para>
In order to set this up, you first have to <link xlink:href="https://its.uiowa.edu/support/article/102186">download the <literal>.cr</literal> file from the Netscaler Gateway</link>. After that you can configure the <command>selfservice</command> like this:
<screen>
<prompt>$ </prompt>storebrowse -C ~/Downloads/receiverconfig.cr
<prompt>$ </prompt>selfservice
</screen>
</para>
</section>
<section xml:id="sec-citrix-custom-certs">
<title>Custom certificates</title>
<para>
The <literal>Citrix Workspace App</literal> in <literal>nixpkgs</literal> trust several certificates <link xlink:href="https://curl.haxx.se/docs/caextract.html">from the Mozilla database</link> by default. However several companies using Citrix might require their own corporate certificate. On distros with imperative packaging these certs can be stored easily in <link xlink:href="https://developer-docs.citrix.com/projects/receiver-for-linux-command-reference/en/13.7/"><literal>$ICAROOT</literal></link>, however this directory is a store path in <literal>nixpkgs</literal>. In order to work around this issue the package provides a simple mechanism to add custom certificates without rebuilding the entire package using <literal>symlinkJoin</literal>:
The <literal>Citrix Workspace App</literal> in <literal>nixpkgs</literal> trusts several certificates <link xlink:href="https://curl.haxx.se/docs/caextract.html">from the Mozilla database</link> by default. However several companies using Citrix might require their own corporate certificate. On distros with imperative packaging these certs can be stored easily in <link xlink:href="https://developer-docs.citrix.com/projects/receiver-for-linux-command-reference/en/13.7/"><literal>$ICAROOT</literal></link>, however this directory is a store path in <literal>nixpkgs</literal>. In order to work around this issue the package provides a simple mechanism to add custom certificates without rebuilding the entire package using <literal>symlinkJoin</literal>:
<programlisting>
<![CDATA[with import <nixpkgs> { config.allowUnfree = true; };
let extraCerts = [ ./custom-cert-1.pem ./custom-cert-2.pem /* ... */ ]; in

View file

@ -3,159 +3,193 @@
xml:id="sec-language-perl">
<title>Perl</title>
<para>
Nixpkgs provides a function <varname>buildPerlPackage</varname>, a generic package builder function for any Perl package that has a standard <varname>Makefile.PL</varname>. Its implemented in <link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/perl-modules/generic"><filename>pkgs/development/perl-modules/generic</filename></link>.
</para>
<para>
Perl packages from CPAN are defined in <link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix"><filename>pkgs/top-level/perl-packages.nix</filename></link>, rather than <filename>pkgs/all-packages.nix</filename>. Most Perl packages are so straight-forward to build that they are defined here directly, rather than having a separate function for each package called from <filename>perl-packages.nix</filename>. However, more complicated packages should be put in a separate file, typically in <filename>pkgs/development/perl-modules</filename>. Here is an example of the former:
<programlisting>
ClassC3 = buildPerlPackage rec {
name = "Class-C3-0.21";
src = fetchurl {
url = "mirror://cpan/authors/id/F/FL/FLORA/${name}.tar.gz";
sha256 = "1bl8z095y4js66pwxnm7s853pi9czala4sqc743fdlnk27kq94gz";
};
};
</programlisting>
Note the use of <literal>mirror://cpan/</literal>, and the <literal>${name}</literal> in the URL definition to ensure that the name attribute is consistent with the source that were actually downloading. Perl packages are made available in <filename>all-packages.nix</filename> through the variable <varname>perlPackages</varname>. For instance, if you have a package that needs <varname>ClassC3</varname>, you would typically write
<programlisting>
foo = import ../path/to/foo.nix {
inherit stdenv fetchurl ...;
inherit (perlPackages) ClassC3;
};
</programlisting>
in <filename>all-packages.nix</filename>. You can test building a Perl package as follows:
<screen>
<prompt>$ </prompt>nix-build -A perlPackages.ClassC3
</screen>
<varname>buildPerlPackage</varname> adds <literal>perl-</literal> to the start of the name attribute, so the package above is actually called <literal>perl-Class-C3-0.21</literal>. So to install it, you can say:
<screen>
<prompt>$ </prompt>nix-env -i perl-Class-C3
</screen>
(Of course you can also install using the attribute name: <literal>nix-env -i -A perlPackages.ClassC3</literal>.)
</para>
<para>
So what does <varname>buildPerlPackage</varname> do? It does the following:
<orderedlist>
<listitem>
<para>
In the configure phase, it calls <literal>perl Makefile.PL</literal> to generate a Makefile. You can set the variable <varname>makeMakerFlags</varname> to pass flags to <filename>Makefile.PL</filename>
</para>
</listitem>
<listitem>
<para>
It adds the contents of the <envar>PERL5LIB</envar> environment variable to <literal>#! .../bin/perl</literal> line of Perl scripts as <literal>-I<replaceable>dir</replaceable></literal> flags. This ensures that a script can find its dependencies. (This can cause this shebang line to become too long for Darwin to handle; see the note below.)
</para>
</listitem>
<listitem>
<para>
In the fixup phase, it writes the propagated build inputs (<varname>propagatedBuildInputs</varname>) to the file <filename>$out/nix-support/propagated-user-env-packages</filename>. <command>nix-env</command> recursively installs all packages listed in this file when you install a package that has it. This ensures that a Perl package can find its dependencies.
</para>
</listitem>
</orderedlist>
</para>
<para>
<varname>buildPerlPackage</varname> is built on top of <varname>stdenv</varname>, so everything can be customised in the usual way. For instance, the <literal>BerkeleyDB</literal> module has a <varname>preConfigure</varname> hook to generate a configuration file used by <filename>Makefile.PL</filename>:
<programlisting>
{ buildPerlPackage, fetchurl, db }:
buildPerlPackage rec {
name = "BerkeleyDB-0.36";
src = fetchurl {
url = "mirror://cpan/authors/id/P/PM/PMQS/${name}.tar.gz";
sha256 = "07xf50riarb60l1h6m2dqmql8q5dij619712fsgw7ach04d8g3z1";
};
preConfigure = ''
echo "LIB = ${db.out}/lib" > config.in
echo "INCLUDE = ${db.dev}/include" >> config.in
'';
}
</programlisting>
</para>
<para>
Dependencies on other Perl packages can be specified in the <varname>buildInputs</varname> and <varname>propagatedBuildInputs</varname> attributes. If something is exclusively a build-time dependency, use <varname>buildInputs</varname>; if its (also) a runtime dependency, use <varname>propagatedBuildInputs</varname>. For instance, this builds a Perl module that has runtime dependencies on a bunch of other modules:
<programlisting>
ClassC3Componentised = buildPerlPackage rec {
name = "Class-C3-Componentised-1.0004";
src = fetchurl {
url = "mirror://cpan/authors/id/A/AS/ASH/${name}.tar.gz";
sha256 = "0xql73jkcdbq4q9m0b0rnca6nrlvf5hyzy8is0crdk65bynvs8q1";
};
propagatedBuildInputs = [
ClassC3 ClassInspector TestException MROCompat
];
};
</programlisting>
</para>
<para>
On Darwin, if a script has too many <literal>-I<replaceable>dir</replaceable></literal> flags in its first line (its “shebang line”), it will not run. This can be worked around by calling the <literal>shortenPerlShebang</literal> function from the <literal>postInstall</literal> phase:
<programlisting>
{ stdenv, buildPerlPackage, fetchurl, shortenPerlShebang }:
ImageExifTool = buildPerlPackage {
pname = "Image-ExifTool";
version = "11.50";
src = fetchurl {
url = "https://www.sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-11.50.tar.gz";
sha256 = "0d8v48y94z8maxkmw1rv7v9m0jg2dc8xbp581njb6yhr7abwqdv3";
};
buildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
postInstall = stdenv.lib.optional stdenv.isDarwin ''
shortenPerlShebang $out/bin/exiftool
'';
};
</programlisting>
This will remove the <literal>-I</literal> flags from the shebang line, rewrite them in the <literal>use lib</literal> form, and put them on the next line instead. This function can be given any number of Perl scripts as arguments; it will modify them in-place.
</para>
<section xml:id="ssec-generation-from-CPAN">
<title>Generation from CPAN</title>
<section xml:id="ssec-perl-running">
<title>Running perl programs on the shell</title>
<para>
Nix expressions for Perl packages can be generated (almost) automatically from CPAN. This is done by the program <command>nix-generate-from-cpan</command>, which can be installed as follows:
When executing a Perl script, it is possible you get an error such as <literal>./myscript.pl: bad interpreter: /usr/bin/perl: no such file or directory</literal>. This happens when the script expects Perl to be installed at <filename>/usr/bin/perl</filename>, which is not the case when using Perl from nixpkgs. You can fix the script by changing the first line to:
<programlisting>
#!/usr/bin/env perl
</programlisting>
to take the Perl installation from the <literal>PATH</literal> environment variable, or invoke Perl directly with:
<screen>
<prompt>$ </prompt>perl ./myscript.pl
</screen>
</para>
<screen>
<prompt>$ </prompt>nix-env -i nix-generate-from-cpan
</screen>
<para>
When the script is using a Perl library that is not installed globally, you might get an error such as <literal>Can't locate DB_File.pm in @INC (you may need to install the DB_File module)</literal>. In that case, you can use <command>nix-shell</command> to start an ad-hoc shell with that library installed, for instance:
<screen>
<prompt>$ </prompt>nix-shell -p perl perlPackages.DBFile --run ./myscript.pl
</screen>
</para>
<para>
This program takes a Perl module name, looks it up on CPAN, fetches and unpacks the corresponding package, and prints a Nix expression on standard output. For example:
<screen>
<prompt>$ </prompt>nix-generate-from-cpan XML::Simple
XMLSimple = buildPerlPackage rec {
name = "XML-Simple-2.22";
src = fetchurl {
url = "mirror://cpan/authors/id/G/GR/GRANTM/${name}.tar.gz";
sha256 = "b9450ef22ea9644ae5d6ada086dc4300fa105be050a2030ebd4efd28c198eb49";
};
propagatedBuildInputs = [ XMLNamespaceSupport XMLSAX XMLSAXExpat ];
meta = {
description = "An API for simple XML files";
license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
};
};
</screen>
The output can be pasted into <filename>pkgs/top-level/perl-packages.nix</filename> or wherever else you need it.
If you are always using the script in places where <command>nix-shell</command> is available, you can embed the <command>nix-shell</command> invocation in the shebang like this:
<programlisting>
#!/usr/bin/env nix-shell
#! nix-shell -i perl -p perl perlPackages.DBFile
</programlisting>
</para>
</section>
<section xml:id="ssec-perl-cross-compilation">
<title>Cross-compiling modules</title>
<section xml:id="ssec-perl-packaging">
<title>Packaging Perl programs</title>
<para>
Nixpkgs has experimental support for cross-compiling Perl modules. In many cases, it will just work out of the box, even for modules with native extensions. Sometimes, however, the Makefile.PL for a module may (indirectly) import a native module. In that case, you will need to make a stub for that module that will satisfy the Makefile.PL and install it into <filename>lib/perl5/site_perl/cross_perl/${perl.version}</filename>. See the <varname>postInstall</varname> for <varname>DBI</varname> for an example.
Nixpkgs provides a function <varname>buildPerlPackage</varname>, a generic package builder function for any Perl package that has a standard <varname>Makefile.PL</varname>. Its implemented in <link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/perl-modules/generic"><filename>pkgs/development/perl-modules/generic</filename></link>.
</para>
<para>
Perl packages from CPAN are defined in <link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix"><filename>pkgs/top-level/perl-packages.nix</filename></link>, rather than <filename>pkgs/all-packages.nix</filename>. Most Perl packages are so straight-forward to build that they are defined here directly, rather than having a separate function for each package called from <filename>perl-packages.nix</filename>. However, more complicated packages should be put in a separate file, typically in <filename>pkgs/development/perl-modules</filename>. Here is an example of the former:
<programlisting>
ClassC3 = buildPerlPackage rec {
name = "Class-C3-0.21";
src = fetchurl {
url = "mirror://cpan/authors/id/F/FL/FLORA/${name}.tar.gz";
sha256 = "1bl8z095y4js66pwxnm7s853pi9czala4sqc743fdlnk27kq94gz";
};
};
</programlisting>
Note the use of <literal>mirror://cpan/</literal>, and the <literal>${name}</literal> in the URL definition to ensure that the name attribute is consistent with the source that were actually downloading. Perl packages are made available in <filename>all-packages.nix</filename> through the variable <varname>perlPackages</varname>. For instance, if you have a package that needs <varname>ClassC3</varname>, you would typically write
<programlisting>
foo = import ../path/to/foo.nix {
inherit stdenv fetchurl ...;
inherit (perlPackages) ClassC3;
};
</programlisting>
in <filename>all-packages.nix</filename>. You can test building a Perl package as follows:
<screen>
<prompt>$ </prompt>nix-build -A perlPackages.ClassC3
</screen>
<varname>buildPerlPackage</varname> adds <literal>perl-</literal> to the start of the name attribute, so the package above is actually called <literal>perl-Class-C3-0.21</literal>. So to install it, you can say:
<screen>
<prompt>$ </prompt>nix-env -i perl-Class-C3
</screen>
(Of course you can also install using the attribute name: <literal>nix-env -i -A perlPackages.ClassC3</literal>.)
</para>
<para>
So what does <varname>buildPerlPackage</varname> do? It does the following:
<orderedlist>
<listitem>
<para>
In the configure phase, it calls <literal>perl Makefile.PL</literal> to generate a Makefile. You can set the variable <varname>makeMakerFlags</varname> to pass flags to <filename>Makefile.PL</filename>
</para>
</listitem>
<listitem>
<para>
It adds the contents of the <envar>PERL5LIB</envar> environment variable to <literal>#! .../bin/perl</literal> line of Perl scripts as <literal>-I<replaceable>dir</replaceable></literal> flags. This ensures that a script can find its dependencies. (This can cause this shebang line to become too long for Darwin to handle; see the note below.)
</para>
</listitem>
<listitem>
<para>
In the fixup phase, it writes the propagated build inputs (<varname>propagatedBuildInputs</varname>) to the file <filename>$out/nix-support/propagated-user-env-packages</filename>. <command>nix-env</command> recursively installs all packages listed in this file when you install a package that has it. This ensures that a Perl package can find its dependencies.
</para>
</listitem>
</orderedlist>
</para>
<para>
<varname>buildPerlPackage</varname> is built on top of <varname>stdenv</varname>, so everything can be customised in the usual way. For instance, the <literal>BerkeleyDB</literal> module has a <varname>preConfigure</varname> hook to generate a configuration file used by <filename>Makefile.PL</filename>:
<programlisting>
{ buildPerlPackage, fetchurl, db }:
buildPerlPackage rec {
name = "BerkeleyDB-0.36";
src = fetchurl {
url = "mirror://cpan/authors/id/P/PM/PMQS/${name}.tar.gz";
sha256 = "07xf50riarb60l1h6m2dqmql8q5dij619712fsgw7ach04d8g3z1";
};
preConfigure = ''
echo "LIB = ${db.out}/lib" > config.in
echo "INCLUDE = ${db.dev}/include" >> config.in
'';
}
</programlisting>
</para>
<para>
Dependencies on other Perl packages can be specified in the <varname>buildInputs</varname> and <varname>propagatedBuildInputs</varname> attributes. If something is exclusively a build-time dependency, use <varname>buildInputs</varname>; if its (also) a runtime dependency, use <varname>propagatedBuildInputs</varname>. For instance, this builds a Perl module that has runtime dependencies on a bunch of other modules:
<programlisting>
ClassC3Componentised = buildPerlPackage rec {
name = "Class-C3-Componentised-1.0004";
src = fetchurl {
url = "mirror://cpan/authors/id/A/AS/ASH/${name}.tar.gz";
sha256 = "0xql73jkcdbq4q9m0b0rnca6nrlvf5hyzy8is0crdk65bynvs8q1";
};
propagatedBuildInputs = [
ClassC3 ClassInspector TestException MROCompat
];
};
</programlisting>
</para>
<para>
On Darwin, if a script has too many <literal>-I<replaceable>dir</replaceable></literal> flags in its first line (its “shebang line”), it will not run. This can be worked around by calling the <literal>shortenPerlShebang</literal> function from the <literal>postInstall</literal> phase:
<programlisting>
{ stdenv, buildPerlPackage, fetchurl, shortenPerlShebang }:
ImageExifTool = buildPerlPackage {
pname = "Image-ExifTool";
version = "11.50";
src = fetchurl {
url = "https://www.sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-11.50.tar.gz";
sha256 = "0d8v48y94z8maxkmw1rv7v9m0jg2dc8xbp581njb6yhr7abwqdv3";
};
buildInputs = stdenv.lib.optional stdenv.isDarwin shortenPerlShebang;
postInstall = stdenv.lib.optional stdenv.isDarwin ''
shortenPerlShebang $out/bin/exiftool
'';
};
</programlisting>
This will remove the <literal>-I</literal> flags from the shebang line, rewrite them in the <literal>use lib</literal> form, and put them on the next line instead. This function can be given any number of Perl scripts as arguments; it will modify them in-place.
</para>
<section xml:id="ssec-generation-from-CPAN">
<title>Generation from CPAN</title>
<para>
Nix expressions for Perl packages can be generated (almost) automatically from CPAN. This is done by the program <command>nix-generate-from-cpan</command>, which can be installed as follows:
</para>
<screen>
<prompt>$ </prompt>nix-env -i nix-generate-from-cpan
</screen>
<para>
This program takes a Perl module name, looks it up on CPAN, fetches and unpacks the corresponding package, and prints a Nix expression on standard output. For example:
<screen>
<prompt>$ </prompt>nix-generate-from-cpan XML::Simple
XMLSimple = buildPerlPackage rec {
name = "XML-Simple-2.22";
src = fetchurl {
url = "mirror://cpan/authors/id/G/GR/GRANTM/${name}.tar.gz";
sha256 = "b9450ef22ea9644ae5d6ada086dc4300fa105be050a2030ebd4efd28c198eb49";
};
propagatedBuildInputs = [ XMLNamespaceSupport XMLSAX XMLSAXExpat ];
meta = {
description = "An API for simple XML files";
license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
};
};
</screen>
The output can be pasted into <filename>pkgs/top-level/perl-packages.nix</filename> or wherever else you need it.
</para>
</section>
<section xml:id="ssec-perl-cross-compilation">
<title>Cross-compiling modules</title>
<para>
Nixpkgs has experimental support for cross-compiling Perl modules. In many cases, it will just work out of the box, even for modules with native extensions. Sometimes, however, the Makefile.PL for a module may (indirectly) import a native module. In that case, you will need to make a stub for that module that will satisfy the Makefile.PL and install it into <filename>lib/perl5/site_perl/cross_perl/${perl.version}</filename>. See the <varname>postInstall</varname> for <varname>DBI</varname> for an example.
</para>
</section>
</section>
</section>

View file

@ -155,17 +155,17 @@ hello-2.3 A program that produces a familiar, friendly greeting
<itemizedlist>
<listitem>
<para>
Single license referenced by attribute (preferred) <literal>stdenv.lib.licenses.gpl3</literal>.
Single license referenced by attribute (preferred) <literal>stdenv.lib.licenses.gpl3Only</literal>.
</para>
</listitem>
<listitem>
<para>
Single license referenced by its attribute shortName (frowned upon) <literal>"gpl3"</literal>.
Single license referenced by its attribute shortName (frowned upon) <literal>"gpl3Only"</literal>.
</para>
</listitem>
<listitem>
<para>
Single license referenced by its attribute spdxId (frowned upon) <literal>"GPL-3.0"</literal>.
Single license referenced by its attribute spdxId (frowned upon) <literal>"GPL-3.0-only"</literal>.
</para>
</listitem>
<listitem>

View file

@ -162,10 +162,10 @@
</programlisting>
</para>
<para>
The following example configuration blacklists the <literal>gpl3</literal> and <literal>agpl3</literal> licenses:
The following example configuration blacklists the <literal>gpl3Only</literal> and <literal>agpl3Only</literal> licenses:
<programlisting>
{
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ];
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3Only gpl3Only ];
}
</programlisting>
</para>

View file

@ -28,7 +28,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
fullName = "Academic Free License v3.0";
};
agpl3 = spdx {
agpl3Only = spdx {
spdxId = "AGPL-3.0-only";
fullName = "GNU Affero General Public License v3.0 only";
};
@ -281,12 +281,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
fullName = "European Union Public License 1.2";
};
fdl11 = spdx {
fdl11Only = spdx {
spdxId = "GFDL-1.1-only";
fullName = "GNU Free Documentation License v1.1 only";
};
fdl12 = spdx {
fdl12Only = spdx {
spdxId = "GFDL-1.2-only";
fullName = "GNU Free Documentation License v1.2 only";
};
@ -296,7 +296,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
fullName = "GNU Free Documentation License v1.2 or later";
};
fdl13 = spdx {
fdl13Only = spdx {
spdxId = "GFDL-1.3-only";
fullName = "GNU Free Documentation License v1.3 only";
};
@ -327,7 +327,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
free = false;
};
gpl1 = spdx {
gpl1Only = spdx {
spdxId = "GPL-1.0-only";
fullName = "GNU General Public License v1.0 only";
};
@ -337,7 +337,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
fullName = "GNU General Public License v1.0 or later";
};
gpl2 = spdx {
gpl2Only = spdx {
spdxId = "GPL-2.0-only";
fullName = "GNU General Public License v2.0 only";
};
@ -362,7 +362,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
fullName = "GNU General Public License v2.0 or later";
};
gpl3 = spdx {
gpl3Only = spdx {
spdxId = "GPL-3.0-only";
fullName = "GNU General Public License v3.0 only";
};
@ -437,7 +437,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
fullName = "JasPer License";
};
lgpl2 = spdx {
lgpl2Only = spdx {
spdxId = "LGPL-2.0-only";
fullName = "GNU Library General Public License v2 only";
};
@ -447,7 +447,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
fullName = "GNU Library General Public License v2 or later";
};
lgpl21 = spdx {
lgpl21Only = spdx {
spdxId = "LGPL-2.1-only";
fullName = "GNU Lesser General Public License v2.1 only";
};
@ -457,7 +457,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
fullName = "GNU Lesser General Public License v2.1 or later";
};
lgpl3 = spdx {
lgpl3Only = spdx {
spdxId = "LGPL-3.0-only";
fullName = "GNU Lesser General Public License v3.0 only";
};
@ -782,4 +782,16 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
spdxId = "ZPL-2.1";
fullName = "Zope Public License 2.1";
};
} // {
# TODO: remove legacy aliases
agpl3 = lib.licenses.agpl3Only;
fdl11 = lib.licenses.fdl11Only;
fdl12 = lib.licenses.fdl12Only;
fdl13 = lib.licenses.fdl13Only;
gpl1 = lib.licenses.gpl1Only;
gpl2 = lib.licenses.gpl2Only;
gpl3 = lib.licenses.gpl3Only;
lgpl2 = lib.licenses.lgpl2Only;
lgpl21 = lib.licenses.lgpl21Only;
lgpl3 = lib.licenses.lgpl3Only;
}

View file

@ -145,10 +145,14 @@ rec {
# packed-refs file, so we have to grep through it:
then
let fileContent = readFile packedRefsName;
matchRef = match (".*\n([^\n ]*) " + file + "\n.*") fileContent;
in if matchRef == null
matchRef = builtins.match "([a-z0-9]+) ${file}";
isRef = s: builtins.isString s && (matchRef s) != null;
# there is a bug in libstdc++ leading to stackoverflow for long strings:
# https://github.com/NixOS/nix/issues/2147#issuecomment-659868795
refs = builtins.filter isRef (builtins.split "\n" fileContent);
in if refs == []
then throw ("Could not find " + file + " in " + packedRefsName)
else lib.head matchRef
else lib.head (matchRef (lib.head refs))
else throw ("Not a .git directory: " + path);
in readCommitFromFile "HEAD";

View file

@ -4803,6 +4803,12 @@
githubId = 34683288;
name = "Luke Bentley-Fox";
};
lukegb = {
email = "nix@lukegb.com";
github = "lukegb";
githubId = 246745;
name = "Luke Granger-Brown";
};
lukego = {
email = "luke@snabb.co";
github = "lukego";
@ -9127,4 +9133,10 @@
github = "tfmoraes";
githubId = 351108;
};
deifactor = {
name = "Ash Zahlen";
email = "ext0l@riseup.net";
github = "deifactor";
githubId = 30192992;
};
}

View file

@ -9,7 +9,13 @@
# TODO: add assert statements
let
pkgs = import ./../../default.nix (if include-overlays then { } else { overlays = []; });
pkgs = import ./../../default.nix (
if include-overlays == false then
{ overlays = []; }
else if include-overlays == true then
{ } # Let Nixpkgs include overlays impurely.
else { overlays = include-overlays; }
);
inherit (pkgs) lib;

View file

@ -18,6 +18,7 @@
<xi:include href="user-mgmt.xml" />
<xi:include href="file-systems.xml" />
<xi:include href="x-windows.xml" />
<xi:include href="gpu-accel.xml" />
<xi:include href="xfce.xml" />
<xi:include href="networking.xml" />
<xi:include href="linux-kernel.xml" />

View file

@ -0,0 +1,104 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0"
xml:id="sec-gpu-accel">
<title>GPU acceleration</title>
<para>
NixOS provides various APIs that benefit from GPU hardware
acceleration, such as VA-API and VDPAU for video playback; OpenGL and
Vulkan for 3D graphics; and OpenCL for general-purpose computing.
This chapter describes how to set up GPU hardware acceleration (as far
as this is not done automatically) and how to verify that hardware
acceleration is indeed used.
</para>
<para>
Most of the aforementioned APIs are agnostic with regards to which
display server is used. Consequently, these instructions should apply
both to the X Window System and Wayland compositors.
</para>
<section xml:id="sec-gpu-accel-opencl">
<title>OpenCL</title>
<para>
<link xlink:href="https://en.wikipedia.org/wiki/OpenCL">OpenCL</link> is a
general compute API. It is used by various applications such as
Blender and Darktable to accelerate certain operations.
</para>
<para>
OpenCL applications load drivers through the <emphasis>Installable Client
Driver</emphasis> (ICD) mechanism. In this mechanism, an ICD file
specifies the path to the OpenCL driver for a particular GPU family.
In NixOS, there are two ways to make ICD files visible to the ICD
loader. The first is through the <varname>OCL_ICD_VENDORS</varname>
environment variable. This variable can contain a directory which
is scanned by the ICL loader for ICD files. For example:
<screen><prompt>$</prompt> export \
OCL_ICD_VENDORS=`nix-build '&lt;nixpkgs&gt;' --no-out-link -A rocm-opencl-icd`/etc/OpenCL/vendors/</screen>
</para>
<para>
The second mechanism is to add the OpenCL driver package to
<xref linkend="opt-hardware.opengl.extraPackages"/>. This links the
ICD file under <filename>/run/opengl-driver</filename>, where it will
be visible to the ICD loader.
</para>
<para>
The proper installation of OpenCL drivers can be verified through
the <command>clinfo</command> command of the <package>clinfo</package>
package. This command will report the number of hardware devides
that is found and give detailed information for each device:
</para>
<screen><prompt>$</prompt> clinfo | head -n3
Number of platforms 1
Platform Name AMD Accelerated Parallel Processing
Platform Vendor Advanced Micro Devices, Inc.</screen>
<section xml:id="sec-gpu-accel-opencl-amd">
<title>AMD</title>
<para>
Modern AMD <link
xlink:href="https://en.wikipedia.org/wiki/Graphics_Core_Next">Graphics
Core Next</link> (GCN) GPUs are supported through the
<package>rocm-opencl-icd</package> package. Adding this package to
<xref linkend="opt-hardware.opengl.extraPackages"/> enables OpenCL
support. However, OpenCL Image support is provided through the
non-free <package>rocm-runtime-ext</package> package. This package can
be added to the same configuration option, but requires that
<varname>allowUnfree</varname> option is is enabled for nixpkgs. Full
OpenCL support on supported AMD GPUs is thus enabled as follows:
<programlisting><xref linkend="opt-hardware.opengl.extraPackages"/> = [
rocm-opencl-icd
rocm-runtime-ext
];</programlisting>
</para>
<para>
It is also possible to use the OpenCL Image extension without a
system-wide installation of the <package>rocm-runtime-ext</package>
package by setting the <varname>ROCR_EXT_DIR</varname> environment
variable to the directory that contains the extension:
<screen><prompt>$</prompt> export \
ROCR_EXT_DIR=`nix-build '&lt;nixpkgs&gt;' --no-out-link -A rocm-runtime-ext`/lib/rocm-runtime-ext</screen>
</para>
<para>
With either approach, you can verify that OpenCL Image support
is indeed working with the <command>clinfo</command> command:
<screen><prompt>$</prompt> clinfo | grep Image
Image support Yes</screen>
</para>
</section>
</section>
</chapter>

View file

@ -390,7 +390,7 @@ start_all()
<listitem>
<para>
Copies a file from host to machine, e.g.,
<literal>copy_file_from_host("myfile", "/etc/my/important/file")</literal>.
<literal>copy_from_host("myfile", "/etc/my/important/file")</literal>.
</para>
<para>
The first argument is the file on the host. The file needs to be

View file

@ -214,15 +214,7 @@ let
# fontconfig default config files
ln -s ${supportPkg.out}/etc/fonts/conf.d/*.conf \
$support_folder/
ln -s ${latestPkg.out}/etc/fonts/conf.d/*.conf \
$latest_folder/
# update latest 51-local.conf path to look at the latest local.conf
rm $latest_folder/51-local.conf
substitute ${latestPkg.out}/etc/fonts/conf.d/51-local.conf \
$latest_folder/51-local.conf \
--replace local.conf /etc/fonts/${latestVersion}/local.conf
# Latest fontconfig is configured to look for the upstream defaults inside the package.
# 00-nixos-cache.conf
ln -s ${cacheConfSupport} \
@ -236,7 +228,11 @@ let
# 50-user.conf
${optionalString (!cfg.includeUserConf) ''
rm $support_folder/50-user.conf
rm $latest_folder/50-user.conf
''}
# Since latest fontconfig looks for default files inside the package,
# we had to move this one elsewhere to be able to exclude it here.
${optionalString cfg.includeUserConf ''
ln -s ${latestPkg.out}/etc/fonts/conf.d.bak/50-user.conf $latest_folder/50-user.conf
''}
# local.conf (indirect priority 51)

View file

@ -14,9 +14,9 @@
<para>
This chapter will show you how to set up your own, self-hosted Matrix
homeserver using the Synapse reference homeserver, and how to serve your own
copy of the Riot web client. See the
copy of the Element web client. See the
<link xlink:href="https://matrix.org/docs/projects/try-matrix-now.html">Try
Matrix Now!</link> overview page for links to Riot Apps for Android and iOS,
Matrix Now!</link> overview page for links to Element Apps for Android and iOS,
desktop clients, as well as bridges to other networks and other projects
around Matrix.
</para>
@ -84,7 +84,7 @@ in {
"m.homeserver" = { "base_url" = "https://${fqdn}"; };
"m.identity_server" = { "base_url" = "https://vector.im"; };
};
# ACAO required to allow riot-web on any URL to request this json file
# ACAO required to allow element-web on any URL to request this json file
in ''
add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *;
@ -98,7 +98,7 @@ in {
<link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true;
# Or do a redirect instead of the 404, or whatever is appropriate for you.
# But do not put a Matrix Web client here! See the Riot Web section below.
# But do not put a Matrix Web client here! See the Element web section below.
<link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.extraConfig">locations."/".extraConfig</link> = ''
return 404;
'';
@ -171,17 +171,19 @@ Success!
option until a better solution for NixOS is in place.
</para>
</section>
<section xml:id="module-services-matrix-riot-web">
<title>Riot Web Client</title>
<section xml:id="module-services-matrix-element-web">
<title>Element (formerly known as Riot) Web Client</title>
<para>
<link xlink:href="https://github.com/vector-im/riot-web/">Riot Web</link> is
<link xlink:href="https://github.com/vector-im/riot-web/">Element Web</link> is
the reference web client for Matrix and developed by the core team at
matrix.org. The following snippet can be optionally added to the code before
matrix.org. Element was formerly known as Riot.im, see the
<link xlink:href="https://element.io/blog/welcome-to-element/">Element introductory blog post</link>
for more information. The following snippet can be optionally added to the code before
to complete the synapse installation with a web client served at
<code>https://riot.myhostname.example.org</code> and
<code>https://riot.example.org</code>. Alternatively, you can use the hosted
copy at <link xlink:href="https://riot.im/app">https://riot.im/app</link>,
<code>https://element.myhostname.example.org</code> and
<code>https://element.example.org</code>. Alternatively, you can use the hosted
copy at <link xlink:href="https://app.element.io/">https://app.element.io/</link>,
or use other web clients or native client applications. Due to the
<literal>/.well-known</literal> urls set up done above, many clients should
fill in the required connection details automatically when you enter your
@ -191,14 +193,14 @@ Success!
featureset.
<programlisting>
{
services.nginx.virtualHosts."riot.${fqdn}" = {
services.nginx.virtualHosts."element.${fqdn}" = {
<link linkend="opt-services.nginx.virtualHosts._name_.enableACME">enableACME</link> = true;
<link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true;
<link linkend="opt-services.nginx.virtualHosts._name_.serverAliases">serverAliases</link> = [
"riot.${config.networking.domain}"
"element.${config.networking.domain}"
];
<link linkend="opt-services.nginx.virtualHosts._name_.root">root</link> = pkgs.riot-web.override {
<link linkend="opt-services.nginx.virtualHosts._name_.root">root</link> = pkgs.element-web.override {
conf = {
default_server_config."m.homeserver" = {
"base_url" = "${config.networking.domain}";
@ -212,13 +214,13 @@ Success!
</para>
<para>
Note that the Riot developers do not recommend running Riot and your Matrix
Note that the Element developers do not recommend running Element and your Matrix
homeserver on the same fully-qualified domain name for security reasons. In
the example, this means that you should not reuse the
<literal>myhostname.example.org</literal> virtualHost to also serve Riot,
<literal>myhostname.example.org</literal> virtualHost to also serve Element,
but instead serve it on a different subdomain, like
<literal>riot.example.org</literal> in the example. See the
<link xlink:href="https://github.com/vector-im/riot-web#important-security-note">Riot
<literal>element.example.org</literal> in the example. See the
<link xlink:href="https://github.com/vector-im/riot-web#important-security-note">Element
Important Security Notes</link> for more information on this subject.
</para>
</section>

View file

@ -34,6 +34,7 @@ let
"mail"
"mikrotik"
"minio"
"modemmanager"
"nextcloud"
"nginx"
"node"

View file

@ -0,0 +1,33 @@
{ config, lib, pkgs, options }:
with lib;
let
cfg = config.services.prometheus.exporters.modemmanager;
in
{
port = 9539;
extraOpts = {
refreshRate = mkOption {
type = types.str;
default = "5s";
description = ''
How frequently ModemManager will refresh the extended signal quality
information for each modem. The duration should be specified in seconds
("5s"), minutes ("1m"), or hours ("1h").
'';
};
};
serviceOpts = {
serviceConfig = {
# Required in order to authenticate with ModemManager via D-Bus.
SupplementaryGroups = "networkmanager";
ExecStart = ''
${pkgs.prometheus-modemmanager-exporter}/bin/modemmanager_exporter \
-addr ${cfg.listenAddress}:${toString cfg.port} \
-rate ${cfg.refreshRate} \
${concatStringsSep " \\\n " cfg.extraFlags}
'';
};
};
}

View file

@ -40,7 +40,7 @@ let
$CFG->disableupdateautodeploy = true;
$CFG->pathtogs = '${pkgs.ghostscript}/bin/gs';
$CFG->pathtophp = '${pkgs.php}/bin/php';
$CFG->pathtophp = '${phpExt}/bin/php';
$CFG->pathtodu = '${pkgs.coreutils}/bin/du';
$CFG->aspellpath = '${pkgs.aspell}/bin/aspell';
$CFG->pathtodot = '${pkgs.graphviz}/bin/dot';
@ -55,6 +55,9 @@ let
mysqlLocal = cfg.database.createLocally && cfg.database.type == "mysql";
pgsqlLocal = cfg.database.createLocally && cfg.database.type == "pgsql";
phpExt = pkgs.php.withExtensions
({ enabled, all }: with all; [ iconv mbstring curl openssl tokenizer xmlrpc soap ctype zip gd simplexml dom intl json sqlite3 pgsql pdo_sqlite pdo_pgsql pdo_odbc pdo_mysql pdo mysqli session zlib xmlreader fileinfo ]);
in
{
# interface
@ -222,6 +225,7 @@ in
services.phpfpm.pools.moodle = {
inherit user group;
phpPackage = phpExt;
phpEnv.MOODLE_CONFIG = "${moodleConfig}";
phpOptions = ''
zend_extension = opcache.so
@ -263,13 +267,13 @@ in
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
environment.MOODLE_CONFIG = moodleConfig;
script = ''
${pkgs.php}/bin/php ${cfg.package}/share/moodle/admin/cli/check_database_schema.php && rc=$? || rc=$?
${phpExt}/bin/php ${cfg.package}/share/moodle/admin/cli/check_database_schema.php && rc=$? || rc=$?
[ "$rc" == 1 ] && ${pkgs.php}/bin/php ${cfg.package}/share/moodle/admin/cli/upgrade.php \
[ "$rc" == 1 ] && ${phpExt}/bin/php ${cfg.package}/share/moodle/admin/cli/upgrade.php \
--non-interactive \
--allow-unstable
[ "$rc" == 2 ] && ${pkgs.php}/bin/php ${cfg.package}/share/moodle/admin/cli/install_database.php \
[ "$rc" == 2 ] && ${phpExt}/bin/php ${cfg.package}/share/moodle/admin/cli/install_database.php \
--agree-license \
--adminpass=${cfg.initialPassword}
@ -289,7 +293,7 @@ in
serviceConfig = {
User = user;
Group = group;
ExecStart = "${pkgs.php}/bin/php ${cfg.package}/share/moodle/admin/cli/cron.php";
ExecStart = "${phpExt}/bin/php ${cfg.package}/share/moodle/admin/cli/cron.php";
};
};

View file

@ -111,8 +111,8 @@ let
copy_bin_and_libs ${pkgs.utillinux}/sbin/blkid
# Copy dmsetup and lvm.
copy_bin_and_libs ${pkgs.lvm2}/sbin/dmsetup
copy_bin_and_libs ${pkgs.lvm2}/sbin/lvm
copy_bin_and_libs ${getBin pkgs.lvm2}/bin/dmsetup
copy_bin_and_libs ${getBin pkgs.lvm2}/bin/lvm
# Add RAID mdadm tool.
copy_bin_and_libs ${pkgs.mdadm}/sbin/mdadm
@ -235,7 +235,7 @@ let
--replace cdrom_id ${extraUtils}/bin/cdrom_id \
--replace ${pkgs.coreutils}/bin/basename ${extraUtils}/bin/basename \
--replace ${pkgs.utillinux}/bin/blkid ${extraUtils}/bin/blkid \
--replace ${pkgs.lvm2}/sbin ${extraUtils}/bin \
--replace ${getBin pkgs.lvm2}/bin ${extraUtils}/bin \
--replace ${pkgs.mdadm}/sbin ${extraUtils}/sbin \
--replace ${pkgs.bash}/bin/sh ${extraUtils}/bin/sh \
--replace ${udev} ${extraUtils}

View file

@ -1,17 +1,70 @@
{ config, lib, pkgs, ... }:
with lib;
{
###### implementation
config = mkIf (!config.boot.isContainer) {
environment.systemPackages = [ pkgs.lvm2 ];
services.udev.packages = [ pkgs.lvm2 ];
let
cfg = config.services.lvm;
in {
options.services.lvm = {
package = mkOption {
type = types.package;
default = if cfg.dmeventd.enable then pkgs.lvm2_dmeventd else pkgs.lvm2;
internal = true;
defaultText = "pkgs.lvm2";
description = ''
This option allows you to override the LVM package that's used on the system
(udev rules, tmpfiles, systemd services).
Defaults to pkgs.lvm2, or pkgs.lvm2_dmeventd if dmeventd is enabled.
'';
};
dmeventd.enable = mkEnableOption "the LVM dmevent daemon";
boot.thin.enable = mkEnableOption "support for booting from ThinLVs";
};
config = mkMerge [
(mkIf (!config.boot.isContainer) {
environment.etc."tmpfiles.d/lvm2.conf".source = "${cfg.package}/lib/tmpfiles.d/lvm2.conf";
environment.systemPackages = [ cfg.package ];
systemd.packages = [ cfg.package ];
# TODO: update once https://github.com/NixOS/nixpkgs/pull/93006 was merged
services.udev.packages = [ cfg.package.out ];
})
(mkIf cfg.dmeventd.enable {
systemd.sockets."dm-event".wantedBy = [ "sockets.target" ];
systemd.services."lvm2-monitor".wantedBy = [ "sysinit.target" ];
environment.etc."lvm/lvm.conf".text = ''
dmeventd/executable = "${cfg.package}/bin/dmeventd"
'';
})
(mkIf cfg.boot.thin.enable {
boot.initrd = {
kernelModules = [ "dm-snapshot" "dm-thin-pool" ];
extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.thin-provisioning-tools}/bin/pdata_tools
copy_bin_and_libs ${pkgs.thin-provisioning-tools}/bin/thin_check
'';
};
environment.etc."lvm/lvm.conf".text = ''
global/thin_check_executable = "${pkgs.thin-provisioning-tools}/bin/thin_check"
'';
})
(mkIf (cfg.dmeventd.enable || cfg.boot.thin.enable) {
boot.initrd.preLVMCommands = ''
mkdir -p /etc/lvm
cat << EOF >> /etc/lvm/lvm.conf
${optionalString cfg.boot.thin.enable ''
global/thin_check_executable = "$(command -v thin_check)"
''}
${optionalString cfg.dmeventd.enable ''
dmeventd/executable = "$(command -v false)"
activation/monitoring = 0
''}
EOF
'';
})
];
}

View file

@ -149,6 +149,7 @@ in
###### implementation
config = mkIf cfg.enable (mkMerge [{
boot.kernelModules = [ "bridge" "veth" ];
environment.systemPackages = [ cfg.package ]
++ optional cfg.enableNvidia pkgs.nvidia-docker;
users.groups.docker.gid = config.ids.gids.docker;

View file

@ -30,8 +30,45 @@ import ./make-test-python.nix ({ pkgs, ... }: {
)
docker.succeed("docker run --rm ${examples.bash.imageName} bash --version")
# Check imageTag attribute matches image
docker.succeed("docker images --format '{{.Tag}}' | grep -F '${examples.bash.imageTag}'")
docker.succeed("docker rmi ${examples.bash.imageName}")
# The remaining combinations
with subtest("Ensure imageTag attribute matches image"):
docker.succeed(
"docker load --input='${examples.bashNoTag}'"
)
docker.succeed(
"docker images --format '{{.Tag}}' | grep -F '${examples.bashNoTag.imageTag}'"
)
docker.succeed("docker rmi ${examples.bashNoTag.imageName}:${examples.bashNoTag.imageTag}")
docker.succeed(
"docker load --input='${examples.bashNoTagLayered}'"
)
docker.succeed(
"docker images --format '{{.Tag}}' | grep -F '${examples.bashNoTagLayered.imageTag}'"
)
docker.succeed("docker rmi ${examples.bashNoTagLayered.imageName}:${examples.bashNoTagLayered.imageTag}")
docker.succeed(
"${examples.bashNoTagStreamLayered} | docker load"
)
docker.succeed(
"docker images --format '{{.Tag}}' | grep -F '${examples.bashNoTagStreamLayered.imageTag}'"
)
docker.succeed(
"docker rmi ${examples.bashNoTagStreamLayered.imageName}:${examples.bashNoTagStreamLayered.imageTag}"
)
docker.succeed(
"docker load --input='${examples.nixLayered}'"
)
docker.succeed("docker images --format '{{.Tag}}' | grep -F '${examples.nixLayered.imageTag}'")
docker.succeed("docker rmi ${examples.nixLayered.imageName}")
with subtest(
"Check if the nix store is correctly initialized by listing "
"dependencies of the installed Nix binary"

View file

@ -64,7 +64,7 @@ let
# a test script fragment `createPartitions', which must create
# partitions and filesystems.
testScriptFun = { bootLoader, createPartitions, grubVersion, grubDevice, grubUseEfi
, grubIdentifier, preBootCommands, extraConfig
, grubIdentifier, preBootCommands, postBootCommands, extraConfig
, testSpecialisationConfig
}:
let iface = if grubVersion == 1 then "ide" else "virtio";
@ -216,6 +216,7 @@ let
machine = create_machine_named("boot-after-rebuild-switch")
${preBootCommands}
machine.wait_for_unit("network.target")
${postBootCommands}
machine.shutdown()
# Tests for validating clone configuration entries in grub menu
@ -238,6 +239,7 @@ let
with subtest("Set grub to boot the second configuration"):
machine.succeed("grub-reboot 1")
${postBootCommands}
machine.shutdown()
# Reboot Machine
@ -252,12 +254,13 @@ let
with subtest("We should find a file named /etc/gitconfig"):
machine.succeed("test -e /etc/gitconfig")
${postBootCommands}
machine.shutdown()
'';
makeInstallerTest = name:
{ createPartitions, preBootCommands ? "", extraConfig ? ""
{ createPartitions, preBootCommands ? "", postBootCommands ? "", extraConfig ? ""
, extraInstallerConfig ? {}
, bootLoader ? "grub" # either "grub" or "systemd-boot"
, grubVersion ? 2, grubDevice ? "/dev/vda", grubIdentifier ? "uuid", grubUseEfi ? false
@ -335,7 +338,7 @@ let
};
testScript = testScriptFun {
inherit bootLoader createPartitions preBootCommands
inherit bootLoader createPartitions preBootCommands postBootCommands
grubVersion grubDevice grubIdentifier grubUseEfi extraConfig
testSpecialisationConfig;
};
@ -552,16 +555,26 @@ in {
+ " mkpart primary 2048M -1s" # PV2
+ " set 2 lvm on",
"udevadm settle",
"sleep 1",
"pvcreate /dev/vda1 /dev/vda2",
"sleep 1",
"vgcreate MyVolGroup /dev/vda1 /dev/vda2",
"sleep 1",
"lvcreate --size 1G --name swap MyVolGroup",
"sleep 1",
"lvcreate --size 2G --name nixos MyVolGroup",
"sleep 1",
"mkswap -f /dev/MyVolGroup/swap -L swap",
"swapon -L swap",
"mkfs.xfs -L nixos /dev/MyVolGroup/nixos",
"mount LABEL=nixos /mnt",
)
'';
postBootCommands = ''
assert "loaded active" in machine.succeed(
"systemctl list-units 'lvm2-pvscan@*' -ql --no-legend | tee /dev/stderr"
)
'';
};
# Boot off an encrypted root partition with the default LUKS header format

View file

@ -9,7 +9,6 @@ with pkgs.lib;
let
mkKubernetesBaseTest =
{ name, domain ? "my.zyx", test, machines
, pkgs ? import <nixpkgs> { inherit system; }
, extraConfiguration ? null }:
let
masterName = head (filter (machineName: any (role: role == "master") machines.${machineName}.roles) (attrNames machines));

View file

@ -68,7 +68,7 @@ import ./make-test-python.nix (
podman.succeed(su_cmd("tar cv --files-from /dev/null | podman import - scratchimg"))
podman.succeed(
su_cmd(
"podman run --cgroup-manager=cgroupfs --runtime=crun -d --name=sleeping -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg /bin/sleep 10"
"podman run --runtime=crun -d --name=sleeping -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg /bin/sleep 10"
)
)
podman.succeed(su_cmd("podman ps | grep sleeping"))

View file

@ -363,6 +363,31 @@ let
'';
};
modemmanager = {
exporterConfig = {
enable = true;
refreshRate = "10s";
};
metricProvider = {
# ModemManager is installed when NetworkManager is enabled. Ensure it is
# started and is wanted by NM and the exporter to start everything up
# in the right order.
networking.networkmanager.enable = true;
systemd.services.ModemManager = {
enable = true;
wantedBy = [ "NetworkManager.service" "prometheus-modemmanager-exporter.service" ];
};
};
exporterTest = ''
wait_for_unit("ModemManager.service")
wait_for_unit("prometheus-modemmanager-exporter.service")
wait_for_open_port(9539)
succeed(
"curl -sSf http://localhost:9539/metrics | grep -q 'modemmanager_info'"
)
'';
};
nextcloud = {
exporterConfig = {
enable = true;

View file

@ -104,6 +104,11 @@ import ./make-test-python.nix ({ pkgs, ... }: {
re.search(r"^Filesystem state: *clean$", extinfo, re.MULTILINE) is not None
), ("File system was not cleanly unmounted: " + extinfo)
# Regression test for https://github.com/NixOS/nixpkgs/pull/91232
with subtest("setting transient hostnames works"):
machine.succeed("hostnamectl set-hostname --transient machine-transient")
machine.fail("hostnamectl set-hostname machine-all")
with subtest("systemd-shutdown works"):
machine.shutdown()
machine.wait_for_unit("multi-user.target")

View file

@ -1,39 +1,40 @@
{ stdenv, fetchurl, pkgconfig, wrapGAppsHook, gettext, glib, gtk3
, libmowgli, dbus-glib, libxml2, xorg, gnome3, alsaLib
, libpulseaudio, libjack2, fluidsynth, libmad, libogg, libvorbis
, libcdio, libcddb, flac, ffmpeg_3, mpg123, libcue, libmms, libbs2b
, libsndfile, libmodplug, libsamplerate, soxr, lirc, curl, wavpack
, neon, faad2, lame, libnotify, libsidplayfp
{
mkDerivation, lib, fetchurl, fetchpatch,
gettext, pkgconfig,
qtbase,
alsaLib, curl, faad2, ffmpeg, flac, fluidsynth, gdk-pixbuf, lame, libbs2b,
libcddb, libcdio, libcdio-paranoia, libcue, libjack2, libmad, libmms, libmodplug,
libmowgli, libnotify, libogg, libpulseaudio, libsamplerate, libsidplayfp,
libsndfile, libvorbis, libxml2, lirc, mpg123, neon, qtmultimedia, soxr,
wavpack, openmpt123
}:
stdenv.mkDerivation rec {
mkDerivation rec {
pname = "audacious";
version = "3.9";
version = "4.0.5";
src = fetchurl {
url = "https://distfiles.audacious-media-player.org/audacious-${version}-gtk3.tar.bz2";
sha256 = "0dc7fg0v2l2j4h9cz1baz7rf4n0a5jgk09qvsj806sh6jp7w6ipm";
url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2";
sha256 = "028zjgz0p7ys15lk2a30m5zcv9xrx3ga50wjsh4m4zxilgkakbji";
};
pluginsSrc = fetchurl {
url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}-gtk3.tar.bz2";
sha256 = "1gck37c5pnzxdhrnb1g75b5hi31s2dc952wifxns45pkdlayrmra";
url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2";
sha256 = "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz";
};
nativeBuildInputs = [
pkgconfig wrapGAppsHook
];
nativeBuildInputs = [ gettext pkgconfig ];
buildInputs = [
gettext glib gtk3 libmowgli dbus-glib libxml2
xorg.libXcomposite gnome3.adwaita-icon-theme alsaLib libjack2
libpulseaudio fluidsynth libmad libogg libvorbis libcdio
libcddb flac ffmpeg_3 mpg123 libcue libmms libbs2b libsndfile
libmodplug libsamplerate soxr lirc curl wavpack neon faad2
lame libnotify libsidplayfp
];
# Core dependencies
qtbase
configureFlags = [ "--enable-statusicon" ];
# Plugin dependencies
alsaLib curl faad2 ffmpeg flac fluidsynth gdk-pixbuf lame libbs2b libcddb
libcdio libcdio-paranoia libcue libjack2 libmad libmms libmodplug libmowgli
libnotify libogg libpulseaudio libsamplerate libsidplayfp libsndfile
libvorbis libxml2 lirc mpg123 neon qtmultimedia soxr wavpack
openmpt123
];
# Here we build both audacious and audacious-plugins in one
# derivations, since they really expect to be in the same prefix.
@ -44,10 +45,8 @@ stdenv.mkDerivation rec {
source $stdenv/setup
genericBuild
)
# Then build the plugins.
(
dontWrapGApps=true
nativeBuildInputs="$out $nativeBuildInputs" # to find audacious
source $stdenv/setup
rm -rfv audacious-*
@ -56,12 +55,10 @@ stdenv.mkDerivation rec {
)
'';
enableParallelBuilding = true;
meta = with stdenv.lib; {
meta = with lib; {
description = "Audio player";
homepage = "https://audacious-media-player.org/";
maintainers = with maintainers; [ eelco ramkromberg ];
maintainers = with maintainers; [ eelco ramkromberg ttuegel ];
platforms = with platforms; linux;
license = with licenses; [
bsd2 bsd3 #https://github.com/audacious-media-player/audacious/blob/master/COPYING

View file

@ -1,92 +0,0 @@
{
mkDerivation, lib, fetchurl, fetchpatch,
gettext, pkgconfig,
qtbase,
alsaLib, curl, faad2, ffmpeg_3, flac, fluidsynth, gdk-pixbuf, lame, libbs2b,
libcddb, libcdio, libcue, libjack2, libmad, libmms, libmodplug,
libmowgli, libnotify, libogg, libpulseaudio, libsamplerate, libsidplayfp,
libsndfile, libvorbis, libxml2, lirc, mpg123, neon, qtmultimedia, soxr,
wavpack
}:
let
version = "3.9";
sources = {
"audacious-${version}" = fetchurl {
url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2";
sha256 = "0pmhrhsjhqnrq3zh4rhfys5jas53ph5ijkq010dxg1n779kl901d";
};
"audacious-plugins-${version}" = fetchurl {
url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2";
sha256 = "1f17r7ar0mngcf7z41s6xh073vjafw3i7iy9ijb0cd6bi48g5xwb";
};
};
qt510_plugins_patch = fetchpatch {
url = "https://github.com/audacious-media-player/audacious-plugins/commit/971f7ff7c3d8a0b9b420bf4fd19ab97755607637.patch";
sha256 = "15fy37syj9ygl2ibkkz3g3b9wd22vk9bjfmvqhhkpxphry2zwb17";
};
in
mkDerivation {
inherit version;
name = "audacious-qt5-${version}";
sourceFiles = lib.attrValues sources;
sourceRoots = lib.attrNames sources;
nativeBuildInputs = [ gettext pkgconfig ];
inherit qt510_plugins_patch;
buildInputs = [
# Core dependencies
qtbase
# Plugin dependencies
alsaLib curl faad2 ffmpeg_3 flac fluidsynth gdk-pixbuf lame libbs2b libcddb
libcdio libcue libjack2 libmad libmms libmodplug libmowgli
libnotify libogg libpulseaudio libsamplerate libsidplayfp libsndfile
libvorbis libxml2 lirc mpg123 neon qtmultimedia soxr wavpack
];
configureFlags = [ "--enable-qt" "--disable-gtk" ];
# Here we build both audacious and audacious-plugins in one
# derivations, since they really expect to be in the same prefix.
# This is slighly tricky.
builder = builtins.toFile "builder.sh" ''
sourceFiles=( $sourceFiles )
sourceRoots=( $sourceRoots )
for (( i=0 ; i < ''${#sourceFiles[*]} ; i++ )); do
(
# only patch the plugins
if [ "$i" -eq "1" ]; then
patches=( $qt510_plugins_patch )
fi
src=''${sourceFiles[$i]}
sourceRoot=''${sourceRoots[$i]}
source $stdenv/setup
genericBuild
)
if [ $i == 0 ]; then
nativeBuildInputs="$out $nativeBuildInputs"
fi
done
'';
meta = with lib; {
description = "Audio player";
homepage = "https://audacious-media-player.org/";
maintainers = with maintainers; [ ttuegel ];
platforms = with platforms; linux;
license = with licenses; [
bsd2 bsd3 #https://github.com/audacious-media-player/audacious/blob/master/COPYING
gpl2 gpl3 lgpl2Plus #http://redmine.audacious-media-player.org/issues/46
];
};
}

View file

@ -42,16 +42,13 @@ in
stdenv.mkDerivation rec {
pname = "guitarix";
version = "0.40.0";
version = "0.41.0";
src = fetchurl {
url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.xz";
sha256 = "0q9050499hcj19hvbxb069vxh5yclawjg04vryh46lxm4sfy9g57";
sha256 = "0qsfbyrrpb3bbdyq68k28mjql7kglxh8nqcw9jvja28x6x9ik5a0";
};
# see: https://sourceforge.net/p/guitarix/bugs/105
patches = [ ./fix-build.patch ];
nativeBuildInputs = [
gettext
hicolor-icon-theme
@ -101,8 +98,6 @@ stdenv.mkDerivation rec {
"--no-desktop-update"
"--enable-nls"
"--install-roboto-font"
"--includeresampler"
"--includeconvolver"
] ++ optional optimizationSupport "--optimization";
meta = with stdenv.lib; {

View file

@ -1,10 +0,0 @@
--- a/src/LV2/xputty/xfilepicker.cpp
+++ b/src/LV2/xputty/xfilepicker.cpp
@@ -191,6 +191,6 @@
filepicker->selected_file = NULL;
filepicker->path = NULL;
filepicker->filter = NULL;
- asprintf(&filepicker->path, path);
+ asprintf(&filepicker->path, "%s", path);
assert(filepicker->path != NULL);
}

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, pkgconfig, scons, qt4, lash, libjack2, jack ? libjack2 }:
{ stdenv, fetchurl, pkgconfig, sconsPackages, qt4, lash, libjack2, jack ? libjack2 }:
stdenv.mkDerivation {
name = "jackmix-0.5.2";
@ -9,7 +9,7 @@ stdenv.mkDerivation {
patches = [ ./no_error.patch ];
nativeBuildInputs = [ scons.py2 pkgconfig ];
nativeBuildInputs = [ sconsPackages.scons_3_1_2 pkgconfig ];
buildInputs = [
qt4
lash

View file

@ -3,7 +3,7 @@
, libid3tag, libmad, libopus, libshout, libsndfile, libusb1, libvorbis
, libGLU, libxcb, lilv, lv2, opusfile
, pkgconfig, portaudio, portmidi, protobuf, qtbase, qtscript, qtsvg
, qtx11extras, rubberband, scons, sqlite, taglib, upower, vamp-plugin-sdk
, qtx11extras, rubberband, sconsPackages, sqlite, taglib, upower, vamp-plugin-sdk
}:
let
@ -28,7 +28,7 @@ mkDerivation rec {
sha256 = "1dj9li8av9b2kbm76jvvbdmihy1pyrw0s4xd7dd524wfhwr1llxr";
};
nativeBuildInputs = [ scons.py2 ];
nativeBuildInputs = [ sconsPackages.scons_3_1_2 ];
buildInputs = [
chromaprint fftw flac faad2 glibcLocales mp4v2 libid3tag libmad libopus libshout241 libsndfile
libusb1 libvorbis libxcb libGLU lilv lv2 opusfile pkgconfig portaudio portmidi protobuf qtbase qtscript qtsvg

View file

@ -14,16 +14,16 @@ let
in
rustPlatform.buildRustPackage rec {
pname = "ncspot";
version = "0.1.4";
version = "0.2.0";
src = fetchFromGitHub {
owner = "hrkfdn";
repo = "ncspot";
rev = version;
sha256 = "02g2lamabkwayhm56498pfvl9g0xx2vsan2j48ssrwjx6rwmlh7n";
rev = "v${version}";
sha256 = "0b2g5bd04zh1hcrhkgd2srx9gl94da4gpy9arjcvrldschjxjza1";
};
cargoSha256 = "07gw2az11lpldwpb792l64b7xlarvx77364rn4i8g6a5271zahz3";
cargoSha256 = "1gbhvmg7jfmx0b694rdr3s2zs33d4s645gw1lrxvwffif4mg8fy9";
cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ];

View file

@ -1,4 +1,4 @@
{ stdenv, lib, pkgconfig, fetchFromGitHub, scons
{ stdenv, lib, pkgconfig, fetchFromGitHub, sconsPackages
, python, glibmm, libpulseaudio, libao }:
let
@ -15,7 +15,7 @@ in stdenv.mkDerivation {
};
nativeBuildInputs = [
scons.py2 pkgconfig
sconsPackages.scons_3_1_2 pkgconfig
];
buildInputs = [

View file

@ -35,13 +35,13 @@
mkDerivation rec {
pname = "strawberry";
version = "0.6.12";
version = "0.6.13";
src = fetchFromGitHub {
owner = "jonaski";
repo = pname;
rev = version;
sha256 = "0p09xp7andfg0gvarzc979pwglr0xjj1c0cziqj0c9z7p1v0fkws";
sha256 = "1v0334aivqyqx611cmhgshknzmrgyynbmxcg70qzrs2lyybw2fc1";
};
buildInputs = [

View file

@ -198,7 +198,8 @@ in runCommand
# binaries are also distributed as proprietary software (unlike the
# source-code itself).
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ primeos ];
maintainers = with maintainers; ([ ]
++ optional (channel == "stable") primeos);
};
}
''

View file

@ -8,9 +8,9 @@ let
inherit (gnome2) GConf gnome_vfs;
};
stableVersion = {
version = "4.0.0.16"; # "Android Studio 4.0"
build = "193.6514223";
sha256Hash = "1sqj64vddwfrr9821habfz7dms9csvbp7b8gf1d027188b2lvh3h";
version = "4.0.1.0"; # "Android Studio 4.0.1"
build = "193.6626763";
sha256Hash = "15vm7fvi8c286wx9f28z6ysvm8wqqda759qql0zy9simwx22gy7j";
};
betaVersion = {
version = "4.0.0.16"; # "Android Studio 4.0"

View file

@ -1,12 +1,12 @@
{ lib, fetchFromGitHub }:
rec {
version = "8.2.0701";
version = "8.2.1123";
src = fetchFromGitHub {
owner = "vim";
repo = "vim";
rev = "v${version}";
sha256 = "1cbh2nhbvhp4kclc9fd8gqij2vi11c5zwdwn1nzg805k06hwmsrp";
sha256 = "01fgfm5pnmbq12z84d7g3x0iq5gj1irdyihx41c4r2bww55v5q0c";
};
enableParallelBuilding = true;

View file

@ -34,8 +34,6 @@ stdenv.mkDerivation rec {
"-DUSE_KWALLET=OFF"
];
# Doc has high risk of collisions
postInstall = "rm -r $out/share/doc";
# darktable changed its rpath handling in commit
# 83c70b876af6484506901e6b381304ae0d073d3c and as a result the
@ -45,6 +43,10 @@ stdenv.mkDerivation rec {
libPathEnvVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
libPathPrefix = "$out/lib/darktable" + stdenv.lib.optionalString stdenv.isLinux ":${ocl-icd}/lib";
in ''
for f in $out/share/darktable/kernels/*.cl; do
sed -r "s|#include \"(.*)\"|#include \"$out/share/darktable/kernels/\1\"|g" -i "$f"
done
gappsWrapperArgs+=(
--prefix ${libPathEnvVar} ":" "${libPathPrefix}"
)

View file

@ -11,11 +11,11 @@
stdenv.mkDerivation rec {
pname = "drawio";
version = "13.3.9";
version = "13.4.5";
src = fetchurl {
url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm";
sha256 = "1i1idjy80x6a0w40lziivyhg8nnlbpri7xdqxikxy982vffgihwp";
sha256 = "1vp5krgj0xzhkiidj658ij6j10d2p97l1nifx0nrqysblcz2km3g";
};
nativeBuildInputs = [

View file

@ -18,7 +18,7 @@
, openal
, openssl
, racket
, scons
, sconsPackages
, zlib
}:
let
@ -69,7 +69,7 @@ stdenv.mkDerivation rec {
openssl.dev
racket
];
nativeBuildInputs = [ scons.py2 ];
nativeBuildInputs = [ sconsPackages.scons_3_1_2 ];
patches = [ ./fix-build.patch ];
sconsFlags = [

View file

@ -18,13 +18,13 @@
mkDerivation rec {
pname = "nomacs";
version = "3.14.2";
version = "3.15.1616";
src = fetchFromGitHub {
owner = "nomacs";
repo = "nomacs";
rev = version;
sha256 = "1vms13kyg7cpqi2hxvrrhlnl7cq92ijr7dm1kl5ryglpcagqv811";
sha256 = "0g1saqf31zncqdiwk7aaf951j3g33bg0vcjcr5mvg600jxiinw8j";
};
enableParallelBuilding = true;

View file

@ -1,11 +1,11 @@
{stdenv, fetchurl, libX11, libXft}:
stdenv.mkDerivation rec {
pname = "xfractint";
version = "20.04p14";
version = "20.04p15";
# or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
src = fetchurl {
url = "https://www.fractint.net/ftp/current/linux/xfractint-${version}.tar.gz";
sha256 = "0jdqr639z862qrswwk5srmv4fj5d7rl8kcscpn6mlkx4jvjmca0f";
sha256 = "1wv2hgyjvrjxzqxb55vz65ra80p24j8sd34llykk2qlx73x8f3nk";
};
buildInputs = [libX11 libXft];

View file

@ -2,7 +2,7 @@
buildGoPackage rec {
pname = "tut";
version = "0.0.10";
version = "0.0.13";
goPackagePath = "github.com/RasmusLindroth/tut";
goDeps = ./deps.nix;
@ -11,7 +11,7 @@ buildGoPackage rec {
owner = "RasmusLindroth";
repo = pname;
rev = version;
sha256 = "09l6dmzrvcpix3wg4djs6zk3ql6b6lfhd8z9aglbi6fix4pm8565";
sha256 = "085qiv9q2hzv1v6qmbddra23acsmmkbwmjqc3cp81gfgl893z7sm";
};
meta = with stdenv.lib; {

View file

@ -0,0 +1,22 @@
{ lib, fetchFromGitHub, buildGoModule }:
buildGoModule rec {
pname = "amfora";
version = "1.3.0";
src = fetchFromGitHub {
owner = "makeworld-the-better-one";
repo = "amfora";
rev = "v${version}";
sha256 = "0bnjwsyi6l9p27rajwh0nq53zi4km7qpgyb08q17j0vd87gpdhka";
};
vendorSha256 = "1rj2m3rg8ixclj5jr0nmp266vwj1mg5ampxn04i3wgaayy49dbdi";
meta = with lib; {
description = "A fancy terminal browser for the Gemini protocol";
homepage = "https://github.com/makeworld-the-better-one/amfora";
license = with licenses; [ gpl3 ];
maintainers = with maintainers; [ deifactor ];
};
}

View file

@ -86,11 +86,11 @@ in
stdenv.mkDerivation rec {
pname = "brave";
version = "1.10.97";
version = "1.11.97";
src = fetchurl {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
sha256 = "1qwk75k8km2sy7l3m4k5m383sl75dph4dyrp8hd65x5hnpip67yi";
sha256 = "1wmjwk98fvzy5slyqpzpnn1mx663q3pvcyr3fzcinf6v971vz3q2";
};
dontConfigure = true;

View file

@ -1,5 +1,5 @@
{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10
, makeWrapper, ed
, makeWrapper, ed, gnugrep
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
, libva ? null
, pipewire_0_2
@ -187,7 +187,7 @@ in stdenv.mkDerivation {
'' + ''
# libredirect causes chromium to deadlock on startup
export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | tr ':' '\n' | grep -v /lib/libredirect\\\\.so$ | tr '\n' ':')"
export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | tr ':' '\n' | ${gnugrep}/bin/grep -v /lib/libredirect\\\\.so$ | tr '\n' ':')"
export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS

View file

@ -1,4 +1,4 @@
{ config, stdenv, lib, callPackage, fetchurl }:
{ config, stdenv, lib, callPackage, fetchurl, nss_3_44 }:
let
common = opts: callPackage (import ./common.nix opts) {};
@ -33,7 +33,7 @@ rec {
};
};
firefox-esr-68 = common rec {
firefox-esr-68 = (common rec {
pname = "firefox-esr";
ffversion = "68.10.0esr";
src = fetchurl {
@ -53,5 +53,11 @@ rec {
versionSuffix = "esr";
versionKey = "ffversion";
};
}).override {
# Mozilla unfortunately doesn't support building with latest NSS anymore;
# instead they provide ESR releases for NSS:
# https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases
nss = nss_3_44;
};
}

View file

@ -61,7 +61,7 @@ in mkDerivationWith python3Packages.buildPythonApplication rec {
dontWrapQtApps = true;
postPatch = ''
substituteInPlace qutebrowser/app.py --subst-var-by qutebrowser "$out/bin/qutebrowser"
substituteInPlace qutebrowser/misc/quitter.py --subst-var-by qutebrowser "$out/bin/qutebrowser"
sed -i "s,/usr/share/,$out/share/,g" qutebrowser/utils/standarddir.py
'' + lib.optionalString withPdfReader ''

View file

@ -1,4 +1,4 @@
diff --git a/quitter.py b/quitterb.py
diff --git a/quitter.py b/quitter.py
index a42b9d0..f544ccb 100644
--- a/qutebrowser/misc/quitter.py
+++ b/qutebrowser/misc/quitter.py

View file

@ -15,13 +15,13 @@ with lib;
stdenv.mkDerivation rec {
pname = "kubernetes";
version = "1.18.5";
version = "1.18.6";
src = fetchFromGitHub {
owner = "kubernetes";
repo = "kubernetes";
rev = "v${version}";
sha256 = "0pl7dzq5giwkzfyg4pzm8y76fnd62gaa6d4hswvgn87czab37lr6";
sha256 = "0ijcssalzb0gx23va23q6q6haj2m9dy36l9i7lq1726m75fa5yjv";
};
nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];

View file

@ -1,10 +1,10 @@
{
"name": "riot-desktop",
"productName": "Riot",
"name": "element-desktop",
"productName": "Element (Riot)",
"main": "src/electron-main.js",
"version": "1.6.7",
"version": "1.7.1",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"author": "Element",
"repository": {
"type": "git",
"url": "https://github.com/vector-im/riot-desktop"
@ -38,8 +38,8 @@
},
"devDependencies": {
"asar": "^2.0.1",
"electron-builder": "^22.3.2",
"electron-builder-squirrel-windows": "^22.3.2",
"electron-builder": "^22.7.0",
"electron-builder-squirrel-windows": "^22.7.0",
"electron-devtools-installer": "^2.2.4",
"electron-notarize": "^0.2.0",
"eslint": "^5.8.0",
@ -48,22 +48,22 @@
"find-npm-prefix": "^1.0.2",
"fs-extra": "^8.1.0",
"glob": "^7.1.6",
"matrix-js-sdk": "7.0.0",
"matrix-js-sdk": "7.1.0",
"mkdirp": "^1.0.3",
"needle": "^2.5.0",
"node-pre-gyp": "^0.15.0",
"npm": "^6.13.7",
"npm": "^6.14.6",
"rimraf": "^3.0.2",
"semver": "^7.1.3",
"tar": "^6.0.1"
},
"hakDependencies": {
"matrix-seshat": "^1.3.3",
"matrix-seshat": "^2.1.0",
"keytar": "^5.6.0"
},
"build": {
"appId": "im.riot.app",
"electronVersion": "8.0.3",
"electronVersion": "9.0.5",
"files": [
"package.json",
{
@ -82,9 +82,9 @@
"linux": {
"target": "deb",
"category": "Network;InstantMessaging;Chat",
"maintainer": "support@riot.im",
"maintainer": "support@element.io",
"desktop": {
"StartupWMClass": "riot"
"StartupWMClass": "element"
}
},
"mac": {
@ -100,12 +100,13 @@
"directories": {
"output": "dist"
},
"afterPack": "scripts/electron_afterPack",
"afterSign": "scripts/electron_afterSign",
"protocols": [
{
"name": "riot",
"name": "element",
"schemes": [
"riot"
"element"
]
}
]

View file

@ -1,14 +1,6 @@
{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
offline_cache = linkFarm "offline" packages;
packages = [
{
name = "7zip_bin___7zip_bin_4.0.2.tgz";
path = fetchurl {
name = "7zip_bin___7zip_bin_4.0.2.tgz";
url = "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-4.0.2.tgz";
sha1 = "6abbdc22f33cab742053777a26db2e25ca527179";
};
}
{
name = "7zip_bin___7zip_bin_5.0.3.tgz";
path = fetchurl {
@ -50,11 +42,11 @@
};
}
{
name = "_develar_schema_utils___schema_utils_2.1.0.tgz";
name = "_develar_schema_utils___schema_utils_2.6.5.tgz";
path = fetchurl {
name = "_develar_schema_utils___schema_utils_2.1.0.tgz";
url = "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.1.0.tgz";
sha1 = "eceb1695bfbed6f6bb84666d5d3abe5e1fd54e17";
name = "_develar_schema_utils___schema_utils_2.6.5.tgz";
url = "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz";
sha1 = "3ece22c5838402419a6e0425f85742b961d9b6c6";
};
}
{
@ -98,11 +90,11 @@
};
}
{
name = "_types_fs_extra___fs_extra_8.0.1.tgz";
name = "_types_fs_extra___fs_extra_9.0.1.tgz";
path = fetchurl {
name = "_types_fs_extra___fs_extra_8.0.1.tgz";
url = "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.0.1.tgz";
sha1 = "a2378d6e7e8afea1564e44aafa2e207dadf77686";
name = "_types_fs_extra___fs_extra_9.0.1.tgz";
url = "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.1.tgz";
sha1 = "91c8fc4c51f6d5dbe44c2ca9ab09310bd00c7918";
};
}
{
@ -121,6 +113,22 @@
sha1 = "7cc1358c9c18e71f6c020e410962971863232cf5";
};
}
{
name = "_types_yargs_parser___yargs_parser_15.0.0.tgz";
path = fetchurl {
name = "_types_yargs_parser___yargs_parser_15.0.0.tgz";
url = "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz";
sha1 = "cb3f9f741869e20cce330ffbeb9271590483882d";
};
}
{
name = "_types_yargs___yargs_15.0.5.tgz";
path = fetchurl {
name = "_types_yargs___yargs_15.0.5.tgz";
url = "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz";
sha1 = "947e9a6561483bdee9adffc983e91a6902af8b79";
};
}
{
name = "JSONStream___JSONStream_1.3.5.tgz";
path = fetchurl {
@ -193,6 +201,14 @@
sha1 = "d3cea04d6b017b2894ad69040fec8b623eb4bd52";
};
}
{
name = "ajv___ajv_6.12.2.tgz";
path = fetchurl {
name = "ajv___ajv_6.12.2.tgz";
url = "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz";
sha1 = "c629c5eced17baf314437918d2da88c99d5958cd";
};
}
{
name = "another_json___another_json_0.2.0.tgz";
path = fetchurl {
@ -290,27 +306,19 @@
};
}
{
name = "app_builder_bin___app_builder_bin_3.5.2.tgz";
name = "app_builder_bin___app_builder_bin_3.5.9.tgz";
path = fetchurl {
name = "app_builder_bin___app_builder_bin_3.5.2.tgz";
url = "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.5.2.tgz";
sha1 = "fba56e6e9ef76fcd37816738c5f9a0b3992d7183";
name = "app_builder_bin___app_builder_bin_3.5.9.tgz";
url = "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.5.9.tgz";
sha1 = "a3ac0c25286bac68357321cb2eaf7128b0bc0a4f";
};
}
{
name = "app_builder_lib___app_builder_lib_22.3.2.tgz";
name = "app_builder_lib___app_builder_lib_22.7.0.tgz";
path = fetchurl {
name = "app_builder_lib___app_builder_lib_22.3.2.tgz";
url = "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.3.2.tgz";
sha1 = "d43e0bdff91d484c0bd07d7248043dbb2665b8ac";
};
}
{
name = "app_builder_lib___app_builder_lib_22.3.3.tgz";
path = fetchurl {
name = "app_builder_lib___app_builder_lib_22.3.3.tgz";
url = "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.3.3.tgz";
sha1 = "9a95a3c14f69fb6131834dd840fba561191c9998";
name = "app_builder_lib___app_builder_lib_22.7.0.tgz";
url = "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.7.0.tgz";
sha1 = "ccd3e7ece2d46bc209423a77aa142f74aaf65db0";
};
}
{
@ -346,11 +354,11 @@
};
}
{
name = "archiver___archiver_3.1.1.tgz";
name = "archiver___archiver_4.0.1.tgz";
path = fetchurl {
name = "archiver___archiver_3.1.1.tgz";
url = "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz";
sha1 = "9db7819d4daf60aec10fe86b16cb9258ced66ea0";
name = "archiver___archiver_4.0.1.tgz";
url = "https://registry.yarnpkg.com/archiver/-/archiver-4.0.1.tgz";
sha1 = "3f722b121777e361ca9fad374ecda38e77e63c7f";
};
}
{
@ -425,6 +433,14 @@
sha1 = "8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3";
};
}
{
name = "async___async_0.9.2.tgz";
path = fetchurl {
name = "async___async_0.9.2.tgz";
url = "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz";
sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
};
}
{
name = "async___async_2.6.3.tgz";
path = fetchurl {
@ -441,6 +457,14 @@
sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
};
}
{
name = "at_least_node___at_least_node_1.0.0.tgz";
path = fetchurl {
name = "at_least_node___at_least_node_1.0.0.tgz";
url = "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz";
sha1 = "602cd4b46e844ad4effc92a8011a3c46e0238dc2";
};
}
{
name = "auto_launch___auto_launch_5.0.5.tgz";
path = fetchurl {
@ -514,11 +538,11 @@
};
}
{
name = "bl___bl_3.0.0.tgz";
name = "bl___bl_4.0.2.tgz";
path = fetchurl {
name = "bl___bl_3.0.0.tgz";
url = "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz";
sha1 = "3611ec00579fd18561754360b21e9f784500ff88";
name = "bl___bl_4.0.2.tgz";
url = "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz";
sha1 = "52b71e9088515d0606d9dd9cc7aa48dc1f98e73a";
};
}
{
@ -618,27 +642,27 @@
};
}
{
name = "builder_util_runtime___builder_util_runtime_8.6.0.tgz";
name = "buffer___buffer_5.6.0.tgz";
path = fetchurl {
name = "builder_util_runtime___builder_util_runtime_8.6.0.tgz";
url = "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.6.0.tgz";
sha1 = "b7007c30126da9a90e99932128d2922c8c178649";
name = "buffer___buffer_5.6.0.tgz";
url = "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz";
sha1 = "a31749dc7d81d84db08abf937b6b8c4033f62786";
};
}
{
name = "builder_util___builder_util_22.3.2.tgz";
name = "builder_util_runtime___builder_util_runtime_8.7.1.tgz";
path = fetchurl {
name = "builder_util___builder_util_22.3.2.tgz";
url = "https://registry.yarnpkg.com/builder-util/-/builder-util-22.3.2.tgz";
sha1 = "23c61aaf0f0006f994087b33a26e47cdaec7aa8d";
name = "builder_util_runtime___builder_util_runtime_8.7.1.tgz";
url = "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.1.tgz";
sha1 = "23c808cddd650d4376a7a1518ec1e80e85c10f00";
};
}
{
name = "builder_util___builder_util_22.3.3.tgz";
name = "builder_util___builder_util_22.7.0.tgz";
path = fetchurl {
name = "builder_util___builder_util_22.3.3.tgz";
url = "https://registry.yarnpkg.com/builder-util/-/builder-util-22.3.3.tgz";
sha1 = "62f0527ceaa1a2e4a60596a9b38ad1ffe3e20ae6";
name = "builder_util___builder_util_22.7.0.tgz";
url = "https://registry.yarnpkg.com/builder-util/-/builder-util-22.7.0.tgz";
sha1 = "0776a66e6d6e408a78bed7f17a7ad22516d9e7f0";
};
}
{
@ -745,6 +769,14 @@
sha1 = "3f73c2bf526591f574cc492c51e2456349f844e4";
};
}
{
name = "chalk___chalk_4.1.0.tgz";
path = fetchurl {
name = "chalk___chalk_4.1.0.tgz";
url = "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz";
sha1 = "4e14870a618d9e2edd97dd8345fd9d9dc315646a";
};
}
{
name = "chardet___chardet_0.7.0.tgz";
path = fetchurl {
@ -970,11 +1002,11 @@
};
}
{
name = "compress_commons___compress_commons_2.1.1.tgz";
name = "compress_commons___compress_commons_3.0.0.tgz";
path = fetchurl {
name = "compress_commons___compress_commons_2.1.1.tgz";
url = "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz";
sha1 = "9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610";
name = "compress_commons___compress_commons_3.0.0.tgz";
url = "https://registry.yarnpkg.com/compress-commons/-/compress-commons-3.0.0.tgz";
sha1 = "833944d84596e537224dd91cf92f5246823d4f1d";
};
}
{
@ -1169,6 +1201,14 @@
sha1 = "3b72260255109c6b589cee050f1d516139664791";
};
}
{
name = "debug___debug_4.2.0.tgz";
path = fetchurl {
name = "debug___debug_4.2.0.tgz";
url = "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz";
sha1 = "7f150f93920e94c58f5574c2fd01a3110effe7f1";
};
}
{
name = "debuglog___debuglog_1.0.1.tgz";
path = fetchurl {
@ -1298,11 +1338,11 @@
};
}
{
name = "dmg_builder___dmg_builder_22.3.2.tgz";
name = "dmg_builder___dmg_builder_22.7.0.tgz";
path = fetchurl {
name = "dmg_builder___dmg_builder_22.3.2.tgz";
url = "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.3.2.tgz";
sha1 = "4c052f75d601e3358da1ff9d7d57738e1c01b157";
name = "dmg_builder___dmg_builder_22.7.0.tgz";
url = "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.7.0.tgz";
sha1 = "ead7e7c046cbdc52d29d302a4455f6668cdf7d45";
};
}
{
@ -1394,27 +1434,27 @@
};
}
{
name = "ejs___ejs_3.0.1.tgz";
name = "ejs___ejs_3.1.3.tgz";
path = fetchurl {
name = "ejs___ejs_3.0.1.tgz";
url = "https://registry.yarnpkg.com/ejs/-/ejs-3.0.1.tgz";
sha1 = "30c8f6ee9948502cc32e85c37a3f8b39b5a614a5";
name = "ejs___ejs_3.1.3.tgz";
url = "https://registry.yarnpkg.com/ejs/-/ejs-3.1.3.tgz";
sha1 = "514d967a8894084d18d3d47bd169a1c0560f093d";
};
}
{
name = "electron_builder_squirrel_windows___electron_builder_squirrel_windows_22.3.3.tgz";
name = "electron_builder_squirrel_windows___electron_builder_squirrel_windows_22.7.0.tgz";
path = fetchurl {
name = "electron_builder_squirrel_windows___electron_builder_squirrel_windows_22.3.3.tgz";
url = "https://registry.yarnpkg.com/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-22.3.3.tgz";
sha1 = "0a417af35c83b067096bd3217b6b7bd75c6c48a9";
name = "electron_builder_squirrel_windows___electron_builder_squirrel_windows_22.7.0.tgz";
url = "https://registry.yarnpkg.com/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-22.7.0.tgz";
sha1 = "8d6f09d541c039f52202935c66d592c38575ceff";
};
}
{
name = "electron_builder___electron_builder_22.3.2.tgz";
name = "electron_builder___electron_builder_22.7.0.tgz";
path = fetchurl {
name = "electron_builder___electron_builder_22.3.2.tgz";
url = "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.3.2.tgz";
sha1 = "902d150fc0670cb90213262e5e0aa3c4f299ffa4";
name = "electron_builder___electron_builder_22.7.0.tgz";
url = "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.7.0.tgz";
sha1 = "a42d08a1654ffc2f7d9e2860829d3cc55d4a0c81";
};
}
{
@ -1434,19 +1474,11 @@
};
}
{
name = "electron_publish___electron_publish_22.3.2.tgz";
name = "electron_publish___electron_publish_22.7.0.tgz";
path = fetchurl {
name = "electron_publish___electron_publish_22.3.2.tgz";
url = "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.3.2.tgz";
sha1 = "d2e60caf7a9643fe57e501c20acaf32c737b1c50";
};
}
{
name = "electron_publish___electron_publish_22.3.3.tgz";
path = fetchurl {
name = "electron_publish___electron_publish_22.3.3.tgz";
url = "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.3.3.tgz";
sha1 = "7d1e757a20ce0558fdc42900b6e3d773fdae9d9e";
name = "electron_publish___electron_publish_22.7.0.tgz";
url = "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.7.0.tgz";
sha1 = "d92ba7c4007c9ac1dd070593e48028184fb2dc19";
};
}
{
@ -1753,6 +1785,14 @@
sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
};
}
{
name = "fast_deep_equal___fast_deep_equal_3.1.3.tgz";
path = fetchurl {
name = "fast_deep_equal___fast_deep_equal_3.1.3.tgz";
url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz";
sha1 = "3a7d56b559d6cbc3eb512325244e619a65c6c525";
};
}
{
name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
path = fetchurl {
@ -1801,6 +1841,14 @@
sha1 = "257a078384d1db8087bc449d107d52a52672b9e9";
};
}
{
name = "filelist___filelist_1.0.1.tgz";
path = fetchurl {
name = "filelist___filelist_1.0.1.tgz";
url = "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz";
sha1 = "f10d1a3ae86c1694808e8f20906f43d4c9132dbb";
};
}
{
name = "find_npm_prefix___find_npm_prefix_1.0.2.tgz";
path = fetchurl {
@ -1905,6 +1953,14 @@
sha1 = "49d43c45a88cd9677668cb7be1b46efdb8d2e1c0";
};
}
{
name = "fs_extra___fs_extra_9.0.1.tgz";
path = fetchurl {
name = "fs_extra___fs_extra_9.0.1.tgz";
url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz";
sha1 = "910da0062437ba4c39fedd863f1675ccfefcb9fc";
};
}
{
name = "fs_minipass___fs_minipass_1.2.7.tgz";
path = fetchurl {
@ -2097,6 +2153,14 @@
sha1 = "4a12ff1b60376ef09862c2093edd908328be8423";
};
}
{
name = "graceful_fs___graceful_fs_4.2.4.tgz";
path = fetchurl {
name = "graceful_fs___graceful_fs_4.2.4.tgz";
url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz";
sha1 = "2256bde14d3632958c465ebc96dc467ca07a29fb";
};
}
{
name = "har_schema___har_schema_2.0.0.tgz";
path = fetchurl {
@ -2170,11 +2234,19 @@
};
}
{
name = "hosted_git_info___hosted_git_info_3.0.2.tgz";
name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
path = fetchurl {
name = "hosted_git_info___hosted_git_info_3.0.2.tgz";
url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.2.tgz";
sha1 = "8b7e3bd114b59b51786f8bade0f39ddc80275a97";
name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz";
sha1 = "7539bd4bc1e0e0a895815a2e0262420b12858488";
};
}
{
name = "hosted_git_info___hosted_git_info_3.0.4.tgz";
path = fetchurl {
name = "hosted_git_info___hosted_git_info_3.0.4.tgz";
url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.4.tgz";
sha1 = "be4973eb1fd2737b11c9c7c19380739bb249f60d";
};
}
{
@ -2626,11 +2698,11 @@
};
}
{
name = "isbinaryfile___isbinaryfile_4.0.4.tgz";
name = "isbinaryfile___isbinaryfile_4.0.6.tgz";
path = fetchurl {
name = "isbinaryfile___isbinaryfile_4.0.4.tgz";
url = "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.4.tgz";
sha1 = "6803f81a8944201c642b6e17da041e24deb78712";
name = "isbinaryfile___isbinaryfile_4.0.6.tgz";
url = "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz";
sha1 = "edcb62b224e2b4710830b67498c8e4e5a4d2610b";
};
}
{
@ -2649,6 +2721,14 @@
sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
};
}
{
name = "jake___jake_10.8.2.tgz";
path = fetchurl {
name = "jake___jake_10.8.2.tgz";
url = "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz";
sha1 = "ebc9de8558160a66d82d0eadc6a2e58fbc500a7b";
};
}
{
name = "jimp___jimp_0.2.28.tgz";
path = fetchurl {
@ -2681,6 +2761,14 @@
sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847";
};
}
{
name = "js_yaml___js_yaml_3.14.0.tgz";
path = fetchurl {
name = "js_yaml___js_yaml_3.14.0.tgz";
url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz";
sha1 = "a7a34170f26a21bb162424d8adacb4113a69e482";
};
}
{
name = "jsbn___jsbn_0.1.1.tgz";
path = fetchurl {
@ -2738,11 +2826,11 @@
};
}
{
name = "json5___json5_2.1.1.tgz";
name = "json5___json5_2.1.3.tgz";
path = fetchurl {
name = "json5___json5_2.1.1.tgz";
url = "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz";
sha1 = "81b6cb04e9ba496f1c7005d07b4368a2638f90b6";
name = "json5___json5_2.1.3.tgz";
url = "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz";
sha1 = "c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43";
};
}
{
@ -2761,6 +2849,14 @@
sha1 = "8771aae0799b64076b76640fca058f9c10e33ecb";
};
}
{
name = "jsonfile___jsonfile_6.0.1.tgz";
path = fetchurl {
name = "jsonfile___jsonfile_6.0.1.tgz";
url = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz";
sha1 = "98966cba214378c8c84b82e085907b40bf614179";
};
}
{
name = "jsonparse___jsonparse_1.3.1.tgz";
path = fetchurl {
@ -3074,11 +3170,11 @@
};
}
{
name = "lodash___lodash_4.17.15.tgz";
name = "lodash___lodash_4.17.19.tgz";
path = fetchurl {
name = "lodash___lodash_4.17.15.tgz";
url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz";
sha1 = "b447f6670a0455bbfeedd11392eff330ea097548";
name = "lodash___lodash_4.17.19.tgz";
url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz";
sha1 = "e48ddedbe30b3321783c5b4301fbd353bc1e4a4b";
};
}
{
@ -3154,11 +3250,11 @@
};
}
{
name = "matrix_js_sdk___matrix_js_sdk_7.0.0.tgz";
name = "matrix_js_sdk___matrix_js_sdk_7.1.0.tgz";
path = fetchurl {
name = "matrix_js_sdk___matrix_js_sdk_7.0.0.tgz";
url = "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-7.0.0.tgz";
sha1 = "da2b24e57574379c3d8f7065eb68ea6c479d9806";
name = "matrix_js_sdk___matrix_js_sdk_7.1.0.tgz";
url = "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-7.1.0.tgz";
sha1 = "b3e3304e890df45c827706831748935168ee839f";
};
}
{
@ -3210,11 +3306,11 @@
};
}
{
name = "mime___mime_2.4.4.tgz";
name = "mime___mime_2.4.6.tgz";
path = fetchurl {
name = "mime___mime_2.4.4.tgz";
url = "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz";
sha1 = "bd7b91135fc6b01cde3e9bae33d659b63d8857e5";
name = "mime___mime_2.4.6.tgz";
url = "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz";
sha1 = "e5b407c90db442f2beb5b162373d07b69affa4d1";
};
}
{
@ -3425,6 +3521,14 @@
sha1 = "8e31260a7af4a2e2f994b0673d4e0b3866156332";
};
}
{
name = "node_gyp___node_gyp_5.1.1.tgz";
path = fetchurl {
name = "node_gyp___node_gyp_5.1.1.tgz";
url = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz";
sha1 = "eb915f7b631c937d282e33aed44cb7a025f62a3e";
};
}
{
name = "node_pre_gyp___node_pre_gyp_0.15.0.tgz";
path = fetchurl {
@ -3441,6 +3545,14 @@
sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
};
}
{
name = "nopt___nopt_4.0.3.tgz";
path = fetchurl {
name = "nopt___nopt_4.0.3.tgz";
url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz";
sha1 = "a375cad9d02fd921278d954c2254d5aa57e15e48";
};
}
{
name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
path = fetchurl {
@ -3553,6 +3665,14 @@
sha1 = "8272a71c19634d0dce9c35a5daf8ee589cbb0f52";
};
}
{
name = "npm_profile___npm_profile_4.0.4.tgz";
path = fetchurl {
name = "npm_profile___npm_profile_4.0.4.tgz";
url = "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.4.tgz";
sha1 = "28ee94390e936df6d084263ee2061336a6a1581b";
};
}
{
name = "npm_registry_fetch___npm_registry_fetch_4.0.2.tgz";
path = fetchurl {
@ -3561,6 +3681,14 @@
sha1 = "2b1434f93ccbe6b6385f8e45f45db93e16921d7a";
};
}
{
name = "npm_registry_fetch___npm_registry_fetch_4.0.5.tgz";
path = fetchurl {
name = "npm_registry_fetch___npm_registry_fetch_4.0.5.tgz";
url = "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz";
sha1 = "cb87cf7f25bfb048d6c3ee19d115bebf93ea5bfa";
};
}
{
name = "npm_run_path___npm_run_path_2.0.2.tgz";
path = fetchurl {
@ -3578,11 +3706,11 @@
};
}
{
name = "npm___npm_6.13.7.tgz";
name = "npm___npm_6.14.6.tgz";
path = fetchurl {
name = "npm___npm_6.13.7.tgz";
url = "https://registry.yarnpkg.com/npm/-/npm-6.13.7.tgz";
sha1 = "9533a3ddc57f9792db8a8b303efabaf878047841";
name = "npm___npm_6.14.6.tgz";
url = "https://registry.yarnpkg.com/npm/-/npm-6.14.6.tgz";
sha1 = "1a81ce1fac2bf5457dbf6342ceed503627ff228f";
};
}
{
@ -4242,11 +4370,11 @@
};
}
{
name = "read_config_file___read_config_file_5.0.1.tgz";
name = "read_config_file___read_config_file_6.0.0.tgz";
path = fetchurl {
name = "read_config_file___read_config_file_5.0.1.tgz";
url = "https://registry.yarnpkg.com/read-config-file/-/read-config-file-5.0.1.tgz";
sha1 = "ead3df0d9822cc96006ca16322eaa79dac8591c2";
name = "read_config_file___read_config_file_6.0.0.tgz";
url = "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.0.0.tgz";
sha1 = "224b5dca6a5bdc1fb19e63f89f342680efdb9299";
};
}
{
@ -4321,6 +4449,14 @@
sha1 = "a51c26754658e0a3c21dbf59163bd45ba6f447fc";
};
}
{
name = "readable_stream___readable_stream_3.6.0.tgz";
path = fetchurl {
name = "readable_stream___readable_stream_3.6.0.tgz";
url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz";
sha1 = "337bbda3adc0706bd3e024426a286d4b4b2c9198";
};
}
{
name = "readable_stream___readable_stream_1.1.14.tgz";
path = fetchurl {
@ -4601,6 +4737,14 @@
sha1 = "e4345ce73071c53f336445cfc19efb1c311df2a6";
};
}
{
name = "semver___semver_7.3.2.tgz";
path = fetchurl {
name = "semver___semver_7.3.2.tgz";
url = "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz";
sha1 = "604962b052b81ed0786aae84389ffba70ffd3938";
};
}
{
name = "set_blocking___set_blocking_2.0.0.tgz";
path = fetchurl {
@ -4698,11 +4842,11 @@
};
}
{
name = "source_map_support___source_map_support_0.5.16.tgz";
name = "source_map_support___source_map_support_0.5.19.tgz";
path = fetchurl {
name = "source_map_support___source_map_support_0.5.16.tgz";
url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz";
sha1 = "0ae069e7fe3ba7538c64c98515e35339eac5a042";
name = "source_map_support___source_map_support_0.5.19.tgz";
url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz";
sha1 = "a98b62f86dcaf4f67399648c085291ab9e8fed61";
};
}
{
@ -4994,11 +5138,11 @@
};
}
{
name = "tar_stream___tar_stream_2.1.0.tgz";
name = "tar_stream___tar_stream_2.1.2.tgz";
path = fetchurl {
name = "tar_stream___tar_stream_2.1.0.tgz";
url = "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz";
sha1 = "d1aaa3661f05b38b5acc9b7020efdca5179a2cc3";
name = "tar_stream___tar_stream_2.1.2.tgz";
url = "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz";
sha1 = "6d5ef1a7e5783a95ff70b69b97455a5968dc1325";
};
}
{
@ -5018,11 +5162,11 @@
};
}
{
name = "temp_file___temp_file_3.3.6.tgz";
name = "temp_file___temp_file_3.3.7.tgz";
path = fetchurl {
name = "temp_file___temp_file_3.3.6.tgz";
url = "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.6.tgz";
sha1 = "bd7a1951338bf93b59380b498ec1804d5b76c449";
name = "temp_file___temp_file_3.3.7.tgz";
url = "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.7.tgz";
sha1 = "686885d635f872748e384e871855958470aeb18a";
};
}
{
@ -5257,6 +5401,14 @@
sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
};
}
{
name = "universalify___universalify_1.0.0.tgz";
path = fetchurl {
name = "universalify___universalify_1.0.0.tgz";
url = "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz";
sha1 = "b61a1da173e8435b2fe3c67d29b9adf8594bd16d";
};
}
{
name = "unpipe___unpipe_1.0.0.tgz";
path = fetchurl {
@ -5626,11 +5778,11 @@
};
}
{
name = "yargs_parser___yargs_parser_16.1.0.tgz";
name = "yargs_parser___yargs_parser_18.1.3.tgz";
path = fetchurl {
name = "yargs_parser___yargs_parser_16.1.0.tgz";
url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz";
sha1 = "73747d53ae187e7b8dbe333f95714c76ea00ecf1";
name = "yargs_parser___yargs_parser_18.1.3.tgz";
url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz";
sha1 = "be68c4975c6b2abf469236b0c870362fab09a7b0";
};
}
{
@ -5658,11 +5810,11 @@
};
}
{
name = "yargs___yargs_15.1.0.tgz";
name = "yargs___yargs_15.3.1.tgz";
path = fetchurl {
name = "yargs___yargs_15.1.0.tgz";
url = "https://registry.yarnpkg.com/yargs/-/yargs-15.1.0.tgz";
sha1 = "e111381f5830e863a89550bd4b136bb6a5f37219";
name = "yargs___yargs_15.3.1.tgz";
url = "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz";
sha1 = "9505b472763963e54afe60148ad27a330818e98b";
};
}
{
@ -5674,11 +5826,11 @@
};
}
{
name = "zip_stream___zip_stream_2.1.2.tgz";
name = "zip_stream___zip_stream_3.0.1.tgz";
path = fetchurl {
name = "zip_stream___zip_stream_2.1.2.tgz";
url = "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.2.tgz";
sha1 = "841efd23214b602ff49c497cba1a85d8b5fbc39c";
name = "zip_stream___zip_stream_3.0.1.tgz";
url = "https://registry.yarnpkg.com/zip-stream/-/zip-stream-3.0.1.tgz";
sha1 = "cb8db9d324a76c09f9b76b31a12a48638b0b9708";
};
}
];

View file

@ -1,44 +1,44 @@
{ stdenv, fetchFromGitHub
, makeWrapper, makeDesktopItem, mkYarnPackage
, electron_7, riot-web
, electron_9, element-web
}:
# Notes for maintainers:
# * versions of `riot-web` and `riot-desktop` should be kept in sync.
# * the Yarn dependency expression must be updated with `./update-riot-desktop.sh <git release tag>`
# * versions of `element-web` and `element-desktop` should be kept in sync.
# * the Yarn dependency expression must be updated with `./update-element-desktop.sh <git release tag>`
let
executableName = "riot-desktop";
version = "1.6.7";
executableName = "element-desktop";
version = "1.7.1";
src = fetchFromGitHub {
owner = "vector-im";
repo = "riot-desktop";
rev = "v${version}";
sha256 = "0l1ih7rkb0nnc79607kkg0k69j9kwqrczhgkqzsmvqxjz7pk9kgn";
sha256 = "0sl45mxgp0sngxnba8ilsghzgv6cv36ggah1k2204ggzby13blg6";
};
electron = electron_7;
electron = electron_9;
in mkYarnPackage rec {
name = "riot-desktop-${version}";
name = "element-desktop-${version}";
inherit version src;
packageJSON = ./riot-desktop-package.json;
yarnNix = ./riot-desktop-yarndeps.nix;
packageJSON = ./element-desktop-package.json;
yarnNix = ./element-desktop-yarndeps.nix;
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
# resources
mkdir -p "$out/share/riot"
ln -s '${riot-web}' "$out/share/riot/webapp"
cp -r './deps/riot-desktop' "$out/share/riot/electron"
cp -r './deps/riot-desktop/res/img' "$out/share/riot"
rm "$out/share/riot/electron/node_modules"
cp -r './node_modules' "$out/share/riot/electron"
mkdir -p "$out/share/element"
ln -s '${element-web}' "$out/share/element/webapp"
cp -r './deps/element-desktop' "$out/share/element/electron"
cp -r './deps/element-desktop/res/img' "$out/share/element"
rm "$out/share/element/electron/node_modules"
cp -r './node_modules' "$out/share/element/electron"
# icons
for icon in $out/share/riot/electron/build/icons/*.png; do
for icon in $out/share/element/electron/build/icons/*.png; do
mkdir -p "$out/share/icons/hicolor/$(basename $icon .png)/apps"
ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png)/apps/riot.png"
ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png)/apps/element.png"
done
# desktop item
@ -47,36 +47,33 @@ in mkYarnPackage rec {
# executable wrapper
makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
--add-flags "$out/share/riot/electron"
--add-flags "$out/share/element/electron"
'';
# Do not attempt generating a tarball for riot-web again.
# Do not attempt generating a tarball for element-web again.
# note: `doDist = false;` does not work.
distPhase = ''
true
'';
# The desktop item properties should be kept in sync with data from upstream:
# * productName and description from
# https://github.com/vector-im/riot-web/blob/develop/electron_app/package.json
# * category and StartupWMClass from the build.linux section of
# https://github.com/vector-im/riot-web/blob/develop/package.json
# https://github.com/vector-im/riot-desktop/blob/develop/package.json
desktopItem = makeDesktopItem {
name = "riot";
name = "element-desktop";
exec = executableName;
icon = "riot";
desktopName = "Riot";
icon = "element";
desktopName = "Element (Riot)";
genericName = "Matrix Client";
comment = meta.description;
categories = "Network;InstantMessaging;Chat;";
extraEntries = ''
StartupWMClass=riot
StartupWMClass=element
'';
};
meta = with stdenv.lib; {
description = "A feature-rich client for Matrix.org";
homepage = "https://about.riot.im/";
homepage = "https://element.io/";
license = licenses.asl20;
maintainers = teams.matrix.members;
inherit (electron.meta) platforms;

View file

@ -1,22 +1,22 @@
{ lib, stdenv, fetchurl, writeText, jq, conf ? {} }:
# Note for maintainers:
# Versions of `riot-web` and `riot-desktop` should be kept in sync.
# Versions of `element-web` and `element-desktop` should be kept in sync.
let
noPhoningHome = {
disable_guests = true; # disable automatic guest account registration at matrix.org
piwik = false; # disable analytics
};
configOverrides = writeText "riot-config-overrides.json" (builtins.toJSON (noPhoningHome // conf));
configOverrides = writeText "element-config-overrides.json" (builtins.toJSON (noPhoningHome // conf));
in stdenv.mkDerivation rec {
pname = "riot-web";
version = "1.6.8";
pname = "element-web";
version = "1.7.1";
src = fetchurl {
url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
sha256 = "09jazixxaq9fcw3qld73hpknw7pcjg3b94hhgipl3zyn6dvqk3xv";
sha256 = "1axmf5h0k709kbpgh3ldsf6f8k9n2q623pk4j0nrshlxa9ighsay";
};
installPhase = ''
@ -31,7 +31,7 @@ in stdenv.mkDerivation rec {
meta = {
description = "A glossy Matrix collaboration client for the web";
homepage = "http://riot.im/";
homepage = "https://element.io/";
maintainers = stdenv.lib.teams.matrix.members;
license = stdenv.lib.licenses.asl20;
platforms = stdenv.lib.platforms.all;

View file

@ -0,0 +1,17 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=../../../../../ -i bash -p wget yarn2nix
set -euo pipefail
if [ "$#" -ne 1 ] || [[ "$1" == -* ]]; then
echo "Regenerates the Yarn dependency lock files for the element-desktop package."
echo "Usage: $0 <git release tag>"
exit 1
fi
RIOT_WEB_SRC="https://raw.githubusercontent.com/vector-im/riot-desktop/$1"
wget "$RIOT_WEB_SRC/package.json" -O element-desktop-package.json
wget "$RIOT_WEB_SRC/yarn.lock" -O element-desktop-yarndeps.lock
yarn2nix --lockfile=element-desktop-yarndeps.lock > element-desktop-yarndeps.nix
rm element-desktop-yarndeps.lock

View file

@ -1,17 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=../../../../../ -i bash -p wget yarn2nix
set -euo pipefail
if [ "$#" -ne 1 ] || [[ "$1" == -* ]]; then
echo "Regenerates the Yarn dependency lock files for the riot-desktop package."
echo "Usage: $0 <git release tag>"
exit 1
fi
RIOT_WEB_SRC="https://raw.githubusercontent.com/vector-im/riot-desktop/$1"
wget "$RIOT_WEB_SRC/package.json" -O riot-desktop-package.json
wget "$RIOT_WEB_SRC/yarn.lock" -O riot-desktop-yarndeps.lock
yarn2nix --lockfile=riot-desktop-yarndeps.lock > riot-desktop-yarndeps.nix
rm riot-desktop-yarndeps.lock

View file

@ -1,4 +1,4 @@
{ mkDerivation, stdenv, fetchurl, pkgconfig, qttools, scons
{ mkDerivation, stdenv, fetchurl, pkgconfig, qttools, sconsPackages
, GConf, avahi, boost, hunspell, libXScrnSaver, libedit, libidn, libnatpmp, libxml2
, lua, miniupnpc, openssl, qtbase, qtmultimedia, qtsvg, qtwebkit, qtx11extras, zlib
}:
@ -14,7 +14,7 @@ mkDerivation rec {
patches = [ ./qt-5.11.patch ./scons.patch ];
nativeBuildInputs = [ pkgconfig qttools scons.py2 ];
nativeBuildInputs = [ pkgconfig qttools sconsPackages.scons_3_1_2 ];
buildInputs = [
GConf avahi boost hunspell libXScrnSaver libedit libidn libnatpmp libxml2

View file

@ -30,11 +30,11 @@ with stdenv.lib;
stdenv.mkDerivation rec {
pname = "claws-mail";
version = "3.17.5";
version = "3.17.6";
src = fetchurl {
url = "http://www.claws-mail.org/download.php?file=releases/claws-mail-${version}.tar.xz";
sha256 = "1gjrmdmhc7zzilrlss9yl86ybv9sra8v0qi7mkwv7d9azidx5kns";
sha256 = "1s05qw0r0gqwvvkxvrrwbjkbi61dvilixiwrpgcq21qc9csc9r0m";
};
outputs = [ "out" "dev" ];

View file

@ -57,9 +57,6 @@ in stdenv.mkDerivation {
++ lib.optionals enableQt [ qt5.wrapQtAppsHook ]
;
# Doc has high risk of collisions
postInstall = "rm -r $out/share/doc";
buildInputs = [
openssl
curl

View file

@ -1,232 +1,25 @@
{ stdenv
, lib
, fetchurl
, requireFile
, makeWrapper
, libredirect
, busybox
, file
, makeDesktopItem
, tzdata
, cacert
, dconf
, glib
, gtk2
, atk
, gdk-pixbuf
, cairo
, pango
, gnome3
, xorg
, libpng12
, freetype
, fontconfig
, gtk_engines
, alsaLib
, zlib
, version ? "20.06.0"
}:
{ lib, callPackage }:
# For detailed information about the Citrix source-tarball, please refer to the OEM
# reference guide: https://developer-docs.citrix.com/projects/workspace-app-for-linux-oem-guide/en/latest/
let
versionInfo = let
supportedVersions = {
"19.12.0" = {
major = "19";
minor = "12";
patch = "0";
x64hash = "1si5mkxbgb8m99bkvgc3l80idjfdp0kby6pv47s07nn43dbr1j7a";
x86hash = "07rfp90ksnvr8zv7ix7f0z6a59n48s7bd4kqbzilfwxgs4ddqmcy";
x64suffix = "19";
x86suffix = "19";
homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-1912.html";
};
inherit (callPackage ./sources.nix { }) supportedVersions unsupportedVersions;
mkCitrix = callPackage ./generic.nix { };
"20.04.0" = {
major = "20";
minor = "04";
patch = "0";
x64hash = "E923592216F9541173846F932784E6C062CB09C9E8858219C7489607BF82A0FB";
x86hash = "A2E2E1882723DA6796E68916B3BB2B44DD575A83DEB03CA90A262F6C81B1A53F";
x64suffix = "21";
x86suffix = "21";
homepage = "https://www.citrix.com/de-de/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-2004.html";
};
toAttrName = x: "citrix_workspace_${builtins.replaceStrings [ "." ] [ "_" ] x}";
"20.06.0" = {
major = "20";
minor = "06";
patch = "0";
x64hash = "1kpfcfg95mpprlca6cccnjlsqbj3xvv77cn3fc5msd304nsi9x1v";
x86hash = "1di29hrimbw3myjnf2nn26a14klidhdwvjqla6yxhwd3s6lil194";
x64suffix = "15";
x86suffix = "15";
homepage = "https://www.citrix.com/de-de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html";
};
};
unsupported = lib.listToAttrs (
map (x: lib.nameValuePair (toAttrName x) (throw ''
Citrix Workspace at version ${x} is not supported anymore!
# The lifespans of Citrix products can be found here:
# https://www.citrix.com/support/product-lifecycle/milestones/receiver.html
deprecatedVersions = let
versions = [ "19.6.0" "19.8.0" "19.10.0" ];
in
lib.listToAttrs
(lib.forEach versions
(v: lib.nameValuePair v (throw ''
Unsupported citrix_workspace version: ${v}
Actively supported releases are listed here:
https://www.citrix.com/en-gb/support/product-lifecycle/milestones/receiver.html
'')) unsupportedVersions
);
Actively supported releases are listed here:
https://www.citrix.com/en-gb/support/product-lifecycle/milestones/receiver.html
'')));
in
deprecatedVersions // supportedVersions;
citrixWorkspaceForVersion = { major, minor, patch, x64hash, x86hash, x64suffix, x86suffix, homepage }:
stdenv.mkDerivation rec {
pname = "citrix-workspace";
version = "${major}.${minor}.${patch}";
inherit homepage;
prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86";
preferLocalBuild = true;
src = requireFile rec {
name = if stdenv.is64bit then "${prefixWithBitness}-${version}.${x64suffix}.tar.gz" else "${prefixWithBitness}-${version}.${x86suffix}.tar.gz";
sha256 = if stdenv.is64bit then x64hash else x86hash;
message = ''
In order to use Citrix Workspace, you need to comply with the Citrix EULA and download
the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from:
${homepage}
(if you do not find version ${version} there, try at
https://www.citrix.com/downloads/workspace-app/
Once you have downloaded the file, please use the following command and re-run the
installation:
nix-prefetch-url file://\$PWD/${name}
'';
};
dontBuild = true;
sourceRoot = ".";
buildInputs = [
makeWrapper
busybox
file
gtk2
gdk-pixbuf
];
libPath = stdenv.lib.makeLibraryPath [
glib
gtk2
atk
gdk-pixbuf
cairo
pango
dconf
xorg.libX11
xorg.libXext
xorg.libXrender
xorg.libXinerama
xorg.libXfixes
libpng12
zlib
gtk_engines
freetype
fontconfig
alsaLib
stdenv.cc.cc # Fixes: Can not load [..]/opt/citrix-icaclient/lib/ctxh264_fb.so:(null)
];
desktopItem = makeDesktopItem {
name = "wfica";
desktopName = "Citrix Workspace";
genericName = "Citrix Workspace";
exec = "wfica";
icon = "wfica";
comment = "Connect to remote Citrix server";
categories = "GTK;GNOME;X-GNOME-NetworkSettings;Network;";
mimeType = "application/x-ica";
};
installPhase = ''
runHook preInstall
export ICAInstDir="$out/opt/citrix-icaclient"
sed -i \
-e 's,^main_install_menu$,install_ICA_client,g' \
-e 's,^integrate_ICA_client(),alias integrate_ICA_client=true\nintegrate_ICA_client_old(),g' \
-e 's,^ANSWER=""$,ANSWER="$INSTALLER_YES",' \
-e 's,/bin/true,true,g' \
./${prefixWithBitness}/hinst
# Run the installer...
bash ./${prefixWithBitness}/hinst CDROM "`pwd`"
echo "Deleting broken links..."
for link in `find $ICAInstDir -type l `
do
[ -f "$link" ] || rm -v "$link"
done
echo "Expanding certificates..."
# As explained in https://wiki.archlinux.org/index.php/Citrix#Security_Certificates
pushd "$ICAInstDir/keystore/cacerts"
awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < ${cacert}/etc/ssl/certs/ca-bundle.crt
popd
echo "Patching executables..."
find $ICAInstDir -type f -exec file {} \; |
grep 'ELF.*executable' |
cut -f 1 -d : |
grep -vi '\(.dll\|.so\)$' | # added as a workaround to https://github.com/NixOS/nixpkgs/issues/41729
while read f
do
echo "Patching ELF intrepreter and rpath for $f"
chmod u+w "$f"
patchelf \
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
--set-rpath "$ICAInstDir:$libPath" "$f"
done
echo "Wrapping wfica..."
mkdir "$out/bin"
makeWrapper "$ICAInstDir/wfica" "$out/bin/wfica" \
--add-flags "-icaroot $ICAInstDir" \
--set ICAROOT "$ICAInstDir" \
--set GTK_PATH "${gtk2.out}/lib/gtk-2.0:${gnome3.gnome-themes-extra}/lib/gtk-2.0" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set LD_LIBRARY_PATH "$libPath" \
--set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone"
echo "We arbitrarily set the timezone to UTC. No known consequences at this point."
echo UTC > "$ICAInstDir/timezone"
echo "Installing desktop item..."
mkdir -p $out/share/applications
cp ${desktopItem}/share/applications/* $out/share/applications
# We introduce a dependency on the source file so that it need not be redownloaded everytime
echo $src >> "$out/share/workspace_dependencies.pin"
runHook postInstall
'';
meta = with stdenv.lib; {
license = stdenv.lib.licenses.unfree;
inherit homepage;
description = "Citrix Workspace";
platforms = platforms.linux;
maintainers = with maintainers; [ ma27 ];
};
};
in citrixWorkspaceForVersion (lib.getAttr version versionInfo)
supported = lib.mapAttrs' (
attr: versionInfo: lib.nameValuePair (toAttrName attr) (callPackage ./generic.nix versionInfo)
) supportedVersions;
in
supported // unsupported

View file

@ -0,0 +1,203 @@
{ stdenv, requireFile, makeWrapper, autoPatchelfHook, wrapGAppsHook, which, more
, file, atk, alsaLib, cairo, fontconfig, gdk-pixbuf, glib, gnome3, gtk2-x11, gtk3
, heimdal, krb5, libsoup, libvorbis, speex, openssl, zlib, xorg, pango, gtk2
, gnome2, nss, nspr, gtk_engines, freetype, dconf, libpng12, libxml2
, libjpeg, libredirect, tzdata, cacert, systemd, libcxxabi, libcxx, e2fsprogs, symlinkJoin
, homepage, version, prefix, hash
, extraCerts ? []
}:
let
inherit (stdenv) lib;
openssl' = symlinkJoin {
name = "openssl-backwards-compat";
nativeBuildInputs = [ makeWrapper ];
paths = [ openssl.out ];
postBuild = ''
ln -sf $out/lib/libcrypto.so $out/lib/libcrypto.so.1.0.0
ln -sf $out/lib/libssl.so $out/lib/libssl.so.1.0.0
'';
};
in
stdenv.mkDerivation rec {
pname = "citrix-workspace";
inherit version;
src = requireFile rec {
name = "${prefix}-${version}.tar.gz";
sha256 = hash;
message = ''
In order to use Citrix Workspace, you need to comply with the Citrix EULA and download
the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from:
${homepage}
(if you do not find version ${version} there, try at
https://www.citrix.com/downloads/workspace-app/
Once you have downloaded the file, please use the following command and re-run the
installation:
nix-prefetch-url file://\$PWD/${name}
'';
};
dontBuild = true;
dontConfigure = true;
sourceRoot = ".";
preferLocalBuild = true;
passthru.icaroot = "${placeholder "out"}/opt/citrix-icaclient";
nativeBuildInputs = [
autoPatchelfHook
file
makeWrapper
more
which
wrapGAppsHook
];
buildInputs = [
alsaLib
atk
cairo
dconf
fontconfig
freetype
gdk-pixbuf
gnome2.gtkglext
gnome3.webkitgtk
gtk2
gtk2-x11
gtk3
gtk_engines
heimdal
krb5
libcxx
libcxxabi
libjpeg
libpng12
libsoup
libvorbis
libxml2
nspr
nss
openssl'
pango
speex
systemd.lib
stdenv.cc.cc
xorg.libXaw
xorg.libXmu
xorg.libXScrnSaver
xorg.libXtst
zlib
] ++ lib.optional (lib.versionOlder version "20.04") e2fsprogs;
runtimeDependencies = [
glib
xorg.libX11
xorg.libXScrnSaver
xorg.libXext
xorg.libXfixes
xorg.libXinerama
xorg.libXmu
xorg.libXrender
xorg.libXtst
xorg.libxcb
];
installPhase = let
icaFlag = program:
if (builtins.match "selfservice(.*)" program) != null then "--icaroot"
else "-icaroot";
wrap = program: ''
wrapProgram $out/opt/citrix-icaclient/${program} \
--add-flags "${icaFlag program} $ICAInstDir" \
--set ICAROOT "$ICAInstDir" \
--prefix LD_LIBRARY_PATH : "$ICAInstDir:$ICAInstDir/lib" \
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone"
'';
wrapLink = program: ''
${wrap program}
ln -sf $out/opt/citrix-icaclient/${program} $out/bin/${baseNameOf program}
'';
copyCert = path: ''
cp -v ${path} $out/opt/citrix-icaclient/keystore/cacerts/${baseNameOf path}
'';
mkWrappers = lib.concatMapStringsSep "\n";
toWrap = [ "wfica" "selfservice" "util/configmgr" "util/conncenter" "util/ctx_rehash" ]
++ lib.optional (lib.versionOlder version "20.06") "selfservice_old";
in ''
runHook preInstall
mkdir -p $out/{bin,share/applications}
export ICAInstDir="$out/opt/citrix-icaclient"
export HOME=$(mktemp -d)
# Run upstream installer in the store-path.
sed -i -e 's,^ANSWER="",ANSWER="$INSTALLER_YES",g' -e 's,/bin/true,true,g' ./linuxx64/hinst
${stdenv.shell} linuxx64/hinst CDROM "$(pwd)"
${mkWrappers wrapLink toWrap}
${mkWrappers wrap [ "PrimaryAuthManager" "ServiceRecord" "AuthManagerDaemon" "util/ctxwebhelper" ]}
ln -sf $ICAInstDir/util/storebrowse $out/bin/storebrowse
# As explained in https://wiki.archlinux.org/index.php/Citrix#Security_Certificates
echo "Expanding certificates..."
pushd "$ICAInstDir/keystore/cacerts"
awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' \
< ${cacert}/etc/ssl/certs/ca-bundle.crt
popd
${mkWrappers copyCert extraCerts}
# See https://developer-docs.citrix.com/projects/workspace-app-for-linux-oem-guide/en/latest/reference-information/#library-files
# Those files are fallbacks to support older libwekit.so and libjpeg.so
rm $out/opt/citrix-icaclient/lib/ctxjpeg_fb_8.so
rm $out/opt/citrix-icaclient/lib/UIDialogLibWebKit.so
# We support only Gstreamer 1.0
rm $ICAInstDir/util/{gst_aud_{play,read},gst_*0.10,libgstflatstm0.10.so}
ln -sf $ICAInstDir/util/gst_play1.0 $ICAInstDir/util/gst_play
ln -sf $ICAInstDir/util/gst_read1.0 $ICAInstDir/util/gst_read
echo "We arbitrarily set the timezone to UTC. No known consequences at this point."
echo UTC > "$ICAInstDir/timezone"
echo "Copy .desktop files."
cp $out/opt/citrix-icaclient/desktop/* $out/share/applications/
# We introduce a dependency on the source file so that it need not be redownloaded everytime
echo $src >> "$out/share/workspace_dependencies.pin"
runHook postInstall
'';
# Make sure that `autoPatchelfHook` is executed before
# running `ctx_rehash`.
dontAutoPatchelf = true;
postFixup = ''
autoPatchelf -- "$out"
$out/opt/citrix-icaclient/util/ctx_rehash
'';
meta = with lib; {
license = licenses.unfree;
description = "Citrix Workspace";
platforms = platforms.linux;
maintainers = with maintainers; [ ma27 ];
inherit homepage;
};
}

View file

@ -0,0 +1,58 @@
{ stdenv, lib }:
let
mkVersionInfo = _: { major, minor, patch, x64hash, x86hash, x64suffix, x86suffix, homepage }:
{ inherit homepage;
version = "${major}.${minor}.${patch}.${if stdenv.is64bit then x64suffix else x86suffix}";
prefix = "linuxx${if stdenv.is64bit then "64" else "86"}";
hash = if stdenv.is64bit then x64hash else x86hash;
};
# Attribute-set with all actively supported versions of the Citrix workspace app
# for Linux.
#
# The latest versions can be found at https://www.citrix.com/de-de/downloads/workspace-app/linux/
supportedVersions = lib.mapAttrs mkVersionInfo {
"19.12.0" = {
major = "19";
minor = "12";
patch = "0";
x64hash = "1si5mkxbgb8m99bkvgc3l80idjfdp0kby6pv47s07nn43dbr1j7a";
x86hash = "07rfp90ksnvr8zv7ix7f0z6a59n48s7bd4kqbzilfwxgs4ddqmcy";
x64suffix = "19";
x86suffix = "19";
homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-1912.html";
};
"20.04.0" = {
major = "20";
minor = "04";
patch = "0";
x64hash = "E923592216F9541173846F932784E6C062CB09C9E8858219C7489607BF82A0FB";
x86hash = "A2E2E1882723DA6796E68916B3BB2B44DD575A83DEB03CA90A262F6C81B1A53F";
x64suffix = "21";
x86suffix = "21";
homepage = "https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html";
};
"20.06.0" = {
major = "20";
minor = "06";
patch = "0";
x64hash = "1kpfcfg95mpprlca6cccnjlsqbj3xvv77cn3fc5msd304nsi9x1v";
x86hash = "1di29hrimbw3myjnf2nn26a14klidhdwvjqla6yxhwd3s6lil194";
x64suffix = "15";
x86suffix = "15";
homepage = "https://www.citrix.com/de-de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html";
};
};
# Retain attribute-names for abandoned versions of Citrix workspace to
# provide a meaningful error-message if it's attempted to use such an old one.
#
# The lifespans of Citrix products can be found here:
# https://www.citrix.com/support/product-lifecycle/milestones/receiver.html
unsupportedVersions = [ "19.6.0" "19.8.0" "19.10.0" ];
in {
inherit supportedVersions unsupportedVersions;
}

View file

@ -1,19 +0,0 @@
{ citrix_workspace, extraCerts ? [], symlinkJoin }:
let
mkCertCopy = certPath:
"cp ${certPath} $out/opt/citrix-icaclient/keystore/cacerts/";
in
if builtins.length extraCerts == 0 then citrix_workspace else symlinkJoin {
name = "citrix-with-extra-certs-${citrix_workspace.version}";
paths = [ citrix_workspace ];
postBuild = ''
${builtins.concatStringsSep "\n" (map mkCertCopy extraCerts)}
sed -i -E "s,-icaroot (.+citrix-icaclient),-icaroot $out/opt/citrix-icaclient," $out/bin/wfica
'';
}

View file

@ -10,7 +10,7 @@ assert withQt -> qt5 != null;
with stdenv.lib;
let
version = "3.2.4";
version = "3.2.5";
variant = if withQt then "qt" else "cli";
pcap = libpcap.override { withBluez = stdenv.isLinux; };
@ -21,7 +21,7 @@ in stdenv.mkDerivation {
src = fetchurl {
url = "https://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.xz";
sha256 = "1amqgn94g6h6cfnsccm2zb4c73pfv1qmzi1i6h1hnbcyhhg4czfi";
sha256 = "0h69m9maq6w5gik4gamv4kfqrr37hmi4kpwh225y1k36awm0b2dx";
};
cmakeFlags = [

View file

@ -3,11 +3,11 @@
stdenv.mkDerivation rec {
pname = "osmo";
version = "0.4.2";
version = "0.4.4";
src = fetchurl {
url = "mirror://sourceforge/osmo-pim/${pname}-${version}.tar.gz";
sha256 = "1gjd4w9jckfpqr9n0bw0w25h3qhfyzw1xvilh3hqdadfinwyal2v";
sha256 = "19h3dnjgqbawnvgnycyp4n5b6mjsp5zghn3b69b6f3xa3fyi32qy";
};
nativeBuildInputs = [ pkgconfig gettext wrapGAppsHook ];

View file

@ -6,12 +6,12 @@
}:
stdenv.mkDerivation rec {
version = "1.3.50";
version = "1.3.51";
pname = "flrig";
src = fetchurl {
url = "mirror://sourceforge/fldigi/${pname}-${version}.tar.gz";
sha256 = "0fzrknzzi8kmzmrcfpc8rxr7v4a4ny6z6z5q5qwh95sp2kn2qzp9";
sha256 = "0aq4x0ai9q08ypfhzfj2inc4z3q39zq1l6h9as1kil9yn4zbay61";
};
buildInputs = [

View file

@ -1,12 +1,12 @@
{ stdenv, fetchurl, coreutils, fltk, libjpeg }:
stdenv.mkDerivation rec {
version = "5.0.2";
version = "5.0.4";
pname = "seaview";
src = fetchurl {
url = "ftp://pbil.univ-lyon1.fr/pub/mol_phylogeny/seaview/archive/seaview_${version}.tar.gz";
sha256 = "0bad0nd18a36g6ysx28j68rbnwqn33ra8inx2lv2igqqcs6i5kif";
sha256 = "09yp8467h49qnj7gg0mbcdha4ai3bn6vgs00gb76dd6h3pzfflz1";
};
buildInputs = [ fltk libjpeg ];

File diff suppressed because it is too large Load diff

View file

@ -1,30 +1,27 @@
{ stdenv, fetchFromGitHub, rustPlatform, openssl, pkgconfig, gmp, ncurses }:
{ stdenv, fetchFromGitHub, rustPlatform, openssl, pkg-config, ncurses }:
rustPlatform.buildRustPackage rec {
version = "0.4.5";
version = "0.5.0";
pname = "rink";
src = fetchFromGitHub {
owner = "tiffany352";
repo = "rink-rs";
rev = "v${version}";
sha256 = "0vl996y58a9b62d8sqrpfn2h8qkya7qbg5zqsmy7nxhph1vhbspj";
sha256 = "1z51n25hmgqkn4bm9yj18j8p4pk5i1x3f3z70vl1vx3v109jhff0";
};
# Upstreamed in https://github.com/tiffany352/rink-rs/pull/53
cargoPatches = [ ./cargo-lock.patch ];
cargoSha256 = "0p63py8q4iqj5rrsir9saj7dvkrafx63z493k7p5xb2mah7b21lb";
cargoSha256 = "0shlh0m9k0iqxpv9zmiw7a6v197swrvpz9x6qzhximzkdwni9gz9";
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ openssl gmp ncurses ];
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ncurses ];
# Some tests fail and/or attempt to use internet servers.
doCheck = false;
meta = with stdenv.lib; {
description = "Unit-aware calculator";
homepage = "https://rink.tiffnix.com";
homepage = "https://rinkcalc.app";
license = with licenses; [ mpl20 gpl3 ];
maintainers = with maintainers; [ sb0 filalex77 ];
};

View file

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "gh";
version = "0.10.1";
version = "0.11.0";
src = fetchFromGitHub {
owner = "cli";
repo = "cli";
rev = "v${version}";
sha256 = "0q4zpm10hcci4j0g1gx08q2qwn71ab9f7yaf4k78sfn5p89y7rm2";
sha256 = "13nq7rvxwl9cld9gng7rm534yqrr2ii0bqyzqwlkpzh9m61m3ra2";
};
vendorSha256 = "0igbqnylryiq36lbb1gha8najijzxmn10asc0xayxygbxc16s1vi";
vendorSha256 = "1xvrxdxhyj5nz5plypc5mniw5dl17w1wxcrs77w24hisn90jphgd";
nativeBuildInputs = [ installShellFiles ];

View file

@ -4,11 +4,11 @@
buildPythonApplication rec {
pname = "git-machete";
version = "2.15.2";
version = "2.15.3";
src = fetchPypi {
inherit pname version;
sha256 = "0qv08a6xsdmcm8l69m4103vn4crb0ilzx94334xjbdl0sykm55q0";
sha256 = "0kpfi1w1jnn7v7mny71jil3sc9mm08lz47l9v3hzgs5z3ham98jb";
};
nativeBuildInputs = [ installShellFiles pbr ];

View file

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec {
pname = "gitui";
version = "0.5.0";
version = "0.8.1";
src = fetchFromGitHub {
owner = "extrawurst";
repo = pname;
rev = "v${version}";
sha256 = "0z3k83nfnl765ably4naybjf614qfizzpqb40ppwljijj9nqlng1";
sha256 = "0nch2p4isdv746p9pczqwram0c5f0f9l2r3fy5r12x9br0kak136";
};
cargoSha256 = "11y4q56vl5dp2vdc7dc5q44l2m0mn590hfg6i134m11r8988am6y";
cargoSha256 = "1d54afg45lw8zyanr49fklzhczadyja2fjmid22d81s2ari84slz";
buildInputs = stdenv.lib.optionals stdenv.isDarwin [ libiconv Security ];

View file

@ -13,11 +13,11 @@ let
in
stdenv.mkDerivation rec {
pname = "gitkraken";
version = "7.0.1";
version = "7.1.0";
src = fetchzip {
url = "https://release.axocdn.com/linux/GitKraken-v${version}.tar.gz";
sha256 = "0vj2ggbm617fypl69ksbrbl048xp4v6wc46y4sp7hrk6lg0gw1b0";
sha256 = "1g7i7sq705x5jkp76z4car9na3qvklpi3a766yiv4h79kc5via48";
};
dontBuild = true;

View file

@ -13,13 +13,13 @@ with stdenv.lib;
stdenv.mkDerivation rec {
pname = "mkvtoolnix";
version = "47.0.0";
version = "48.0.0";
src = fetchFromGitLab {
owner = "mbunkus";
repo = "mkvtoolnix";
rev = "release-${version}";
sha256 = "1s8y9khyfjg06mr7rmm26pk0b3nbkcrs56r29a9l57wbkqyl7qp9";
sha256 = "0lbl3w2m12blymda3m00afl9racgahvl0z4b2clwbawhvypc5vfc";
};
nativeBuildInputs = [

View file

@ -1,33 +0,0 @@
From 247baa7e9210bbe5462b6155014c3dcd4a60e56a Mon Sep 17 00:00:00 2001
From: Peter Simons <simons@cryp.to>
Date: Tue, 24 Sep 2019 10:27:17 +0200
Subject: [PATCH] encodedock.cpp: connect to VAAPI via DRM, not X11
---
src/docks/encodedock.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/docks/encodedock.cpp b/src/docks/encodedock.cpp
index f2d64fc8..63d20787 100644
--- a/src/docks/encodedock.cpp
+++ b/src/docks/encodedock.cpp
@@ -766,7 +766,6 @@ Mlt::Properties* EncodeDock::collectProperties(int realtime)
setIfNotSet(p, "pix_fmt", "nv12");
} else if (vcodec.endsWith("_vaapi")) {
setIfNotSet(p, "vprofile", "main");
- setIfNotSet(p, "connection_type", "x11");
}
}
setIfNotSet(p, "width", ui->widthSpinner->value());
@@ -1890,7 +1889,7 @@ void EncodeDock::on_hwencodeCheckBox_clicked(bool checked)
QStringList args;
args << "-hide_banner" << "-f" << "lavfi" << "-i" << "color=s=640x360" << "-frames" << "1" << "-an";
if (codec.endsWith("_vaapi"))
- args << "-init_hw_device" << "vaapi=vaapi0:,connection_type=x11" << "-filter_hw_device" << "vaapi0" << "-vf" << "format=nv12,hwupload";
+ args << "-init_hw_device" << "vaapi=vaapi0" << "-filter_hw_device" << "vaapi0" << "-vf" << "format=nv12,hwupload";
else if (codec == "hevc_qsv")
args << "-load_plugin" << "hevc_hw";
args << "-c:v" << codec << "-f" << "rawvideo" << "pipe:";
--
2.24.1

View file

@ -3,22 +3,20 @@
, qtquickcontrols, qtgraphicaleffects, libmlt, qmake, qttools
}:
assert stdenv.lib.versionAtLeast libmlt.version "6.18.0";
assert stdenv.lib.versionAtLeast mlt.version "6.18.0";
assert stdenv.lib.versionAtLeast libmlt.version "6.20.0";
assert stdenv.lib.versionAtLeast mlt.version "6.20.0";
mkDerivation rec {
pname = "shotcut";
version = "20.04.12";
version = "20.07.11";
src = fetchFromGitHub {
owner = "mltframework";
repo = "shotcut";
rev = "v${version}";
sha256 = "05yyv9192f722j8fhfjrphxadgp3crvbq4pi23ln560zh9s1m8r4";
sha256 = "0ajg0bpdckhvmmsliy1xky9p4mdypnaw3z3cvfsdrm0zcihbgazv";
};
patches = [ ./0001-encodedock.cpp-connect-to-VAAPI-via-DRM-not-X11.patch ];
enableParallelBuilding = true;
nativeBuildInputs = [ pkgconfig qmake ];
buildInputs = [

View file

@ -9,13 +9,13 @@
stdenv.mkDerivation rec {
pname = "conmon";
version = "2.0.18";
version = "2.0.19";
src = fetchFromGitHub {
owner = "containers";
repo = pname;
rev = "v${version}";
sha256 = "0f32g048jamfhrds68vzirx8iqizr45wf2d4bfvdsk176amrj4k0";
sha256 = "005sz8aimbfm12d99q79yvsqczxbvbbgc725pavcbly3k1qva207";
};
nativeBuildInputs = [ pkg-config ];

View file

@ -34,13 +34,13 @@ let
in
stdenv.mkDerivation rec {
pname = "crun";
version = "0.14";
version = "0.14.1";
src = fetchFromGitHub {
owner = "containers";
repo = pname;
rev = version;
sha256 = "14hmdarmhkfp5qgd8ifn7dn895j54ibaficci82q40haqh252l4n";
sha256 = "0r77ksdrpxskf79m898a7ai8wxw9fmmsf2lg8fw3ychnk74l8jvh";
fetchSubmodules = true;
};

View file

@ -20,7 +20,7 @@ buildGoModule rec {
src = fetchFromGitHub {
owner = "containers";
repo = "libpod";
repo = "podman";
rev = "v${version}";
sha256 = "12iqj71xjszbjbbz5f2dk5chcvfrrq0n737ki7xxkjcw38k2cnqz";
};

View file

@ -1,45 +1,45 @@
{ stdenv, fetchFromGitHub, fetchpatch
, meson, ninja, pkgconfig, makeWrapper
, wlroots, wayland, wayland-protocols, pixman, libxkbcommon
{ stdenv, fetchFromGitHub
, meson, ninja, pkg-config, wayland, scdoc, makeWrapper
, wlroots, wayland-protocols, pixman, libxkbcommon
, systemd, libGL, libX11
, xwayland ? null
, nixosTests
}:
stdenv.mkDerivation rec {
pname = "cage-unstable";
version = "2020-01-18";
# The last stable release (0.1.1) would require at least the following 3 patches:
# - https://github.com/Hjdskes/cage/commit/33bb3c818c5971777b6f09d8821e7f078d38d262.patch
# - https://github.com/Hjdskes/cage/commit/51e6c760da51e2b885737d61a61cdc965bb9269d.patch
# - https://github.com/Hjdskes/cage/commit/84216ca2a417b237ad61c11e2f3ebbcb91681ece.patch
# Which need to be adapted due to other changes. At this point it seems
# better to use the current master version until the next stable release.
pname = "cage";
version = "0.1.2.1";
src = fetchFromGitHub {
owner = "Hjdskes";
repo = "cage";
rev = "cc1f975c442ebd691b70196d76aa120ead717810";
sha256 = "1gkqx26pvlw00b3fgx6sh87yyjfzyj51jwxvbf9k117npkrf4b2g";
rev = "v${version}";
sha256 = "1i4rm3dpmk7gkl6hfs6a7vwz76ba7yqcdp63nlrdbnq81m9cy2am";
};
nativeBuildInputs = [ meson ninja pkgconfig makeWrapper wayland ];
postPatch = ''
substituteInPlace meson.build --replace \
"0.1.2" "${version}"
'';
nativeBuildInputs = [ meson ninja pkg-config wayland scdoc makeWrapper ];
buildInputs = [
wlroots wayland wayland-protocols pixman libxkbcommon
# TODO: Not specified but required:
systemd libGL libX11
];
enableParallelBuilding = true;
mesonFlags = [ "-Dxwayland=${stdenv.lib.boolToString (xwayland != null)}" ];
postFixup = stdenv.lib.optionalString (xwayland != null) ''
wrapProgram $out/bin/cage --prefix PATH : "${xwayland}/bin"
'';
# Tests Cage using the NixOS module by launching xterm:
passthru.tests.basic-nixos-module-functionality = nixosTests.cage;
meta = with stdenv.lib; {
description = "A Wayland kiosk";
description = "A Wayland kiosk that runs a single, maximized application";
homepage = "https://www.hjdskes.nl/projects/cage/";
license = licenses.mit;
platforms = platforms.linux;

View file

@ -9,13 +9,13 @@
with stdenv.lib;
stdenv.mkDerivation rec {
pname = "icewm";
version = "1.6.6";
version = "1.7.0";
src = fetchFromGitHub {
owner = "bbidulock";
repo = "icewm";
rev = version;
sha256 = "05jg2gs5cdxn2kfm2y6yrqxpza5s1zsgb52168psmzhb4nakpv42";
sha256 = "0x6axhwfwxxgnljf3201hvrwa90yacf3ln24lsywrk1bxq9am74b";
};
nativeBuildInputs = [ cmake pkgconfig perl asciidoc ];

View file

@ -18,23 +18,11 @@
grimshot = stdenv.mkDerivation rec {
pname = "grimshot";
version = "2020-05-08";
rev = "b1d08db5f5112ab562f89564825e3e791b0682c4";
version = sway-unwrapped.version;
# master has new fixes and features, and a man page
# after sway-1.5 these may be switched to sway-unwrapped.src
bsrc = fetchurl {
url = "https://raw.githubusercontent.com/swaywm/sway/${rev}/contrib/grimshot";
sha256 = "1awzmzkib8a7q5s78xyh8za03lplqfpbasqp3lidqqmjqs882jq9";
};
msrc = fetchurl {
url = "https://raw.githubusercontent.com/swaywm/sway/${rev}/contrib/grimshot.1";
sha256 = "191xxjfhf61gkxl3b0f694h0nrwd7vfnyp5afk8snhhr6q7ia4jz";
};
src = sway-unwrapped.src;
dontBuild = true;
dontUnpack = true;
dontConfigure = true;
outputs = [ "out" "man" ];
@ -42,9 +30,9 @@ grimshot = stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper installShellFiles ];
installPhase = ''
installManPage ${msrc}
installManPage contrib/grimshot.1
install -Dm 0755 ${bsrc} $out/bin/grimshot
install -Dm 0755 contrib/grimshot $out/bin/grimshot
wrapProgram $out/bin/grimshot --set PATH \
"${stdenv.lib.makeBinPath [
sway-unwrapped

View file

@ -1,20 +1,19 @@
{ stdenv, fetchFromGitHub, makeWrapper
, meson, ninja
, pkgconfig, scdoc
, wayland, libxkbcommon, pcre, json_c, dbus, libevdev
, meson, ninja, pkg-config, wayland, scdoc
, libxkbcommon, pcre, json_c, dbus, libevdev
, pango, cairo, libinput, libcap, pam, gdk-pixbuf, librsvg
, wlroots, wayland-protocols
}:
stdenv.mkDerivation rec {
pname = "sway-unwrapped";
version = "1.4";
version = "1.5";
src = fetchFromGitHub {
owner = "swaywm";
repo = "sway";
rev = version;
sha256 = "11qf89y3q92g696a6f4d23qb44gqixg6qxq740vwv2jw59ms34ja";
sha256 = "0r3b7h778l9i20z3him9i2qsaynpn9y78hzfgv3cqi8fyry2c4f9";
};
patches = [
@ -22,8 +21,12 @@ stdenv.mkDerivation rec {
./load-configuration-from-etc.patch
];
postPatch = ''
substituteInPlace meson.build --replace "v1.5" "1.5"
'';
nativeBuildInputs = [
pkgconfig meson ninja scdoc
meson ninja pkg-config wayland scdoc
];
buildInputs = [
@ -32,16 +35,23 @@ stdenv.mkDerivation rec {
wlroots wayland-protocols
];
enableParallelBuilding = true;
mesonFlags = [
"-Ddefault-wallpaper=false" "-Dxwayland=enabled" "-Dgdk-pixbuf=enabled"
"-Dtray=enabled" "-Dman-pages=enabled"
"-Ddefault-wallpaper=false"
];
meta = with stdenv.lib; {
description = "i3-compatible tiling Wayland compositor";
description = "An i3-compatible tiling Wayland compositor";
longDescription = ''
Sway is a tiling Wayland compositor and a drop-in replacement for the i3
window manager for X11. It works with your existing i3 configuration and
supports most of i3's features, plus a few extras.
Sway allows you to arrange your application windows logically, rather
than spatially. Windows are arranged into a grid by default which
maximizes the efficiency of your screen and can be quickly manipulated
using only the keyboard.
'';
homepage = "https://swaywm.org";
changelog = "https://github.com/swaywm/sway/releases/tag/${version}";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ primeos synthetica ma27 ];

View file

@ -30,6 +30,13 @@ args@{
, removeRulesCC ? true
, removeLocalConfigCc ? true
, removeLocal ? true
# Use build --nobuild instead of fetch. This allows fetching the dependencies
# required for the build as configured, rather than fetching all the dependencies
# which may not work in some situations (e.g. Java code which ends up relying on
# Debian-specific /usr/share/java paths, but doesn't in the configured build).
, fetchConfigured ? false
, ...
}:
@ -79,7 +86,7 @@ in stdenv.mkDerivation (fBuildAttrs // {
bazel \
--output_base="$bazelOut" \
--output_user_root="$bazelUserRoot" \
fetch \
${if fetchConfigured then "build --nobuild" else "fetch"} \
--loading_phase_threads=1 \
$bazelFlags \
$bazelFetchFlags \
@ -112,7 +119,8 @@ in stdenv.mkDerivation (fBuildAttrs // {
# platforms -> NIX_BUILD_TOP/tmp/install/35282f5123611afa742331368e9ae529/_embedded_binaries/platforms
find $bazelOut/external -maxdepth 1 -type l | while read symlink; do
name="$(basename "$symlink")"
rm "$symlink" "$bazelOut/external/@$name.marker"
rm "$symlink"
test -f "$bazelOut/external/@$name.marker" && rm "$bazelOut/external/@$name.marker"
done
# Patching symlinks to remove build directory reference

View file

@ -442,6 +442,7 @@ rec {
in
runCommand "${name}.tar.gz" {
inherit (stream) imageName;
passthru = { inherit (stream) imageTag; };
buildInputs = [ pigz ];
} "${stream} | pigz -nT > $out";
@ -517,6 +518,11 @@ rec {
layerClosure = writeReferencesToFile layer;
passthru.buildArgs = args;
passthru.layer = layer;
passthru.imageTag =
if tag != null
then lib.toLower tag
else
lib.head (lib.strings.splitString "-" (baseNameOf result.outPath));
# Docker can't be made to run darwin binaries
meta.badPlatforms = lib.platforms.darwin;
} ''
@ -737,6 +743,11 @@ rec {
conf = runCommand "${name}-conf.json" {
inherit maxLayers created;
imageName = lib.toLower name;
passthru.imageTag =
if tag != null
then tag
else
lib.head (lib.strings.splitString "-" (baseNameOf conf.outPath));
paths = referencesByPopularity overallClosure;
buildInputs = [ jq ];
} ''
@ -792,6 +803,7 @@ rec {
'';
result = runCommand "stream-${name}" {
inherit (conf) imageName;
passthru = { inherit (conf) imageTag; };
buildInputs = [ makeWrapper ];
} ''
makeWrapper ${streamScript} $out --add-flags ${conf}

View file

@ -364,4 +364,22 @@ rec {
created = "now";
};
# buildImage without explicit tag
bashNoTag = pkgs.dockerTools.buildImage {
name = "bash-no-tag";
contents = pkgs.bashInteractive;
};
# buildLayeredImage without explicit tag
bashNoTagLayered = pkgs.dockerTools.buildLayeredImage {
name = "bash-no-tag-layered";
contents = pkgs.bashInteractive;
};
# buildImage without explicit tag
bashNoTagStreamLayered = pkgs.dockerTools.streamLayeredImage {
name = "bash-no-tag-stream-layered";
contents = pkgs.bashInteractive;
};
}

View file

@ -74,6 +74,7 @@ let
ccForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc";
cxxForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++";
releaseDir = "target/${rustTarget}/${buildType}";
tmpDir = "${releaseDir}-tmp";
# Specify the stdenv's `diff` by abspath to ensure that the user's build
# inputs do not cause us to find the wrong `diff`.
@ -193,13 +194,15 @@ stdenv.mkDerivation (args // {
# This needs to be done after postBuild: packages like `cargo` do a pushd/popd in
# the pre/postBuild-hooks that need to be taken into account before gathering
# all binaries to install.
bins=$(find $releaseDir \
mkdir -p $tmpDir
cp -r $releaseDir/* $tmpDir/
bins=$(find $tmpDir \
-maxdepth 1 \
-type f \
-executable ! \( -regex ".*\.\(so.[0-9.]+\|so\|a\|dylib\)" \))
'';
installCheckPhase = args.checkPhase or (let
checkPhase = args.checkPhase or (let
argstr = "${stdenv.lib.optionalString (checkType == "release") "--release"} --target ${rustTarget} --frozen";
in ''
${stdenv.lib.optionalString (buildAndTestSubdir != null) "pushd ${buildAndTestSubdir}"}
@ -214,13 +217,13 @@ stdenv.mkDerivation (args // {
strictDeps = true;
inherit releaseDir;
inherit releaseDir tmpDir;
installPhase = args.installPhase or ''
runHook preInstall
# rename the output dir to a architecture independent one
mapfile -t targets < <(find "$NIX_BUILD_TOP" -type d | grep '${releaseDir}$')
mapfile -t targets < <(find "$NIX_BUILD_TOP" -type d | grep '${tmpDir}$')
for target in "''${targets[@]}"; do
rm -rf "$target/../../${buildType}"
ln -srf "$target" "$target/../../"
@ -228,7 +231,7 @@ stdenv.mkDerivation (args // {
mkdir -p $out/bin $out/lib
xargs -r cp -t $out/bin <<< $bins
find $releaseDir \
find $tmpDir \
-maxdepth 1 \
-regex ".*\.\(so.[0-9.]+\|so\|a\|dylib\)" \
-print0 | xargs -r -0 cp -t $out/lib

View file

@ -4,13 +4,13 @@
stdenv.mkDerivation rec {
pname = "gnome-desktop";
version = "3.36.3.1";
version = "3.36.4";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/gnome-desktop/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0zkbx5inprjpf4abqwn0bxc2d1rwbhv450cjh1wgz82ylagi3vab";
sha256 = "1ilv49qkppbbag5728iswg1jhhqx9hbj7j8k8wccnbyaq54bsyq0";
};
nativeBuildInputs = [

View file

@ -1,60 +1,81 @@
{ fetchurl, fetchpatch, substituteAll, stdenv, meson, ninja, pkgconfig, gnome3, json-glib, gettext, libsecret
, python3, libsoup, polkit, clutter, networkmanager, docbook_xsl , docbook_xsl_ns, at-spi2-core
, libstartup_notification, telepathy-glib, telepathy-logger, libXtst, unzip, glibcLocales, shared-mime-info
, libgweather, libcanberra-gtk3, librsvg, geoclue2, perl, docbook_xml_dtd_42, desktop-file-utils
, libpulseaudio, libical, gobject-introspection, wrapGAppsHook, libxslt, gcr
, accountsservice, gdk-pixbuf, gdm, upower, ibus, libnma, libgnomekbd, gnome-desktop
, gsettings-desktop-schemas, gnome-keyring, glib, gjs, mutter, evolution-data-server, gtk3
, sassc, systemd, gst_all_1, adwaita-icon-theme, gnome-bluetooth, gnome-clocks, gnome-settings-daemon
, gnome-autoar, asciidoc-full
{ fetchurl
, fetchpatch
, substituteAll
, stdenv
, meson
, ninja
, pkg-config
, gnome3
, json-glib
, gettext
, libsecret
, python3
, polkit
, networkmanager
, gtk-doc
, docbook-xsl-nons
, at-spi2-core
, libstartup_notification
, telepathy-glib
, telepathy-logger
, unzip
, shared-mime-info
, libgweather
, librsvg
, geoclue2
, perl
, docbook_xml_dtd_412
, docbook_xml_dtd_42
, docbook_xml_dtd_43
, desktop-file-utils
, libpulseaudio
, libical
, gobject-introspection
, wrapGAppsHook
, libxslt
, gcr
, accountsservice
, gdk-pixbuf
, gdm
, upower
, ibus
, libnma
, libgnomekbd
, gnome-desktop
, gsettings-desktop-schemas
, gnome-keyring
, glib
, gjs
, mutter
, evolution-data-server
, gtk3
, sassc
, systemd
, gst_all_1
, adwaita-icon-theme
, gnome-bluetooth
, gnome-clocks
, gnome-settings-daemon
, gnome-autoar
, asciidoc-full
, bash-completion
}:
# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup
let
pythonEnv = python3.withPackages ( ps: with ps; [ pygobject3 ] );
in stdenv.mkDerivation rec {
pythonEnv = python3.withPackages (ps: with ps; [ pygobject3 ]);
in
stdenv.mkDerivation rec {
pname = "gnome-shell";
version = "3.36.4";
outputs = [ "out" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/gnome-shell/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1nyibrr98ijn65z9ki0k7xzcwcliwy2jqssz0l0jalpbkhnr751d";
};
LANG = "en_US.UTF-8";
nativeBuildInputs = [
meson ninja pkgconfig gettext docbook_xsl docbook_xsl_ns docbook_xml_dtd_42 perl wrapGAppsHook glibcLocales
sassc desktop-file-utils libxslt.bin python3 asciidoc-full
];
buildInputs = [
systemd
gsettings-desktop-schemas gnome-keyring glib gcr json-glib accountsservice
libsecret libsoup polkit gdk-pixbuf librsvg
networkmanager libstartup_notification telepathy-glib
libXtst gjs mutter libpulseaudio evolution-data-server
libical gtk3 gdm libcanberra-gtk3 geoclue2
adwaita-icon-theme gnome-bluetooth
gnome-clocks # schemas needed
at-spi2-core upower ibus gnome-desktop telepathy-logger gnome-settings-daemon
gobject-introspection
gnome-autoar
# recording
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
# not declared at build time, but typelib is needed at runtime
libgweather libnma
# for gnome-extension tool
bash-completion
];
patches = [
# Hardcode paths to various dependencies so that they can be found at runtime.
(substituteAll {
@ -86,6 +107,77 @@ in stdenv.mkDerivation rec {
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
docbook-xsl-nons
docbook_xml_dtd_412
docbook_xml_dtd_42
docbook_xml_dtd_43
gtk-doc
perl
wrapGAppsHook
sassc
desktop-file-utils
libxslt.bin
python3
asciidoc-full
];
buildInputs = [
systemd
gsettings-desktop-schemas
gnome-keyring
glib
gcr
accountsservice
libsecret
polkit
gdk-pixbuf
librsvg
networkmanager
libstartup_notification
telepathy-glib
gjs
mutter
libpulseaudio
evolution-data-server
libical
gtk3
gdm
geoclue2
adwaita-icon-theme
gnome-bluetooth
gnome-clocks # schemas needed
at-spi2-core
upower
ibus
gnome-desktop
telepathy-logger
gnome-settings-daemon
gobject-introspection
# recording
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
# not declared at build time, but typelib is needed at runtime
libgweather
libnma
# for gnome-extension tool
bash-completion
gnome-autoar
json-glib
];
mesonFlags = [
"-Dgtk_doc=true"
];
postPatch = ''
patchShebangs src/data-to-c.pl
chmod +x meson/postinstall.py

View file

@ -7,14 +7,12 @@
, gnome3
, gettext
, gobject-introspection
, upower
, cairo
, pango
, cogl
, json-glib
, libstartup_notification
, zenity
, libcanberra-gtk3
, libcanberra
, ninja
, xkeyboard_config
, libxkbfile
@ -25,7 +23,6 @@
, glib
, gtk3
, gnome-desktop
, geocode-glib
, pipewire
, libgudev
, libwacom
@ -54,6 +51,17 @@ let self = stdenv.mkDerivation rec {
sha256 = "0p3jglw6f2h67kwk89qz1rz23y25lip8m2mp2xshf2vrg4a930as";
};
patches = [
# Drop inheritable cap_sys_nice, to prevent the ambient set from leaking
# from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381
./drop-inheritable.patch
(substituteAll {
src = ./fix-paths.patch;
inherit zenity;
})
];
mesonFlags = [
"-Degl_device=true"
"-Dinstalled_tests=false" # TODO: enable these
@ -86,16 +94,14 @@ let self = stdenv.mkDerivation rec {
buildInputs = [
cairo
cogl
egl-wayland
geocode-glib
glib
gnome-desktop
gnome-settings-daemon
gobject-introspection
gsettings-desktop-schemas
gtk3
libcanberra-gtk3
libcanberra
libgudev
libinput
libstartup_notification
@ -105,25 +111,11 @@ let self = stdenv.mkDerivation rec {
pango
pipewire
sysprof
upower
xkeyboard_config
xwayland
zenity
zenity
wayland-protocols
];
patches = [
# Drop inheritable cap_sys_nice, to prevent the ambient set from leaking
# from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381
./drop-inheritable.patch
(substituteAll {
src = ./fix-paths.patch;
inherit zenity;
})
];
postPatch = ''
patchShebangs src/backends/native/gen-default-modes.py
'';

View file

@ -18,10 +18,12 @@ stdenv.mkDerivation rec {
uuid = "appindicatorsupport@rgcjonas.gmail.com";
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions/${uuid}
cp *.js $out/share/gnome-shell/extensions/${uuid}
cp -r interfaces-xml $out/share/gnome-shell/extensions/${uuid}
cp metadata.json $out/share/gnome-shell/extensions/${uuid}
runHook postInstall
'';
meta = with stdenv.lib; {

View file

@ -14,8 +14,10 @@ stdenv.mkDerivation rec {
uuid = "battery_status@milliburn.github.com";
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions
cp -r ${uuid} $out/share/gnome-shell/extensions/
runHook postInstall
'';
meta = with stdenv.lib; {

View file

@ -18,13 +18,17 @@ stdenv.mkDerivation rec {
];
buildPhase = ''
runHook preBuild
${bash}/bin/bash ./update-locale.sh
glib-compile-schemas --strict --targetdir=caffeine@patapon.info/schemas/ caffeine@patapon.info/schemas
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions
cp -r ${uuid} $out/share/gnome-shell/extensions
runHook postInstall
'';
meta = with stdenv.lib; {

View file

@ -14,8 +14,10 @@ stdenv.mkDerivation rec {
uuid = "clipboard-indicator@tudmotu.com";
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions/${uuid}
cp -r * $out/share/gnome-shell/extensions/${uuid}
runHook postInstall
'';
meta = with stdenv.lib; {

View file

@ -21,8 +21,10 @@ stdenv.mkDerivation rec {
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions
cp -r ${uuid} $out/share/gnome-shell/extensions/
runHook postInstall
'';
meta = with stdenv.lib; {

View file

@ -0,0 +1,38 @@
{ stdenv, fetchFromGitHub, glib, gettext }:
stdenv.mkDerivation rec {
pname = "gnome-shell-emoji-selector";
version = "19";
src = fetchFromGitHub {
owner = "maoschanz";
repo = "emoji-selector-for-gnome";
rev = version;
sha256 = "0x60pg5nl5d73av494dg29hyfml7fbf2d03wm053vx1q8a3pxbyb";
};
uuid = "emoji-selector@maestroschan.fr";
nativeBuildInputs = [ glib ];
buildPhase = ''
runHook preBuild
glib-compile-schemas ./${uuid}/schemas
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions
cp -r ${uuid} $out/share/gnome-shell/extensions
runHook postInstall
'';
meta = with stdenv.lib; {
description =
"GNOME Shell extension providing a searchable popup menu displaying most emojis";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ rawkode ];
homepage = "https://github.com/maoschanz/emoji-selector-for-gnome";
};
}

View file

@ -14,8 +14,10 @@ stdenv.mkDerivation rec {
uuid = "icon-hider@kalnitsky.org";
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions
cp -r ${uuid} $out/share/gnome-shell/extensions
runHook postInstall
'';
meta = with stdenv.lib; {

View file

@ -16,12 +16,16 @@ stdenv.mkDerivation rec {
];
buildPhase = ''
runHook preBuild
make schemas
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions
cp -r impatience $out/share/gnome-shell/extensions/${uuid}
runHook postInstall
'';
uuid = "impatience@gfxmonk.net";

View file

@ -17,8 +17,10 @@ stdenv.mkDerivation rec {
uuid = "mprisindicatorbutton@JasonLG1979.github.io";
installPhase = ''
runHook preInstall
mkdir -p $out/share/gnome-shell/extensions
cp -r ${uuid} $out/share/gnome-shell/extensions
runHook postInstall
'';
meta = with stdenv.lib; {

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