Merge branch 'master' into add-bomber
This commit is contained in:
commit
268988a840
2
.github/stale.yml
vendored
2
.github/stale.yml
vendored
@ -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 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.
|
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.
|
||||||
|
|
||||||
|
@ -4,34 +4,36 @@
|
|||||||
<title>Citrix Workspace</title>
|
<title>Citrix Workspace</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<note>
|
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>
|
|
||||||
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.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<section xml:id="sec-citrix-base">
|
<section xml:id="sec-citrix-base">
|
||||||
<title>Basic usage</title>
|
<title>Basic usage</title>
|
||||||
|
|
||||||
<para>
|
<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>
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
<warning>
|
<section xml:id="sec-citrix-selfservice">
|
||||||
<title>Caution with <command>nix-shell</command> installs</title>
|
<title>Citrix Selfservice</title>
|
||||||
<para>
|
<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.
|
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>
|
||||||
</warning>
|
<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>
|
||||||
|
|
||||||
<section xml:id="sec-citrix-custom-certs">
|
<section xml:id="sec-citrix-custom-certs">
|
||||||
<title>Custom certificates</title>
|
<title>Custom certificates</title>
|
||||||
|
|
||||||
<para>
|
<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>
|
<programlisting>
|
||||||
<![CDATA[with import <nixpkgs> { config.allowUnfree = true; };
|
<![CDATA[with import <nixpkgs> { config.allowUnfree = true; };
|
||||||
let extraCerts = [ ./custom-cert-1.pem ./custom-cert-2.pem /* ... */ ]; in
|
let extraCerts = [ ./custom-cert-1.pem ./custom-cert-2.pem /* ... */ ]; in
|
||||||
|
@ -3,159 +3,193 @@
|
|||||||
xml:id="sec-language-perl">
|
xml:id="sec-language-perl">
|
||||||
<title>Perl</title>
|
<title>Perl</title>
|
||||||
|
|
||||||
<para>
|
<section xml:id="ssec-perl-running">
|
||||||
Nixpkgs provides a function <varname>buildPerlPackage</varname>, a generic package builder function for any Perl package that has a standard <varname>Makefile.PL</varname>. It’s implemented in <link
|
<title>Running perl programs on the shell</title>
|
||||||
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 we’re 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 it’s (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>
|
<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>
|
</para>
|
||||||
|
|
||||||
<screen>
|
<para>
|
||||||
<prompt>$ </prompt>nix-env -i nix-generate-from-cpan
|
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>
|
<screen>
|
||||||
|
<prompt>$ </prompt>nix-shell -p perl perlPackages.DBFile --run ./myscript.pl
|
||||||
|
</screen>
|
||||||
|
</para>
|
||||||
|
|
||||||
<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:
|
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:
|
||||||
<screen>
|
<programlisting>
|
||||||
<prompt>$ </prompt>nix-generate-from-cpan XML::Simple
|
#!/usr/bin/env nix-shell
|
||||||
XMLSimple = buildPerlPackage rec {
|
#! nix-shell -i perl -p perl perlPackages.DBFile
|
||||||
name = "XML-Simple-2.22";
|
</programlisting>
|
||||||
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>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section xml:id="ssec-perl-cross-compilation">
|
<section xml:id="ssec-perl-packaging">
|
||||||
<title>Cross-compiling modules</title>
|
<title>Packaging Perl programs</title>
|
||||||
|
|
||||||
<para>
|
<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>. It’s 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>
|
||||||
|
|
||||||
|
<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 we’re 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 it’s (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>
|
||||||
</section>
|
</section>
|
||||||
|
@ -155,17 +155,17 @@ hello-2.3 A program that produces a familiar, friendly greeting
|
|||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
@ -162,10 +162,10 @@
|
|||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
<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>
|
<programlisting>
|
||||||
{
|
{
|
||||||
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ];
|
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3Only gpl3Only ];
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
@ -28,7 +28,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
|
|||||||
fullName = "Academic Free License v3.0";
|
fullName = "Academic Free License v3.0";
|
||||||
};
|
};
|
||||||
|
|
||||||
agpl3 = spdx {
|
agpl3Only = spdx {
|
||||||
spdxId = "AGPL-3.0-only";
|
spdxId = "AGPL-3.0-only";
|
||||||
fullName = "GNU Affero General Public License v3.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";
|
fullName = "European Union Public License 1.2";
|
||||||
};
|
};
|
||||||
|
|
||||||
fdl11 = spdx {
|
fdl11Only = spdx {
|
||||||
spdxId = "GFDL-1.1-only";
|
spdxId = "GFDL-1.1-only";
|
||||||
fullName = "GNU Free Documentation License v1.1 only";
|
fullName = "GNU Free Documentation License v1.1 only";
|
||||||
};
|
};
|
||||||
|
|
||||||
fdl12 = spdx {
|
fdl12Only = spdx {
|
||||||
spdxId = "GFDL-1.2-only";
|
spdxId = "GFDL-1.2-only";
|
||||||
fullName = "GNU Free Documentation License v1.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";
|
fullName = "GNU Free Documentation License v1.2 or later";
|
||||||
};
|
};
|
||||||
|
|
||||||
fdl13 = spdx {
|
fdl13Only = spdx {
|
||||||
spdxId = "GFDL-1.3-only";
|
spdxId = "GFDL-1.3-only";
|
||||||
fullName = "GNU Free Documentation License v1.3 only";
|
fullName = "GNU Free Documentation License v1.3 only";
|
||||||
};
|
};
|
||||||
@ -327,7 +327,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
|
|||||||
free = false;
|
free = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpl1 = spdx {
|
gpl1Only = spdx {
|
||||||
spdxId = "GPL-1.0-only";
|
spdxId = "GPL-1.0-only";
|
||||||
fullName = "GNU General Public License v1.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";
|
fullName = "GNU General Public License v1.0 or later";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpl2 = spdx {
|
gpl2Only = spdx {
|
||||||
spdxId = "GPL-2.0-only";
|
spdxId = "GPL-2.0-only";
|
||||||
fullName = "GNU General Public License v2.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";
|
fullName = "GNU General Public License v2.0 or later";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpl3 = spdx {
|
gpl3Only = spdx {
|
||||||
spdxId = "GPL-3.0-only";
|
spdxId = "GPL-3.0-only";
|
||||||
fullName = "GNU General Public License v3.0 only";
|
fullName = "GNU General Public License v3.0 only";
|
||||||
};
|
};
|
||||||
@ -437,7 +437,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
|
|||||||
fullName = "JasPer License";
|
fullName = "JasPer License";
|
||||||
};
|
};
|
||||||
|
|
||||||
lgpl2 = spdx {
|
lgpl2Only = spdx {
|
||||||
spdxId = "LGPL-2.0-only";
|
spdxId = "LGPL-2.0-only";
|
||||||
fullName = "GNU Library General Public License v2 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";
|
fullName = "GNU Library General Public License v2 or later";
|
||||||
};
|
};
|
||||||
|
|
||||||
lgpl21 = spdx {
|
lgpl21Only = spdx {
|
||||||
spdxId = "LGPL-2.1-only";
|
spdxId = "LGPL-2.1-only";
|
||||||
fullName = "GNU Lesser General Public License v2.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";
|
fullName = "GNU Lesser General Public License v2.1 or later";
|
||||||
};
|
};
|
||||||
|
|
||||||
lgpl3 = spdx {
|
lgpl3Only = spdx {
|
||||||
spdxId = "LGPL-3.0-only";
|
spdxId = "LGPL-3.0-only";
|
||||||
fullName = "GNU Lesser General Public License v3.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";
|
spdxId = "ZPL-2.1";
|
||||||
fullName = "Zope Public License 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;
|
||||||
}
|
}
|
||||||
|
@ -145,10 +145,14 @@ rec {
|
|||||||
# packed-refs file, so we have to grep through it:
|
# packed-refs file, so we have to grep through it:
|
||||||
then
|
then
|
||||||
let fileContent = readFile packedRefsName;
|
let fileContent = readFile packedRefsName;
|
||||||
matchRef = match (".*\n([^\n ]*) " + file + "\n.*") fileContent;
|
matchRef = builtins.match "([a-z0-9]+) ${file}";
|
||||||
in if matchRef == null
|
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)
|
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);
|
else throw ("Not a .git directory: " + path);
|
||||||
in readCommitFromFile "HEAD";
|
in readCommitFromFile "HEAD";
|
||||||
|
@ -3024,6 +3024,16 @@
|
|||||||
githubId = 615606;
|
githubId = 615606;
|
||||||
name = "Glenn Searby";
|
name = "Glenn Searby";
|
||||||
};
|
};
|
||||||
|
glittershark = {
|
||||||
|
name = "Griffin Smith";
|
||||||
|
email = "root@gws.fyi";
|
||||||
|
github = "glittershark";
|
||||||
|
githubId = 1481027;
|
||||||
|
keys = [{
|
||||||
|
longkeyid = "rsa2048/0x44EF5B5E861C09A7";
|
||||||
|
fingerprint = "0F11 A989 879E 8BBB FDC1 E236 44EF 5B5E 861C 09A7";
|
||||||
|
}];
|
||||||
|
};
|
||||||
gloaming = {
|
gloaming = {
|
||||||
email = "ch9871@gmail.com";
|
email = "ch9871@gmail.com";
|
||||||
github = "gloaming";
|
github = "gloaming";
|
||||||
@ -3959,6 +3969,12 @@
|
|||||||
githubId = 4611077;
|
githubId = 4611077;
|
||||||
name = "Raymond Gauthier";
|
name = "Raymond Gauthier";
|
||||||
};
|
};
|
||||||
|
jschievink = {
|
||||||
|
email = "jonasschievink@gmail.com";
|
||||||
|
github = "jonas-schievink";
|
||||||
|
githubId = 1786438;
|
||||||
|
name = "Jonas Schievink";
|
||||||
|
};
|
||||||
jtcoolen = {
|
jtcoolen = {
|
||||||
email = "jtcoolen@pm.me";
|
email = "jtcoolen@pm.me";
|
||||||
name = "Julien Coolen";
|
name = "Julien Coolen";
|
||||||
@ -4787,6 +4803,12 @@
|
|||||||
githubId = 34683288;
|
githubId = 34683288;
|
||||||
name = "Luke Bentley-Fox";
|
name = "Luke Bentley-Fox";
|
||||||
};
|
};
|
||||||
|
lukegb = {
|
||||||
|
email = "nix@lukegb.com";
|
||||||
|
github = "lukegb";
|
||||||
|
githubId = 246745;
|
||||||
|
name = "Luke Granger-Brown";
|
||||||
|
};
|
||||||
lukego = {
|
lukego = {
|
||||||
email = "luke@snabb.co";
|
email = "luke@snabb.co";
|
||||||
github = "lukego";
|
github = "lukego";
|
||||||
@ -5083,6 +5105,12 @@
|
|||||||
githubId = 2971615;
|
githubId = 2971615;
|
||||||
name = "Marius Bergmann";
|
name = "Marius Bergmann";
|
||||||
};
|
};
|
||||||
|
mcbeth = {
|
||||||
|
email = "mcbeth@broggs.org";
|
||||||
|
github = "mcbeth";
|
||||||
|
githubId = 683809;
|
||||||
|
name = "Jeffrey Brent McBeth";
|
||||||
|
};
|
||||||
mcmtroffaes = {
|
mcmtroffaes = {
|
||||||
email = "matthias.troffaes@gmail.com";
|
email = "matthias.troffaes@gmail.com";
|
||||||
github = "mcmtroffaes";
|
github = "mcmtroffaes";
|
||||||
@ -5640,6 +5668,12 @@
|
|||||||
githubId = 5047140;
|
githubId = 5047140;
|
||||||
name = "Victor Collod";
|
name = "Victor Collod";
|
||||||
};
|
};
|
||||||
|
mupdt = {
|
||||||
|
email = "nix@pdtpartners.com";
|
||||||
|
github = "mupdt";
|
||||||
|
githubId = 25388474;
|
||||||
|
name = "Matej Urbas";
|
||||||
|
};
|
||||||
mvnetbiz = {
|
mvnetbiz = {
|
||||||
email = "mvnetbiz@gmail.com";
|
email = "mvnetbiz@gmail.com";
|
||||||
github = "mvnetbiz";
|
github = "mvnetbiz";
|
||||||
@ -9099,4 +9133,10 @@
|
|||||||
github = "tfmoraes";
|
github = "tfmoraes";
|
||||||
githubId = 351108;
|
githubId = 351108;
|
||||||
};
|
};
|
||||||
|
deifactor = {
|
||||||
|
name = "Ash Zahlen";
|
||||||
|
email = "ext0l@riseup.net";
|
||||||
|
github = "deifactor";
|
||||||
|
githubId = 30192992;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,13 @@
|
|||||||
# TODO: add assert statements
|
# TODO: add assert statements
|
||||||
|
|
||||||
let
|
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;
|
inherit (pkgs) lib;
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<xi:include href="user-mgmt.xml" />
|
<xi:include href="user-mgmt.xml" />
|
||||||
<xi:include href="file-systems.xml" />
|
<xi:include href="file-systems.xml" />
|
||||||
<xi:include href="x-windows.xml" />
|
<xi:include href="x-windows.xml" />
|
||||||
|
<xi:include href="gpu-accel.xml" />
|
||||||
<xi:include href="xfce.xml" />
|
<xi:include href="xfce.xml" />
|
||||||
<xi:include href="networking.xml" />
|
<xi:include href="networking.xml" />
|
||||||
<xi:include href="linux-kernel.xml" />
|
<xi:include href="linux-kernel.xml" />
|
||||||
|
104
nixos/doc/manual/configuration/gpu-accel.xml
Normal file
104
nixos/doc/manual/configuration/gpu-accel.xml
Normal 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 '<nixpkgs>' --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 '<nixpkgs>' --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>
|
@ -390,7 +390,7 @@ start_all()
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Copies a file from host to machine, e.g.,
|
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>
|
||||||
<para>
|
<para>
|
||||||
The first argument is the file on the host. The file needs to be
|
The first argument is the file on the host. The file needs to be
|
||||||
|
@ -124,6 +124,12 @@ systemd.services.mysql.serviceConfig.ReadWritePaths = [ "/var/data" ];
|
|||||||
<varname>services.postfix.sslCACert</varname> was replaced by <varname>services.postfix.tlsTrustedAuthorities</varname> which now defaults to system certifcate authorities.
|
<varname>services.postfix.sslCACert</varname> was replaced by <varname>services.postfix.tlsTrustedAuthorities</varname> which now defaults to system certifcate authorities.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Subordinate GID and UID mappings are now set up automatically for all normal users.
|
||||||
|
This will make container tools like Podman work as non-root users out of the box.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -281,3 +281,58 @@ foreach my $u (values %usersOut) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateFile("/etc/shadow", \@shadowNew, 0600);
|
updateFile("/etc/shadow", \@shadowNew, 0600);
|
||||||
|
|
||||||
|
# Rewrite /etc/subuid & /etc/subgid to include default container mappings
|
||||||
|
|
||||||
|
my $subUidMapFile = "/var/lib/nixos/auto-subuid-map";
|
||||||
|
my $subUidMap = -e $subUidMapFile ? decode_json(read_file($subUidMapFile)) : {};
|
||||||
|
|
||||||
|
my (%subUidsUsed, %subUidsPrevUsed);
|
||||||
|
|
||||||
|
$subUidsPrevUsed{$_} = 1 foreach values %{$subUidMap};
|
||||||
|
|
||||||
|
sub allocSubUid {
|
||||||
|
my ($name, @rest) = @_;
|
||||||
|
|
||||||
|
# TODO: No upper bounds?
|
||||||
|
my ($min, $max, $up) = (100000, 100000 * 100, 1);
|
||||||
|
my $prevId = $subUidMap->{$name};
|
||||||
|
if (defined $prevId && !defined $subUidsUsed{$prevId}) {
|
||||||
|
$subUidsUsed{$prevId} = 1;
|
||||||
|
return $prevId;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $id = allocId(\%subUidsUsed, \%subUidsPrevUsed, $min, $max, $up, sub { my ($uid) = @_; getpwuid($uid) });
|
||||||
|
my $offset = $id - 100000;
|
||||||
|
my $count = $offset * 65536;
|
||||||
|
my $subordinate = 100000 + $count;
|
||||||
|
return $subordinate;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @subGids;
|
||||||
|
my @subUids;
|
||||||
|
foreach my $u (values %usersOut) {
|
||||||
|
my $name = $u->{name};
|
||||||
|
|
||||||
|
foreach my $range (@{$u->{subUidRanges}}) {
|
||||||
|
my $value = join(":", ($name, $range->{startUid}, $range->{count}));
|
||||||
|
push @subUids, $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $range (@{$u->{subGidRanges}}) {
|
||||||
|
my $value = join(":", ($name, $range->{startGid}, $range->{count}));
|
||||||
|
push @subGids, $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($u->{isNormalUser}) {
|
||||||
|
my $subordinate = allocSubUid($name);
|
||||||
|
$subUidMap->{$name} = $subordinate;
|
||||||
|
my $value = join(":", ($name, $subordinate, 65536));
|
||||||
|
push @subUids, $value;
|
||||||
|
push @subGids, $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateFile("/etc/subuid", join("\n", @subUids) . "\n");
|
||||||
|
updateFile("/etc/subgid", join("\n", @subGids) . "\n");
|
||||||
|
updateFile($subUidMapFile, encode_json($subUidMap) . "\n");
|
||||||
|
@ -375,18 +375,6 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mkSubuidEntry = user: concatStrings (
|
|
||||||
map (range: "${user.name}:${toString range.startUid}:${toString range.count}\n")
|
|
||||||
user.subUidRanges);
|
|
||||||
|
|
||||||
subuidFile = concatStrings (map mkSubuidEntry (attrValues cfg.users));
|
|
||||||
|
|
||||||
mkSubgidEntry = user: concatStrings (
|
|
||||||
map (range: "${user.name}:${toString range.startGid}:${toString range.count}\n")
|
|
||||||
user.subGidRanges);
|
|
||||||
|
|
||||||
subgidFile = concatStrings (map mkSubgidEntry (attrValues cfg.users));
|
|
||||||
|
|
||||||
idsAreUnique = set: idAttr: !(fold (name: args@{ dup, acc }:
|
idsAreUnique = set: idAttr: !(fold (name: args@{ dup, acc }:
|
||||||
let
|
let
|
||||||
id = builtins.toString (builtins.getAttr idAttr (builtins.getAttr name set));
|
id = builtins.toString (builtins.getAttr idAttr (builtins.getAttr name set));
|
||||||
@ -406,6 +394,7 @@ let
|
|||||||
{ inherit (u)
|
{ inherit (u)
|
||||||
name uid group description home createHome isSystemUser
|
name uid group description home createHome isSystemUser
|
||||||
password passwordFile hashedPassword
|
password passwordFile hashedPassword
|
||||||
|
isNormalUser subUidRanges subGidRanges
|
||||||
initialPassword initialHashedPassword;
|
initialPassword initialHashedPassword;
|
||||||
shell = utils.toShellPath u.shell;
|
shell = utils.toShellPath u.shell;
|
||||||
}) cfg.users;
|
}) cfg.users;
|
||||||
@ -567,16 +556,7 @@ in {
|
|||||||
# Install all the user shells
|
# Install all the user shells
|
||||||
environment.systemPackages = systemShells;
|
environment.systemPackages = systemShells;
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = (mapAttrs' (name: { packages, ... }: {
|
||||||
subuid = {
|
|
||||||
text = subuidFile;
|
|
||||||
mode = "0644";
|
|
||||||
};
|
|
||||||
subgid = {
|
|
||||||
text = subgidFile;
|
|
||||||
mode = "0644";
|
|
||||||
};
|
|
||||||
} // (mapAttrs' (name: { packages, ... }: {
|
|
||||||
name = "profiles/per-user/${name}";
|
name = "profiles/per-user/${name}";
|
||||||
value.source = pkgs.buildEnv {
|
value.source = pkgs.buildEnv {
|
||||||
name = "user-environment";
|
name = "user-environment";
|
||||||
|
@ -16,7 +16,7 @@ in
|
|||||||
type = types.lines;
|
type = types.lines;
|
||||||
description = ''
|
description = ''
|
||||||
Configuration for Spotifyd. For syntax and directives, see
|
Configuration for Spotifyd. For syntax and directives, see
|
||||||
https://github.com/Spotifyd/spotifyd#Configuration.
|
<link xlink:href="https://github.com/Spotifyd/spotifyd#Configuration"/>.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -29,7 +29,7 @@ let
|
|||||||
|
|
||||||
with open('${cfg.workerPassFile}', 'r', encoding='utf-8') as passwd_file:
|
with open('${cfg.workerPassFile}', 'r', encoding='utf-8') as passwd_file:
|
||||||
passwd = passwd_file.read().strip('\r\n')
|
passwd = passwd_file.read().strip('\r\n')
|
||||||
keepalive = 600
|
keepalive = ${toString cfg.keepalive}
|
||||||
umask = None
|
umask = None
|
||||||
maxdelay = 300
|
maxdelay = 300
|
||||||
numcpus = None
|
numcpus = None
|
||||||
@ -116,6 +116,15 @@ in {
|
|||||||
description = "Specifies the Buildbot Worker connection string.";
|
description = "Specifies the Buildbot Worker connection string.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
keepalive = mkOption {
|
||||||
|
default = 600;
|
||||||
|
type = types.int;
|
||||||
|
description = "
|
||||||
|
This is a number that indicates how frequently keepalive messages should be sent
|
||||||
|
from the worker to the buildmaster, expressed in seconds.
|
||||||
|
";
|
||||||
|
};
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.python3Packages.buildbot-worker;
|
default = pkgs.python3Packages.buildbot-worker;
|
||||||
|
@ -27,7 +27,10 @@ in
|
|||||||
type = types.str;
|
type = types.str;
|
||||||
default = "/var/lib/gitolite";
|
default = "/var/lib/gitolite";
|
||||||
description = ''
|
description = ''
|
||||||
Gitolite home directory (used to store all the repositories).
|
The gitolite home directory used to store all repositories. If left as the default value
|
||||||
|
this directory will automatically be created before the gitolite server starts, otherwise
|
||||||
|
the sysadmin is responsible for ensuring the directory exists with appropriate ownership
|
||||||
|
and permissions.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -149,14 +152,6 @@ in
|
|||||||
};
|
};
|
||||||
users.groups.${cfg.group}.gid = config.ids.gids.gitolite;
|
users.groups.${cfg.group}.gid = config.ids.gids.gitolite;
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d '${cfg.dataDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
|
||||||
"d '${cfg.dataDir}'/.gitolite - ${cfg.user} ${cfg.group} - -"
|
|
||||||
"d '${cfg.dataDir}'/.gitolite/logs - ${cfg.user} ${cfg.group} - -"
|
|
||||||
|
|
||||||
"Z ${cfg.dataDir} 0750 ${cfg.user} ${cfg.group} - -"
|
|
||||||
];
|
|
||||||
|
|
||||||
systemd.services.gitolite-init = {
|
systemd.services.gitolite-init = {
|
||||||
description = "Gitolite initialization";
|
description = "Gitolite initialization";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
@ -167,13 +162,19 @@ in
|
|||||||
GITOLITE_RC_DEFAULT = "${rcDir}/gitolite.rc.default";
|
GITOLITE_RC_DEFAULT = "${rcDir}/gitolite.rc.default";
|
||||||
};
|
};
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = mkMerge [
|
||||||
Type = "oneshot";
|
(mkIf (cfg.dataDir == "/var/lib/gitolite") {
|
||||||
User = cfg.user;
|
StateDirectory = "gitolite gitolite/.gitolite gitolite/.gitolite/logs";
|
||||||
Group = cfg.group;
|
StateDirectoryMode = "0750";
|
||||||
WorkingDirectory = "~";
|
})
|
||||||
RemainAfterExit = true;
|
{
|
||||||
};
|
Type = "oneshot";
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
WorkingDirectory = "~";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
path = [ pkgs.gitolite pkgs.git pkgs.perl pkgs.bash pkgs.diffutils config.programs.ssh.package ];
|
path = [ pkgs.gitolite pkgs.git pkgs.perl pkgs.bash pkgs.diffutils config.programs.ssh.package ];
|
||||||
script =
|
script =
|
||||||
|
@ -14,9 +14,9 @@
|
|||||||
<para>
|
<para>
|
||||||
This chapter will show you how to set up your own, self-hosted Matrix
|
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
|
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
|
<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
|
desktop clients, as well as bridges to other networks and other projects
|
||||||
around Matrix.
|
around Matrix.
|
||||||
</para>
|
</para>
|
||||||
@ -84,7 +84,7 @@ in {
|
|||||||
"m.homeserver" = { "base_url" = "https://${fqdn}"; };
|
"m.homeserver" = { "base_url" = "https://${fqdn}"; };
|
||||||
"m.identity_server" = { "base_url" = "https://vector.im"; };
|
"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 ''
|
in ''
|
||||||
add_header Content-Type application/json;
|
add_header Content-Type application/json;
|
||||||
add_header Access-Control-Allow-Origin *;
|
add_header Access-Control-Allow-Origin *;
|
||||||
@ -98,7 +98,7 @@ in {
|
|||||||
<link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true;
|
<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.
|
# 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> = ''
|
<link linkend="opt-services.nginx.virtualHosts._name_.locations._name_.extraConfig">locations."/".extraConfig</link> = ''
|
||||||
return 404;
|
return 404;
|
||||||
'';
|
'';
|
||||||
@ -171,17 +171,19 @@ Success!
|
|||||||
option until a better solution for NixOS is in place.
|
option until a better solution for NixOS is in place.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section xml:id="module-services-matrix-riot-web">
|
<section xml:id="module-services-matrix-element-web">
|
||||||
<title>Riot Web Client</title>
|
<title>Element (formerly known as Riot) Web Client</title>
|
||||||
|
|
||||||
<para>
|
<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
|
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
|
to complete the synapse installation with a web client served at
|
||||||
<code>https://riot.myhostname.example.org</code> and
|
<code>https://element.myhostname.example.org</code> and
|
||||||
<code>https://riot.example.org</code>. Alternatively, you can use the hosted
|
<code>https://element.example.org</code>. Alternatively, you can use the hosted
|
||||||
copy at <link xlink:href="https://riot.im/app">https://riot.im/app</link>,
|
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
|
or use other web clients or native client applications. Due to the
|
||||||
<literal>/.well-known</literal> urls set up done above, many clients should
|
<literal>/.well-known</literal> urls set up done above, many clients should
|
||||||
fill in the required connection details automatically when you enter your
|
fill in the required connection details automatically when you enter your
|
||||||
@ -191,14 +193,14 @@ Success!
|
|||||||
featureset.
|
featureset.
|
||||||
<programlisting>
|
<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_.enableACME">enableACME</link> = true;
|
||||||
<link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true;
|
<link linkend="opt-services.nginx.virtualHosts._name_.forceSSL">forceSSL</link> = true;
|
||||||
<link linkend="opt-services.nginx.virtualHosts._name_.serverAliases">serverAliases</link> = [
|
<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 = {
|
conf = {
|
||||||
default_server_config."m.homeserver" = {
|
default_server_config."m.homeserver" = {
|
||||||
"base_url" = "${config.networking.domain}";
|
"base_url" = "${config.networking.domain}";
|
||||||
@ -212,13 +214,13 @@ Success!
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<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
|
homeserver on the same fully-qualified domain name for security reasons. In
|
||||||
the example, this means that you should not reuse the
|
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
|
but instead serve it on a different subdomain, like
|
||||||
<literal>riot.example.org</literal> in the example. See the
|
<literal>element.example.org</literal> in the example. See the
|
||||||
<link xlink:href="https://github.com/vector-im/riot-web#important-security-note">Riot
|
<link xlink:href="https://github.com/vector-im/riot-web#important-security-note">Element
|
||||||
Important Security Notes</link> for more information on this subject.
|
Important Security Notes</link> for more information on this subject.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
@ -34,6 +34,7 @@ let
|
|||||||
"mail"
|
"mail"
|
||||||
"mikrotik"
|
"mikrotik"
|
||||||
"minio"
|
"minio"
|
||||||
|
"modemmanager"
|
||||||
"nextcloud"
|
"nextcloud"
|
||||||
"nginx"
|
"nginx"
|
||||||
"node"
|
"node"
|
||||||
|
@ -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}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -40,7 +40,7 @@ let
|
|||||||
$CFG->disableupdateautodeploy = true;
|
$CFG->disableupdateautodeploy = true;
|
||||||
|
|
||||||
$CFG->pathtogs = '${pkgs.ghostscript}/bin/gs';
|
$CFG->pathtogs = '${pkgs.ghostscript}/bin/gs';
|
||||||
$CFG->pathtophp = '${pkgs.php}/bin/php';
|
$CFG->pathtophp = '${phpExt}/bin/php';
|
||||||
$CFG->pathtodu = '${pkgs.coreutils}/bin/du';
|
$CFG->pathtodu = '${pkgs.coreutils}/bin/du';
|
||||||
$CFG->aspellpath = '${pkgs.aspell}/bin/aspell';
|
$CFG->aspellpath = '${pkgs.aspell}/bin/aspell';
|
||||||
$CFG->pathtodot = '${pkgs.graphviz}/bin/dot';
|
$CFG->pathtodot = '${pkgs.graphviz}/bin/dot';
|
||||||
@ -55,6 +55,9 @@ let
|
|||||||
|
|
||||||
mysqlLocal = cfg.database.createLocally && cfg.database.type == "mysql";
|
mysqlLocal = cfg.database.createLocally && cfg.database.type == "mysql";
|
||||||
pgsqlLocal = cfg.database.createLocally && cfg.database.type == "pgsql";
|
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
|
in
|
||||||
{
|
{
|
||||||
# interface
|
# interface
|
||||||
@ -222,6 +225,7 @@ in
|
|||||||
|
|
||||||
services.phpfpm.pools.moodle = {
|
services.phpfpm.pools.moodle = {
|
||||||
inherit user group;
|
inherit user group;
|
||||||
|
phpPackage = phpExt;
|
||||||
phpEnv.MOODLE_CONFIG = "${moodleConfig}";
|
phpEnv.MOODLE_CONFIG = "${moodleConfig}";
|
||||||
phpOptions = ''
|
phpOptions = ''
|
||||||
zend_extension = opcache.so
|
zend_extension = opcache.so
|
||||||
@ -263,13 +267,13 @@ in
|
|||||||
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
after = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.service";
|
||||||
environment.MOODLE_CONFIG = moodleConfig;
|
environment.MOODLE_CONFIG = moodleConfig;
|
||||||
script = ''
|
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 \
|
--non-interactive \
|
||||||
--allow-unstable
|
--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 \
|
--agree-license \
|
||||||
--adminpass=${cfg.initialPassword}
|
--adminpass=${cfg.initialPassword}
|
||||||
|
|
||||||
@ -289,7 +293,7 @@ in
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = user;
|
User = user;
|
||||||
Group = group;
|
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";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -169,4 +169,4 @@ exec {logOutFd}>&- {logErrFd}>&-
|
|||||||
echo "starting systemd..."
|
echo "starting systemd..."
|
||||||
PATH=/run/current-system/systemd/lib/systemd:@fsPackagesPath@ \
|
PATH=/run/current-system/systemd/lib/systemd:@fsPackagesPath@ \
|
||||||
LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive \
|
LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive \
|
||||||
exec systemd
|
exec @systemdExecutable@
|
||||||
|
@ -10,6 +10,7 @@ let
|
|||||||
src = ./stage-2-init.sh;
|
src = ./stage-2-init.sh;
|
||||||
shellDebug = "${pkgs.bashInteractive}/bin/bash";
|
shellDebug = "${pkgs.bashInteractive}/bin/bash";
|
||||||
shell = "${pkgs.bash}/bin/bash";
|
shell = "${pkgs.bash}/bin/bash";
|
||||||
|
inherit (config.boot) systemdExecutable;
|
||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
inherit (config.nix) readOnlyStore;
|
inherit (config.nix) readOnlyStore;
|
||||||
inherit useHostResolvConf;
|
inherit useHostResolvConf;
|
||||||
@ -72,6 +73,15 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemdExecutable = mkOption {
|
||||||
|
default = "systemd";
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
The program to execute to start systemd. Typically
|
||||||
|
<literal>systemd</literal>, which will find systemd in the
|
||||||
|
PATH.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -23,6 +23,15 @@ in
|
|||||||
maintainers = [] ++ lib.teams.podman.members;
|
maintainers = [] ++ lib.teams.podman.members;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
(
|
||||||
|
lib.mkRemovedOptionModule
|
||||||
|
[ "virtualisation" "containers" "users" ]
|
||||||
|
"All users with `isNormalUser = true` set now get appropriate subuid/subgid mappings."
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
options.virtualisation.containers = {
|
options.virtualisation.containers = {
|
||||||
|
|
||||||
enable =
|
enable =
|
||||||
@ -99,15 +108,6 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
users = mkOption {
|
|
||||||
default = [];
|
|
||||||
type = types.listOf types.str;
|
|
||||||
description = ''
|
|
||||||
List of users to set up subuid/subgid mappings for.
|
|
||||||
This is a requirement for running rootless containers.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
@ -122,26 +122,6 @@ in
|
|||||||
registries = lib.mapAttrs (n: v: { registries = v; }) cfg.registries;
|
registries = lib.mapAttrs (n: v: { registries = v; }) cfg.registries;
|
||||||
};
|
};
|
||||||
|
|
||||||
users.extraUsers = builtins.listToAttrs (
|
|
||||||
(
|
|
||||||
builtins.foldl' (
|
|
||||||
acc: user: {
|
|
||||||
values = acc.values ++ [
|
|
||||||
{
|
|
||||||
name = user;
|
|
||||||
value = {
|
|
||||||
subUidRanges = [ { startUid = acc.offset; count = 65536; } ];
|
|
||||||
subGidRanges = [ { startGid = acc.offset; count = 65536; } ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
offset = acc.offset + 65536;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
{ values = []; offset = 100000; } (lib.unique cfg.users)
|
|
||||||
).values
|
|
||||||
);
|
|
||||||
|
|
||||||
environment.etc."containers/policy.json".source =
|
environment.etc."containers/policy.json".source =
|
||||||
if cfg.policy != {} then pkgs.writeText "policy.json" (builtins.toJSON cfg.policy)
|
if cfg.policy != {} then pkgs.writeText "policy.json" (builtins.toJSON cfg.policy)
|
||||||
else copyFile "${pkgs.skopeo.src}/default-policy.json";
|
else copyFile "${pkgs.skopeo.src}/default-policy.json";
|
||||||
|
@ -149,6 +149,7 @@ in
|
|||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [{
|
config = mkIf cfg.enable (mkMerge [{
|
||||||
|
boot.kernelModules = [ "bridge" "veth" ];
|
||||||
environment.systemPackages = [ cfg.package ]
|
environment.systemPackages = [ cfg.package ]
|
||||||
++ optional cfg.enableNvidia pkgs.nvidia-docker;
|
++ optional cfg.enableNvidia pkgs.nvidia-docker;
|
||||||
users.groups.docker.gid = config.ids.gids.docker;
|
users.groups.docker.gid = config.ids.gids.docker;
|
||||||
|
@ -183,15 +183,15 @@ let
|
|||||||
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
|
|
||||||
monA.succeed(
|
monA.succeed(
|
||||||
"ceph osd pool create multi-node-test 128 128",
|
"ceph osd pool create multi-node-test 32 32",
|
||||||
"ceph osd pool ls | grep 'multi-node-test'",
|
"ceph osd pool ls | grep 'multi-node-test'",
|
||||||
"ceph osd pool rename multi-node-test multi-node-other-test",
|
"ceph osd pool rename multi-node-test multi-node-other-test",
|
||||||
"ceph osd pool ls | grep 'multi-node-other-test'",
|
"ceph osd pool ls | grep 'multi-node-other-test'",
|
||||||
)
|
)
|
||||||
monA.wait_until_succeeds("ceph -s | grep '1 pools, 128 pgs'")
|
monA.wait_until_succeeds("ceph -s | grep '2 pools, 33 pgs'")
|
||||||
monA.succeed("ceph osd pool set multi-node-other-test size 2")
|
monA.succeed("ceph osd pool set multi-node-other-test size 2")
|
||||||
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
monA.wait_until_succeeds("ceph -s | grep '128 active+clean'")
|
monA.wait_until_succeeds("ceph -s | grep '33 active+clean'")
|
||||||
monA.fail(
|
monA.fail(
|
||||||
"ceph osd pool ls | grep 'multi-node-test'",
|
"ceph osd pool ls | grep 'multi-node-test'",
|
||||||
"ceph osd pool delete multi-node-other-test multi-node-other-test --yes-i-really-really-mean-it",
|
"ceph osd pool delete multi-node-other-test multi-node-other-test --yes-i-really-really-mean-it",
|
||||||
|
@ -143,12 +143,12 @@ let
|
|||||||
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
|
|
||||||
monA.succeed(
|
monA.succeed(
|
||||||
"ceph osd pool create single-node-test 128 128",
|
"ceph osd pool create single-node-test 32 32",
|
||||||
"ceph osd pool ls | grep 'single-node-test'",
|
"ceph osd pool ls | grep 'single-node-test'",
|
||||||
"ceph osd pool rename single-node-test single-node-other-test",
|
"ceph osd pool rename single-node-test single-node-other-test",
|
||||||
"ceph osd pool ls | grep 'single-node-other-test'",
|
"ceph osd pool ls | grep 'single-node-other-test'",
|
||||||
)
|
)
|
||||||
monA.wait_until_succeeds("ceph -s | grep '1 pools, 128 pgs'")
|
monA.wait_until_succeeds("ceph -s | grep '2 pools, 33 pgs'")
|
||||||
monA.succeed(
|
monA.succeed(
|
||||||
"ceph osd getcrushmap -o crush",
|
"ceph osd getcrushmap -o crush",
|
||||||
"crushtool -d crush -o decrushed",
|
"crushtool -d crush -o decrushed",
|
||||||
@ -158,7 +158,7 @@ let
|
|||||||
"ceph osd pool set single-node-other-test size 2",
|
"ceph osd pool set single-node-other-test size 2",
|
||||||
)
|
)
|
||||||
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'")
|
||||||
monA.wait_until_succeeds("ceph -s | grep '128 active+clean'")
|
monA.wait_until_succeeds("ceph -s | grep '33 active+clean'")
|
||||||
monA.fail(
|
monA.fail(
|
||||||
"ceph osd pool ls | grep 'multi-node-test'",
|
"ceph osd pool ls | grep 'multi-node-test'",
|
||||||
"ceph osd pool delete single-node-other-test single-node-other-test --yes-i-really-really-mean-it",
|
"ceph osd pool delete single-node-other-test single-node-other-test --yes-i-really-really-mean-it",
|
||||||
|
@ -30,8 +30,45 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||||||
)
|
)
|
||||||
|
|
||||||
docker.succeed("docker run --rm ${examples.bash.imageName} bash --version")
|
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}")
|
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(
|
with subtest(
|
||||||
"Check if the nix store is correctly initialized by listing "
|
"Check if the nix store is correctly initialized by listing "
|
||||||
"dependencies of the installed Nix binary"
|
"dependencies of the installed Nix binary"
|
||||||
|
@ -14,6 +14,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
|||||||
|
|
||||||
services.xserver.displayManager = {
|
services.xserver.displayManager = {
|
||||||
gdm.enable = true;
|
gdm.enable = true;
|
||||||
|
gdm.debug = true;
|
||||||
autoLogin = {
|
autoLogin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
user = user.name;
|
user = user.name;
|
||||||
@ -21,6 +22,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.xserver.desktopManager.gnome3.enable = true;
|
services.xserver.desktopManager.gnome3.enable = true;
|
||||||
|
services.xserver.desktopManager.gnome3.debug = true;
|
||||||
services.xserver.displayManager.defaultSession = "gnome-xorg";
|
services.xserver.displayManager.defaultSession = "gnome-xorg";
|
||||||
|
|
||||||
virtualisation.memorySize = 1024;
|
virtualisation.memorySize = 1024;
|
||||||
|
@ -13,6 +13,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
|||||||
|
|
||||||
services.xserver.displayManager = {
|
services.xserver.displayManager = {
|
||||||
gdm.enable = true;
|
gdm.enable = true;
|
||||||
|
gdm.debug = true;
|
||||||
autoLogin = {
|
autoLogin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
user = "alice";
|
user = "alice";
|
||||||
@ -20,6 +21,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.xserver.desktopManager.gnome3.enable = true;
|
services.xserver.desktopManager.gnome3.enable = true;
|
||||||
|
services.xserver.desktopManager.gnome3.debug = true;
|
||||||
|
|
||||||
virtualisation.memorySize = 1024;
|
virtualisation.memorySize = 1024;
|
||||||
};
|
};
|
||||||
|
@ -9,7 +9,6 @@ with pkgs.lib;
|
|||||||
let
|
let
|
||||||
mkKubernetesBaseTest =
|
mkKubernetesBaseTest =
|
||||||
{ name, domain ? "my.zyx", test, machines
|
{ name, domain ? "my.zyx", test, machines
|
||||||
, pkgs ? import <nixpkgs> { inherit system; }
|
|
||||||
, extraConfiguration ? null }:
|
, extraConfiguration ? null }:
|
||||||
let
|
let
|
||||||
masterName = head (filter (machineName: any (role: role == "master") machines.${machineName}.roles) (attrNames machines));
|
masterName = head (filter (machineName: any (role: role == "master") machines.${machineName}.roles) (attrNames machines));
|
||||||
|
@ -12,9 +12,6 @@ import ./make-test-python.nix (
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
virtualisation.podman.enable = true;
|
virtualisation.podman.enable = true;
|
||||||
virtualisation.containers.users = [
|
|
||||||
"alice"
|
|
||||||
];
|
|
||||||
|
|
||||||
users.users.alice = {
|
users.users.alice = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
@ -71,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("tar cv --files-from /dev/null | podman import - scratchimg"))
|
||||||
podman.succeed(
|
podman.succeed(
|
||||||
su_cmd(
|
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"))
|
podman.succeed(su_cmd("podman ps | grep sleeping"))
|
||||||
|
@ -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 = {
|
nextcloud = {
|
||||||
exporterConfig = {
|
exporterConfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -1,39 +1,40 @@
|
|||||||
{ stdenv, fetchurl, pkgconfig, wrapGAppsHook, gettext, glib, gtk3
|
{
|
||||||
, libmowgli, dbus-glib, libxml2, xorg, gnome3, alsaLib
|
mkDerivation, lib, fetchurl, fetchpatch,
|
||||||
, libpulseaudio, libjack2, fluidsynth, libmad, libogg, libvorbis
|
gettext, pkgconfig,
|
||||||
, libcdio, libcddb, flac, ffmpeg_3, mpg123, libcue, libmms, libbs2b
|
qtbase,
|
||||||
, libsndfile, libmodplug, libsamplerate, soxr, lirc, curl, wavpack
|
alsaLib, curl, faad2, ffmpeg, flac, fluidsynth, gdk-pixbuf, lame, libbs2b,
|
||||||
, neon, faad2, lame, libnotify, libsidplayfp
|
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";
|
pname = "audacious";
|
||||||
version = "3.9";
|
version = "4.0.5";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://distfiles.audacious-media-player.org/audacious-${version}-gtk3.tar.bz2";
|
url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2";
|
||||||
sha256 = "0dc7fg0v2l2j4h9cz1baz7rf4n0a5jgk09qvsj806sh6jp7w6ipm";
|
sha256 = "028zjgz0p7ys15lk2a30m5zcv9xrx3ga50wjsh4m4zxilgkakbji";
|
||||||
};
|
};
|
||||||
|
|
||||||
pluginsSrc = fetchurl {
|
pluginsSrc = fetchurl {
|
||||||
url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}-gtk3.tar.bz2";
|
url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2";
|
||||||
sha256 = "1gck37c5pnzxdhrnb1g75b5hi31s2dc952wifxns45pkdlayrmra";
|
sha256 = "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [ gettext pkgconfig ];
|
||||||
pkgconfig wrapGAppsHook
|
|
||||||
];
|
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
gettext glib gtk3 libmowgli dbus-glib libxml2
|
# Core dependencies
|
||||||
xorg.libXcomposite gnome3.adwaita-icon-theme alsaLib libjack2
|
qtbase
|
||||||
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
|
|
||||||
];
|
|
||||||
|
|
||||||
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
|
# Here we build both audacious and audacious-plugins in one
|
||||||
# derivations, since they really expect to be in the same prefix.
|
# derivations, since they really expect to be in the same prefix.
|
||||||
@ -44,10 +45,8 @@ stdenv.mkDerivation rec {
|
|||||||
source $stdenv/setup
|
source $stdenv/setup
|
||||||
genericBuild
|
genericBuild
|
||||||
)
|
)
|
||||||
|
|
||||||
# Then build the plugins.
|
# Then build the plugins.
|
||||||
(
|
(
|
||||||
dontWrapGApps=true
|
|
||||||
nativeBuildInputs="$out $nativeBuildInputs" # to find audacious
|
nativeBuildInputs="$out $nativeBuildInputs" # to find audacious
|
||||||
source $stdenv/setup
|
source $stdenv/setup
|
||||||
rm -rfv audacious-*
|
rm -rfv audacious-*
|
||||||
@ -56,12 +55,10 @@ stdenv.mkDerivation rec {
|
|||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
meta = with lib; {
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "Audio player";
|
description = "Audio player";
|
||||||
homepage = "https://audacious-media-player.org/";
|
homepage = "https://audacious-media-player.org/";
|
||||||
maintainers = with maintainers; [ eelco ramkromberg ];
|
maintainers = with maintainers; [ eelco ramkromberg ttuegel ];
|
||||||
platforms = with platforms; linux;
|
platforms = with platforms; linux;
|
||||||
license = with licenses; [
|
license = with licenses; [
|
||||||
bsd2 bsd3 #https://github.com/audacious-media-player/audacious/blob/master/COPYING
|
bsd2 bsd3 #https://github.com/audacious-media-player/audacious/blob/master/COPYING
|
||||||
|
@ -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
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "BSEQuencer";
|
pname = "BSEQuencer";
|
||||||
version = "1.4.2";
|
version = "1.6.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "sjaehn";
|
owner = "sjaehn";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "${version}";
|
rev = "${version}";
|
||||||
sha256 = "1fz0p0ba00b7k7a8q9mxwj01jwl8xwh9a2npn00pbbdrg9zv4fdr";
|
sha256 = "0w21kzq695xy4i1r6xvvh7sad5m0rlmdgc7ykmrlzfsm1252dz80";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
@ -42,16 +42,13 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "guitarix";
|
pname = "guitarix";
|
||||||
version = "0.40.0";
|
version = "0.41.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.xz";
|
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 = [
|
nativeBuildInputs = [
|
||||||
gettext
|
gettext
|
||||||
hicolor-icon-theme
|
hicolor-icon-theme
|
||||||
@ -101,8 +98,6 @@ stdenv.mkDerivation rec {
|
|||||||
"--no-desktop-update"
|
"--no-desktop-update"
|
||||||
"--enable-nls"
|
"--enable-nls"
|
||||||
"--install-roboto-font"
|
"--install-roboto-font"
|
||||||
"--includeresampler"
|
|
||||||
"--includeconvolver"
|
|
||||||
] ++ optional optimizationSupport "--optimization";
|
] ++ optional optimizationSupport "--optimization";
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -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);
|
|
||||||
}
|
|
70
pkgs/applications/audio/mellowplayer/default.nix
Normal file
70
pkgs/applications/audio/mellowplayer/default.nix
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
{ cmake
|
||||||
|
, fetchFromGitLab
|
||||||
|
, lib
|
||||||
|
, libnotify
|
||||||
|
, mkDerivation
|
||||||
|
, pkgconfig
|
||||||
|
, qtbase
|
||||||
|
, qtdeclarative
|
||||||
|
, qtgraphicaleffects
|
||||||
|
, qtquickcontrols2
|
||||||
|
, qttools
|
||||||
|
, qtwebengine
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation rec {
|
||||||
|
pname = "MellowPlayer";
|
||||||
|
version = "3.6.4";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "ColinDuquesnoy";
|
||||||
|
repo = "MellowPlayer";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "1ss7s3kal4vzhz7ld0yy2kvp1rk2w3i6fya0z3xd7nff9p31gqvw";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake pkgconfig ];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libnotify
|
||||||
|
qtbase
|
||||||
|
qtdeclarative
|
||||||
|
qtgraphicaleffects
|
||||||
|
qtquickcontrols2
|
||||||
|
qttools
|
||||||
|
qtwebengine
|
||||||
|
];
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
cmakeFlags = [ "-DBUILD_TESTS=ON" ];
|
||||||
|
|
||||||
|
preCheck = ''
|
||||||
|
# Running the tests requires a location at the home directory for logging.
|
||||||
|
export HOME="$NIX_BUILD_TOP/home"
|
||||||
|
mkdir -p "$HOME/.local/share/MellowPlayer.Tests/MellowPlayer.Tests/Logs"
|
||||||
|
|
||||||
|
# Without this, the tests fail because they cannot create the QT Window
|
||||||
|
export QT_QPA_PLATFORM=offscreen
|
||||||
|
''
|
||||||
|
# TODO: The tests are failing because it can't locate QT plugins. Is there a better way to do this?
|
||||||
|
+ (builtins.concatStringsSep "\n" (lib.lists.flatten (builtins.map
|
||||||
|
(pkg: [
|
||||||
|
(lib.optionalString (pkg ? qtPluginPrefix) ''
|
||||||
|
export QT_PLUGIN_PATH="${pkg}/${pkg.qtPluginPrefix}"''${QT_PLUGIN_PATH:+':'}$QT_PLUGIN_PATH
|
||||||
|
'')
|
||||||
|
|
||||||
|
(lib.optionalString (pkg ? qtQmlPrefix) ''
|
||||||
|
export QML2_IMPORT_PATH="${pkg}/${pkg.qtQmlPrefix}"''${QML2_IMPORT_PATH:+':'}$QML2_IMPORT_PATH
|
||||||
|
'')
|
||||||
|
]) buildInputs)));
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
inherit (qtbase.meta) platforms;
|
||||||
|
|
||||||
|
description = "Cloud music integration for your desktop.";
|
||||||
|
homepage = "https://gitlab.com/ColinDuquesnoy/MellowPlayer";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
maintainers = with maintainers; [ kalbasit ];
|
||||||
|
};
|
||||||
|
}
|
@ -14,16 +14,16 @@ let
|
|||||||
in
|
in
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "ncspot";
|
pname = "ncspot";
|
||||||
version = "0.1.4";
|
version = "0.2.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "hrkfdn";
|
owner = "hrkfdn";
|
||||||
repo = "ncspot";
|
repo = "ncspot";
|
||||||
rev = version;
|
rev = "v${version}";
|
||||||
sha256 = "02g2lamabkwayhm56498pfvl9g0xx2vsan2j48ssrwjx6rwmlh7n";
|
sha256 = "0b2g5bd04zh1hcrhkgd2srx9gl94da4gpy9arjcvrldschjxjza1";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoSha256 = "07gw2az11lpldwpb792l64b7xlarvx77364rn4i8g6a5271zahz3";
|
cargoSha256 = "1gbhvmg7jfmx0b694rdr3s2zs33d4s645gw1lrxvwffif4mg8fy9";
|
||||||
|
|
||||||
cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ];
|
cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ];
|
||||||
|
|
||||||
|
@ -35,13 +35,13 @@
|
|||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "strawberry";
|
pname = "strawberry";
|
||||||
version = "0.6.12";
|
version = "0.6.13";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jonaski";
|
owner = "jonaski";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0p09xp7andfg0gvarzc979pwglr0xjj1c0cziqj0c9z7p1v0fkws";
|
sha256 = "1v0334aivqyqx611cmhgshknzmrgyynbmxcg70qzrs2lyybw2fc1";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -1,24 +1,38 @@
|
|||||||
{ buildGoModule, fetchFromGitHub, lib }:
|
{ buildGoModule, fetchFromGitHub, lib
|
||||||
|
, tags ? [ "autopilotrpc" "signrpc" "walletrpc" "chainrpc" "invoicesrpc" "watchtowerrpc" ]
|
||||||
|
}:
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "lnd";
|
pname = "lnd";
|
||||||
version = "0.10.0-beta";
|
version = "0.10.3-beta";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "lightningnetwork";
|
owner = "lightningnetwork";
|
||||||
repo = "lnd";
|
repo = "lnd";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1amciz924s2h6qhy7w34jpv1jc25p5ayfxzvjph6hhx0bccrm88w";
|
sha256 = "129vi8z2sk4hagk7axa675nba6sbj9km88zlq8a1g8di7v2k9z6a";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "1iyghg11cxvbzi0gl40fvv8pl3d3k52j179w3x5m1f09r5ji223y";
|
vendorSha256 = "0a4bk2qry0isnrvl0adwikqn6imxwzlaq5j3nglb5rmwwq2cdz0r";
|
||||||
|
|
||||||
subPackages = ["cmd/lncli" "cmd/lnd"];
|
subPackages = ["cmd/lncli" "cmd/lnd"];
|
||||||
|
|
||||||
|
preBuild = let
|
||||||
|
buildVars = {
|
||||||
|
RawTags = lib.concatStringsSep "," tags;
|
||||||
|
GoVersion = "$(go version | egrep -o 'go[0-9]+[.][^ ]*')";
|
||||||
|
};
|
||||||
|
buildVarsFlags = lib.concatStringsSep " " (lib.mapAttrsToList (k: v: "-X github.com/lightningnetwork/lnd/build.${k}=${v}") buildVars);
|
||||||
|
in
|
||||||
|
lib.optionalString (tags != []) ''
|
||||||
|
buildFlagsArray+=("-tags=${lib.concatStringsSep " " tags}")
|
||||||
|
buildFlagsArray+=("-ldflags=${buildVarsFlags}")
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Lightning Network Daemon";
|
description = "Lightning Network Daemon";
|
||||||
homepage = "https://github.com/lightningnetwork/lnd";
|
homepage = "https://github.com/lightningnetwork/lnd";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
maintainers = with maintainers; [ cypherpunk2140 ];
|
maintainers = with maintainers; [ cypherpunk2140 ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -10,13 +10,13 @@ assert stdenv.isDarwin -> IOKit != null;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "monero";
|
pname = "monero";
|
||||||
version = "0.16.0.0";
|
version = "0.16.0.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "monero-project";
|
owner = "monero-project";
|
||||||
repo = "monero";
|
repo = "monero";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0x74h5z0nxxxip97ibc854pqmrgd8r4d6w62m424f66i8gbzfskh";
|
sha256 = "0n2cviqm8radpynx70fc0819k1xknjc58cvb4whlc49ilyvh8ky6";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,26 +1,26 @@
|
|||||||
{ stdenv, fetchFromGitHub, cmake, boost, miniupnpc_2, openssl, unbound
|
{ stdenv, fetchgit, cmake, boost, miniupnpc_2, openssl, unbound
|
||||||
, readline, libsodium, rapidjson, fetchurl
|
, readline, libsodium, rapidjson, fetchurl
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
randomwowVersion = "1.1.6";
|
randomwowVersion = "1.1.7";
|
||||||
randomwow = fetchurl {
|
randomwow = fetchurl {
|
||||||
url = "https://github.com/wownero/RandomWOW/archive/${randomwowVersion}.tar.gz";
|
url = "https://github.com/wownero/RandomWOW/archive/${randomwowVersion}.tar.gz";
|
||||||
sha256 = "1c55y2dwrayh6k1avpchs89gq1mvy5c305h92jm2k48kzhw6a792";
|
sha256 = "1xp76zf01hnhnk6rjvqjav9n9pnvxzxlzqa5rc574d1c2qczfy3q";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "wownero";
|
pname = "wownero";
|
||||||
version = "0.8.0.0";
|
version = "0.8.0.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchgit {
|
||||||
owner = "wownero";
|
url = "https://git.wownero.com/wownero/wownero.git";
|
||||||
repo = "wownero";
|
rev = "v${version}";
|
||||||
rev = "v${version}";
|
sha256 = "15443xv6q1nw4627ajk6k4ghhahvh82lb4gyb8nvq753p2v838g3";
|
||||||
sha256 = "14nggivilgzaqhjd4ng3g2p884yp2hc322hpcpwjdnz2zfc3qq6c";
|
fetchSubmodules = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
@ -198,7 +198,8 @@ in runCommand
|
|||||||
# binaries are also distributed as proprietary software (unlike the
|
# binaries are also distributed as proprietary software (unlike the
|
||||||
# source-code itself).
|
# source-code itself).
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = [ "x86_64-linux" ];
|
||||||
maintainers = with maintainers; [ primeos ];
|
maintainers = with maintainers; ([ ]
|
||||||
|
++ optional (channel == "stable") primeos);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
|
@ -8,9 +8,9 @@ let
|
|||||||
inherit (gnome2) GConf gnome_vfs;
|
inherit (gnome2) GConf gnome_vfs;
|
||||||
};
|
};
|
||||||
stableVersion = {
|
stableVersion = {
|
||||||
version = "4.0.0.16"; # "Android Studio 4.0"
|
version = "4.0.1.0"; # "Android Studio 4.0.1"
|
||||||
build = "193.6514223";
|
build = "193.6626763";
|
||||||
sha256Hash = "1sqj64vddwfrr9821habfz7dms9csvbp7b8gf1d027188b2lvh3h";
|
sha256Hash = "15vm7fvi8c286wx9f28z6ysvm8wqqda759qql0zy9simwx22gy7j";
|
||||||
};
|
};
|
||||||
betaVersion = {
|
betaVersion = {
|
||||||
version = "4.0.0.16"; # "Android Studio 4.0"
|
version = "4.0.0.16"; # "Android Studio 4.0"
|
||||||
|
@ -34,6 +34,8 @@ stdenv.mkDerivation rec {
|
|||||||
"-DUSE_KWALLET=OFF"
|
"-DUSE_KWALLET=OFF"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Doc has high risk of collisions
|
||||||
|
postInstall = "rm -r $out/share/doc";
|
||||||
|
|
||||||
# darktable changed its rpath handling in commit
|
# darktable changed its rpath handling in commit
|
||||||
# 83c70b876af6484506901e6b381304ae0d073d3c and as a result the
|
# 83c70b876af6484506901e6b381304ae0d073d3c and as a result the
|
||||||
@ -43,6 +45,10 @@ stdenv.mkDerivation rec {
|
|||||||
libPathEnvVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
|
libPathEnvVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
|
||||||
libPathPrefix = "$out/lib/darktable" + stdenv.lib.optionalString stdenv.isLinux ":${ocl-icd}/lib";
|
libPathPrefix = "$out/lib/darktable" + stdenv.lib.optionalString stdenv.isLinux ":${ocl-icd}/lib";
|
||||||
in ''
|
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+=(
|
gappsWrapperArgs+=(
|
||||||
--prefix ${libPathEnvVar} ":" "${libPathPrefix}"
|
--prefix ${libPathEnvVar} ":" "${libPathPrefix}"
|
||||||
)
|
)
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "drawio";
|
pname = "drawio";
|
||||||
version = "13.3.9";
|
version = "13.4.5";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm";
|
url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/draw.io-x86_64-${version}.rpm";
|
||||||
sha256 = "1i1idjy80x6a0w40lziivyhg8nnlbpri7xdqxikxy982vffgihwp";
|
sha256 = "1vp5krgj0xzhkiidj658ij6j10d2p97l1nifx0nrqysblcz2km3g";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -18,13 +18,13 @@
|
|||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "nomacs";
|
pname = "nomacs";
|
||||||
version = "3.14.2";
|
version = "3.15.1616";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "nomacs";
|
owner = "nomacs";
|
||||||
repo = "nomacs";
|
repo = "nomacs";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1vms13kyg7cpqi2hxvrrhlnl7cq92ijr7dm1kl5ryglpcagqv811";
|
sha256 = "0g1saqf31zncqdiwk7aaf951j3g33bg0vcjcr5mvg600jxiinw8j";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
{stdenv, fetchurl, libX11, libXft}:
|
{stdenv, fetchurl, libX11, libXft}:
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "xfractint";
|
pname = "xfractint";
|
||||||
version = "20.04p14";
|
version = "20.04p15";
|
||||||
# or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
|
# or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.fractint.net/ftp/current/linux/xfractint-${version}.tar.gz";
|
url = "https://www.fractint.net/ftp/current/linux/xfractint-${version}.tar.gz";
|
||||||
sha256 = "0jdqr639z862qrswwk5srmv4fj5d7rl8kcscpn6mlkx4jvjmca0f";
|
sha256 = "1wv2hgyjvrjxzqxb55vz65ra80p24j8sd34llykk2qlx73x8f3nk";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [libX11 libXft];
|
buildInputs = [libX11 libXft];
|
||||||
|
@ -1,27 +1,42 @@
|
|||||||
Index: akonadi-19.08.0/src/akonadicontrol/agentmanager.cpp
|
From 90969b9b36400d47b1afe761fb8468c1acb8a04a Mon Sep 17 00:00:00 2001
|
||||||
===================================================================
|
From: Thomas Tuegel <ttuegel@mailbox.org>
|
||||||
--- akonadi-19.08.0.orig/src/akonadicontrol/agentmanager.cpp
|
Date: Mon, 13 Jul 2020 11:41:19 -0500
|
||||||
+++ akonadi-19.08.0/src/akonadicontrol/agentmanager.cpp
|
Subject: [PATCH 1/3] akonadi paths
|
||||||
@@ -78,12 +78,12 @@ AgentManager::AgentManager(bool verbose,
|
|
||||||
mStorageController = new Akonadi::ProcessControl;
|
---
|
||||||
mStorageController->setShutdownTimeout(15 * 1000); // the server needs more time for shutdown if we are using an internal mysqld
|
src/akonadicontrol/agentmanager.cpp | 4 ++--
|
||||||
connect(mStorageController, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::serverFailure);
|
src/akonadicontrol/agentprocessinstance.cpp | 2 +-
|
||||||
- mStorageController->start(QStringLiteral("akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
|
src/server/storage/dbconfigmysql.cpp | 26 ++++-----------------
|
||||||
+ mStorageController->start(QLatin1String(NIX_OUT "/bin/akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
|
src/server/storage/dbconfigpostgresql.cpp | 19 +++------------
|
||||||
|
4 files changed, 11 insertions(+), 40 deletions(-)
|
||||||
if (mAgentServerEnabled) {
|
|
||||||
mAgentServer = new Akonadi::ProcessControl;
|
diff --git a/src/akonadicontrol/agentmanager.cpp b/src/akonadicontrol/agentmanager.cpp
|
||||||
connect(mAgentServer, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::agentServerFailure);
|
index 23b4a1f..c13b658 100644
|
||||||
- mAgentServer->start(QStringLiteral("akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
|
--- a/src/akonadicontrol/agentmanager.cpp
|
||||||
+ mAgentServer->start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
|
+++ b/src/akonadicontrol/agentmanager.cpp
|
||||||
|
@@ -61,7 +61,7 @@ public:
|
||||||
|
[]() {
|
||||||
|
QCoreApplication::instance()->exit(255);
|
||||||
|
});
|
||||||
|
- start(QStringLiteral("akonadiserver"), args, RestartOnCrash);
|
||||||
|
+ start(QLatin1String(NIX_OUT "/bin/akonadiserver"), args, RestartOnCrash);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Index: akonadi-19.08.0/src/akonadicontrol/agentprocessinstance.cpp
|
~StorageProcessControl() override
|
||||||
===================================================================
|
@@ -84,7 +84,7 @@ public:
|
||||||
--- akonadi-19.08.0.orig/src/akonadicontrol/agentprocessinstance.cpp
|
[]() {
|
||||||
+++ akonadi-19.08.0/src/akonadicontrol/agentprocessinstance.cpp
|
qCCritical(AKONADICONTROL_LOG) << "Failed to start AgentServer!";
|
||||||
@@ -62,7 +62,7 @@ bool AgentProcessInstance::start(const A
|
});
|
||||||
|
- start(QStringLiteral("akonadi_agent_server"), args, RestartOnCrash);
|
||||||
|
+ start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), args, RestartOnCrash);
|
||||||
|
}
|
||||||
|
|
||||||
|
~AgentServerProcessControl() override
|
||||||
|
diff --git a/src/akonadicontrol/agentprocessinstance.cpp b/src/akonadicontrol/agentprocessinstance.cpp
|
||||||
|
index 4e58f7e..e8bb532 100644
|
||||||
|
--- a/src/akonadicontrol/agentprocessinstance.cpp
|
||||||
|
+++ b/src/akonadicontrol/agentprocessinstance.cpp
|
||||||
|
@@ -62,7 +62,7 @@ bool AgentProcessInstance::start(const AgentType &agentInfo)
|
||||||
} else {
|
} else {
|
||||||
Q_ASSERT(agentInfo.launchMethod == AgentType::Launcher);
|
Q_ASSERT(agentInfo.launchMethod == AgentType::Launcher);
|
||||||
const QStringList arguments = QStringList() << executable << identifier();
|
const QStringList arguments = QStringList() << executable << identifier();
|
||||||
@ -30,11 +45,11 @@ Index: akonadi-19.08.0/src/akonadicontrol/agentprocessinstance.cpp
|
|||||||
mController->start(agentLauncherExec, arguments);
|
mController->start(agentLauncherExec, arguments);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
diff --git a/src/server/storage/dbconfigmysql.cpp b/src/server/storage/dbconfigmysql.cpp
|
||||||
===================================================================
|
index cac40f5..527649b 100644
|
||||||
--- akonadi-19.08.0.orig/src/server/storage/dbconfigmysql.cpp
|
--- a/src/server/storage/dbconfigmysql.cpp
|
||||||
+++ akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
+++ b/src/server/storage/dbconfigmysql.cpp
|
||||||
@@ -83,7 +83,6 @@ bool DbConfigMysql::init(QSettings &sett
|
@@ -83,7 +83,6 @@ bool DbConfigMysql::init(QSettings &settings)
|
||||||
// determine default settings depending on the driver
|
// determine default settings depending on the driver
|
||||||
QString defaultHostName;
|
QString defaultHostName;
|
||||||
QString defaultOptions;
|
QString defaultOptions;
|
||||||
@ -42,7 +57,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|||||||
QString defaultCleanShutdownCommand;
|
QString defaultCleanShutdownCommand;
|
||||||
|
|
||||||
#ifndef Q_OS_WIN
|
#ifndef Q_OS_WIN
|
||||||
@@ -92,16 +91,7 @@ bool DbConfigMysql::init(QSettings &sett
|
@@ -92,16 +91,7 @@ bool DbConfigMysql::init(QSettings &settings)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const bool defaultInternalServer = true;
|
const bool defaultInternalServer = true;
|
||||||
@ -60,7 +75,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|||||||
if (!mysqladminPath.isEmpty()) {
|
if (!mysqladminPath.isEmpty()) {
|
||||||
#ifndef Q_OS_WIN
|
#ifndef Q_OS_WIN
|
||||||
defaultCleanShutdownCommand = QStringLiteral("%1 --defaults-file=%2/mysql.conf --socket=%3/%4 shutdown")
|
defaultCleanShutdownCommand = QStringLiteral("%1 --defaults-file=%2/mysql.conf --socket=%3/%4 shutdown")
|
||||||
@@ -111,10 +101,10 @@ bool DbConfigMysql::init(QSettings &sett
|
@@ -111,10 +101,10 @@ bool DbConfigMysql::init(QSettings &settings)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,7 +88,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|||||||
qCDebug(AKONADISERVER_LOG) << "Found mysqlcheck: " << mMysqlCheckPath;
|
qCDebug(AKONADISERVER_LOG) << "Found mysqlcheck: " << mMysqlCheckPath;
|
||||||
|
|
||||||
mInternalServer = settings.value(QStringLiteral("QMYSQL/StartServer"), defaultInternalServer).toBool();
|
mInternalServer = settings.value(QStringLiteral("QMYSQL/StartServer"), defaultInternalServer).toBool();
|
||||||
@@ -131,7 +121,7 @@ bool DbConfigMysql::init(QSettings &sett
|
@@ -131,7 +121,7 @@ bool DbConfigMysql::init(QSettings &settings)
|
||||||
mUserName = settings.value(QStringLiteral("User")).toString();
|
mUserName = settings.value(QStringLiteral("User")).toString();
|
||||||
mPassword = settings.value(QStringLiteral("Password")).toString();
|
mPassword = settings.value(QStringLiteral("Password")).toString();
|
||||||
mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
|
mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
|
||||||
@ -82,7 +97,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|||||||
mCleanServerShutdownCommand = settings.value(QStringLiteral("CleanServerShutdownCommand"), defaultCleanShutdownCommand).toString();
|
mCleanServerShutdownCommand = settings.value(QStringLiteral("CleanServerShutdownCommand"), defaultCleanShutdownCommand).toString();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
@@ -141,9 +131,6 @@ bool DbConfigMysql::init(QSettings &sett
|
@@ -141,9 +131,6 @@ bool DbConfigMysql::init(QSettings &settings)
|
||||||
// intentionally not namespaced as we are the only one in this db instance when using internal mode
|
// intentionally not namespaced as we are the only one in this db instance when using internal mode
|
||||||
mDatabaseName = QStringLiteral("akonadi");
|
mDatabaseName = QStringLiteral("akonadi");
|
||||||
}
|
}
|
||||||
@ -92,7 +107,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|||||||
|
|
||||||
qCDebug(AKONADISERVER_LOG) << "Using mysqld:" << mMysqldPath;
|
qCDebug(AKONADISERVER_LOG) << "Using mysqld:" << mMysqldPath;
|
||||||
|
|
||||||
@@ -152,9 +139,6 @@ bool DbConfigMysql::init(QSettings &sett
|
@@ -152,9 +139,6 @@ bool DbConfigMysql::init(QSettings &settings)
|
||||||
settings.setValue(QStringLiteral("Name"), mDatabaseName);
|
settings.setValue(QStringLiteral("Name"), mDatabaseName);
|
||||||
settings.setValue(QStringLiteral("Host"), mHostName);
|
settings.setValue(QStringLiteral("Host"), mHostName);
|
||||||
settings.setValue(QStringLiteral("Options"), mConnectionOptions);
|
settings.setValue(QStringLiteral("Options"), mConnectionOptions);
|
||||||
@ -102,7 +117,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|||||||
settings.setValue(QStringLiteral("StartServer"), mInternalServer);
|
settings.setValue(QStringLiteral("StartServer"), mInternalServer);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
settings.sync();
|
settings.sync();
|
||||||
@@ -209,7 +193,7 @@ bool DbConfigMysql::startInternalServer(
|
@@ -209,7 +193,7 @@ bool DbConfigMysql::startInternalServer()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// generate config file
|
// generate config file
|
||||||
@ -111,11 +126,11 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|||||||
const QString localConfig = StandardDirs::locateResourceFile("config", QStringLiteral("mysql-local.conf"));
|
const QString localConfig = StandardDirs::locateResourceFile("config", QStringLiteral("mysql-local.conf"));
|
||||||
const QString actualConfig = StandardDirs::saveDir("data") + QLatin1String("/mysql.conf");
|
const QString actualConfig = StandardDirs::saveDir("data") + QLatin1String("/mysql.conf");
|
||||||
if (globalConfig.isEmpty()) {
|
if (globalConfig.isEmpty()) {
|
||||||
Index: akonadi-19.08.0/src/server/storage/dbconfigpostgresql.cpp
|
diff --git a/src/server/storage/dbconfigpostgresql.cpp b/src/server/storage/dbconfigpostgresql.cpp
|
||||||
===================================================================
|
index 09cdbd5..1c8996b 100644
|
||||||
--- akonadi-19.08.0.orig/src/server/storage/dbconfigpostgresql.cpp
|
--- a/src/server/storage/dbconfigpostgresql.cpp
|
||||||
+++ akonadi-19.08.0/src/server/storage/dbconfigpostgresql.cpp
|
+++ b/src/server/storage/dbconfigpostgresql.cpp
|
||||||
@@ -140,9 +140,7 @@ bool DbConfigPostgresql::init(QSettings
|
@@ -141,9 +141,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
||||||
// determine default settings depending on the driver
|
// determine default settings depending on the driver
|
||||||
QString defaultHostName;
|
QString defaultHostName;
|
||||||
QString defaultOptions;
|
QString defaultOptions;
|
||||||
@ -125,7 +140,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigpostgresql.cpp
|
|||||||
QString defaultPgData;
|
QString defaultPgData;
|
||||||
|
|
||||||
#ifndef Q_WS_WIN // We assume that PostgreSQL is running as service on Windows
|
#ifndef Q_WS_WIN // We assume that PostgreSQL is running as service on Windows
|
||||||
@@ -153,12 +151,8 @@ bool DbConfigPostgresql::init(QSettings
|
@@ -154,12 +152,8 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
||||||
|
|
||||||
mInternalServer = settings.value(QStringLiteral("QPSQL/StartServer"), defaultInternalServer).toBool();
|
mInternalServer = settings.value(QStringLiteral("QPSQL/StartServer"), defaultInternalServer).toBool();
|
||||||
if (mInternalServer) {
|
if (mInternalServer) {
|
||||||
@ -139,7 +154,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigpostgresql.cpp
|
|||||||
defaultPgData = StandardDirs::saveDir("data", QStringLiteral("db_data"));
|
defaultPgData = StandardDirs::saveDir("data", QStringLiteral("db_data"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,20 +171,14 @@ bool DbConfigPostgresql::init(QSettings
|
@@ -178,20 +172,14 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
||||||
mUserName = settings.value(QStringLiteral("User")).toString();
|
mUserName = settings.value(QStringLiteral("User")).toString();
|
||||||
mPassword = settings.value(QStringLiteral("Password")).toString();
|
mPassword = settings.value(QStringLiteral("Password")).toString();
|
||||||
mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
|
mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
|
||||||
@ -162,7 +177,7 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigpostgresql.cpp
|
|||||||
qCDebug(AKONADISERVER_LOG) << "Found pg_upgrade:" << mPgUpgradePath;
|
qCDebug(AKONADISERVER_LOG) << "Found pg_upgrade:" << mPgUpgradePath;
|
||||||
mPgData = settings.value(QStringLiteral("PgData"), defaultPgData).toString();
|
mPgData = settings.value(QStringLiteral("PgData"), defaultPgData).toString();
|
||||||
if (mPgData.isEmpty()) {
|
if (mPgData.isEmpty()) {
|
||||||
@@ -206,7 +194,6 @@ bool DbConfigPostgresql::init(QSettings
|
@@ -207,7 +195,6 @@ bool DbConfigPostgresql::init(QSettings &settings)
|
||||||
settings.setValue(QStringLiteral("Port"), mHostPort);
|
settings.setValue(QStringLiteral("Port"), mHostPort);
|
||||||
}
|
}
|
||||||
settings.setValue(QStringLiteral("Options"), mConnectionOptions);
|
settings.setValue(QStringLiteral("Options"), mConnectionOptions);
|
||||||
@ -170,3 +185,6 @@ Index: akonadi-19.08.0/src/server/storage/dbconfigpostgresql.cpp
|
|||||||
settings.setValue(QStringLiteral("InitDbPath"), mInitDbPath);
|
settings.setValue(QStringLiteral("InitDbPath"), mInitDbPath);
|
||||||
settings.setValue(QStringLiteral("StartServer"), mInternalServer);
|
settings.setValue(QStringLiteral("StartServer"), mInternalServer);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
--
|
||||||
|
2.25.4
|
||||||
|
|
26
pkgs/applications/kde/akonadi/0002-akonadi-timestamps.patch
Normal file
26
pkgs/applications/kde/akonadi/0002-akonadi-timestamps.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From b8c6a2a017321649db8fec553a644b8da2300514 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Tuegel <ttuegel@mailbox.org>
|
||||||
|
Date: Mon, 13 Jul 2020 11:41:35 -0500
|
||||||
|
Subject: [PATCH 2/3] akonadi timestamps
|
||||||
|
|
||||||
|
---
|
||||||
|
src/server/storage/dbconfigmysql.cpp | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/server/storage/dbconfigmysql.cpp b/src/server/storage/dbconfigmysql.cpp
|
||||||
|
index 527649b..08c3dd4 100644
|
||||||
|
--- a/src/server/storage/dbconfigmysql.cpp
|
||||||
|
+++ b/src/server/storage/dbconfigmysql.cpp
|
||||||
|
@@ -235,8 +235,7 @@ bool DbConfigMysql::startInternalServer()
|
||||||
|
bool confUpdate = false;
|
||||||
|
QFile actualFile(actualConfig);
|
||||||
|
// update conf only if either global (or local) is newer than actual
|
||||||
|
- if ((QFileInfo(globalConfig).lastModified() > QFileInfo(actualFile).lastModified()) ||
|
||||||
|
- (QFileInfo(localConfig).lastModified() > QFileInfo(actualFile).lastModified())) {
|
||||||
|
+ if (true) {
|
||||||
|
QFile globalFile(globalConfig);
|
||||||
|
QFile localFile(localConfig);
|
||||||
|
if (globalFile.open(QFile::ReadOnly) && actualFile.open(QFile::WriteOnly)) {
|
||||||
|
--
|
||||||
|
2.25.4
|
||||||
|
|
@ -1,19 +1,18 @@
|
|||||||
From bc018b4bc816a3b51deb9739bedbf8a2268d0684 Mon Sep 17 00:00:00 2001
|
From 7afe018382cf68b477b35f87b666424d62d19ef4 Mon Sep 17 00:00:00 2001
|
||||||
From: gnidorah <gnidorah@users.noreply.github.com>
|
From: Thomas Tuegel <ttuegel@mailbox.org>
|
||||||
Date: Fri, 22 Dec 2017 17:36:03 +0300
|
Date: Mon, 13 Jul 2020 11:41:55 -0500
|
||||||
Subject: [PATCH] Revert "Make Akonadi installation properly relocatable"
|
Subject: [PATCH 3/3] akonadi revert make relocatable
|
||||||
|
|
||||||
This reverts commit b2bb55f13f2ac783f89cc414de8c39f62fa2096a.
|
|
||||||
---
|
---
|
||||||
CMakeLists.txt | 3 ---
|
CMakeLists.txt | 3 ---
|
||||||
KF5AkonadiConfig.cmake.in | 6 +++---
|
KF5AkonadiConfig.cmake.in | 6 +++---
|
||||||
2 files changed, 3 insertions(+), 6 deletions(-)
|
2 files changed, 3 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
Index: akonadi-19.08.0/CMakeLists.txt
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
===================================================================
|
index d927471..83a74c0 100644
|
||||||
--- akonadi-19.08.0.orig/CMakeLists.txt
|
--- a/CMakeLists.txt
|
||||||
+++ akonadi-19.08.0/CMakeLists.txt
|
+++ b/CMakeLists.txt
|
||||||
@@ -306,9 +306,6 @@ configure_package_config_file(
|
@@ -330,9 +330,6 @@ configure_package_config_file(
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/KF5AkonadiConfig.cmake.in"
|
"${CMAKE_CURRENT_SOURCE_DIR}/KF5AkonadiConfig.cmake.in"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/KF5AkonadiConfig.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/KF5AkonadiConfig.cmake"
|
||||||
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
||||||
@ -23,11 +22,11 @@ Index: akonadi-19.08.0/CMakeLists.txt
|
|||||||
)
|
)
|
||||||
|
|
||||||
install(FILES
|
install(FILES
|
||||||
Index: akonadi-19.08.0/KF5AkonadiConfig.cmake.in
|
diff --git a/KF5AkonadiConfig.cmake.in b/KF5AkonadiConfig.cmake.in
|
||||||
===================================================================
|
index 421e1df..e3abf27 100644
|
||||||
--- akonadi-19.08.0.orig/KF5AkonadiConfig.cmake.in
|
--- a/KF5AkonadiConfig.cmake.in
|
||||||
+++ akonadi-19.08.0/KF5AkonadiConfig.cmake.in
|
+++ b/KF5AkonadiConfig.cmake.in
|
||||||
@@ -26,8 +26,8 @@ if(BUILD_TESTING)
|
@@ -24,8 +24,8 @@ if(BUILD_TESTING)
|
||||||
find_dependency(Qt5Test "@QT_REQUIRED_VERSION@")
|
find_dependency(Qt5Test "@QT_REQUIRED_VERSION@")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -38,7 +37,7 @@ Index: akonadi-19.08.0/KF5AkonadiConfig.cmake.in
|
|||||||
|
|
||||||
find_dependency(Boost "@Boost_MINIMUM_VERSION@")
|
find_dependency(Boost "@Boost_MINIMUM_VERSION@")
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/KF5Ako
|
@@ -33,7 +33,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/KF5AkonadiTargets.cmake)
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/KF5AkonadiMacros.cmake)
|
include(${CMAKE_CURRENT_LIST_DIR}/KF5AkonadiMacros.cmake)
|
||||||
|
|
||||||
# The directory where akonadi-xml.xsd and kcfg2dbus.xsl are installed
|
# The directory where akonadi-xml.xsd and kcfg2dbus.xsl are installed
|
||||||
@ -47,3 +46,6 @@ Index: akonadi-19.08.0/KF5AkonadiConfig.cmake.in
|
|||||||
|
|
||||||
####################################################################################
|
####################################################################################
|
||||||
# CMAKE_AUTOMOC
|
# CMAKE_AUTOMOC
|
||||||
|
--
|
||||||
|
2.25.4
|
||||||
|
|
@ -1,14 +0,0 @@
|
|||||||
Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|
||||||
===================================================================
|
|
||||||
--- akonadi-19.08.0.orig/src/server/storage/dbconfigmysql.cpp
|
|
||||||
+++ akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
|
|
||||||
@@ -235,8 +235,7 @@ bool DbConfigMysql::startInternalServer(
|
|
||||||
bool confUpdate = false;
|
|
||||||
QFile actualFile(actualConfig);
|
|
||||||
// update conf only if either global (or local) is newer than actual
|
|
||||||
- if ((QFileInfo(globalConfig).lastModified() > QFileInfo(actualFile).lastModified()) ||
|
|
||||||
- (QFileInfo(localConfig).lastModified() > QFileInfo(actualFile).lastModified())) {
|
|
||||||
+ if (true) {
|
|
||||||
QFile globalFile(globalConfig);
|
|
||||||
QFile localFile(localConfig);
|
|
||||||
if (globalFile.open(QFile::ReadOnly) && actualFile.open(QFile::WriteOnly)) {
|
|
@ -11,7 +11,11 @@ mkDerivation {
|
|||||||
license = [ lib.licenses.lgpl21 ];
|
license = [ lib.licenses.lgpl21 ];
|
||||||
maintainers = kdepimTeam;
|
maintainers = kdepimTeam;
|
||||||
};
|
};
|
||||||
patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
|
patches = [
|
||||||
|
./0001-akonadi-paths.patch
|
||||||
|
./0002-akonadi-timestamps.patch
|
||||||
|
./0003-akonadi-revert-make-relocatable.patch
|
||||||
|
];
|
||||||
nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
|
nativeBuildInputs = [ extra-cmake-modules shared-mime-info ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
kcompletion kconfigwidgets kcrash kdbusaddons kdesignerplugin ki18n
|
kcompletion kconfigwidgets kcrash kdbusaddons kdesignerplugin ki18n
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
akonadi-paths.patch
|
|
||||||
akonadi-timestamps.patch
|
|
||||||
0001-Revert-Make-Akonadi-installation-properly-relocatabl.patch
|
|
@ -84,6 +84,7 @@ let
|
|||||||
eventviews = callPackage ./eventviews.nix {};
|
eventviews = callPackage ./eventviews.nix {};
|
||||||
ffmpegthumbs = callPackage ./ffmpegthumbs.nix { };
|
ffmpegthumbs = callPackage ./ffmpegthumbs.nix { };
|
||||||
filelight = callPackage ./filelight.nix {};
|
filelight = callPackage ./filelight.nix {};
|
||||||
|
granatier = callPackage ./granatier.nix {};
|
||||||
grantleetheme = callPackage ./grantleetheme {};
|
grantleetheme = callPackage ./grantleetheme {};
|
||||||
gwenview = callPackage ./gwenview.nix {};
|
gwenview = callPackage ./gwenview.nix {};
|
||||||
incidenceeditor = callPackage ./incidenceeditor.nix {};
|
incidenceeditor = callPackage ./incidenceeditor.nix {};
|
||||||
@ -176,6 +177,7 @@ let
|
|||||||
messagelib = callPackage ./messagelib.nix {};
|
messagelib = callPackage ./messagelib.nix {};
|
||||||
minuet = callPackage ./minuet.nix {};
|
minuet = callPackage ./minuet.nix {};
|
||||||
okular = callPackage ./okular.nix {};
|
okular = callPackage ./okular.nix {};
|
||||||
|
picmi = callPackage ./picmi.nix {};
|
||||||
pimcommon = callPackage ./pimcommon.nix {};
|
pimcommon = callPackage ./pimcommon.nix {};
|
||||||
pim-data-exporter = callPackage ./pim-data-exporter.nix {};
|
pim-data-exporter = callPackage ./pim-data-exporter.nix {};
|
||||||
pim-sieve-editor = callPackage ./pim-sieve-editor.nix {};
|
pim-sieve-editor = callPackage ./pim-sieve-editor.nix {};
|
||||||
|
@ -1 +1 @@
|
|||||||
WGET_ARGS=( http://download.kde.org/stable/release-service/19.12.3/src )
|
WGET_ARGS=(http://download.kde.org/stable/release-service/20.04.1/src)
|
||||||
|
23
pkgs/applications/kde/granatier.nix
Normal file
23
pkgs/applications/kde/granatier.nix
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{ mkDerivation, lib
|
||||||
|
, libkdegames, extra-cmake-modules
|
||||||
|
, kdeclarative, knewstuff
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
name = "granatier";
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://kde.org/applications/en/games/org.kde.granatier";
|
||||||
|
description = "Granatier is a clone of the classic Bomberman game";
|
||||||
|
maintainers = with maintainers; [ freezeboy ];
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
nativeBuildInputs = [
|
||||||
|
extra-cmake-modules
|
||||||
|
];
|
||||||
|
buildInputs = [
|
||||||
|
kdeclarative
|
||||||
|
knewstuff
|
||||||
|
libkdegames
|
||||||
|
];
|
||||||
|
}
|
@ -9,14 +9,6 @@ mkDerivation {
|
|||||||
license = [ lib.licenses.lgpl21 ];
|
license = [ lib.licenses.lgpl21 ];
|
||||||
maintainers = [ lib.maintainers.ttuegel ];
|
maintainers = [ lib.maintainers.ttuegel ];
|
||||||
};
|
};
|
||||||
patches = [
|
|
||||||
# Fix a bug with thumbnail.so processes hanging:
|
|
||||||
# https://bugs.kde.org/show_bug.cgi?id=404652
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/KDE/kdegraphics-thumbnailers/commit/3e2ea6e924d0e2a2cdd9bb435b06965117d6d34c.patch";
|
|
||||||
sha256 = "0fq85zhymmrq8vl0y6vgh87qf4c6fhcq704p4kpkaq7y0isxj4h1";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
nativeBuildInputs = [ extra-cmake-modules ];
|
nativeBuildInputs = [ extra-cmake-modules ];
|
||||||
buildInputs = [ karchive kio libkexiv2 libkdcraw ];
|
buildInputs = [ karchive kio libkexiv2 libkdcraw ];
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
, frei0r
|
, frei0r
|
||||||
, phonon-backend-gstreamer
|
, phonon-backend-gstreamer
|
||||||
, qtdeclarative
|
, qtdeclarative
|
||||||
, qtquickcontrols
|
, qtquickcontrols2
|
||||||
, qtscript
|
, qtscript
|
||||||
, qtwebkit
|
, qtwebkit
|
||||||
, rttr
|
, rttr
|
||||||
@ -60,7 +60,7 @@ mkDerivation {
|
|||||||
mlt
|
mlt
|
||||||
phonon-backend-gstreamer
|
phonon-backend-gstreamer
|
||||||
qtdeclarative
|
qtdeclarative
|
||||||
qtquickcontrols
|
qtquickcontrols2
|
||||||
qtscript
|
qtscript
|
||||||
qtwebkit
|
qtwebkit
|
||||||
shared-mime-info
|
shared-mime-info
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
mkDerivation, lib, extra-cmake-modules, kdoctools, shared-mime-info,
|
mkDerivation, lib, extra-cmake-modules, kdoctools, shared-mime-info,
|
||||||
exiv2, kactivities, karchive, kbookmarks, kconfig, kconfigwidgets,
|
exiv2, kactivities, karchive, kbookmarks, kconfig, kconfigwidgets,
|
||||||
kcoreaddons, kdbusaddons, kguiaddons, kdnssd, kiconthemes, ki18n, kio, khtml,
|
kcoreaddons, kdbusaddons, kdsoap, kguiaddons, kdnssd, kiconthemes, ki18n, kio,
|
||||||
kdelibs4support, kpty, syntax-highlighting, libmtp, libssh, openexr, ilmbase,
|
khtml, kdelibs4support, kpty, syntax-highlighting, libmtp, libssh, openexr,
|
||||||
openslp, phonon, qtsvg, samba, solid, gperf
|
ilmbase, openslp, phonon, qtsvg, samba, solid, gperf
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
@ -15,9 +15,9 @@ mkDerivation {
|
|||||||
nativeBuildInputs = [ extra-cmake-modules kdoctools shared-mime-info ];
|
nativeBuildInputs = [ extra-cmake-modules kdoctools shared-mime-info ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
exiv2 kactivities karchive kbookmarks kconfig kconfigwidgets kcoreaddons
|
exiv2 kactivities karchive kbookmarks kconfig kconfigwidgets kcoreaddons
|
||||||
kdbusaddons kguiaddons kdnssd kiconthemes ki18n kio khtml kdelibs4support
|
kdbusaddons kdsoap kguiaddons kdnssd kiconthemes ki18n kio khtml
|
||||||
kpty syntax-highlighting libmtp libssh openexr openslp phonon qtsvg samba
|
kdelibs4support kpty syntax-highlighting libmtp libssh openexr openslp
|
||||||
solid gperf
|
phonon qtsvg samba solid gperf
|
||||||
];
|
];
|
||||||
CXXFLAGS = [ "-I${ilmbase.dev}/include/OpenEXR" ];
|
CXXFLAGS = [ "-I${ilmbase.dev}/include/OpenEXR" ];
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
kmail-account-wizard, kmailtransport, knotifications, knotifyconfig,
|
kmail-account-wizard, kmailtransport, knotifications, knotifyconfig,
|
||||||
kontactinterface, kparts, kpty, kservice, ktextwidgets, ktnef, kwallet,
|
kontactinterface, kparts, kpty, kservice, ktextwidgets, ktnef, kwallet,
|
||||||
kwidgetsaddons, kwindowsystem, kxmlgui, libgravatar, libksieve, mailcommon,
|
kwidgetsaddons, kwindowsystem, kxmlgui, libgravatar, libksieve, mailcommon,
|
||||||
messagelib, pim-sieve-editor, qtscript, qtwebengine, akonadi
|
messagelib, pim-sieve-editor, qtscript, qtwebengine, akonadi, kdepim-addons
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
@ -24,6 +24,7 @@ mkDerivation {
|
|||||||
knotifications knotifyconfig kontactinterface kparts kpty kservice
|
knotifications knotifyconfig kontactinterface kparts kpty kservice
|
||||||
ktextwidgets ktnef kwidgetsaddons kwindowsystem kxmlgui libgravatar
|
ktextwidgets ktnef kwidgetsaddons kwindowsystem kxmlgui libgravatar
|
||||||
libksieve mailcommon messagelib pim-sieve-editor qtscript qtwebengine
|
libksieve mailcommon messagelib pim-sieve-editor qtscript qtwebengine
|
||||||
|
kdepim-addons
|
||||||
];
|
];
|
||||||
propagatedUserEnvPkgs = [ kdepim-runtime kwallet akonadi ];
|
propagatedUserEnvPkgs = [ kdepim-runtime kwallet akonadi ];
|
||||||
patches = [ ./kmail.patch ];
|
patches = [ ./kmail.patch ];
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
grantleetheme, karchive, kcodecs, kconfig, kconfigwidgets, kcontacts,
|
grantleetheme, karchive, kcodecs, kconfig, kconfigwidgets, kcontacts,
|
||||||
kdepim-apps-libs, kiconthemes, kidentitymanagement, kio, kjobwidgets, kldap,
|
kdepim-apps-libs, kiconthemes, kidentitymanagement, kio, kjobwidgets, kldap,
|
||||||
kmailtransport, kmbox, kmime, kwindowsystem, libgravatar, libkdepim, libkleo,
|
kmailtransport, kmbox, kmime, kwindowsystem, libgravatar, libkdepim, libkleo,
|
||||||
pimcommon, qtwebengine, qtwebkit, syntax-highlighting
|
pimcommon, qca-qt5, qtwebengine, qtwebkit, syntax-highlighting
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
@ -18,7 +18,7 @@ mkDerivation {
|
|||||||
buildInputs = [
|
buildInputs = [
|
||||||
akonadi-notes akonadi-search gpgme grantlee grantleetheme karchive kcodecs
|
akonadi-notes akonadi-search gpgme grantlee grantleetheme karchive kcodecs
|
||||||
kconfig kconfigwidgets kdepim-apps-libs kiconthemes kio kjobwidgets kldap
|
kconfig kconfigwidgets kdepim-apps-libs kiconthemes kio kjobwidgets kldap
|
||||||
kmailtransport kmbox kmime kwindowsystem libgravatar libkdepim qtwebkit
|
kmailtransport kmbox kmime kwindowsystem libgravatar libkdepim qca-qt5 qtwebkit
|
||||||
syntax-highlighting
|
syntax-highlighting
|
||||||
];
|
];
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
25
pkgs/applications/kde/picmi.nix
Normal file
25
pkgs/applications/kde/picmi.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{ mkDerivation, lib
|
||||||
|
, libkdegames, extra-cmake-modules
|
||||||
|
, kdeclarative, knewstuff
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
name = "picmi";
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Nonogram game";
|
||||||
|
longDescription = ''The goal is to reveal the hidden pattern in the board by coloring or
|
||||||
|
leaving blank the cells in a grid according to numbers given at the side of the grid.
|
||||||
|
'';
|
||||||
|
maintainers = with maintainers; [ freezeboy ];
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
nativeBuildInputs = [
|
||||||
|
extra-cmake-modules
|
||||||
|
];
|
||||||
|
buildInputs = [
|
||||||
|
kdeclarative
|
||||||
|
knewstuff
|
||||||
|
libkdegames
|
||||||
|
];
|
||||||
|
}
|
@ -17,8 +17,8 @@ mkDerivation {
|
|||||||
knewstuff kwayland
|
knewstuff kwayland
|
||||||
];
|
];
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace desktop/org.kde.spectacle.desktop \
|
substituteInPlace desktop/org.kde.spectacle.desktop.cmake \
|
||||||
--replace "Exec=qdbus" "Exec=${lib.getBin qttools}/bin/qdbus"
|
--replace "Exec=@QtBinariesDir@/qdbus" "Exec=${lib.getBin qttools}/bin/qdbus"
|
||||||
'';
|
'';
|
||||||
propagatedUserEnvPkgs = [ kipi-plugins libkipi ];
|
propagatedUserEnvPkgs = [ kipi-plugins libkipi ];
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -7,6 +7,7 @@
|
|||||||
, qtbase
|
, qtbase
|
||||||
, qttools
|
, qttools
|
||||||
, qtx11extras
|
, qtx11extras
|
||||||
|
, qttranslations
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
@ -20,11 +21,21 @@ mkDerivation rec {
|
|||||||
sha256 = "15l8drdmamq1dpqpj0h9ajj2r5vcs23cx421drvhfgs6bqlzd1hl";
|
sha256 = "15l8drdmamq1dpqpj0h9ajj2r5vcs23cx421drvhfgs6bqlzd1hl";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# See https://github.com/NixOS/nixpkgs/issues/86054
|
||||||
|
./fix-qttranslations-path.diff
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkgconfig ];
|
nativeBuildInputs = [ cmake pkgconfig ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
qtbase qttools qtx11extras
|
qtbase qttools qtx11extras
|
||||||
];
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace src/birdtrayapp.cpp \
|
||||||
|
--subst-var-by qttranslations ${qttranslations}
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Mail system tray notification icon for Thunderbird";
|
description = "Mail system tray notification icon for Thunderbird";
|
||||||
homepage = "https://github.com/gyunaev/birdtray";
|
homepage = "https://github.com/gyunaev/birdtray";
|
||||||
|
13
pkgs/applications/misc/birdtray/fix-qttranslations-path.diff
Normal file
13
pkgs/applications/misc/birdtray/fix-qttranslations-path.diff
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/src/birdtrayapp.cpp b/src/birdtrayapp.cpp
|
||||||
|
index 847b4d3..3a3709a 100644
|
||||||
|
--- a/src/birdtrayapp.cpp
|
||||||
|
+++ b/src/birdtrayapp.cpp
|
||||||
|
@@ -130,7 +130,7 @@ bool BirdtrayApp::loadTranslations() {
|
||||||
|
[](QString path) { return path.append("/translations"); });
|
||||||
|
QLocale locale = QLocale::system();
|
||||||
|
bool success = loadTranslation(
|
||||||
|
- qtTranslator, locale, "qt", {QLibraryInfo::location(QLibraryInfo::TranslationsPath)});
|
||||||
|
+ qtTranslator, locale, "qt", {QLatin1String("@qttranslations@/translations")});
|
||||||
|
success &= loadTranslation(dynamicTranslator, locale, "dynamic", locations);
|
||||||
|
success &= loadTranslation(mainTranslator, locale, "main", locations);
|
||||||
|
return success;
|
@ -4,13 +4,13 @@ with stdenv.lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "nnn";
|
pname = "nnn";
|
||||||
version = "3.2";
|
version = "3.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jarun";
|
owner = "jarun";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "13p3379c26l57121ymx0kw7afh51zv614p57di311d2a41jaz5cw";
|
sha256 = "1dxa5blpdf0s03znhnr23zzpsz8yzqpnwknycz42h1w9g9s9jz1v";
|
||||||
};
|
};
|
||||||
|
|
||||||
configFile = optionalString (conf != null) (builtins.toFile "nnn.h" conf);
|
configFile = optionalString (conf != null) (builtins.toFile "nnn.h" conf);
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "pdfarranger";
|
pname = "pdfarranger";
|
||||||
version = "1.5.3";
|
version = "1.6.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "jeromerobert";
|
owner = "jeromerobert";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0a9ap7p8iw57sn5nmhim7gp5as8gj6ir6l3p0bpmg4iqjsr4169h";
|
sha256 = "03siz4ar6flyvrrgh7hr7sslc6n9x5d9i13lc5rm2qnssd0qdich";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -27,6 +27,7 @@ python3Packages.buildPythonApplication rec {
|
|||||||
propagatedBuildInputs = with python3Packages; [
|
propagatedBuildInputs = with python3Packages; [
|
||||||
pygobject3
|
pygobject3
|
||||||
pikepdf
|
pikepdf
|
||||||
|
img2pdf
|
||||||
setuptools
|
setuptools
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ let
|
|||||||
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/i586/libnativewindow_x11.so
|
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/i586/libnativewindow_x11.so
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildInputs = [ ant jdk jre makeWrapper p7zip gtk3 gsettings-desktop-schemas ];
|
buildInputs = [ ant jdk makeWrapper p7zip gtk3 gsettings-desktop-schemas ];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
ant furniture textures help
|
ant furniture textures help
|
||||||
@ -53,7 +53,7 @@ let
|
|||||||
|
|
||||||
makeWrapper ${jre}/bin/java $out/bin/$exec \
|
makeWrapper ${jre}/bin/java $out/bin/$exec \
|
||||||
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
|
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
|
||||||
--add-flags "-jar $out/share/java/${module}-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
|
--add-flags "-Dsun.java2d.opengl=true -jar $out/share/java/${module}-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
pname = "tut";
|
pname = "tut";
|
||||||
version = "0.0.10";
|
version = "0.0.13";
|
||||||
|
|
||||||
goPackagePath = "github.com/RasmusLindroth/tut";
|
goPackagePath = "github.com/RasmusLindroth/tut";
|
||||||
goDeps = ./deps.nix;
|
goDeps = ./deps.nix;
|
||||||
@ -11,7 +11,7 @@ buildGoPackage rec {
|
|||||||
owner = "RasmusLindroth";
|
owner = "RasmusLindroth";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "09l6dmzrvcpix3wg4djs6zk3ql6b6lfhd8z9aglbi6fix4pm8565";
|
sha256 = "085qiv9q2hzv1v6qmbddra23acsmmkbwmjqc3cp81gfgl893z7sm";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "urlscan";
|
pname = "urlscan";
|
||||||
version = "0.9.4";
|
version = "0.9.5";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "firecat53";
|
owner = "firecat53";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "11wkwjqsq848ks6m2jqsb8h0xnz75fb60bm0c4jkxys9wzy4chg5";
|
sha256 = "16g7dzvjcfhaz52wbmcapamy55l7vfhgizqy3m8dv9gkmy8vap89";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ python3Packages.urwid ];
|
propagatedBuildInputs = [ python3Packages.urwid ];
|
||||||
|
22
pkgs/applications/networking/browsers/amfora/default.nix
Normal file
22
pkgs/applications/networking/browsers/amfora/default.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
@ -86,11 +86,11 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "brave";
|
pname = "brave";
|
||||||
version = "1.10.97";
|
version = "1.11.97";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||||
sha256 = "1qwk75k8km2sy7l3m4k5m383sl75dph4dyrp8hd65x5hnpip67yi";
|
sha256 = "1wmjwk98fvzy5slyqpzpnn1mx663q3pvcyr3fzcinf6v971vz3q2";
|
||||||
};
|
};
|
||||||
|
|
||||||
dontConfigure = true;
|
dontConfigure = true;
|
||||||
|
@ -81,7 +81,7 @@ let
|
|||||||
# "ffmpeg" # https://crbug.com/731766
|
# "ffmpeg" # https://crbug.com/731766
|
||||||
# "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together
|
# "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together
|
||||||
# so we can't build with one from system and other from source
|
# so we can't build with one from system and other from source
|
||||||
] ++ optional (versionRange "0" "84") "yasm";
|
];
|
||||||
|
|
||||||
opusWithCustomModes = libopus.override {
|
opusWithCustomModes = libopus.override {
|
||||||
withCustomModes = true;
|
withCustomModes = true;
|
||||||
@ -94,9 +94,10 @@ let
|
|||||||
xdg_utils minizip libwebp
|
xdg_utils minizip libwebp
|
||||||
libusb1 re2 zlib
|
libusb1 re2 zlib
|
||||||
ffmpeg_3 libxslt libxml2
|
ffmpeg_3 libxslt libxml2
|
||||||
|
nasm
|
||||||
# harfbuzz # in versions over 63 harfbuzz and freetype are being built together
|
# harfbuzz # in versions over 63 harfbuzz and freetype are being built together
|
||||||
# so we can't build with one from system and other from source
|
# so we can't build with one from system and other from source
|
||||||
] ++ (if (versionRange "0" "84") then [ yasm ] else [ nasm ]);
|
];
|
||||||
|
|
||||||
# build paths and release info
|
# build paths and release info
|
||||||
packageName = extraAttrs.packageName or extraAttrs.name;
|
packageName = extraAttrs.packageName or extraAttrs.name;
|
||||||
@ -123,9 +124,9 @@ let
|
|||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
ninja which python2Packages.python perl pkgconfig
|
ninja which python2Packages.python perl pkgconfig
|
||||||
python2Packages.ply python2Packages.jinja2 nodejs
|
python2Packages.ply python2Packages.jinja2 nodejs
|
||||||
gnutar
|
gnutar python2Packages.setuptools
|
||||||
] ++ optional (versionAtLeast version "83") python2Packages.setuptools
|
(xorg.xcbproto.override { python = python2Packages.python; })
|
||||||
++ optional (versionAtLeast version "84") (xorg.xcbproto.override { python = python2Packages.python; });
|
];
|
||||||
|
|
||||||
buildInputs = defaultDependencies ++ [
|
buildInputs = defaultDependencies ++ [
|
||||||
nspr nss systemd
|
nspr nss systemd
|
||||||
@ -181,6 +182,11 @@ let
|
|||||||
'/usr/share/locale/' \
|
'/usr/share/locale/' \
|
||||||
'${glibc}/share/locale/'
|
'${glibc}/share/locale/'
|
||||||
|
|
||||||
|
substituteInPlace ui/gfx/x/BUILD.gn \
|
||||||
|
--replace \
|
||||||
|
'/usr/share/xcb' \
|
||||||
|
'${xorg.xcbproto}/share/xcb/'
|
||||||
|
|
||||||
sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
|
sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
|
||||||
chrome/browser/shell_integration_linux.cc
|
chrome/browser/shell_integration_linux.cc
|
||||||
|
|
||||||
@ -226,16 +232,9 @@ let
|
|||||||
ln -s ${stdenv.cc}/bin/clang third_party/llvm-build/Release+Asserts/bin/clang
|
ln -s ${stdenv.cc}/bin/clang third_party/llvm-build/Release+Asserts/bin/clang
|
||||||
ln -s ${stdenv.cc}/bin/clang++ third_party/llvm-build/Release+Asserts/bin/clang++
|
ln -s ${stdenv.cc}/bin/clang++ third_party/llvm-build/Release+Asserts/bin/clang++
|
||||||
ln -s ${llvmPackages.llvm}/bin/llvm-ar third_party/llvm-build/Release+Asserts/bin/llvm-ar
|
ln -s ${llvmPackages.llvm}/bin/llvm-ar third_party/llvm-build/Release+Asserts/bin/llvm-ar
|
||||||
'' + optionalString (versionAtLeast version "84") ''
|
|
||||||
substituteInPlace ui/gfx/x/BUILD.gn \
|
|
||||||
--replace \
|
|
||||||
'/usr/share/xcb' \
|
|
||||||
'${xorg.xcbproto}/share/xcb/'
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
gnFlags = mkGnFlags (optionalAttrs (versionRange "0" "84") {
|
gnFlags = mkGnFlags ({
|
||||||
linux_use_bundled_binutils = false;
|
|
||||||
} // {
|
|
||||||
use_lld = false;
|
use_lld = false;
|
||||||
use_gold = true;
|
use_gold = true;
|
||||||
gold_path = "${stdenv.cc}/bin";
|
gold_path = "${stdenv.cc}/bin";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10
|
{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10
|
||||||
, makeWrapper, ed
|
, makeWrapper, ed, gnugrep
|
||||||
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
|
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
|
||||||
, libva ? null
|
, libva ? null
|
||||||
, pipewire_0_2
|
, pipewire_0_2
|
||||||
@ -187,7 +187,7 @@ in stdenv.mkDerivation {
|
|||||||
'' + ''
|
'' + ''
|
||||||
|
|
||||||
# libredirect causes chromium to deadlock on startup
|
# 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
|
export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS
|
||||||
|
|
||||||
|
@ -31,15 +31,6 @@
|
|||||||
// TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
|
// TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
|
||||||
// |output_mode_| as well.
|
// |output_mode_| as well.
|
||||||
if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
|
if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
|
||||||
@@ -1105,7 +1113,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
|
|
||||||
// depends on the bitstream and sometimes it's not enough to cover the amount
|
|
||||||
// of frames needed by the client pipeline (see b/133733739).
|
|
||||||
// TODO(crbug.com/911754): Enable for VP9 Profile 2.
|
|
||||||
- if (IsGeminiLakeOrLater() &&
|
|
||||||
+ if (false && IsGeminiLakeOrLater() &&
|
|
||||||
(profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) {
|
|
||||||
// Add one to the reference frames for the one being currently egressed, and
|
|
||||||
// an extra allocation for both |client_| and |decoder_|, see
|
|
||||||
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
|
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
|
||||||
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
|
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
|
||||||
@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeAccelerator
|
@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeAccelerator
|
||||||
|
@ -44,11 +44,11 @@ let
|
|||||||
|
|
||||||
flash = stdenv.mkDerivation rec {
|
flash = stdenv.mkDerivation rec {
|
||||||
pname = "flashplayer-ppapi";
|
pname = "flashplayer-ppapi";
|
||||||
version = "32.0.0.387";
|
version = "32.0.0.403";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||||
sha256 = "1igs8nh3zpfcps97ahzh7kknx3rddh6yliig8lxf6jskbpf0qgzf";
|
sha256 = "1xirngiqypylgm8f3ddvny2ghqxgj8i98bm1carcj2vryw53wwal";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
# This file is autogenerated from update.sh in the same directory.
|
# This file is autogenerated from update.sh in the same directory.
|
||||||
{
|
{
|
||||||
beta = {
|
beta = {
|
||||||
sha256 = "1s49qxg0gfmhm1lf5big6hprral21dbzjx0f1cp3xfvag9y61i7h";
|
sha256 = "0yf6j0459qzr677zsa2apmfz0x0ndlscvwj1a5v40nqjijchv5qp";
|
||||||
sha256bin64 = "1sjvi3qmpwpr51442324a853k6s0k59k4809k8j5sjv7h6arw0sm";
|
sha256bin64 = "017ix9a74f2gzlg6in0x6fqgiw8bpk0rypr6wsqqkslywprypjd0";
|
||||||
version = "84.0.4147.56";
|
version = "84.0.4147.89";
|
||||||
};
|
};
|
||||||
dev = {
|
dev = {
|
||||||
sha256 = "1gxa0jg7xff87z7wvllp84a3ii1ypgy4vfzgxs4k7kzg5x0412vi";
|
sha256 = "1dbbr7s8vbhxd0sk4k2yqp630zp1r4gzkkd2a86pzlzq2mjhsk8a";
|
||||||
sha256bin64 = "0swmn37rmvjvvdcrd002qg1wcvna06y14s3kx34bfr4zxhqk3lby";
|
sha256bin64 = "0bphfwi6nkj9nzrjjaffiv27xfblgdikyifsbjl6vv2pawkh335q";
|
||||||
version = "85.0.4173.0";
|
version = "85.0.4183.15";
|
||||||
};
|
};
|
||||||
stable = {
|
stable = {
|
||||||
sha256 = "1hravbi1lazmab2mih465alfzji1kzy38zya1visbwz9zs6pw35v";
|
sha256 = "0yf6j0459qzr677zsa2apmfz0x0ndlscvwj1a5v40nqjijchv5qp";
|
||||||
sha256bin64 = "1ggyv2b50sclnqph0r40lb8p9h3pq9aq4fj1wdszhwc4rb0cj746";
|
sha256bin64 = "1hzhgvs2ykqsncpnbnhzh09sw1vlsdfjhs06z5gc80l47brdi3wz";
|
||||||
version = "83.0.4103.116";
|
version = "84.0.4147.89";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -85,7 +85,7 @@ in
|
|||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
inherit name;
|
inherit name;
|
||||||
|
|
||||||
src = fetchurl { inherit (source) url sha512; };
|
src = fetchurl { inherit (source) url sha256; };
|
||||||
|
|
||||||
phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ];
|
phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ];
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -47,12 +47,13 @@ in writeScript "update-${name}" ''
|
|||||||
grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \
|
grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \
|
||||||
tail -1`
|
tail -1`
|
||||||
|
|
||||||
curl --silent -o $HOME/shasums "$url$version/SHA512SUMS"
|
curl --silent -o $HOME/shasums "$url$version/SHA256SUMS"
|
||||||
curl --silent -o $HOME/shasums.asc "$url$version/SHA512SUMS.asc"
|
curl --silent -o $HOME/shasums.asc "$url$version/SHA256SUMS.asc"
|
||||||
gpgv --keyring=$GNUPGHOME/pubring.kbx $HOME/shasums.asc $HOME/shasums
|
gpgv --keyring=$GNUPGHOME/pubring.kbx $HOME/shasums.asc $HOME/shasums
|
||||||
|
|
||||||
# this is a list of sha512 and tarballs for both arches
|
# this is a list of sha256 and tarballs for both arches
|
||||||
shasums=`cat $HOME/shasums`
|
# Upstream files contains python repr strings like b'somehash', hence the sed dance
|
||||||
|
shasums=`cat $HOME/shasums | sed -E s/"b'([a-f0-9]{64})'?(.*)"/'\1\2'/`
|
||||||
|
|
||||||
cat > $tmpfile <<EOF
|
cat > $tmpfile <<EOF
|
||||||
{
|
{
|
||||||
@ -74,7 +75,7 @@ in writeScript "update-${name}" ''
|
|||||||
{ url = "$url$version/`echo $line | cut -d":" -f3`";
|
{ url = "$url$version/`echo $line | cut -d":" -f3`";
|
||||||
locale = "`echo $line | cut -d":" -f3 | sed "s/$arch\///" | sed "s/\/.*//"`";
|
locale = "`echo $line | cut -d":" -f3 | sed "s/$arch\///" | sed "s/\/.*//"`";
|
||||||
arch = "$arch";
|
arch = "$arch";
|
||||||
sha512 = "`echo $line | cut -d":" -f1`";
|
sha256 = "`echo $line | cut -d":" -f1`";
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
done
|
done
|
||||||
|
@ -54,23 +54,4 @@ rec {
|
|||||||
versionKey = "ffversion";
|
versionKey = "ffversion";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} // lib.optionalAttrs (config.allowAliases or true) {
|
|
||||||
#### ALIASES
|
|
||||||
#### remove after 20.03 branchoff
|
|
||||||
|
|
||||||
firefox-esr-52 = throw ''
|
|
||||||
firefoxPackages.firefox-esr-52 was removed as it's an unsupported ESR with
|
|
||||||
open security issues. If you need it because you need to run some plugins
|
|
||||||
not having been ported to WebExtensions API, import it from an older
|
|
||||||
nixpkgs checkout still containing it.
|
|
||||||
'';
|
|
||||||
firefox-esr-60 = throw "firefoxPackages.firefox-esr-60 was removed as it's an unsupported ESR with open security issues.";
|
|
||||||
|
|
||||||
icecat = throw "firefoxPackages.icecat was removed as even its latest upstream version is based on an unsupported ESR release with open security issues.";
|
|
||||||
icecat-52 = throw "firefoxPackages.icecat was removed as even its latest upstream version is based on an unsupported ESR release with open security issues.";
|
|
||||||
|
|
||||||
tor-browser-7-5 = throw "firefoxPackages.tor-browser-7-5 was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452.";
|
|
||||||
tor-browser-8-5 = throw "firefoxPackages.tor-browser-8-5 was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452.";
|
|
||||||
tor-browser = throw "firefoxPackages.tor-browser was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452.";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -105,6 +105,12 @@ in stdenv.mkDerivation {
|
|||||||
cp -a opt/* $out/share
|
cp -a opt/* $out/share
|
||||||
cp -a usr/share/* $out/share
|
cp -a usr/share/* $out/share
|
||||||
|
|
||||||
|
# To fix --use-gl=egl:
|
||||||
|
test -e $out/share/google/$appname/libEGL.so
|
||||||
|
ln -s libEGL.so $out/share/google/$appname/libEGL.so.1
|
||||||
|
test -e $out/share/google/$appname/libGLESv2.so
|
||||||
|
ln -s libGLESv2.so $out/share/google/$appname/libGLESv2.so.2
|
||||||
|
|
||||||
substituteInPlace $out/share/applications/google-$appname.desktop \
|
substituteInPlace $out/share/applications/google-$appname.desktop \
|
||||||
--replace /usr/bin/google-chrome-$dist $exe
|
--replace /usr/bin/google-chrome-$dist $exe
|
||||||
substituteInPlace $out/share/gnome-control-center/default-apps/google-$appname.xml \
|
substituteInPlace $out/share/gnome-control-center/default-apps/google-$appname.xml \
|
||||||
|
@ -74,7 +74,7 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "flashplayer";
|
pname = "flashplayer";
|
||||||
version = "32.0.0.387";
|
version = "32.0.0.403";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url =
|
url =
|
||||||
@ -85,14 +85,14 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 =
|
sha256 =
|
||||||
if debug then
|
if debug then
|
||||||
if arch == "x86_64" then
|
if arch == "x86_64" then
|
||||||
"1wmk60lnlrj9f8dvk4b6j7pqyl00w00qbzbdw4awzx91wmgfc4x0"
|
"0nx0fxa6l438hvzgsxa561nrin8lx7l9ccqscjn9mdg42yw36k63"
|
||||||
else
|
else
|
||||||
"1afjxhi5jzn8zbkva940i9fayzxj1r3n6rqsiny02fpnv0waypfy"
|
"0vbg4ijsbmn71kq5mynx0hfhazy10ghcxsxwbwaxdl11ilxikrli"
|
||||||
else
|
else
|
||||||
if arch == "x86_64" then
|
if arch == "x86_64" then
|
||||||
"0si8rx955kyfsprk5465hfzafxvrdm7g686q7p5xykmh88nck6k2"
|
"1paz9y3pcisw5ck3v6a740sr7plmsbg6bjqrj2yfqdixf95fk2pl"
|
||||||
else
|
else
|
||||||
"02pw2knvgdkahyp7lmy7fmynmplaz5wswdz48h3sdj6ibr066h97";
|
"1b2r20yc94ibsw0vpr6xl1x1vbjgjw6qzxzr374ppck8famikyj2";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ unzip ];
|
nativeBuildInputs = [ unzip ];
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "flashplayer-standalone";
|
pname = "flashplayer-standalone";
|
||||||
version = "32.0.0.387";
|
version = "32.0.0.403";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url =
|
url =
|
||||||
@ -60,9 +60,9 @@ stdenv.mkDerivation {
|
|||||||
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
|
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
|
||||||
sha256 =
|
sha256 =
|
||||||
if debug then
|
if debug then
|
||||||
"1yxdwmm2gz162rmc9hwlccqgq613gnrihjicnzgan4vk7hjlga5y"
|
"164cah1h78vs068y19v0c40243sy2ip1n4jc6qvzv9acawy12ckw"
|
||||||
else
|
else
|
||||||
"0hm5is3giz45a4v9m77q0i1dgyhpqqkagpjndbnynsnl9a61r0ly";
|
"0508jzaji3z52dyp49xx2m7impz1fdpp20af0h8dwdph1q3mxn32";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ unzip ];
|
nativeBuildInputs = [ unzip ];
|
||||||
|
@ -61,7 +61,7 @@ in mkDerivationWith python3Packages.buildPythonApplication rec {
|
|||||||
dontWrapQtApps = true;
|
dontWrapQtApps = true;
|
||||||
|
|
||||||
postPatch = ''
|
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
|
sed -i "s,/usr/share/,$out/share/,g" qutebrowser/utils/standarddir.py
|
||||||
'' + lib.optionalString withPdfReader ''
|
'' + lib.optionalString withPdfReader ''
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
diff --git a/quitter.py b/quitterb.py
|
diff --git a/quitter.py b/quitter.py
|
||||||
index a42b9d0..f544ccb 100644
|
index a42b9d0..f544ccb 100644
|
||||||
--- a/qutebrowser/misc/quitter.py
|
--- a/qutebrowser/misc/quitter.py
|
||||||
+++ b/qutebrowser/misc/quitter.py
|
+++ b/qutebrowser/misc/quitter.py
|
||||||
|
27
pkgs/applications/networking/cluster/kpt/default.nix
Normal file
27
pkgs/applications/networking/cluster/kpt/default.nix
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{ buildGoModule, fetchFromGitHub, lib }:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "kpt";
|
||||||
|
version = "0.31.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "GoogleContainerTools";
|
||||||
|
repo = pname;
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "1l5mpml6pf37b76wdq6il00k5q6rvw9ds7807m103k27p7pcqgdx";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorSha256 = "1yb6dwbnimqfamdg57vq68q853fq04qfnh3sfbjg82sd8pz8069g";
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
rm $out/bin/{mdtogo,formula}
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A toolkit to help you manage, manipulate, customize, and apply Kubernetes Resource configuration data files";
|
||||||
|
homepage = "https://googlecontainertools.github.io/kpt/";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ mikefaille ];
|
||||||
|
platforms = platforms.linux ++ platforms.darwin;
|
||||||
|
};
|
||||||
|
}
|
@ -15,13 +15,13 @@ with lib;
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "kubernetes";
|
pname = "kubernetes";
|
||||||
version = "1.18.5";
|
version = "1.18.6";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kubernetes";
|
owner = "kubernetes";
|
||||||
repo = "kubernetes";
|
repo = "kubernetes";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0pl7dzq5giwkzfyg4pzm8y76fnd62gaa6d4hswvgn87czab37lr6";
|
sha256 = "0ijcssalzb0gx23va23q6q6haj2m9dy36l9i7lq1726m75fa5yjv";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
|
nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
|
||||||
|
@ -144,6 +144,7 @@ let
|
|||||||
elasticsearch = callPackage ./elasticsearch {};
|
elasticsearch = callPackage ./elasticsearch {};
|
||||||
libvirt = callPackage ./libvirt {};
|
libvirt = callPackage ./libvirt {};
|
||||||
lxd = callPackage ./lxd {};
|
lxd = callPackage ./lxd {};
|
||||||
|
shell = callPackage ./shell {};
|
||||||
vpsadmin = callPackage ./vpsadmin {};
|
vpsadmin = callPackage ./vpsadmin {};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, buildGoModule }:
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "terraform-provider-shell";
|
||||||
|
version = "1.6.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "scottwinkler";
|
||||||
|
repo = pname;
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0jxb30vw93ibnwz8nfqapac7p9r2famzvsf2h4nfbmhkm6mpan4l";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorSha256 = "1p2ja6cw3dl7mx41svri6frjpgb9pxsrl7sq0rk1d3sviw0f88sg";
|
||||||
|
|
||||||
|
subPackages = [ "." ];
|
||||||
|
|
||||||
|
# Terraform allows checking the provider versions, but this breaks
|
||||||
|
# if the versions are not provided via file paths.
|
||||||
|
postInstall = "mv $out/bin/${pname}{,_v${version}}";
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
inherit (src.meta) homepage;
|
||||||
|
description = "Terraform provider for executing shell commands and saving output to state file";
|
||||||
|
changelog = "https://github.com/scottwinkler/terraform-provider-shell/releases/tag/v${version}";
|
||||||
|
license = licenses.mpl20;
|
||||||
|
maintainers = with maintainers; [ mupdt ];
|
||||||
|
};
|
||||||
|
}
|
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||||
buildInputs = [ bitlbee glib ];
|
buildInputs = [ bitlbee ];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export BITLBEE_PLUGINDIR=$out/lib/bitlbee
|
export BITLBEE_PLUGINDIR=$out/lib/bitlbee
|
||||||
|
@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ autoconf automake libtool pkgconfig ];
|
nativeBuildInputs = [ autoconf automake libtool pkgconfig ];
|
||||||
|
|
||||||
buildInputs = [ bitlbee glib json-glib ];
|
buildInputs = [ bitlbee json-glib ];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export BITLBEE_PLUGINDIR=$out/lib/bitlbee
|
export BITLBEE_PLUGINDIR=$out/lib/bitlbee
|
||||||
|
@ -3,21 +3,20 @@
|
|||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "bitlbee-mastodon";
|
pname = "bitlbee-mastodon";
|
||||||
version = "1.4.3";
|
version = "1.4.4";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://alexschroeder.ch/cgit/bitlbee-mastodon";
|
url = "https://alexschroeder.ch/cgit/bitlbee-mastodon";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1k9j4403w6x93f4ls3xj8nrabz8ynjby6sigqdmhb7cqv26l987p";
|
sha256 = "0a8196pyr6bjnqg82zn7jdhiv7xsg4npbpzalla1i2h99j30q8pk";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||||
buildInputs = [ bitlbee glib ];
|
buildInputs = [ bitlbee ];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export BITLBEE_PLUGINDIR=$out/lib/bitlbee
|
export BITLBEE_PLUGINDIR=$out/lib/bitlbee
|
||||||
export BITLBEE_DATADIR=$out/share/bitlbee
|
export BITLBEE_DATADIR=$out/share/bitlbee
|
||||||
./autogen.sh
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user