Project import generated by Copybara.

GitOrigin-RevId: 1c2986bbb806c57f9470bf3231d8da7250ab9091
This commit is contained in:
Default email 2021-06-01 12:57:12 +02:00
parent 14a1eeff01
commit 18bad4282a
203 changed files with 3435 additions and 1582 deletions

View file

@ -2415,6 +2415,12 @@
githubId = 896182; githubId = 896182;
name = "devhell"; name = "devhell";
}; };
devins2518 = {
email = "drsingh2518@icloud.com";
github = "devins2518";
githubId = 17111639;
name = "Devin Singh";
};
dezgeg = { dezgeg = {
email = "tuomas.tynkkynen@iki.fi"; email = "tuomas.tynkkynen@iki.fi";
github = "dezgeg"; github = "dezgeg";
@ -4115,6 +4121,12 @@
githubId = 362833; githubId = 362833;
name = "Hongchang Wu"; name = "Hongchang Wu";
}; };
hoppla20 = {
email = "privat@vincentcui.de";
github = "hoppla20";
githubId = 25618740;
name = "Vincent Cui";
};
hoverbear = { hoverbear = {
email = "operator+nix@hoverbear.org"; email = "operator+nix@hoverbear.org";
github = "hoverbear"; github = "hoverbear";
@ -5172,6 +5184,16 @@
githubId = 37185887; githubId = 37185887;
name = "Calvin Kim"; name = "Calvin Kim";
}; };
kennyballou = {
email = "kb@devnulllabs.io";
github = "kennyballou";
githubId = 2186188;
name = "Kenny Ballou";
keys = [{
longkeyid = "rsa4096/0xB0CAA28A02958308";
fingerprint = "932F 3E8E 1C0F 4A98 95D7 B8B8 B0CA A28A 0295 8308";
}];
};
kentjames = { kentjames = {
email = "jameschristopherkent@gmail.com"; email = "jameschristopherkent@gmail.com";
github = "kentjames"; github = "kentjames";
@ -6258,6 +6280,12 @@
githubId = 11810057; githubId = 11810057;
name = "Matt Snider"; name = "Matt Snider";
}; };
mattchrist = {
email = "nixpkgs-matt@christ.systems";
github = "mattchrist";
githubId = 952712;
name = "Matt Christ";
};
matthewbauer = { matthewbauer = {
email = "mjbauer95@gmail.com"; email = "mjbauer95@gmail.com";
github = "matthewbauer"; github = "matthewbauer";
@ -8795,6 +8823,12 @@
githubId = 506953; githubId = 506953;
name = "Ruud van Asseldonk"; name = "Ruud van Asseldonk";
}; };
rvarago = {
email = "rafael.varago@gmail.com";
github = "rvarago";
githubId = 7365864;
name = "Rafael Varago";
};
rvl = { rvl = {
email = "dev+nix@rodney.id.au"; email = "dev+nix@rodney.id.au";
github = "rvl"; github = "rvl";

View file

@ -14,7 +14,7 @@
<para> <para>
<emphasis>Stable channels</emphasis>, such as <emphasis>Stable channels</emphasis>, such as
<literal <literal
xlink:href="https://nixos.org/channels/nixos-20.09">nixos-20.09</literal>. xlink:href="https://nixos.org/channels/nixos-21.05">nixos-21.05</literal>.
These only get conservative bug fixes and package upgrades. For instance, These only get conservative bug fixes and package upgrades. For instance,
a channel update may cause the Linux kernel on your system to be upgraded a channel update may cause the Linux kernel on your system to be upgraded
from 4.19.34 to 4.19.38 (a minor bug fix), but not from from 4.19.34 to 4.19.38 (a minor bug fix), but not from
@ -38,7 +38,7 @@
<para> <para>
<emphasis>Small channels</emphasis>, such as <emphasis>Small channels</emphasis>, such as
<literal <literal
xlink:href="https://nixos.org/channels/nixos-20.09-small">nixos-20.09-small</literal> xlink:href="https://nixos.org/channels/nixos-21.05-small">nixos-21.05-small</literal>
or or
<literal <literal
xlink:href="https://nixos.org/channels/nixos-unstable-small">nixos-unstable-small</literal>. xlink:href="https://nixos.org/channels/nixos-unstable-small">nixos-unstable-small</literal>.
@ -63,8 +63,8 @@
<para> <para>
When you first install NixOS, youre automatically subscribed to the NixOS When you first install NixOS, youre automatically subscribed to the NixOS
channel that corresponds to your installation source. For instance, if you channel that corresponds to your installation source. For instance, if you
installed from a 20.09 ISO, you will be subscribed to the installed from a 21.05 ISO, you will be subscribed to the
<literal>nixos-20.09</literal> channel. To see which NixOS channel youre <literal>nixos-21.05</literal> channel. To see which NixOS channel youre
subscribed to, run the following as root: subscribed to, run the following as root:
<screen> <screen>
<prompt># </prompt>nix-channel --list | grep nixos <prompt># </prompt>nix-channel --list | grep nixos
@ -75,13 +75,13 @@ nixos https://nixos.org/channels/nixos-unstable
<prompt># </prompt>nix-channel --add https://nixos.org/channels/<replaceable>channel-name</replaceable> nixos <prompt># </prompt>nix-channel --add https://nixos.org/channels/<replaceable>channel-name</replaceable> nixos
</screen> </screen>
(Be sure to include the <literal>nixos</literal> parameter at the end.) For (Be sure to include the <literal>nixos</literal> parameter at the end.) For
instance, to use the NixOS 20.09 stable channel: instance, to use the NixOS 21.05 stable channel:
<screen> <screen>
<prompt># </prompt>nix-channel --add https://nixos.org/channels/nixos-20.09 nixos <prompt># </prompt>nix-channel --add https://nixos.org/channels/nixos-21.05 nixos
</screen> </screen>
If you have a server, you may want to use the “small” channel instead: If you have a server, you may want to use the “small” channel instead:
<screen> <screen>
<prompt># </prompt>nix-channel --add https://nixos.org/channels/nixos-20.09-small nixos <prompt># </prompt>nix-channel --add https://nixos.org/channels/nixos-21.05-small nixos
</screen> </screen>
And if you want to live on the bleeding edge: And if you want to live on the bleeding edge:
<screen> <screen>
@ -132,7 +132,7 @@ nixos https://nixos.org/channels/nixos-unstable
kernel, initrd or kernel modules. kernel, initrd or kernel modules.
You can also specify a channel explicitly, e.g. You can also specify a channel explicitly, e.g.
<programlisting> <programlisting>
<xref linkend="opt-system.autoUpgrade.channel"/> = https://nixos.org/channels/nixos-20.09; <xref linkend="opt-system.autoUpgrade.channel"/> = https://nixos.org/channels/nixos-21.05;
</programlisting> </programlisting>
</para> </para>
</section> </section>

View file

@ -3,8 +3,11 @@
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-release-21.05"> xml:id="sec-release-21.05">
<title>Release 21.05 (“Okapi”, 2021.05/??)</title> <title>Release 21.05 (“Okapi”, 2021.05/31)</title>
<para>
Support is planned until the end of December 2021, handing over to 21.11.
</para>
<section xmlns="http://docbook.org/ns/docbook" <section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
@ -18,114 +21,81 @@
</para> </para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Support is planned until the end of December 2021, handing over to 21.11. Core version changes:
</para> </para>
</listitem> <itemizedlist>
<listitem>
<para>The default Linux kernel was updated to the 5.10 LTS series, coming from the 5.4 LTS series.</para>
<para>The <package>linux_latest</package> kernel was updated to the 5.12 series. It currently is not officially supported for use with the zfs filesystem. If you use zfs, you should use a different kernel version (either the LTS kernel, or track a specific one). </para>
</listitem>
<listitem>
<para>GNOME desktop environment was upgraded to 40, see the release notes for <link xlink:href="https://help.gnome.org/misc/release-notes/40.0/">40.0</link> and <link xlink:href="https://help.gnome.org/misc/release-notes/3.38/">3.38</link>. The <code>gnome3</code> attribute set has been renamed to <code>gnome</code> and so have been the NixOS options.</para>
</listitem>
<listitem> <listitem>
<para> <para>
<link xlink:href="https://www.gnuradio.org/">GNURadio</link> 3.8 was gcc: 9.3.0 -> 10.3.0
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/82263">finally</link>
packaged, along with a rewrite to the Nix expressions, allowing users to
override the features upstream supports selecting to compile or not to.
Additionally, the attribute <code>gnuradio</code> and <code>gnuradio3_7</code>
now point to an externally wrapped by default derivations, that allow you to
also add `extraPythonPackages` to the Python interpreter used by GNURadio.
Missing environmental variables needed for operational GUI were also added
(<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#75478</link>).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link xlink:href="https://www.gnuradio.org/">GNURadio</link> has a glibc: 2.30 -> 2.32
<code>pkgs</code> attribute set, and there's a <code>gnuradio.callPackage</code>
function that extends <code>pkgs</code> with a <code>mkDerivation</code>, and a
<code>mkDerivationWith</code>, like Qt5. Now all <code>gnuradio.pkgs</code> are
defined with <code>gnuradio.callPackage</code> and some packages that depend
on gnuradio are defined with this as well.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link xlink:href="https://www.privoxy.org/">Privoxy</link> has been updated default linux: 5.4 -> 5.10, all supported kernels available
to version 3.0.32 (See <link xlink:href="https://lists.privoxy.org/pipermail/privoxy-announce/2021-February/000007.html">announcement</link>).
Compared to the previous release, Privoxy has gained support for HTTPS
inspection (still experimental), Brotli decompression, several new filters
and lots of bug fixes, including security ones. In addition, the package
is now built with compression and external filters support, which were
previously disabled.
</para>
<para>
Regarding the NixOS module, new options for HTTPS inspection have been added
and <option>services.privoxy.extraConfig</option> has been replaced by the new
<xref linkend="opt-services.privoxy.settings"/>
(See <link xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">RFC 0042</link>
for the motivation).
</para> </para>
</listitem> </listitem>
<listitem>
<para>
mesa: 20.1.7 -> 21.0.1
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
Desktop Environments:
</para>
<itemizedlist>
<listitem>
<para>
Gnome: 3.36 -> 3.40, see its <link xlink:href="https://help.gnome.org/misc/release-notes/3.40/">release notes</link>
</para>
</listitem>
<listitem>
<para>
Plasma5: 5.18.5 -> 5.21.3
</para>
</listitem>
<listitem>
<para>
kdeApplications: 20.08.1 -> 20.12.3
</para>
</listitem>
<listitem>
<para>
cinnamon: 4.6 -> 4.8.1
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
Programming Languages and Frameworks:
</para>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Python optimizations were disabled again. Builds with optimizations enabled Python optimizations were disabled again. Builds with optimizations enabled
are not reproducible. Optimizations can now be enabled with an option. are not reproducible. Optimizations can now be enabled with an option.
</para> </para>
</listitem> </listitem>
<listitem>
<para> </itemizedlist>
<link xlink:href="https://kodi.tv/">Kodi</link> has been updated to version 19.1 "Matrix". See
the <link xlink:href="https://kodi.tv/article/kodi-190-matrix-release">announcement</link> for
further details.
</para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>The <package>linux_latest</package> kernel was updated to the 5.12 series. It currently is not officially supported for use with the zfs filesystem. If you use zfs, you should use a different kernel version (either the LTS kernel, or track a specific one). </para>
The <option>services.packagekit.backend</option> option has been removed as
it only supported a single setting which would always be the default.
Instead new <link
xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">RFC
0042</link> compliant <xref linkend="opt-services.packagekit.settings"/>
and <xref linkend="opt-services.packagekit.vendorSettings"/> options have
been introduced.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://nginx.org">Nginx</link> has been updated to stable version 1.20.0.
Now nginx uses the zlib-ng library by default.
</para>
</listitem>
<listitem>
<para>
KDE Gear (formerly KDE Applications) is upgraded to 21.04, see its
<link xlink:href="https://kde.org/announcements/gear/21.04/">release
notes</link> for details.
</para>
<para>
The <code>kdeApplications</code> package set is now <code>kdeGear</code>,
in keeping with the new name. The old name remains for compatibility, but
it is deprecated.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://libreswan.org/">Libreswan</link> has been updated
to version 4.4. The package now includes example configurations and manual
pages by default. The NixOS module has been changed to use the upstream
systemd units and write the configuration in the <literal>/etc/ipsec.d/
</literal> directory. In addition, two new options have been added to
specify connection policies
(<xref linkend="opt-services.libreswan.policies"/>)
and disable send/receive redirects
(<xref linkend="opt-services.libreswan.disableRedirects"/>).
</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</section> </section>
@ -141,6 +111,20 @@
</para> </para>
<itemizedlist> <itemizedlist>
<listitem>
<para>
<link xlink:href="https://www.gnuradio.org/">GNURadio</link> 3.8 was
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/82263">finally</link>
packaged, along with a rewrite to the Nix expressions, allowing users to
override the features upstream supports selecting to compile or not to.
Additionally, the attribute <code>gnuradio</code> and <code>gnuradio3_7</code>
now point to an externally wrapped by default derivations, that allow you to
also add `extraPythonPackages` to the Python interpreter used by GNURadio.
Missing environmental variables needed for operational GUI were also added
(<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#75478</link>).
</para>
</listitem>
<listitem> <listitem>
<para> <para>
<link xlink:href="https://www.keycloak.org/">Keycloak</link>, <link xlink:href="https://www.keycloak.org/">Keycloak</link>,
@ -193,6 +177,10 @@
</para> </para>
<itemizedlist> <itemizedlist>
<listitem>
<para>GNOME desktop environment was upgraded to 40, see the release notes for <link xlink:href="https://help.gnome.org/misc/release-notes/40.0/">40.0</link> and <link xlink:href="https://help.gnome.org/misc/release-notes/3.38/">3.38</link>. The <code>gnome3</code> attribute set has been renamed to <code>gnome</code> and so have been the NixOS options.</para>
</listitem>
<listitem> <listitem>
<para> <para>
If you are using <option>services.udev.extraRules</option> to assign If you are using <option>services.udev.extraRules</option> to assign
@ -804,6 +792,16 @@ environment.systemPackages = [
the deprecated <option>services.radicale.config</option> is used. the deprecated <option>services.radicale.config</option> is used.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
In the <option>security.acme</option> module, use of <literal>--reuse-key</literal>
parameter for Lego has been removed. It was introduced for HKPK, but this security
feature is now deprecated. It is a better security practice to rotate key pairs
instead of always keeping the same. If you need to keep this parameter, you can add
it back using <literal>extraLegoRenewFlags</literal> as an option for the
appropriate certificate.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>
@ -823,6 +821,85 @@ environment.systemPackages = [
for details. for details.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
<link xlink:href="https://www.gnuradio.org/">GNURadio</link> has a
<code>pkgs</code> attribute set, and there's a <code>gnuradio.callPackage</code>
function that extends <code>pkgs</code> with a <code>mkDerivation</code>, and a
<code>mkDerivationWith</code>, like Qt5. Now all <code>gnuradio.pkgs</code> are
defined with <code>gnuradio.callPackage</code> and some packages that depend
on gnuradio are defined with this as well.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://www.privoxy.org/">Privoxy</link> has been updated
to version 3.0.32 (See <link xlink:href="https://lists.privoxy.org/pipermail/privoxy-announce/2021-February/000007.html">announcement</link>).
Compared to the previous release, Privoxy has gained support for HTTPS
inspection (still experimental), Brotli decompression, several new filters
and lots of bug fixes, including security ones. In addition, the package
is now built with compression and external filters support, which were
previously disabled.
</para>
<para>
Regarding the NixOS module, new options for HTTPS inspection have been added
and <option>services.privoxy.extraConfig</option> has been replaced by the new
<xref linkend="opt-services.privoxy.settings"/>
(See <link xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">RFC 0042</link>
for the motivation).
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://kodi.tv/">Kodi</link> has been updated to version 19.1 "Matrix". See
the <link xlink:href="https://kodi.tv/article/kodi-190-matrix-release">announcement</link> for
further details.
</para>
</listitem>
<listitem>
<para>
The <option>services.packagekit.backend</option> option has been removed as
it only supported a single setting which would always be the default.
Instead new <link
xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">RFC
0042</link> compliant <xref linkend="opt-services.packagekit.settings"/>
and <xref linkend="opt-services.packagekit.vendorSettings"/> options have
been introduced.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://nginx.org">Nginx</link> has been updated to stable version 1.20.0.
Now nginx uses the zlib-ng library by default.
</para>
</listitem>
<listitem>
<para>
KDE Gear (formerly KDE Applications) is upgraded to 21.04, see its
<link xlink:href="https://kde.org/announcements/gear/21.04/">release
notes</link> for details.
</para>
<para>
The <code>kdeApplications</code> package set is now <code>kdeGear</code>,
in keeping with the new name. The old name remains for compatibility, but
it is deprecated.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://libreswan.org/">Libreswan</link> has been updated
to version 4.4. The package now includes example configurations and manual
pages by default. The NixOS module has been changed to use the upstream
systemd units and write the configuration in the <literal>/etc/ipsec.d/
</literal> directory. In addition, two new options have been added to
specify connection policies
(<xref linkend="opt-services.libreswan.policies"/>)
and disable send/receive redirects
(<xref linkend="opt-services.libreswan.disableRedirects"/>).
</para>
</listitem>
<listitem> <listitem>
<para> <para>
The Mailman NixOS module (<literal>services.mailman</literal>) has a new The Mailman NixOS module (<literal>services.mailman</literal>) has a new
@ -984,7 +1061,8 @@ environment.systemPackages = [
PulseAudio was upgraded to 14.0, with changes to the handling of default sinks. PulseAudio was upgraded to 14.0, with changes to the handling of default sinks.
See its <link xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/14.0/">release notes</link>. See its <link xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/14.0/">release notes</link>.
</para> </para>
</listitem>
<listitem>
<para> <para>
GNOME users may wish to delete their <literal>~/.config/pulse</literal> due to the changes to stream routing GNOME users may wish to delete their <literal>~/.config/pulse</literal> due to the changes to stream routing
logic. See <link xlink:href="https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/832">PulseAudio bug 832</link> logic. See <link xlink:href="https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/832">PulseAudio bug 832</link>

View file

@ -74,11 +74,9 @@ pkgs.stdenv.mkDerivation {
return 1 return 1
fi fi
echo "Resizing to minimum allowed size" # We may want to shrink the file system and resize the image to
resize2fs -M $img # get rid of the unnecessary slack here--but see
# https://github.com/NixOS/nixpkgs/issues/125121 for caveats.
# And a final fsck, because of the previous truncating.
fsck.ext4 -n -f $img
if [ ${builtins.toString compressImage} ]; then if [ ${builtins.toString compressImage} ]; then
echo "Compressing image" echo "Compressing image"

View file

@ -128,18 +128,18 @@ def create_vlan(vlan_nr: str) -> Tuple[str, str, "subprocess.Popen[bytes]", Any]
return (vlan_nr, vde_socket, vde_process, fd) return (vlan_nr, vde_socket, vde_process, fd)
def retry(fn: Callable) -> None: def retry(fn: Callable, timeout: int = 900) -> None:
"""Call the given function repeatedly, with 1 second intervals, """Call the given function repeatedly, with 1 second intervals,
until it returns True or a timeout is reached. until it returns True or a timeout is reached.
""" """
for _ in range(900): for _ in range(timeout):
if fn(False): if fn(False):
return return
time.sleep(1) time.sleep(1)
if not fn(True): if not fn(True):
raise Exception("action timed out") raise Exception(f"action timed out after {timeout} seconds")
class Logger: class Logger:

View file

@ -398,6 +398,7 @@
./services/hardware/ratbagd.nix ./services/hardware/ratbagd.nix
./services/hardware/sane.nix ./services/hardware/sane.nix
./services/hardware/sane_extra_backends/brscan4.nix ./services/hardware/sane_extra_backends/brscan4.nix
./services/hardware/sane_extra_backends/brscan5.nix
./services/hardware/sane_extra_backends/dsseries.nix ./services/hardware/sane_extra_backends/dsseries.nix
./services/hardware/spacenavd.nix ./services/hardware/spacenavd.nix
./services/hardware/tcsd.nix ./services/hardware/tcsd.nix
@ -547,6 +548,7 @@
./services/misc/ripple-data-api.nix ./services/misc/ripple-data-api.nix
./services/misc/serviio.nix ./services/misc/serviio.nix
./services/misc/safeeyes.nix ./services/misc/safeeyes.nix
./services/misc/sdrplay.nix
./services/misc/sickbeard.nix ./services/misc/sickbeard.nix
./services/misc/siproxd.nix ./services/misc/siproxd.nix
./services/misc/snapper.nix ./services/misc/snapper.nix
@ -1112,6 +1114,7 @@
./virtualisation/openvswitch.nix ./virtualisation/openvswitch.nix
./virtualisation/parallels-guest.nix ./virtualisation/parallels-guest.nix
./virtualisation/podman.nix ./virtualisation/podman.nix
./virtualisation/podman-network-socket-ghostunnel.nix
./virtualisation/qemu-guest-agent.nix ./virtualisation/qemu-guest-agent.nix
./virtualisation/railcar.nix ./virtualisation/railcar.nix
./virtualisation/spice-usb-redirection.nix ./virtualisation/spice-usb-redirection.nix

View file

@ -152,7 +152,7 @@ let
); );
renewOpts = escapeShellArgs ( renewOpts = escapeShellArgs (
commonOpts commonOpts
++ [ "renew" "--reuse-key" ] ++ [ "renew" ]
++ optionals data.ocspMustStaple [ "--must-staple" ] ++ optionals data.ocspMustStaple [ "--must-staple" ]
++ data.extraLegoRenewFlags ++ data.extraLegoRenewFlags
); );

View file

@ -238,8 +238,7 @@ in
in in
optionalString (cfg.privateSshKeyPath != null) '' optionalString (cfg.privateSshKeyPath != null) ''
mkdir -m 0700 -p "${sshDir}" mkdir -m 0700 -p "${sshDir}"
cp -f "${toString cfg.privateSshKeyPath}" "${sshDir}/id_rsa" install -m600 "${toString cfg.privateSshKeyPath}" "${sshDir}/id_rsa"
chmod 600 "${sshDir}"/id_rsa
'' + '' '' + ''
cat > "${cfg.dataDir}/buildkite-agent.cfg" <<EOF cat > "${cfg.dataDir}/buildkite-agent.cfg" <<EOF
token="$(cat ${toString cfg.tokenPath})" token="$(cat ${toString cfg.tokenPath})"

View file

@ -0,0 +1,110 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.hardware.sane.brscan5;
netDeviceList = attrValues cfg.netDevices;
etcFiles = pkgs.callPackage ./brscan5_etc_files.nix { netDevices = netDeviceList; };
netDeviceOpts = { name, ... }: {
options = {
name = mkOption {
type = types.str;
description = ''
The friendly name you give to the network device. If undefined,
the name of attribute will be used.
'';
example = literalExample "office1";
};
model = mkOption {
type = types.str;
description = ''
The model of the network device.
'';
example = literalExample "ADS-1200";
};
ip = mkOption {
type = with types; nullOr str;
default = null;
description = ''
The ip address of the device. If undefined, you will have to
provide a nodename.
'';
example = literalExample "192.168.1.2";
};
nodename = mkOption {
type = with types; nullOr str;
default = null;
description = ''
The node name of the device. If undefined, you will have to
provide an ip.
'';
example = literalExample "BRW0080927AFBCE";
};
};
config =
{ name = mkDefault name;
};
};
in
{
options = {
hardware.sane.brscan5.enable =
mkEnableOption "the Brother brscan5 sane backend";
hardware.sane.brscan5.netDevices = mkOption {
default = {};
example =
{ office1 = { model = "MFC-7860DW"; ip = "192.168.1.2"; };
office2 = { model = "MFC-7860DW"; nodename = "BRW0080927AFBCE"; };
};
type = with types; attrsOf (submodule netDeviceOpts);
description = ''
The list of network devices that will be registered against the brscan5
sane backend.
'';
};
};
config = mkIf (config.hardware.sane.enable && cfg.enable) {
hardware.sane.extraBackends = [
pkgs.brscan5
];
environment.etc."opt/brother/scanner/brscan5" =
{ source = "${etcFiles}/etc/opt/brother/scanner/brscan5"; };
environment.etc."opt/brother/scanner/models" =
{ source = "${etcFiles}/etc/opt/brother/scanner/brscan5/models"; };
environment.etc."sane.d/dll.d/brother5.conf".source = "${pkgs.brscan5}/etc/sane.d/dll.d/brother.conf";
assertions = [
{ assertion = all (x: !(null != x.ip && null != x.nodename)) netDeviceList;
message = ''
When describing a network device as part of the attribute list
`hardware.sane.brscan5.netDevices`, only one of its `ip` or `nodename`
attribute should be specified, not both!
'';
}
];
};
}

View file

@ -0,0 +1,77 @@
{ stdenv, lib, brscan5, netDevices ? [] }:
/*
Testing
-------
From nixpkgs repo
No net devices:
~~~
nix-build -E 'let pkgs = import ./. {};
brscan5-etc-files = pkgs.callPackage (import ./nixos/modules/services/hardware/sane_extra_backends/brscan5_etc_files.nix) {};
in brscan5-etc-files'
~~~
Two net devices:
~~~
nix-build -E 'let pkgs = import ./. {};
brscan5-etc-files = pkgs.callPackage (import ./nixos/modules/services/hardware/sane_extra_backends/brscan5_etc_files.nix) {};
in brscan5-etc-files.override {
netDevices = [
{name="a"; model="ADS-1200"; nodename="BRW0080927AFBCE";}
{name="b"; model="ADS-1200"; ip="192.168.1.2";}
];
}'
~~~
*/
let
addNetDev = nd: ''
brsaneconfig5 -a \
name="${nd.name}" \
model="${nd.model}" \
${if (lib.hasAttr "nodename" nd && nd.nodename != null) then
''nodename="${nd.nodename}"'' else
''ip="${nd.ip}"''}'';
addAllNetDev = xs: lib.concatStringsSep "\n" (map addNetDev xs);
in
stdenv.mkDerivation {
name = "brscan5-etc-files";
version = "1.2.6-0";
src = "${brscan5}/opt/brother/scanner/brscan5";
nativeBuildInputs = [ brscan5 ];
dontConfigure = true;
buildPhase = ''
TARGET_DIR="$out/etc/opt/brother/scanner/brscan5"
mkdir -p "$TARGET_DIR"
cp -rp "./models" "$TARGET_DIR"
cp -rp "./brscan5.ini" "$TARGET_DIR"
cp -rp "./brsanenetdevice.cfg" "$TARGET_DIR"
export NIX_REDIRECTS="/etc/opt/brother/scanner/brscan5/=$TARGET_DIR/"
printf '${addAllNetDev netDevices}\n'
${addAllNetDev netDevices}
'';
dontInstall = true;
meta = with lib; {
description = "Brother brscan5 sane backend driver etc files";
homepage = "https://www.brother.com";
platforms = platforms.linux;
license = licenses.unfree;
maintainers = with maintainers; [ mattchrist ];
};
}

View file

@ -0,0 +1,35 @@
{ config, lib, pkgs, ... }:
with lib;
{
options.services.sdrplayApi = {
enable = mkOption {
default = false;
example = true;
description = ''
Whether to enable the SDRplay API service and udev rules.
<note><para>
To enable integration with SoapySDR and GUI applications like gqrx create an overlay containing
<literal>soapysdr-with-plugins = super.soapysdr.override { extraPackages = [ super.soapysdrplay ]; };</literal>
</para></note>
'';
type = lib.types.bool;
};
};
config = mkIf config.services.sdrplayApi.enable {
systemd.services.sdrplayApi = {
description = "SDRplay API Service";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.sdrplay}/bin/sdrplay_apiService";
DynamicUser = true;
Restart = "on-failure";
RestartSec = "1s";
};
};
services.udev.packages = [ pkgs.sdrplay ];
};
}

View file

@ -9,7 +9,7 @@ let
# Disable automatically generating desktop icon # Disable automatically generating desktop icon
noDesktopIcon=true noDesktopIcon=true
noBackup=${cfg.noBackup} noBackup=${lib.boolToString cfg.noBackup}
[Network] [Network]
# host setting is relevant only for web deployments - set the host on which the server will listen # host setting is relevant only for web deployments - set the host on which the server will listen

View file

@ -61,8 +61,10 @@ let
?> ?>
''; '';
secretsVars = [ "AUTH_KEY" "SECURE_AUTH_KEY" "LOOGGED_IN_KEY" "NONCE_KEY" "AUTH_SALT" "SECURE_AUTH_SALT" "LOGGED_IN_SALT" "NONCE_SALT" ]; secretsVars = [ "AUTH_KEY" "SECURE_AUTH_KEY" "LOGGED_IN_KEY" "NONCE_KEY" "AUTH_SALT" "SECURE_AUTH_SALT" "LOGGED_IN_SALT" "NONCE_SALT" ];
secretsScript = hostStateDir: '' secretsScript = hostStateDir: ''
# The match in this line is not a typo, see https://github.com/NixOS/nixpkgs/pull/124839
grep -q "LOOGGED_IN_KEY" "${hostStateDir}/secret-keys.php" && rm "${hostStateDir}/secret-keys.php"
if ! test -e "${hostStateDir}/secret-keys.php"; then if ! test -e "${hostStateDir}/secret-keys.php"; then
umask 0177 umask 0177
echo "<?php" >> "${hostStateDir}/secret-keys.php" echo "<?php" >> "${hostStateDir}/secret-keys.php"

View file

@ -160,7 +160,7 @@ in {
etc."qemu/bridge.conf".text = lib.concatMapStringsSep "\n" (e: etc."qemu/bridge.conf".text = lib.concatMapStringsSep "\n" (e:
"allow ${e}") cfg.allowedBridges; "allow ${e}") cfg.allowedBridges;
systemPackages = with pkgs; [ libressl.nc iptables cfg.package cfg.qemuPackage ]; systemPackages = with pkgs; [ libressl.nc iptables cfg.package cfg.qemuPackage ];
etc.ethertypes.source = "${pkgs.iptables}/etc/ethertypes"; etc.ethertypes.source = "${pkgs.ebtables}/etc/ethertypes";
}; };
boot.kernelModules = [ "tun" ]; boot.kernelModules = [ "tun" ];

View file

@ -0,0 +1,34 @@
{ config, lib, pkg, ... }:
let
inherit (lib)
mkOption
types
;
cfg = config.virtualisation.podman.networkSocket;
in
{
options.virtualisation.podman.networkSocket = {
server = mkOption {
type = types.enum [ "ghostunnel" ];
};
};
config = lib.mkIf (cfg.enable && cfg.server == "ghostunnel") {
services.ghostunnel = {
enable = true;
servers."podman-socket" = {
inherit (cfg.tls) cert key cacert;
listen = "${cfg.listenAddress}:${toString cfg.port}";
target = "unix:/run/podman/podman.sock";
allowAll = lib.mkDefault true;
};
};
systemd.services.ghostunnel-server-podman-socket.serviceConfig.SupplementaryGroups = ["podman"];
};
meta.maintainers = lib.teams.podman.members ++ [ lib.maintainers.roberth ];
}

View file

@ -0,0 +1,91 @@
{ config, lib, pkg, ... }:
let
inherit (lib)
mkOption
types
;
cfg = config.virtualisation.podman.networkSocket;
in
{
options.virtualisation.podman.networkSocket = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Make the Podman and Docker compatibility API available over the network
with TLS client certificate authentication.
This allows Docker clients to connect with the equivalents of the Docker
CLI <code>-H</code> and <code>--tls*</code> family of options.
For certificate setup, see https://docs.docker.com/engine/security/protect-access/
This option is independent of <xref linkend="opt-virtualisation.podman.dockerSocket.enable"/>.
'';
};
server = mkOption {
type = types.enum [];
description = ''
Choice of TLS proxy server.
'';
example = "ghostunnel";
};
openFirewall = mkOption {
type = types.bool;
default = false;
description = ''
Whether to open the port in the firewall.
'';
};
tls.cacert = mkOption {
type = types.path;
description = ''
Path to CA certificate to use for client authentication.
'';
};
tls.cert = mkOption {
type = types.path;
description = ''
Path to certificate describing the server.
'';
};
tls.key = mkOption {
type = types.path;
description = ''
Path to the private key corresponding to the server certificate.
Use a string for this setting. Otherwise it will be copied to the Nix
store first, where it is readable by any system process.
'';
};
port = mkOption {
type = types.port;
default = 2376;
description = ''
TCP port number for receiving TLS connections.
'';
};
listenAddress = mkOption {
type = types.str;
default = "0.0.0.0";
description = ''
Interface address for receiving TLS connections.
'';
};
};
config = {
networking.firewall.allowedTCPPorts =
lib.optional (cfg.enable && cfg.openFirewall) cfg.port;
};
meta.maintainers = lib.teams.podman.members ++ [ lib.maintainers.roberth ];
}

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, utils, ... }: { config, lib, pkgs, ... }:
let let
cfg = config.virtualisation.podman; cfg = config.virtualisation.podman;
toml = pkgs.formats.toml { }; toml = pkgs.formats.toml { };
@ -25,6 +25,7 @@ let
in in
{ {
imports = [ imports = [
./podman-network-socket.nix
(lib.mkRenamedOptionModule [ "virtualisation" "podman" "libpod" ] [ "virtualisation" "containers" "containersConf" ]) (lib.mkRenamedOptionModule [ "virtualisation" "podman" "libpod" ] [ "virtualisation" "containers" "containersConf" ])
]; ];
@ -46,6 +47,20 @@ in
''; '';
}; };
dockerSocket.enable = mkOption {
type = types.bool;
default = false;
description = ''
Make the Podman socket available in place of the Docker socket, so
Docker tools can find the Podman socket.
Podman implements the Docker API.
Users must be in the <code>podman</code> group in order to connect. As
with Docker, members of this group can gain root access.
'';
};
dockerCompat = mkOption { dockerCompat = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
@ -92,7 +107,7 @@ in
environment.systemPackages = [ cfg.package ] environment.systemPackages = [ cfg.package ]
++ lib.optional cfg.dockerCompat dockerCompat; ++ lib.optional cfg.dockerCompat dockerCompat;
environment.etc."cni/net.d/87-podman-bridge.conflist".source = utils.copyFile "${pkgs.podman-unwrapped.src}/cni/87-podman-bridge.conflist"; environment.etc."cni/net.d/87-podman-bridge.conflist".source = "${cfg.package}/etc/cni/net.d/87-podman-bridge.conflist";
virtualisation.containers = { virtualisation.containers = {
enable = true; # Enable common /etc/containers configuration enable = true; # Enable common /etc/containers configuration
@ -111,14 +126,36 @@ in
}; };
systemd.sockets.podman.wantedBy = [ "sockets.target" ]; systemd.sockets.podman.wantedBy = [ "sockets.target" ];
systemd.sockets.podman.socketConfig.SocketGroup = "podman";
systemd.tmpfiles.packages = [ cfg.package ]; systemd.tmpfiles.packages = [
# The /run/podman rule interferes with our podman group, so we remove
# it and let the systemd socket logic take care of it.
(pkgs.runCommand "podman-tmpfiles-nixos" { package = cfg.package; } ''
mkdir -p $out/lib/tmpfiles.d/
grep -v 'D! /run/podman 0700 root root' \
<$package/lib/tmpfiles.d/podman.conf \
>$out/lib/tmpfiles.d/podman.conf
'') ];
systemd.tmpfiles.rules =
lib.optionals cfg.dockerSocket.enable [
"L! /run/docker.sock - - - - /run/podman/podman.sock"
];
users.groups.podman = {};
assertions = [ assertions = [
{ {
assertion = cfg.dockerCompat -> !config.virtualisation.docker.enable; assertion = cfg.dockerCompat -> !config.virtualisation.docker.enable;
message = "Option dockerCompat conflicts with docker"; message = "Option dockerCompat conflicts with docker";
} }
{
assertion = cfg.dockerSocket.enable -> !config.virtualisation.docker.enable;
message = ''
The options virtualisation.podman.dockerSocket.enable and virtualisation.docker.enable conflict, because only one can serve the socket.
'';
}
]; ];
} }
]); ]);

View file

@ -335,6 +335,7 @@ in
plotinus = handleTest ./plotinus.nix {}; plotinus = handleTest ./plotinus.nix {};
podgrab = handleTest ./podgrab.nix {}; podgrab = handleTest ./podgrab.nix {};
podman = handleTestOn ["x86_64-linux"] ./podman.nix {}; podman = handleTestOn ["x86_64-linux"] ./podman.nix {};
podman-tls-ghostunnel = handleTestOn ["x86_64-linux"] ./podman-tls-ghostunnel.nix {};
pomerium = handleTestOn ["x86_64-linux"] ./pomerium.nix {}; pomerium = handleTestOn ["x86_64-linux"] ./pomerium.nix {};
postfix = handleTest ./postfix.nix {}; postfix = handleTest ./postfix.nix {};
postfix-raise-smtpd-tls-security-level = handleTest ./postfix-raise-smtpd-tls-security-level.nix {}; postfix-raise-smtpd-tls-security-level = handleTest ./postfix-raise-smtpd-tls-security-level.nix {};

View file

@ -0,0 +1,42 @@
# integration tests for brscan5 sane driver
#
import ./make-test-python.nix ({ pkgs, ...} : {
name = "brscan5";
meta = with pkgs.lib.maintainers; {
maintainers = [ mattchrist ];
};
machine = { pkgs, ... }:
{
nixpkgs.config.allowUnfree = true;
hardware.sane = {
enable = true;
brscan5 = {
enable = true;
netDevices = {
"a" = { model="ADS-1200"; nodename="BRW0080927AFBCE"; };
"b" = { model="ADS-1200"; ip="192.168.1.2"; };
};
};
};
};
testScript = ''
# sane loads libsane-brother5.so.1 successfully, and scanimage doesn't die
strace = machine.succeed('strace scanimage -L 2>&1').split("\n")
regexp = 'openat\(.*libsane-brother5.so.1", O_RDONLY|O_CLOEXEC\) = \d\d*$'
assert len([x for x in strace if re.match(regexp,x)]) > 0
# module creates a config
cfg = machine.succeed('cat /etc/opt/brother/scanner/brscan5/brsanenetdevice.cfg')
assert 'DEVICE=a , "ADS-1200" , 0x4f9:0x459 , NODENAME=BRW0080927AFBCE' in cfg
assert 'DEVICE=b , "ADS-1200" , 0x4f9:0x459 , IP-ADDRESS=192.168.1.2' in cfg
# scanimage lists the two network scanners
scanimage = machine.succeed("scanimage -L")
print(scanimage)
assert """device `brother5:net1;dev0' is a Brother b ADS-1200""" in scanimage
assert """device `brother5:net1;dev1' is a Brother a ADS-1200""" in scanimage
'';
})

View file

@ -0,0 +1,150 @@
/*
This test runs podman as a backend for the Docker CLI.
*/
import ./make-test-python.nix (
{ pkgs, lib, ... }:
let gen-ca = pkgs.writeScript "gen-ca" ''
# Create CA
PATH="${pkgs.openssl}/bin:$PATH"
openssl genrsa -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -subj '/C=NL/ST=Zuid-Holland/L=The Hague/O=Stevige Balken en Planken B.V./OU=OpSec/CN=Certificate Authority' -out ca.pem
# Create service
openssl genrsa -out podman-key.pem 4096
openssl req -subj '/CN=podman' -sha256 -new -key podman-key.pem -out service.csr
echo subjectAltName = DNS:podman,IP:127.0.0.1 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf
openssl x509 -req -days 365 -sha256 -in service.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out podman-cert.pem -extfile extfile.cnf
# Create client
openssl genrsa -out client-key.pem 4096
openssl req -subj '/CN=client' -new -key client-key.pem -out client.csr
echo extendedKeyUsage = clientAuth > extfile-client.cnf
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -extfile extfile-client.cnf
# Create CA 2
PATH="${pkgs.openssl}/bin:$PATH"
openssl genrsa -out ca-2-key.pem 4096
openssl req -new -x509 -days 365 -key ca-2-key.pem -sha256 -subj '/C=NL/ST=Zuid-Holland/L=The Hague/O=Stevige Balken en Planken B.V./OU=OpSec/CN=Certificate Authority' -out ca-2.pem
# Create client signed by CA 2
openssl genrsa -out client-2-key.pem 4096
openssl req -subj '/CN=client' -new -key client-2-key.pem -out client-2.csr
echo extendedKeyUsage = clientAuth > extfile-client.cnf
openssl x509 -req -days 365 -sha256 -in client-2.csr -CA ca-2.pem -CAkey ca-2-key.pem -CAcreateserial -out client-2-cert.pem -extfile extfile-client.cnf
'';
in
{
name = "podman-tls-ghostunnel";
meta = {
maintainers = lib.teams.podman.members ++ [ lib.maintainers.roberth ];
};
nodes = {
podman =
{ pkgs, ... }:
{
virtualisation.podman.enable = true;
virtualisation.podman.dockerSocket.enable = true;
virtualisation.podman.networkSocket = {
enable = true;
openFirewall = true;
server = "ghostunnel";
tls.cert = "/root/podman-cert.pem";
tls.key = "/root/podman-key.pem";
tls.cacert = "/root/ca.pem";
};
environment.systemPackages = [
pkgs.docker-client
];
users.users.alice = {
isNormalUser = true;
home = "/home/alice";
description = "Alice Foobar";
extraGroups = ["podman"];
};
};
client = { ... }: {
environment.systemPackages = [
# Installs the docker _client_ only
# Normally, you'd want `virtualisation.docker.enable = true;`.
pkgs.docker-client
];
environment.variables.DOCKER_HOST = "podman:2376";
environment.variables.DOCKER_TLS_VERIFY = "1";
};
};
testScript = ''
import shlex
def su_cmd(user, cmd):
cmd = shlex.quote(cmd)
return f"su {user} -l -c {cmd}"
def cmd(command):
print(f"+{command}")
r = os.system(command)
if r != 0:
raise Exception(f"Command {command} failed with exit code {r}")
start_all()
cmd("${gen-ca}")
podman.copy_from_host("ca.pem", "/root/ca.pem")
podman.copy_from_host("podman-cert.pem", "/root/podman-cert.pem")
podman.copy_from_host("podman-key.pem", "/root/podman-key.pem")
client.copy_from_host("ca.pem", "/root/.docker/ca.pem")
# client.copy_from_host("podman-cert.pem", "/root/podman-cert.pem")
client.copy_from_host("client-cert.pem", "/root/.docker/cert.pem")
client.copy_from_host("client-key.pem", "/root/.docker/key.pem")
# TODO (ghostunnel): add file watchers so the restart isn't necessary
podman.succeed("systemctl reset-failed && systemctl restart ghostunnel-server-podman-socket.service")
podman.wait_for_unit("sockets.target")
podman.wait_for_unit("ghostunnel-server-podman-socket.service")
with subtest("Create default network"):
podman.succeed("docker network create default")
with subtest("Root docker cli also works"):
podman.succeed("docker version")
with subtest("A podman member can also still use the docker cli"):
podman.succeed(su_cmd("alice", "docker version"))
with subtest("Run container remotely via docker cli"):
client.succeed("docker version")
# via socket would be nicer
podman.succeed("tar cv --files-from /dev/null | podman import - scratchimg")
client.succeed(
"docker run -d --name=sleeping -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg /bin/sleep 10"
)
client.succeed("docker ps | grep sleeping")
podman.succeed("docker ps | grep sleeping")
client.succeed("docker stop sleeping")
client.succeed("docker rm sleeping")
with subtest("Clients without cert will be denied"):
client.succeed("rm /root/.docker/{cert,key}.pem")
client.fail("docker version")
with subtest("Clients with wrong cert will be denied"):
client.copy_from_host("client-2-cert.pem", "/root/.docker/cert.pem")
client.copy_from_host("client-2-key.pem", "/root/.docker/key.pem")
client.fail("docker version")
'';
}
)

View file

@ -13,10 +13,23 @@ import ./make-test-python.nix (
{ {
virtualisation.podman.enable = true; virtualisation.podman.enable = true;
# To test docker socket support
virtualisation.podman.dockerSocket.enable = true;
environment.systemPackages = [
pkgs.docker-client
];
users.users.alice = { users.users.alice = {
isNormalUser = true; isNormalUser = true;
home = "/home/alice"; home = "/home/alice";
description = "Alice Foobar"; description = "Alice Foobar";
extraGroups = [ "podman" ];
};
users.users.mallory = {
isNormalUser = true;
home = "/home/mallory";
description = "Mallory Foobar";
}; };
}; };
@ -26,9 +39,9 @@ import ./make-test-python.nix (
import shlex import shlex
def su_cmd(cmd): def su_cmd(cmd, user = "alice"):
cmd = shlex.quote(cmd) cmd = shlex.quote(cmd)
return f"su alice -l -c {cmd}" return f"su {user} -l -c {cmd}"
podman.wait_for_unit("sockets.target") podman.wait_for_unit("sockets.target")
@ -105,6 +118,27 @@ import ./make-test-python.nix (
assert pid == "1" assert pid == "1"
pid = podman.succeed("podman run --rm --init busybox readlink /proc/self").strip() pid = podman.succeed("podman run --rm --init busybox readlink /proc/self").strip()
assert pid == "2" assert pid == "2"
with subtest("A podman member can use the docker cli"):
podman.succeed(su_cmd("docker version"))
with subtest("Run container via docker cli"):
podman.succeed("docker network create default")
podman.succeed("tar cv --files-from /dev/null | podman import - scratchimg")
podman.succeed(
"docker run -d --name=sleeping -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg /bin/sleep 10"
)
podman.succeed("docker ps | grep sleeping")
podman.succeed("podman ps | grep sleeping")
podman.succeed("docker stop sleeping")
podman.succeed("docker rm sleeping")
podman.succeed("docker network rm default")
with subtest("A podman non-member can not use the docker cli"):
podman.fail(su_cmd("docker version", user="mallory"))
# TODO: add docker-compose test
''; '';
} }
) )

View file

@ -27,16 +27,16 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
inherit pname; inherit pname;
version = if isStereo version = if isStereo
then "2.76" # stereo then "2.77" # stereo
else "2.75"; # normal else "2.76"; # normal
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/goattracker2/GoatTracker_${version}${optionalString isStereo "_Stereo"}.zip"; url = "mirror://sourceforge/goattracker2/GoatTracker_${version}${optionalString isStereo "_Stereo"}.zip";
sha256 = if isStereo sha256 = if isStereo
then "12cz3780x5k047jqdv69n6rjgbfiwv67z850kfl4i37lxja432l7" # stereo then "1hiig2d152sv9kazwz33i56x1c54h5sh21ipkqnp6qlnwj8x1ksy" # stereo
else "1km97nl7qvk6qc5l5j69wncbm76hf86j47sgzgr968423g0bxxlk"; # normal else "0d7a3han4jw4bwiba3j87racswaajgl3pj4sb5lawdqdxicv3dn1"; # normal
}; };
sourceRoot = (if isStereo then "gt2stereo/trunk" else "goattrk2") + "/src"; sourceRoot = "src";
nativeBuildInputs = [ copyDesktopItems unzip imagemagick ]; nativeBuildInputs = [ copyDesktopItems unzip imagemagick ];
buildInputs = [ SDL ]; buildInputs = [ SDL ];

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "GxPlugins.lv2"; pname = "GxPlugins.lv2";
version = "0.8"; version = "0.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "brummer10"; owner = "brummer10";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "11iv7bwvvspm74pisqvcpsxpg9xi6b08hq4i8q67mri4mvy9hmal"; sha256 = "02fksl8wr443ygwgcd1c2zab8kp67a6ps12k71ysqx7szv4zq877";
fetchSubmodules = true; fetchSubmodules = true;
}; };
@ -29,6 +29,6 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/brummer10/GxPlugins.lv2"; homepage = "https://github.com/brummer10/GxPlugins.lv2";
description = "A set of extra lv2 plugins from the guitarix project"; description = "A set of extra lv2 plugins from the guitarix project";
maintainers = [ maintainers.magnetophon ]; maintainers = [ maintainers.magnetophon ];
license = licenses.gpl3; license = licenses.gpl3Plus;
}; };
} }

View file

@ -1,35 +1,31 @@
{ lib, stdenv, fetchurl, unzip, lv2 }: { lib, stdenv, fetchFromGitHub, lv2 }:
stdenv.mkDerivation rec {
stdenv.mkDerivation {
pname = "molot-lite"; pname = "molot-lite";
version = "unstable-2014-04-23"; version = "1.0.0";
src = fetchurl { src = fetchFromGitHub {
# fetchzip does not accept urls that do not end with .zip. owner = "magnetophon";
url = "https://sourceforge.net/p/molot/code/ci/c4eddc426f8d5821e8ebcf1d67265365e4c8c52a/tree/molot_src.zip?format=raw"; repo = pname;
sha256 = "1c47dwfgrmn9459px8s5zikcqyr0777v226qzcxlr6azlcjwr51b"; rev = version;
sha256 = "0xbvicfk1rgp01nlg6hlym9bnygry0nrbv88mv7w6hnacvl63ba4";
}; };
nativeBuildInputs = [ unzip ];
buildInputs = [ lv2 ]; buildInputs = [ lv2 ];
unpackPhase = '' makeFlags = [ "INSTALL_DIR=$out/lib/lv2" ];
unzip $src
'';
buildPhase = ''
make -C Molot_Mono_Lite
make -C Molot_Stereo_Lite
'';
installPhase = '' installPhase = ''
runHook preInstall
make install INSTALL_DIR=$out/lib/lv2 -C Molot_Mono_Lite make install INSTALL_DIR=$out/lib/lv2 -C Molot_Mono_Lite
make install INSTALL_DIR=$out/lib/lv2 -C Molot_Stereo_Lite make install INSTALL_DIR=$out/lib/lv2 -C Molot_Stereo_Lite
runHook postInstall
''; '';
meta = with lib; { meta = with lib; {
description = "Stereo and mono audio signal dynamic range compressor in LV2 format"; description = "Stereo and mono audio signal dynamic range compressor in LV2 format";
homepage = "https://sourceforge.net/projects/molot/"; homepage = "https://github.com/magnetophon/molot-lite";
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
maintainers = [ maintainers.magnetophon ]; maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux; platforms = platforms.linux;

View file

@ -14,16 +14,16 @@ let
in in
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "ncspot"; pname = "ncspot";
version = "0.7.1"; version = "0.7.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hrkfdn"; owner = "hrkfdn";
repo = "ncspot"; repo = "ncspot";
rev = "v${version}"; rev = "v${version}";
sha256 = "1qhdhybbgnn7ky9qdxwi07flwzjagp22qmlccbz1z3lhznm9a971"; sha256 = "0ww7ipyvcdphbkzjpvdqs1s3bqk3rj3jdy1n3bnk76csw9vgn2zi";
}; };
cargoSha256 = "1kv37ib0klykmjabm1qyz55frs7djkx225alj4rk4a92xq9m8i9v"; cargoSha256 = "1mrjp5p3iryxzgg6ca9zjwm8n6w0ljs108ll0wkwgfih6rip7ba4";
cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ]; cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ];

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchurl, python3, wrapGAppsHook, gettext, libsoup, gnome, gtk3, gdk-pixbuf, librsvg, { lib, fetchurl, python3, wrapGAppsHook, gettext, libsoup, gnome, gtk3, gdk-pixbuf, librsvg,
tag ? "", xvfb-run, dbus, glibcLocales, glib, glib-networking, gobject-introspection, hicolor-icon-theme, tag ? "", xvfb-run, dbus, glibcLocales, glib, glib-networking, gobject-introspection, hicolor-icon-theme,
gst_all_1, withGstPlugins ? true, gst_all_1, withGstPlugins ? true,
xineBackend ? false, xine-lib, xineBackend ? false, xine-lib,
@ -9,15 +9,13 @@
let optionals = lib.optionals; in let optionals = lib.optionals; in
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "quodlibet${tag}"; pname = "quodlibet${tag}";
version = "4.3.0"; version = "4.4.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz"; url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz";
sha256 = "1q17ckblfa4fcs7wsjwsq1dj7360ymrdyjkyqmj864wzlqkw1rd2"; sha256 = "sha256-oDMY0nZ+SVlVF2PQqH+tl3OHr3EmCP5XJxQXaiS782c=";
}; };
patches = [ ./quodlibet-feedparser6.patch ];
nativeBuildInputs = [ wrapGAppsHook gettext ]; nativeBuildInputs = [ wrapGAppsHook gettext ];
checkInputs = [ gdk-pixbuf hicolor-icon-theme ] ++ (with python3.pkgs; [ pytest pytest_xdist polib xvfb-run dbus.daemon glibcLocales ]); checkInputs = [ gdk-pixbuf hicolor-icon-theme ] ++ (with python3.pkgs; [ pytest pytest_xdist polib xvfb-run dbus.daemon glibcLocales ]);
@ -50,8 +48,6 @@ python3.pkgs.buildPythonApplication rec {
checkPhase = '' checkPhase = ''
runHook preCheck runHook preCheck
# newer gettext spews some warnings which fail the tests
substituteInPlace tests/test_po.py --replace "strict=True" "strict=False"
# otherwise tests can't find the app icons; instead of creating index.theme from scratch # otherwise tests can't find the app icons; instead of creating index.theme from scratch
# I re-used the one from hicolor-icon-theme which seems to work # I re-used the one from hicolor-icon-theme which seems to work
cp "${hicolor-icon-theme}/share/icons/hicolor/index.theme" quodlibet/images/hicolor cp "${hicolor-icon-theme}/share/icons/hicolor/index.theme" quodlibet/images/hicolor

View file

@ -1,12 +0,0 @@
Support feedparser 6, based on https://github.com/quodlibet/quodlibet/pull/3464
--- a/quodlibet/browsers/audiofeeds.py
+++ b/quodlibet/browsers/audiofeeds.py
@@ -137,7 +137,4 @@ class Feed(list):
def parse(self):
try:
- if not self._check_feed():
- return False
-
doc = feedparser.parse(self.uri)
except Exception as e:

View file

@ -13,7 +13,8 @@ stdenv.mkDerivation rec {
sha256 = "1n6cgjiw3vkv7a1h1nki5syyjxjb6icknr9s049w2jrag10bxssn"; sha256 = "1n6cgjiw3vkv7a1h1nki5syyjxjb6icknr9s049w2jrag10bxssn";
}; };
configureFlags = [ "--enable-dependency-tracking" ]; configureFlags = [ "--enable-dependency-tracking" ]
++ lib.optional stdenv.isDarwin "--disable-sdltest";
nativeBuildInputs = [ autoreconfHook python ]; nativeBuildInputs = [ autoreconfHook python ];

View file

@ -19,20 +19,20 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "pika-backup"; pname = "pika-backup";
version = "0.3.1"; version = "0.3.2";
src = fetchFromGitLab { src = fetchFromGitLab {
domain = "gitlab.gnome.org"; domain = "gitlab.gnome.org";
owner = "World"; owner = "World";
repo = "pika-backup"; repo = "pika-backup";
rev = "v${version}"; rev = "v${version}";
sha256 = "0cr3axfp15nzwmsqyz6j781qhr2gsn9p69m0jfzy89pl83d6vcz0"; sha256 = "sha256-dKVyvB4s1MZHri0dFJDBUXQKsi2KgP30ZhsJ486M+og=";
}; };
cargoDeps = rustPlatform.fetchCargoTarball { cargoDeps = rustPlatform.fetchCargoTarball {
inherit src; inherit src;
name = "${pname}-${version}"; name = "${pname}-${version}";
sha256 = "1z0cbrkhxyzwf7vjjsvdppb7zhflpkw4m5cy90a2315nbll3hpbp"; sha256 = "1vsh8vqgmfady82d7wfxkknmrp7mq7nizpif2zwg3kqbl964mp3y";
}; };
patches = [ patches = [

View file

@ -54,15 +54,7 @@ let
configurePatched = configure // { configurePatched = configure // {
packages.nix = { customRC = pluginRc + customRC + (configure.customRC or "");
start = lib.filter (f: f != null)
(map (x: if x.optional == false then x.plugin else null)
pluginsNormalized);
opt = lib.filter (f: f != null)
(map (x: if x.optional == true then x.plugin else null)
pluginsNormalized);
};
customRC = pluginRc + customRC;
}; };
# A function to get the configuration string (if any) from an element of 'plugins' # A function to get the configuration string (if any) from an element of 'plugins'
@ -173,11 +165,8 @@ let
assert withPython -> throw "Python2 support has been removed from neovim, please remove withPython and extraPythonPackages."; assert withPython -> throw "Python2 support has been removed from neovim, please remove withPython and extraPythonPackages.";
wrapNeovimUnstable neovim (res // { wrapNeovimUnstable neovim (res // {
wrapperArgs = lib.escapeShellArgs ( wrapperArgs = lib.escapeShellArgs res.wrapperArgs + extraMakeWrapperArgs;
res.wrapperArgs ++ lib.optionals (configure != {}) [ wrapRc = (configure != {});
"--add-flags" "-u ${writeText "init.vim" res.neovimRcContent}"
]) + " " + extraMakeWrapperArgs
;
}); });
in in
{ {

View file

@ -107,6 +107,7 @@ let
'') '')
+ '' + ''
rm $out/bin/nvim rm $out/bin/nvim
touch $out/rplugin.vim
makeWrapper ${lib.escapeShellArgs finalMakeWrapperArgs} ${wrapperArgsStr} makeWrapper ${lib.escapeShellArgs finalMakeWrapperArgs} ${wrapperArgsStr}
''; '';

View file

@ -11,7 +11,7 @@ let
else if stdenv.hostPlatform.system == "armv7l-linux" then "armv7l" else if stdenv.hostPlatform.system == "armv7l-linux" then "armv7l"
else if stdenv.hostPlatform.system == "aarch64-linux" || stdenv.hostPlatform.system == "aarch64-darwin" then "aarch64" else if stdenv.hostPlatform.system == "aarch64-linux" || stdenv.hostPlatform.system == "aarch64-darwin" then "aarch64"
else if stdenv.hostPlatform.system == "powerpc64le-linux" then "ppc64le" else if stdenv.hostPlatform.system == "powerpc64le-linux" then "ppc64le"
else throw "ImageMagick is not supported on this platform."; else null;
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
configureFlags = configureFlags =
[ "--with-frozenpaths" ] [ "--with-frozenpaths" ]
++ [ "--with-gcc-arch=${arch}" ] ++ (if arch != null then [ "--with-gcc-arch=${arch}" ] else [ "--without-gcc-arch" ])
++ lib.optional (librsvg != null) "--with-rsvg" ++ lib.optional (librsvg != null) "--with-rsvg"
++ lib.optionals (ghostscript != null) ++ lib.optionals (ghostscript != null)
[ "--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts" [ "--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts"

View file

@ -13,7 +13,7 @@ let
else if stdenv.hostPlatform.system == "armv7l-linux" then "armv7l" else if stdenv.hostPlatform.system == "armv7l-linux" then "armv7l"
else if stdenv.hostPlatform.system == "aarch64-linux" || stdenv.hostPlatform.system == "aarch64-darwin" then "aarch64" else if stdenv.hostPlatform.system == "aarch64-linux" || stdenv.hostPlatform.system == "aarch64-darwin" then "aarch64"
else if stdenv.hostPlatform.system == "powerpc64le-linux" then "ppc64le" else if stdenv.hostPlatform.system == "powerpc64le-linux" then "ppc64le"
else throw "ImageMagick is not supported on this platform."; else null;
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
configureFlags = configureFlags =
[ "--with-frozenpaths" ] [ "--with-frozenpaths" ]
++ [ "--with-gcc-arch=${arch}" ] ++ (if arch != null then [ "--with-gcc-arch=${arch}" ] else [ "--without-gcc-arch" ])
++ lib.optional (librsvg != null) "--with-rsvg" ++ lib.optional (librsvg != null) "--with-rsvg"
++ lib.optionals (ghostscript != null) ++ lib.optionals (ghostscript != null)
[ "--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts" [ "--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts"

View file

@ -0,0 +1,98 @@
{ stdenv, lib, fetchurl, callPackage, patchelf, makeWrapper, coreutils, libusb1, avahi-compat, glib, libredirect }:
let
myPatchElf = file: with lib; ''
patchelf --set-interpreter \
${stdenv.glibc}/lib/ld-linux${optionalString stdenv.is64bit "-x86-64"}.so.2 \
${file}
'';
in
stdenv.mkDerivation rec {
pname = "brscan5";
version = "1.2.6-0";
src = {
"i686-linux" = fetchurl {
url = "https://download.brother.com/welcome/dlf104034/${pname}-${version}.i386.deb";
sha256 = "102q745pc0168syggd4gym51qf3m3iqld3a4skfnbkm6yky4w4s8";
};
"x86_64-linux" = fetchurl {
url = "https://download.brother.com/welcome/dlf104033/${pname}-${version}.amd64.deb";
sha256 = "1pwbzhpg5nzpw2rw936vf2cr334v8iny16y8fbb1zimgzmv427wx";
};
}."${stdenv.hostPlatform.system}";
unpackPhase = ''
ar x $src
tar xfv data.tar.xz
'';
nativeBuildInputs = [ makeWrapper patchelf coreutils ];
buildInputs = [ libusb1 avahi-compat stdenv.cc.cc glib ];
dontBuild = true;
postPatch = ''
${myPatchElf "opt/brother/scanner/brscan5/brsaneconfig5"}
${myPatchElf "opt/brother/scanner/brscan5/brscan_cnetconfig"}
${myPatchElf "opt/brother/scanner/brscan5/brscan_gnetconfig"}
for a in opt/brother/scanner/brscan5/*.so.* opt/brother/scanner/brscan5/brscan_[cg]netconfig; do
if ! test -L $a; then
patchelf --set-rpath ${lib.makeLibraryPath buildInputs} $a
fi
done
# driver is hardcoded to look in /opt/brother/scanner/brscan5/models for model metadata.
# patch it to look in /etc/opt/brother/scanner/models instead, so nixos environment.etc can make it available
printf '/etc/opt/brother/scanner/models\x00' | dd of=opt/brother/scanner/brscan5/libsane-brother5.so.1.0.7 bs=1 seek=84632 conv=notrunc
'';
installPhase = with lib; ''
runHook preInstall
PATH_TO_BRSCAN5="opt/brother/scanner/brscan5"
mkdir -p $out/$PATH_TO_BRSCAN5
cp -rp $PATH_TO_BRSCAN5/* $out/$PATH_TO_BRSCAN5
pushd $out/$PATH_TO_BRSCAN5
ln -s libLxBsDeviceAccs.so.1.0.0 libLxBsDeviceAccs.so.1
ln -s libLxBsNetDevAccs.so.1.0.0 libLxBsNetDevAccs.so.1
ln -s libLxBsScanCoreApi.so.3.0.0 libLxBsScanCoreApi.so.3
ln -s libLxBsUsbDevAccs.so.1.0.0 libLxBsUsbDevAccs.so.1
ln -s libsane-brother5.so.1.0.7 libsane-brother5.so.1
popd
mkdir -p $out/lib/sane
for file in $out/$PATH_TO_BRSCAN5/*.so.* ; do
ln -s $file $out/lib/sane/
done
makeWrapper \
"$out/$PATH_TO_BRSCAN5/brsaneconfig5" \
"$out/bin/brsaneconfig5" \
--suffix-each NIX_REDIRECT ":" "/etc/opt/brother/scanner/brscan5=$out/opt/brother/scanner/brscan5 /opt/brother/scanner/brscan5=$out/opt/brother/scanner/brscan5" \
--set LD_PRELOAD ${libredirect}/lib/libredirect.so
mkdir -p $out/etc/sane.d/dll.d
echo "brother5" > $out/etc/sane.d/dll.d/brother5.conf
mkdir -p $out/etc/udev/rules.d
cp -p $PATH_TO_BRSCAN5/udev-rules/NN-brother-mfp-brscan5-1.0.2-2.rules \
$out/etc/udev/rules.d/49-brother-mfp-brscan5-1.0.2-2.rules
ETCDIR=$out/etc/opt/brother/scanner/brscan5
mkdir -p $ETCDIR
cp -rp $PATH_TO_BRSCAN5/{models,brscan5.ini,brsanenetdevice.cfg} $ETCDIR/
runHook postInstall
'';
dontPatchELF = true;
meta = {
description = "Brother brscan5 sane backend driver";
homepage = "https://www.brother.com";
platforms = [ "i686-linux" "x86_64-linux" ];
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ mattchrist ];
};
}

View file

@ -0,0 +1,24 @@
{ mkDerivation
, lib
, extra-cmake-modules
, kdoctools
, akonadi
, calendarsupport
}:
mkDerivation {
pname = "akonadi-calendar-tools";
meta = {
homepage = "https://github.com/KDE/akonadi-calendar-tools";
description = "Console applications and utilities for managing calendars in Akonadi";
license = with lib.licenses; [ gpl2Plus cc0 ];
maintainers = with lib.maintainers; [ kennyballou ];
platforms = lib.platforms.linux;
};
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [
akonadi
calendarsupport
];
outputs = [ "out" "dev" ];
}

View file

@ -68,6 +68,7 @@ let
in { in {
akonadi = callPackage ./akonadi {}; akonadi = callPackage ./akonadi {};
akonadi-calendar = callPackage ./akonadi-calendar.nix {}; akonadi-calendar = callPackage ./akonadi-calendar.nix {};
akonadi-calendar-tools = callPackage ./akonadi-calendar-tools.nix {};
akonadi-contacts = callPackage ./akonadi-contacts.nix {}; akonadi-contacts = callPackage ./akonadi-contacts.nix {};
akonadi-import-wizard = callPackage ./akonadi-import-wizard.nix {}; akonadi-import-wizard = callPackage ./akonadi-import-wizard.nix {};
akonadi-mime = callPackage ./akonadi-mime.nix {}; akonadi-mime = callPackage ./akonadi-mime.nix {};
@ -93,6 +94,7 @@ let
incidenceeditor = callPackage ./incidenceeditor.nix {}; incidenceeditor = callPackage ./incidenceeditor.nix {};
k3b = callPackage ./k3b.nix {}; k3b = callPackage ./k3b.nix {};
kaccounts-integration = callPackage ./kaccounts-integration.nix {}; kaccounts-integration = callPackage ./kaccounts-integration.nix {};
kaccounts-providers = callPackage ./kaccounts-providers.nix {};
kaddressbook = callPackage ./kaddressbook.nix {}; kaddressbook = callPackage ./kaddressbook.nix {};
kalarm = callPackage ./kalarm.nix {}; kalarm = callPackage ./kalarm.nix {};
kalarmcal = callPackage ./kalarmcal.nix {}; kalarmcal = callPackage ./kalarmcal.nix {};
@ -137,6 +139,7 @@ let
kipi-plugins = callPackage ./kipi-plugins.nix {}; kipi-plugins = callPackage ./kipi-plugins.nix {};
kitinerary = callPackage ./kitinerary.nix {}; kitinerary = callPackage ./kitinerary.nix {};
kio-extras = callPackage ./kio-extras.nix {}; kio-extras = callPackage ./kio-extras.nix {};
kio-gdrive = callPackage ./kio-gdrive.nix {};
kldap = callPackage ./kldap.nix {}; kldap = callPackage ./kldap.nix {};
kleopatra = callPackage ./kleopatra.nix {}; kleopatra = callPackage ./kleopatra.nix {};
klettres = callPackage ./klettres.nix {}; klettres = callPackage ./klettres.nix {};

View file

@ -0,0 +1,44 @@
{ mkDerivation
, lib
, accounts-qt
, extra-cmake-modules
, intltool
, kaccounts-integration
, kcmutils
, kcoreaddons
, kdeclarative
, kdoctools
, kio
, kpackage
, kwallet
, qtwebengine
, signond
}:
mkDerivation {
pname = "kaccounts-providers";
meta = with lib; {
homepage = "https://community.kde.org/KTp/Setting_up_KAccounts";
description = "Online account providers";
maintainers = with maintainers; [ kennyballou ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
nativeBuildInputs = [
extra-cmake-modules
intltool
kdoctools
];
buildInputs = [
accounts-qt
kaccounts-integration
kcmutils
kcoreaddons
kdeclarative
kio
kpackage
kwallet
qtwebengine
signond
];
}

View file

@ -0,0 +1,36 @@
{ mkDerivation
, lib
, extra-cmake-modules
, kdoctools
, kio
, libkgapi
, kcalendarcore
, kcontacts
, qtkeychain
, libsecret
, kaccounts-integration
}:
mkDerivation {
pname = "kio-gdrive";
meta = with lib; {
homepage = "https://github.com/KDE/kio-gdrive";
description = "KIO slave for Google APIs";
maintainers = with maintainers; [ kennyballou ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
nativeBuildInputs = [
extra-cmake-modules
kdoctools
];
buildInputs = [
kcalendarcore
kcontacts
kaccounts-integration
libkgapi
libsecret
kio
qtkeychain
];
}

View file

@ -18,13 +18,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dbeaver"; pname = "dbeaver";
version = "21.0.5"; # When updating also update fetchedMavenDeps.sha256 version = "21.1.0"; # When updating also update fetchedMavenDeps.sha256
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dbeaver"; owner = "dbeaver";
repo = "dbeaver"; repo = "dbeaver";
rev = version; rev = version;
sha256 = "sha256-WMXhGXGHNjMJqob6A5S4+t9MDdJydAjdoY0u7T3ANbw="; sha256 = "sha256-MHfW6gZFB2osE+8Ek7I40fg2cdowph3hvKqkjG7+rY4=";
}; };
fetchedMavenDeps = stdenv.mkDerivation { fetchedMavenDeps = stdenv.mkDerivation {
@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
dontFixup = true; dontFixup = true;
outputHashAlgo = "sha256"; outputHashAlgo = "sha256";
outputHashMode = "recursive"; outputHashMode = "recursive";
outputHash = "sha256-RspJTWVM0ZpAz4yDeKsG7wSHZ//bi3SSV5c0gbsqZKY="; outputHash = "sha256-FdWQ+2U5bIXSASm3SaLjyQlaRc1AkYPpFJSP4PnCWJw=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -2,13 +2,13 @@
mkDerivation rec { mkDerivation rec {
pname = "gpxsee"; pname = "gpxsee";
version = "9.0"; version = "9.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tumic0"; owner = "tumic0";
repo = "GPXSee"; repo = "GPXSee";
rev = version; rev = version;
sha256 = "sha256-4MzRXpxvJcj5KptTBH6rSr2ZyQ13nV7Yq96ti+CMytw="; sha256 = "sha256-szq1i2/NEtMK4paSkxtkKXc8yY8qGj2U/p6CzNIecAY=";
}; };
patches = (substituteAll { patches = (substituteAll {
@ -39,6 +39,6 @@ mkDerivation rec {
changelog = "https://build.opensuse.org/package/view_file/home:tumic:GPXSee/gpxsee/gpxsee.changes"; changelog = "https://build.opensuse.org/package/view_file/home:tumic:GPXSee/gpxsee/gpxsee.changes";
license = licenses.gpl3Only; license = licenses.gpl3Only;
maintainers = with maintainers; [ womfoo sikmir ]; maintainers = with maintainers; [ womfoo sikmir ];
platforms = with platforms; linux ++ darwin; platforms = platforms.unix;
}; };
} }

View file

@ -1,27 +1,45 @@
{ lib, stdenv, fetchurl, gtk2, glib, pkg-config, libgnome, libgnomeui, vte { lib
, curl, cdparanoia, libid3tag, ncurses, libtool }: , stdenv
, fetchurl
, gtk2
, glib
, pkg-config
, libgnome
, libgnomeui
, vte
, curl
, cdparanoia
, libid3tag
, ncurses
, libtool
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "grip-4.2.0"; name = "grip-4.2.1";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/grip/${name}.tar.gz"; url = "mirror://sourceforge/grip/${name}.tar.gz";
sha256 = "1si5kidwg0i2jg0brzyvjrzw24v3km2hdgd4kda1adzq81a3p1cs"; sha256 = "sha256-3bFJURPbq9rzLsJCppRjSARhcOJxC4eSfw5VxvZgQ3Q=";
}; };
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config libtool ];
buildInputs = [ gtk2 glib libgnome libgnomeui vte curl cdparanoia buildInputs = [
libid3tag ncurses libtool ]; gtk2
glib
hardeningDisable = [ "format" ]; libgnome
libgnomeui
# glib-2.62 deprecations vte
NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS"; curl
cdparanoia
libid3tag
ncurses
];
enableParallelBuilding = true;
meta = { meta = {
description = "GTK-based audio CD player/ripper"; description = "GTK-based audio CD player/ripper";
homepage = "http://nostatic.org/grip"; homepage = "http://nostatic.org/grip";
license = lib.licenses.gpl2; license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ marcweber peti ]; maintainers = with lib.maintainers; [ marcweber peti ];
platforms = lib.platforms.linux; platforms = lib.platforms.linux;

View file

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "xplr"; pname = "xplr";
version = "0.10.1"; version = "0.13.1";
src = fetchCrate { src = fetchCrate {
inherit pname version; inherit pname version;
sha256 = "17x514pwbkzkkrd47a66a4iz3bxrxvm8hk5hphsfbhgzqfnf9iy7"; sha256 = "1aanw0l8b4ak0kikkixmb817qw48ypviq9dxdivzwc29rjvgp152";
}; };
buildInputs = lib.optional stdenv.isDarwin libiconv; buildInputs = lib.optional stdenv.isDarwin libiconv;
cargoSha256 = "03y2fk174rdjvw8wdzwc0hhj0zqwpap7qcga51yhq877rgyxbxir"; cargoSha256 = "16iaj1pqvqwi0rq4k3lmqwd8skbjf55133ri69hj26gz88k4q43w";
meta = with lib; { meta = with lib; {
description = "A hackable, minimal, fast TUI file explorer"; description = "A hackable, minimal, fast TUI file explorer";

View file

@ -165,14 +165,10 @@ let
./patches/widevine-79.patch # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags ./patches/widevine-79.patch # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags
# Fix the build by adding a missing dependency (s. https://crbug.com/1197837): # Fix the build by adding a missing dependency (s. https://crbug.com/1197837):
./patches/fix-missing-atspi2-dependency.patch ./patches/fix-missing-atspi2-dependency.patch
] ++ optionals (chromiumVersionAtLeast "91") [
./patches/closure_compiler-Use-the-Java-binary-from-the-system.patch ./patches/closure_compiler-Use-the-Java-binary-from-the-system.patch
]; ];
postPatch = lib.optionalString (chromiumVersionAtLeast "91") '' postPatch = ''
# Required for patchShebangs (unsupported):
chmod -x third_party/webgpu-cts/src/tools/deno
'' + ''
# remove unused third-party # remove unused third-party
for lib in ${toString gnSystemLibraries}; do for lib in ${toString gnSystemLibraries}; do
if [ -d "third_party/$lib" ]; then if [ -d "third_party/$lib" ]; then
@ -191,6 +187,7 @@ let
substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \ substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \
--replace "/usr/bin/env -S make -f" "/usr/bin/make -f" --replace "/usr/bin/env -S make -f" "/usr/bin/make -f"
fi fi
chmod -x third_party/webgpu-cts/src/tools/deno
# We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \ substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \

View file

@ -44,19 +44,19 @@
} }
}, },
"ungoogled-chromium": { "ungoogled-chromium": {
"version": "90.0.4430.212", "version": "91.0.4472.77",
"sha256": "17nmhrkl81qqvzbh861k2mmifncx4wg1mv1fmn52f8gzn461vqdb", "sha256": "0c8vj3gq3nmb7ssiwj6875g0a8hcprss1a4gqw9h7llqywza9ma5",
"sha256bin64": "1y33c5829s22yfj0qmsj8fpcxnjhcm3fsxz7744csfsa9cy4fjr7", "sha256bin64": "0caf47xam5igdnbhipal1iyicnxxvadhi61k199rwysrvyv5sdad",
"deps": { "deps": {
"gn": { "gn": {
"version": "2021-02-09", "version": "2021-04-06",
"url": "https://gn.googlesource.com/gn", "url": "https://gn.googlesource.com/gn",
"rev": "dfcbc6fed0a8352696f92d67ccad54048ad182b3", "rev": "dba01723a441c358d843a575cb7720d54ddcdf92",
"sha256": "1941bzg37c4dpsk3sh6ga3696gpq6vjzpcw9rsnf6kdr9mcgdxvn" "sha256": "199xkks67qrn0xa5fhp24waq2vk8qb78a96cb3kdd8v1hgacgb8x"
}, },
"ungoogled-patches": { "ungoogled-patches": {
"rev": "90.0.4430.212-1", "rev": "91.0.4472.77-1",
"sha256": "05jh05a4g50ws7pr18dl5pwi95knygh6xywp7kyydir7wy1pbin8" "sha256": "1jfmmkw1y4rcjfgsm7b4v2lrgd3sks5qpajvq0djflbhkpsqxfk0"
} }
} }
} }

View file

@ -13,13 +13,13 @@ assert enablePython -> python != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "elinks"; pname = "elinks";
version = "0.14.0"; version = "0.14.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "rkd77"; owner = "rkd77";
repo = "felinks"; repo = "felinks";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-LxJJ0yBlw9hJ/agyL9dbVe4STKdXE8rtk1mMFqe1fFI="; sha256 = "sha256-D7dUVHgYGzY4FXEnOzXw0Fao3gLgfFuCl8LJdLVpcSM=";
}; };
buildInputs = [ buildInputs = [

View file

@ -7,10 +7,10 @@ in
rec { rec {
firefox = common rec { firefox = common rec {
pname = "firefox"; pname = "firefox";
ffversion = "88.0.1"; ffversion = "89.0";
src = fetchurl { src = fetchurl {
url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
sha512 = "e2d7fc950ba49f225c83ee1d799d6318fcf16c33a3b7f40b85c49d5b7865f7e632c703e5fd227a303b56e2565d0796283ebb12d7fd1a02781dcaa45e84cea934"; sha512 = "5089720feda15d054d0aa4c3bdeb84760314dadd6381d7360e688d8e396154868220c6315add650d8d2a42652cb8a9bfeb833885812ef0bd70a74ee58ad18aa3";
}; };
meta = { meta = {

View file

@ -19,13 +19,13 @@ let
in in
buildGoModule rec { buildGoModule rec {
pname = "argo"; pname = "argo";
version = "3.0.6"; version = "3.0.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "argoproj"; owner = "argoproj";
repo = "argo"; repo = "argo";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-QD5V6Bz/wfbyNPoXizjhPGyHN7ieotsYbwLTz2ADfcY="; sha256 = "sha256-lZTSUNtmJZKONt0Bv42dBAc+87L14HaPxvPxhFe8nyc=";
}; };
vendorSha256 = "sha256-YjVAoMyGKMHLGEPeOOkCKCzeWFiUsXfJIKcw5GYoljg="; vendorSha256 = "sha256-YjVAoMyGKMHLGEPeOOkCKCzeWFiUsXfJIKcw5GYoljg=";

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "cni-plugin-dnsname"; pname = "cni-plugin-dnsname";
version = "1.1.1"; version = "1.2.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "containers"; owner = "containers";
repo = "dnsname"; repo = "dnsname";
rev = "v${version}"; rev = "v${version}";
sha256 = "090kpq2ppan9ayajdk5vwbvww30nphylgajn2p3441d4jg2nvsm3"; sha256 = "sha256-hHkQOHDso92gXFCz40iQ7j2cHTEAMsaeW8MCJV2Otqo=";
}; };
patches = [ ./hardcode-dnsmasq-path.patch ]; patches = [ ./hardcode-dnsmasq-path.patch ];

View file

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

View file

@ -35,6 +35,12 @@ stdenv.mkDerivation rec {
hash = "sha256-qq8cZplt5YWUwsXUShMDhQm3RGH2kCEBk64x6bOa50E="; hash = "sha256-qq8cZplt5YWUwsXUShMDhQm3RGH2kCEBk64x6bOa50E=";
}; };
# https://github.com/CasualX/obfstr/blob/v0.2.4/build.rs#L5
# obfstr 0.2.4 fails to set RUSTC_BOOTSTRAP in its build script because cargo
# build scripts are forbidden from setting RUSTC_BOOTSTRAP since rustc 1.52.0
# https://github.com/rust-lang/rust/blob/1.52.0/RELEASES.md#compatibility-notes
RUSTC_BOOTSTRAP = 1;
patches = [ patches = [
# Post install tries to generate an icon cache & update the # Post install tries to generate an icon cache & update the
# desktop database. The gtk setup hook drop-icon-theme-cache.sh # desktop database. The gtk setup hook drop-icon-theme-cache.sh

View file

@ -4,13 +4,13 @@ let
arch = if stdenv.is64bit then "amd64" else "x86"; arch = if stdenv.is64bit then "amd64" else "x86";
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "teamspeak-server"; pname = "teamspeak-server";
version = "3.13.3"; version = "3.13.5";
src = fetchurl { src = fetchurl {
url = "https://files.teamspeak-services.com/releases/server/${version}/teamspeak3-server_linux_${arch}-${version}.tar.bz2"; url = "https://files.teamspeak-services.com/releases/server/${version}/teamspeak3-server_linux_${arch}-${version}.tar.bz2";
sha256 = if stdenv.is64bit sha256 = if stdenv.is64bit
then "sha256-+b9S0ekQmXF5KwvVcmHIDpp0iZRO2W1ls8eYhDzjUUw=" then "sha256-2tSX/ET2lZsi0mVB3KnbnBXMSTRsneGUA8w6mZ6TmlY="
else "sha256-Qu6xPzbUdqO93j353cfQILlFYqmwFSnFWG9TjniX0+c="; else "sha256-RdxG4nGXTTSY+P5oZu4uP5l7gKcU9C6uIILyNldSK50=";
}; };
buildInputs = [ stdenv.cc.cc postgresql.lib ]; buildInputs = [ stdenv.cc.cc postgresql.lib ];
@ -18,6 +18,8 @@ in stdenv.mkDerivation rec {
nativeBuildInputs = [ autoPatchelfHook ]; nativeBuildInputs = [ autoPatchelfHook ];
installPhase = '' installPhase = ''
runHook preInstall
# Install files. # Install files.
mkdir -p $out/lib/teamspeak mkdir -p $out/lib/teamspeak
mv * $out/lib/teamspeak/ mv * $out/lib/teamspeak/
@ -26,18 +28,20 @@ in stdenv.mkDerivation rec {
mkdir -p $out/bin/ mkdir -p $out/bin/
ln -s $out/lib/teamspeak/ts3server $out/bin/ts3server ln -s $out/lib/teamspeak/ts3server $out/bin/ts3server
ln -s $out/lib/teamspeak/tsdns/tsdnsserver $out/bin/tsdnsserver ln -s $out/lib/teamspeak/tsdns/tsdnsserver $out/bin/tsdnsserver
runHook postInstall
''; '';
passthru.updateScript = writeScript "update-teampeak-server" '' passthru.updateScript = writeScript "update-teampeak-server" ''
#!/usr/bin/env nix-shell #!/usr/bin/env nix-shell
#!nix-shell -i bash -p common-updater-scripts curl gnugrep gnused #!nix-shell -i bash -p common-updater-scripts curl gnugrep gnused jq pup
set -eu -o pipefail set -eu -o pipefail
version=$( \ version=$( \
curl -s "https://www.teamspeak.de/download/teamspeak-3-amd64-server-linux/" \ curl https://www.teamspeak.com/en/downloads/ \
| grep softwareVersion \ | pup "#server .linux .version json{}" \
| sed -E -e 's/^.*<span itemprop="softwareVersion">([^<]+)<\/span>.*$/\1/' \ | jq -r ".[0].text"
) )
versionOld=$(nix-instantiate --eval --strict -A "teamspeak_server.version") versionOld=$(nix-instantiate --eval --strict -A "teamspeak_server.version")

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "catgirl"; pname = "catgirl";
version = "1.7"; version = "1.8";
src = fetchurl { src = fetchurl {
url = "https://git.causal.agency/catgirl/snapshot/${pname}-${version}.tar.gz"; url = "https://git.causal.agency/catgirl/snapshot/${pname}-${version}.tar.gz";
sha256 = "sha256-3shSdeq4l6Y5DEJZEVMHAngp6vjnkPjzpLpcp407X/0="; sha256 = "0svpd2nqsr55ac98vczyhihs6pvgw7chspf6bdlwl98gch39dxif";
}; };
nativeBuildInputs = [ ctags pkg-config ]; nativeBuildInputs = [ ctags pkg-config ];

View file

@ -1,35 +0,0 @@
From 5dd2593369645b11a9dc03e1930617d2f5dbd039 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io>
Date: Wed, 11 Nov 2020 11:48:49 +0100
Subject: [PATCH] hardcode json file path
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Jörg Thalheim <joerg@thalheim.io>
---
wee_slack.py | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/wee_slack.py b/wee_slack.py
index a3d779c..5942289 100644
--- a/wee_slack.py
+++ b/wee_slack.py
@@ -5136,13 +5136,7 @@ def create_slack_debug_buffer():
def load_emoji():
try:
- weechat_dir = w.info_get('weechat_dir', '')
- weechat_sharedir = w.info_get('weechat_sharedir', '')
- local_weemoji, global_weemoji = ('{}/weemoji.json'.format(path)
- for path in (weechat_dir, weechat_sharedir))
- path = (global_weemoji if os.path.exists(global_weemoji) and
- not os.path.exists(local_weemoji) else local_weemoji)
- with open(path, 'r') as ef:
+ with open('@out@/share/wee-slack/weemoji.json', 'r') as ef:
emojis = json.loads(ef.read())
if 'emoji' in emojis:
print_error('The weemoji.json file is in an old format. Please update it.')
--
2.29.0

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "wee-slack"; pname = "wee-slack";
version = "2.7.0"; version = "2.8.0";
src = fetchFromGitHub { src = fetchFromGitHub {
repo = "wee-slack"; repo = "wee-slack";
owner = "wee-slack"; owner = "wee-slack";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-6Z/H15bKe0PKpNe9PCgc5mLOii3CILCAVon7EgzIkx8="; sha256 = "0xfklr0gsc9jgxfyrrb2j756lclz9g8imcb0pk0xgyj8mhsw23zk";
}; };
patches = [ patches = [
@ -16,10 +16,13 @@ stdenv.mkDerivation rec {
src = ./libpath.patch; src = ./libpath.patch;
env = "${buildEnv { env = "${buildEnv {
name = "wee-slack-env"; name = "wee-slack-env";
paths = with python3Packages; [ websocket_client six ]; paths = with python3Packages; [
websocket_client
six
];
}}/${python3Packages.python.sitePackages}"; }}/${python3Packages.python.sitePackages}";
}) })
./0001-hardcode-json-file-path.patch ./load_weemoji_path.patch
]; ];
postPatch = '' postPatch = ''

View file

@ -1,13 +1,13 @@
diff --git a/wee_slack.py b/wee_slack.py diff --git a/wee_slack.py b/wee_slack.py
index dbe6446..d1b7546 100644 index e4716b4..f673b7c 100644
--- a/wee_slack.py --- a/wee_slack.py
+++ b/wee_slack.py +++ b/wee_slack.py
@@ -25,6 +25,8 @@ import random @@ -31,6 +31,8 @@ import string
import socket # See https://github.com/numpy/numpy/issues/11925
import string sys.modules["numpy"] = None
+sys.path.append('@env@') +sys.path.append('@env@')
+ +
from websocket import ABNF, create_connection, WebSocketConnectionClosedException from websocket import ( # noqa: E402
ABNF,
try: create_connection,

View file

@ -0,0 +1,25 @@
diff --git a/wee_slack.py b/wee_slack.py
index e4716b4..ffd122d 100644
--- a/wee_slack.py
+++ b/wee_slack.py
@@ -6092,19 +6092,7 @@ def create_slack_debug_buffer():
def load_emoji():
try:
- weechat_dir = w.info_get("weechat_data_dir", "") or w.info_get(
- "weechat_dir", ""
- )
- weechat_sharedir = w.info_get("weechat_sharedir", "")
- local_weemoji, global_weemoji = (
- "{}/weemoji.json".format(path) for path in (weechat_dir, weechat_sharedir)
- )
- path = (
- global_weemoji
- if os.path.exists(global_weemoji) and not os.path.exists(local_weemoji)
- else local_weemoji
- )
- with open(path, "r") as ef:
+ with open("@out@/share/wee-slack/weemoji.json", "r") as ef:
emojis = json.loads(ef.read())
if "emoji" in emojis:
print_error(

View file

@ -1,10 +1,12 @@
{ stdenv, lib, fetchFromGitHub, installShellFiles, libiconv, ruby ? null }: { coreutils, fetchFromGitHub, fetchpatch, file, gawk, gnugrep, gnused
, installShellFiles, less, lib, libiconv, makeWrapper, nano, stdenv, ruby
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "mblaze"; pname = "mblaze";
version = "1.1"; version = "1.1";
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles makeWrapper ];
buildInputs = [ ruby ] ++ lib.optionals stdenv.isDarwin [ libiconv ]; buildInputs = [ ruby ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
src = fetchFromGitHub { src = fetchFromGitHub {
@ -22,6 +24,24 @@ stdenv.mkDerivation rec {
installShellCompletion contrib/_mblaze installShellCompletion contrib/_mblaze
'' + lib.optionalString (ruby != null) '' '' + lib.optionalString (ruby != null) ''
install -Dt $out/bin contrib/msuck contrib/mblow install -Dt $out/bin contrib/msuck contrib/mblow
# The following wrappings are used to preserve the executable
# names (the value of $0 in a script). The script mcom is
# designed to be run directly or via symlinks such as mrep. Using
# symlinks changes the value of $0 in the script, and makes it
# behave differently. When using the wrapProgram tool, the resulting
# wrapper breaks this behaviour. The following wrappers preserve it.
mkdir -p $out/wrapped
for x in mcom mbnc mfwd mrep; do
mv $out/bin/$x $out/wrapped
makeWrapper $out/wrapped/$x $out/bin/$x \
--argv0 $out/bin/$x \
--prefix PATH : $out/bin \
--prefix PATH : ${lib.makeBinPath [
coreutils file gawk gnugrep gnused
]}
done
''; '';
meta = with lib; { meta = with lib; {

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which { lib, stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which, fetchpatch
, ncurses, perl , cyrus_sasl, gss, gpgme, libkrb5, libidn, libxml2, notmuch, openssl , ncurses, perl , cyrus_sasl, gss, gpgme, libkrb5, libidn, libxml2, notmuch, openssl
, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, w3m, mailcap, sqlite, zlib , lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, w3m, mailcap, sqlite, zlib
}: }:
@ -14,6 +14,14 @@ stdenv.mkDerivation rec {
sha256 = "sha256-ADg/+gmndOiuQHsncOzS5K4chthXeUFz6RRJsrZNeZY="; sha256 = "sha256-ADg/+gmndOiuQHsncOzS5K4chthXeUFz6RRJsrZNeZY=";
}; };
patches = [
(fetchpatch {
name = "CVE-2021-32055.patch";
url = "https://github.com/neomutt/neomutt/commit/fa1db5785e5cfd9d3cd27b7571b9fe268d2ec2dc.patch";
sha256 = "0bb7gisjynq3w7hhl6vxa469h609bcz6fkdi8vf740pqrwhk68yn";
})
];
buildInputs = [ buildInputs = [
cyrus_sasl gss gpgme libkrb5 libidn ncurses cyrus_sasl gss gpgme libkrb5 libidn ncurses
notmuch openssl perl lmdb notmuch openssl perl lmdb

View file

@ -20,13 +20,13 @@
mkDerivation rec { mkDerivation rec {
pname = "nextcloud-client"; pname = "nextcloud-client";
version = "3.2.1"; version = "3.2.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nextcloud"; owner = "nextcloud";
repo = "desktop"; repo = "desktop";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-I31w79GDZxSGlT6YPKSpq0aiyGnJiJBVdTyWI+DUoz4="; sha256 = "sha256-UPWr5P6oEBtDK/Cuz8nZlHqKFyGEf44vbMfrphxNkMU=";
}; };
patches = [ patches = [

View file

@ -13,10 +13,24 @@
, gettext , gettext
, gobject-introspection , gobject-introspection
, gdk-pixbuf , gdk-pixbuf
, texlive
, imagemagick
, perlPackages
}: }:
let
documentation_deps = [
(texlive.combine {
inherit (texlive) scheme-small wrapfig was;
})
xvfb-run
imagemagick
perlPackages.Po4a
];
in
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
inherit (import ./src.nix { inherit fetchFromGitLab; }) version src; inherit (import ./src.nix { inherit fetchFromGitLab; }) version src sample_documents;
pname = "paperwork"; pname = "paperwork";
sourceRoot = "source/paperwork-gtk"; sourceRoot = "source/paperwork-gtk";
@ -52,9 +66,16 @@ python3Packages.buildPythonApplication rec {
for i in $site/data/paperwork_*.png; do for i in $site/data/paperwork_*.png; do
ln -s $i $site/icon/out; ln -s $i $site/icon/out;
done done
export XDG_DATA_DIRS=$XDG_DATA_DIRS:${gnome.adwaita-icon-theme}/share
# build the user manual
PATH=$out/bin:$PATH PAPERWORK_TEST_DOCUMENTS=${sample_documents} make data
for i in src/paperwork_gtk/model/help/out/*.pdf; do
install -Dt $site/model/help/out $i
done
''; '';
checkInputs = [ xvfb-run dbus.daemon ]; checkInputs = [ dbus.daemon ];
nativeBuildInputs = [ nativeBuildInputs = [
wrapGAppsHook wrapGAppsHook
@ -62,7 +83,7 @@ python3Packages.buildPythonApplication rec {
(lib.getBin gettext) (lib.getBin gettext)
which which
gdk-pixbuf # for the setup hook gdk-pixbuf # for the setup hook
]; ] ++ documentation_deps;
buildInputs = [ buildInputs = [
gnome.adwaita-icon-theme gnome.adwaita-icon-theme
@ -78,13 +99,20 @@ python3Packages.buildPythonApplication rec {
makeWrapperArgs+=("''${gappsWrapperArgs[@]}") makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
''; '';
checkPhase = ''
runHook preCheck
# A few parts of chkdeps need to have a display and a dbus session, so we not # A few parts of chkdeps need to have a display and a dbus session, so we not
# only need to run a virtual X server + dbus but also have a large enough # only need to run a virtual X server + dbus but also have a large enough
# resolution, because the Cairo test tries to draw a 200x200 window. # resolution, because the Cairo test tries to draw a 200x200 window.
preCheck = ''
xvfb-run -s '-screen 0 800x600x24' dbus-run-session \ xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
--config-file=${dbus.daemon}/share/dbus-1/session.conf \ --config-file=${dbus.daemon}/share/dbus-1/session.conf \
$out/bin/paperwork-gtk chkdeps $out/bin/paperwork-gtk chkdeps
# content of make test, without the dep on make install
python -m unittest discover --verbose -s tests
runHook postCheck
''; '';
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [
@ -98,6 +126,8 @@ python3Packages.buildPythonApplication rec {
setuptools setuptools
]; ];
disallowedRequisites = documentation_deps;
meta = { meta = {
description = "A personal document manager for scanned documents"; description = "A personal document manager for scanned documents";
homepage = "https://openpaper.work/"; homepage = "https://openpaper.work/";

View file

@ -1,12 +1,22 @@
{fetchFromGitLab}: {fetchFromGitLab}:
rec { rec {
version = "2.0.2"; version = "2.0.3";
src = fetchFromGitLab { src = fetchFromGitLab {
domain = "gitlab.gnome.org"; domain = "gitlab.gnome.org";
repo = "paperwork"; repo = "paperwork";
group = "World"; group = "World";
owner = "OpenPaperwork"; owner = "OpenPaperwork";
rev = version; rev = version;
sha256 = "1di7nnl8ywyiwfpl5m1kvip1m0hvijbmqmkdpviwqw7ajizrr1ly"; sha256 = "02c2ysca75j59v87n1axqfncvs167kmdr40m0f05asdh2akwrbi9";
}; };
sample_documents = fetchFromGitLab {
domain = "gitlab.gnome.org";
repo = "paperwork-test-documents";
group = "World";
owner = "OpenPaperwork";
# https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/blob/master/paperwork-gtk/src/paperwork_gtk/model/help/screenshot.sh see TEST_DOCS_TAG
rev = "1.0";
sha256 = "155nhw2jmlgfi6c3wm241vrr3yma6lw85k9lxn844z96kyi7wbpr";
};
} }

View file

@ -0,0 +1,51 @@
{ stdenv, lib, fetchurl, autoPatchelfHook, udev }:
let
arch = if stdenv.isx86_64 then "x86_64"
else if stdenv.isi686 then "i686"
else throw "unsupported architecture";
in stdenv.mkDerivation rec {
name = "sdrplay";
version = "3.07.1";
src = fetchurl {
url = "https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-${version}.run";
sha256 = "1a25c7rsdkcjxr7ffvx2lwj7fxdbslg9qhr8ghaq1r53rcrqgzmf";
};
nativeBuildInputs = [ autoPatchelfHook ];
buildInputs = [ udev stdenv.cc.cc.lib ];
unpackPhase = ''
sh "$src" --noexec --target source
'';
sourceRoot = "source";
dontBuild = true;
installPhase = ''
mkdir -p $out/{bin,lib,include,lib/udev/rules.d}
majorVersion="${lib.concatStringsSep "." (lib.take 1 (builtins.splitVersion version))}"
majorMinorVersion="${lib.concatStringsSep "." (lib.take 2 (builtins.splitVersion version))}"
libName="libsdrplay_api"
cp "${arch}/$libName.so.$majorMinorVersion" $out/lib/
ln -s "$out/lib/$libName.so.$majorMinorVersion" "$out/lib/$libName.so.$majorVersion"
ln -s "$out/lib/$libName.so.$majorVersion" "$out/lib/$libName.so"
cp "${arch}/sdrplay_apiService" $out/bin/
cp -r inc/* $out/include/
cp 66-mirics.rules $out/lib/udev/rules.d/
'';
meta = with lib; {
description = "SDRplay API";
longDescription = ''
Proprietary library and api service for working with SDRplay devices. For documentation and licensing details see
https://www.sdrplay.com/docs/SDRplay_API_Specification_v${lib.concatStringsSep "." (lib.take 2 (builtins.splitVersion version))}.pdf
'';
homepage = "https://www.sdrplay.com/downloads/";
license = licenses.unfree;
maintainers = [ maintainers.pmenke ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,29 @@
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, soapysdr, sdrplay }:
stdenv.mkDerivation {
name = "soapysdr-sdrplay3";
version = "20210425";
src = fetchFromGitHub {
owner = "pothosware";
repo = "SoapySDRPlay3";
rev = "e6fdb719b611b1dfb7f26c56a4df1e241bd10129";
sha256 = "0rrylp3ikrva227hjy60v4n6d6yvdavjsad9kszw9s948mwiashi";
};
nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [ soapysdr sdrplay ];
cmakeFlags = [
"-DSoapySDR_DIR=${soapysdr}/share/cmake/SoapySDR/"
];
meta = with lib; {
description = "Soapy SDR module for SDRplay";
homepage = "https://github.com/pothosware/SoapySDRPlay3";
license = licenses.mit;
maintainers = [ maintainers.pmenke ];
platforms = platforms.linux;
};
}

View file

@ -1,20 +1,17 @@
{ mkDerivation, lib, fetchFromGitHub, cmake, pkg-config { mkDerivation, lib, fetchFromGitHub, cmake, pkg-config
, qtbase, qtcharts, qtmultimedia, qtquickcontrols, qtquickcontrols2, qtgraphicaleffects , qtbase, qtcharts, qtmultimedia, qtquickcontrols, qtquickcontrols2, qtgraphicaleffects
, faad2, rtl-sdr, soapysdr-with-plugins, libusb-compat-0_1, fftwSinglePrec, lame, mpg123 }: , faad2, rtl-sdr, soapysdr-with-plugins, libusb-compat-0_1, fftwSinglePrec, lame, mpg123
let } :
version = "2.2";
in mkDerivation {
mkDerivation rec {
pname = "welle-io"; pname = "welle-io";
inherit version; version = "2.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "AlbrechtL"; owner = "AlbrechtL";
repo = "welle.io"; repo = "welle.io";
rev = "v${version}"; rev = "v${version}";
sha256 = "04fpm6sc431dl9i5h53xpd6k85j22sv8aawl7b6wv2fzpfsd9fwa"; sha256 = "1xl1lanw0xgmgks67dbfb2h52jxnrd1i2zik56v0q8dwsr7f0daw";
}; };
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];

View file

@ -76,7 +76,7 @@ stdenv.mkDerivation rec {
mv html/en/_static{,.tmp} mv html/en/_static{,.tmp}
for _dir in `find -name _static` ; do for _dir in `find -name _static` ; do
rm -r $_dir rm -r $_dir
ln -s html/en/_static $_dir ln -rs html/en/_static $_dir
done done
mv html/en/_static{.tmp,} mv html/en/_static{.tmp,}
''; '';

View file

@ -16,9 +16,6 @@ stdenv.mkDerivation rec {
./undefined_behavior.patch ./undefined_behavior.patch
]; ];
# patch needs to updated due to version bump
#CXXFLAGS = "-Werror=return-type";
preConfigure = preConfigure =
# Fix F77LD to workaround for a following build error: # Fix F77LD to workaround for a following build error:
# #
@ -48,8 +45,6 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
hardeningDisable = [ "format" ];
NIX_CFLAGS_COMPILE = lib.optional (stdenv.hostPlatform.libc == "glibc") "-I${libtirpc.dev}/include/tirpc"; NIX_CFLAGS_COMPILE = lib.optional (stdenv.hostPlatform.libc == "glibc") "-I${libtirpc.dev}/include/tirpc";
NIX_LDFLAGS = lib.optional (stdenv.hostPlatform.libc == "glibc") "-ltirpc"; NIX_LDFLAGS = lib.optional (stdenv.hostPlatform.libc == "glibc") "-ltirpc";

View file

@ -1,16 +1,16 @@
{ lib, stdenv, rustPlatform, fetchFromGitHub, libiconv, perl, python3, Security, AppKit, openssl, xclip }: { lib, stdenv, rustPlatform, fetchFromGitHub, libiconv, perl, python3, Security, AppKit, openssl, xclip }:
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "gitui"; pname = "gitui";
version = "0.15.0"; version = "0.16.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "extrawurst"; owner = "extrawurst";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-KJXYkOHR50Zap0Ou+jVi09opHuZBfHN/ToZbasZ3IE4="; sha256 = "sha256-XPXldkNLlxgUBdDDR+n3JAO75JQQOvKoduwnWvIompY=";
}; };
cargoSha256 = "sha256-N6Yr+TqxWwl/6SgjizIyZJoVsjn/R9yjxUKCqwt8UJg="; cargoSha256 = "sha256-jHrjAdghuFADf/Gd3GeUOpPBG5tqsBG/Q4R0pNxHAps=";
nativeBuildInputs = [ python3 perl ]; nativeBuildInputs = [ python3 perl ];
buildInputs = [ openssl ] buildInputs = [ openssl ]

View file

@ -1,10 +1,10 @@
{ lib, stdenv, fetchFromGitHub, makeWrapper { lib, stdenv, fetchFromGitHub, makeWrapper, nix-update-script
, python3, git, gnupg, less , python3, git, gnupg, less
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "git-repo"; pname = "git-repo";
version = "2.14.5"; version = "2.15.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "android"; owner = "android";
@ -13,8 +13,6 @@ stdenv.mkDerivation rec {
sha256 = "sha256-3FSkWpHda1jVhy/633B+ippWcbKd83IlQcJYS9Qx5wQ="; sha256 = "sha256-3FSkWpHda1jVhy/633B+ippWcbKd83IlQcJYS9Qx5wQ=";
}; };
patches = [ ./import-ssl-module.patch ];
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
buildInputs = [ python3 ]; buildInputs = [ python3 ];
@ -25,8 +23,12 @@ stdenv.mkDerivation rec {
''; '';
installPhase = '' installPhase = ''
runHook preInstall
mkdir -p $out/bin mkdir -p $out/bin
cp repo $out/bin/repo cp repo $out/bin/repo
runHook postInstall
''; '';
# Important runtime dependencies # Important runtime dependencies
@ -35,6 +37,12 @@ stdenv.mkDerivation rec {
"${lib.makeBinPath [ git gnupg less ]}" "${lib.makeBinPath [ git gnupg less ]}"
''; '';
passthru = {
updateScript = nix-update-script {
attrPath = "gitRepo";
};
};
meta = with lib; { meta = with lib; {
description = "Android's repo management tool"; description = "Android's repo management tool";
longDescription = '' longDescription = ''
@ -45,7 +53,7 @@ stdenv.mkDerivation rec {
''; '';
homepage = "https://android.googlesource.com/tools/repo"; homepage = "https://android.googlesource.com/tools/repo";
license = licenses.asl20; license = licenses.asl20;
maintainers = [ ]; maintainers = with maintainers; [ otavio ];
platforms = platforms.unix; platforms = platforms.unix;
}; };
} }

View file

@ -1,12 +0,0 @@
diff --git a/repo b/repo
index 8b05def..f394b3e 100755
--- a/repo
+++ b/repo
@@ -236,6 +236,7 @@ import optparse
import re
import shutil
import stat
+import ssl
if sys.version_info[0] == 3:
import urllib.request

View file

@ -1,60 +1,38 @@
{ lib, stdenv, fetchurl, makeWrapper, python27Packages, git { lib, stdenv, fetchurl, makeWrapper, buildGoModule, git
, docbook_xml_dtd_412, docbook_xsl, asciidoc, xmlto, pypy , asciidoctor, ruby
, breezy ? null, cvs ? null, darcs ? null, fossil ? null }:
, mercurial ? null, monotone ? null, rcs ? null
, subversion ? null, cvs_fast_export ? null }:
with stdenv; with lib; buildGoModule rec {
let pname = "reposurgeon";
inherit (python27Packages) python; version = "4.26";
in mkDerivation rec {
name = "reposurgeon-${meta.version}";
meta = {
description = "A tool for editing version-control repository history";
version = "3.44";
license = licenses.bsd3;
homepage = "http://www.catb.org/esr/reposurgeon/";
maintainers = with maintainers; [ dfoxfranke ];
platforms = platforms.all;
};
src = fetchurl { src = fetchurl {
url = "http://www.catb.org/~esr/reposurgeon/reposurgeon-3.44.tar.xz"; url = "http://www.catb.org/~esr/reposurgeon/reposurgeon-${version}.tar.xz";
sha256 = "0il6hwrsm2qgg0vp5fcjh478y2x4zyw3mx2apcwc7svfj86pf7pn"; sha256 = "sha256-FuL5pvIM468hEm6rUBKGW6+WlYv4DPHNnpwpRGzMwlY=";
}; };
# install fails because the files README.md, NEWS, and TODO were not included in the source distribution vendorSha256 = "sha256-KpdXI2Znhe0iCp0DjSZXzUYDZIz2KBRv1/SpaRTFMAc=";
patches = [ ./fix-makefile.patch ];
buildInputs = subPackages = [ "." ];
[ docbook_xml_dtd_412 docbook_xsl asciidoc xmlto makeWrapper pypy ];
preBuild = '' runVend = true;
makeFlagsArray=(
XML_CATALOG_FILES="${docbook_xml_dtd_412}/xml/dtd/docbook/catalog.xml ${docbook_xsl}/xml/xsl/docbook/catalog.xml" nativeBuildInputs = [ asciidoctor ruby ];
prefix="$out"
pyinclude="-I${python}/include/python2.7" postBuild = ''
pylib="-L${python}/lib -lpython2.7" patchShebangs .
) make all HTMLFILES=
''; '';
postInstall = postInstall = ''
let make install prefix=$out HTMLFILES=
binpath = makeBinPath ( '';
filter (x: x != null)
[ out git breezy cvs darcs fossil mercurial meta = {
monotone rcs src subversion cvs_fast_export ] description = "A tool for editing version-control repository history";
); license = lib.licenses.bsd3;
pythonpath = makeSearchPathOutput "lib" python.sitePackages ( homepage = "http://www.catb.org/esr/reposurgeon/";
filter (x: x != null) maintainers = with lib.maintainers; [ dfoxfranke ];
[ python27Packages.readline or null python27Packages.hglib or null ] platforms = lib.platforms.all;
); };
in ''
for prog in reposurgeon repodiffer repotool; do
wrapProgram $out/bin/$prog \
--prefix PATH : "${binpath}" \
--prefix PYTHONPATH : "${pythonpath}"
done
''
;
} }

View file

@ -1,17 +1,17 @@
{ lib, fetchFromGitHub, appstream-glib, desktop-file-utils, glib { lib, fetchFromGitHub, appstream-glib, desktop-file-utils, glib
, gobject-introspection, gst_all_1, gtk3, libhandy, librsvg, meson, ninja , gobject-introspection, gst_all_1, gtk4, libadwaita, librsvg, meson, ninja
, pkg-config, python3, wrapGAppsHook }: , pkg-config, python3, wrapGAppsHook }:
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "kooha"; pname = "kooha";
version = "1.1.3"; version = "1.2.1";
format = "other"; format = "other";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "SeaDve"; owner = "SeaDve";
repo = "Kooha"; repo = "Kooha";
rev = "v${version}"; rev = "v${version}";
sha256 = "14lrx6wplvlk3cg3wij88h4ydp3m69pw7lvvzrq3j9qnh431bs36"; sha256 = "1qwbzdn0n1nxcfci1bhhkfchdhw5yz74fdvsa84cznyyx2jils8w";
}; };
buildInputs = [ buildInputs = [
@ -19,8 +19,8 @@ python3.pkgs.buildPythonApplication rec {
gobject-introspection gobject-introspection
gst_all_1.gstreamer gst_all_1.gstreamer
gst_all_1.gst-plugins-base gst_all_1.gst-plugins-base
gtk3 gtk4
libhandy libadwaita
librsvg librsvg
]; ];
@ -48,6 +48,10 @@ python3.pkgs.buildPythonApplication rec {
patchShebangs build-aux/meson/postinstall.py patchShebangs build-aux/meson/postinstall.py
''; '';
installCheckPhase = ''
$out/bin/kooha --help
'';
meta = with lib; { meta = with lib; {
description = "Simple screen recorder"; description = "Simple screen recorder";
homepage = "https://github.com/SeaDve/Kooha"; homepage = "https://github.com/SeaDve/Kooha";

View file

@ -4,10 +4,10 @@
, v4l-utils }: , v4l-utils }:
mkDerivation rec { mkDerivation rec {
pname = "webcamoid"; pname = "webcamoid";
version = "8.7.1"; version = "8.8.0";
src = fetchFromGitHub { src = fetchFromGitHub {
sha256 = "1d8g7mq0wf0ycds87xpdhr3zkljgjmb94n3ak9kkxj2fqp9242d2"; sha256 = "0a8M9GQ6Ea9jBCyfbORVyB6HC/O6jdcIZruQZj9Aai4=";
rev = version; rev = version;
repo = "webcamoid"; repo = "webcamoid";
owner = "webcamoid"; owner = "webcamoid";

View file

@ -3,7 +3,6 @@
, fetchFromGitHub , fetchFromGitHub
, pkg-config , pkg-config
, installShellFiles , installShellFiles
, makeWrapper
, buildGoModule , buildGoModule
, gpgme , gpgme
, lvm2 , lvm2
@ -37,7 +36,7 @@ buildGoModule rec {
outputs = [ "out" "man" ]; outputs = [ "out" "man" ];
nativeBuildInputs = [ pkg-config go-md2man installShellFiles makeWrapper ]; nativeBuildInputs = [ pkg-config go-md2man installShellFiles ];
buildInputs = lib.optionals stdenv.isLinux [ buildInputs = lib.optionals stdenv.isLinux [
btrfs-progs btrfs-progs
@ -70,15 +69,23 @@ buildGoModule rec {
installShellCompletion --zsh completions/zsh/* installShellCompletion --zsh completions/zsh/*
MANDIR=$man/share/man make install.man-nobuild MANDIR=$man/share/man make install.man-nobuild
'' + lib.optionalString stdenv.isLinux '' '' + lib.optionalString stdenv.isLinux ''
wrapProgram $out/bin/podman \ install -Dm644 cni/87-podman-bridge.conflist -t $out/etc/cni/net.d
--prefix LD_LIBRARY_PATH : "${lib.getLib systemd}/lib"
install -Dm644 contrib/tmpfile/podman.conf -t $out/lib/tmpfiles.d install -Dm644 contrib/tmpfile/podman.conf -t $out/lib/tmpfiles.d
install -Dm644 contrib/systemd/system/podman.{socket,service} -t $out/lib/systemd/system install -Dm644 contrib/systemd/system/podman.{socket,service} -t $out/lib/systemd/system
'' + '' '' + ''
runHook postInstall runHook postInstall
''; '';
passthru.tests = { inherit (nixosTests) podman; }; postFixup = lib.optionalString stdenv.isLinux ''
RPATH=$(patchelf --print-rpath $out/bin/podman)
patchelf --set-rpath "${lib.makeLibraryPath [ systemd ]}":$RPATH $out/bin/podman
'';
passthru.tests = {
inherit (nixosTests) podman;
# related modules
inherit (nixosTests) podman-tls-ghostunnel;
};
meta = with lib; { meta = with lib; {
homepage = "https://podman.io/"; homepage = "https://podman.io/";

View file

@ -12,6 +12,7 @@
, util-linux # nsenter , util-linux # nsenter
, cni-plugins # not added to path , cni-plugins # not added to path
, iptables , iptables
, iproute2
}: }:
let let
@ -25,6 +26,7 @@ let
fuse-overlayfs fuse-overlayfs
util-linux util-linux
iptables iptables
iproute2
] ++ extraPackages); ] ++ extraPackages);
in runCommand podman.name { in runCommand podman.name {
@ -48,6 +50,7 @@ in runCommand podman.name {
ln -s ${podman.man} $man ln -s ${podman.man} $man
mkdir -p $out/bin mkdir -p $out/bin
ln -s ${podman-unwrapped}/etc $out/etc
ln -s ${podman-unwrapped}/lib $out/lib ln -s ${podman-unwrapped}/lib $out/lib
ln -s ${podman-unwrapped}/share $out/share ln -s ${podman-unwrapped}/share $out/share
makeWrapper ${podman-unwrapped}/bin/podman $out/bin/podman \ makeWrapper ${podman-unwrapped}/bin/podman $out/bin/podman \

View file

@ -15,11 +15,11 @@ with lib;
buildGoPackage rec { buildGoPackage rec {
pname = "singularity"; pname = "singularity";
version = "3.7.3"; version = "3.7.4";
src = fetchurl { src = fetchurl {
url = "https://github.com/hpcng/singularity/releases/download/v${version}/singularity-${version}.tar.gz"; url = "https://github.com/hpcng/singularity/releases/download/v${version}/singularity-${version}.tar.gz";
sha256 = "sha256-ZmfriHXStm1zUE9AyVa0KxNRdE9IjRZCBDdiFdiF2lw="; sha256 = "sha256-wmY2movydH9E4HWYWMP8OyMluXWogYsmaPC5exJNAWQ=";
}; };
goPackagePath = "github.com/sylabs/singularity"; goPackagePath = "github.com/sylabs/singularity";

View file

@ -9,10 +9,22 @@
, lib , lib
, stdenvNoCC , stdenvNoCC
, bintools ? null, libc ? null, coreutils ? null, shell ? stdenvNoCC.shell, gnugrep ? null , bintools ? null, libc ? null, coreutils ? null, shell ? stdenvNoCC.shell, gnugrep ? null
, netbsd ? null, netbsdCross ? null
, sharedLibraryLoader ?
if libc == null then
null
else if stdenvNoCC.targetPlatform.isNetBSD then
if libc != targetPackages.netbsdCross.headers then
targetPackages.netbsdCross.ld_elf_so
else
null
else
lib.getLib libc
, nativeTools, noLibc ? false, nativeLibc, nativePrefix ? "" , nativeTools, noLibc ? false, nativeLibc, nativePrefix ? ""
, propagateDoc ? bintools != null && bintools ? man , propagateDoc ? bintools != null && bintools ? man
, extraPackages ? [], extraBuildCommands ? "" , extraPackages ? [], extraBuildCommands ? ""
, buildPackages ? {} , buildPackages ? {}
, targetPackages ? {}
, useMacosReexportHack ? false , useMacosReexportHack ? false
# Darwin code signing support utilities # Darwin code signing support utilities
@ -54,19 +66,19 @@ let
# The dynamic linker has different names on different platforms. This is a # The dynamic linker has different names on different platforms. This is a
# shell glob that ought to match it. # shell glob that ought to match it.
dynamicLinker = dynamicLinker =
/**/ if libc == null then null /**/ if sharedLibraryLoader == null then null
else if targetPlatform.libc == "musl" then "${libc_lib}/lib/ld-musl-*" else if targetPlatform.libc == "musl" then "${sharedLibraryLoader}/lib/ld-musl-*"
else if (targetPlatform.libc == "bionic" && targetPlatform.is32bit) then "/system/bin/linker" else if (targetPlatform.libc == "bionic" && targetPlatform.is32bit) then "/system/bin/linker"
else if (targetPlatform.libc == "bionic" && targetPlatform.is64bit) then "/system/bin/linker64" else if (targetPlatform.libc == "bionic" && targetPlatform.is64bit) then "/system/bin/linker64"
else if targetPlatform.libc == "nblibc" then "${libc_lib}/libexec/ld.elf_so" else if targetPlatform.libc == "nblibc" then "${sharedLibraryLoader}/libexec/ld.elf_so"
else if targetPlatform.system == "i686-linux" then "${libc_lib}/lib/ld-linux.so.2" else if targetPlatform.system == "i686-linux" then "${sharedLibraryLoader}/lib/ld-linux.so.2"
else if targetPlatform.system == "x86_64-linux" then "${libc_lib}/lib/ld-linux-x86-64.so.2" else if targetPlatform.system == "x86_64-linux" then "${sharedLibraryLoader}/lib/ld-linux-x86-64.so.2"
else if targetPlatform.system == "powerpc64le-linux" then "${libc_lib}/lib/ld64.so.2" else if targetPlatform.system == "powerpc64le-linux" then "${sharedLibraryLoader}/lib/ld64.so.2"
# ARM with a wildcard, which can be "" or "-armhf". # ARM with a wildcard, which can be "" or "-armhf".
else if (with targetPlatform; isAarch32 && isLinux) then "${libc_lib}/lib/ld-linux*.so.3" else if (with targetPlatform; isAarch32 && isLinux) then "${sharedLibraryLoader}/lib/ld-linux*.so.3"
else if targetPlatform.system == "aarch64-linux" then "${libc_lib}/lib/ld-linux-aarch64.so.1" else if targetPlatform.system == "aarch64-linux" then "${sharedLibraryLoader}/lib/ld-linux-aarch64.so.1"
else if targetPlatform.system == "powerpc-linux" then "${libc_lib}/lib/ld.so.1" else if targetPlatform.system == "powerpc-linux" then "${sharedLibraryLoader}/lib/ld.so.1"
else if targetPlatform.isMips then "${libc_lib}/lib/ld.so.1" else if targetPlatform.isMips then "${sharedLibraryLoader}/lib/ld.so.1"
else if targetPlatform.isDarwin then "/usr/lib/dyld" else if targetPlatform.isDarwin then "/usr/lib/dyld"
else if targetPlatform.isFreeBSD then "/libexec/ld-elf.so.1" else if targetPlatform.isFreeBSD then "/libexec/ld-elf.so.1"
else if lib.hasSuffix "pc-gnu" targetPlatform.config then "ld.so.1" else if lib.hasSuffix "pc-gnu" targetPlatform.config then "ld.so.1"
@ -224,10 +236,10 @@ stdenv.mkDerivation {
## ##
## Dynamic linker support ## Dynamic linker support
## ##
+ '' + optionalString (sharedLibraryLoader != null) ''
if [[ -z ''${dynamicLinker+x} ]]; then if [[ -z ''${dynamicLinker+x} ]]; then
echo "Don't know the name of the dynamic linker for platform '${targetPlatform.config}', so guessing instead." >&2 echo "Don't know the name of the dynamic linker for platform '${targetPlatform.config}', so guessing instead." >&2
local dynamicLinker="${libc_lib}/lib/ld*.so.?" local dynamicLinker="${sharedLibraryLoader}/lib/ld*.so.?"
fi fi
'' ''
@ -246,9 +258,9 @@ stdenv.mkDerivation {
${if targetPlatform.isDarwin then '' ${if targetPlatform.isDarwin then ''
printf "export LD_DYLD_PATH=%q\n" "$dynamicLinker" >> $out/nix-support/setup-hook printf "export LD_DYLD_PATH=%q\n" "$dynamicLinker" >> $out/nix-support/setup-hook
'' else '' '' else lib.optionalString (sharedLibraryLoader != null) ''
if [ -e ${libc_lib}/lib/32/ld-linux.so.2 ]; then if [ -e ${sharedLibraryLoader}/lib/32/ld-linux.so.2 ]; then
echo ${libc_lib}/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 echo ${sharedLibraryLoader}/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32
fi fi
touch $out/nix-support/ld-set-dynamic-linker touch $out/nix-support/ld-set-dynamic-linker
''} ''}

View file

@ -9,6 +9,7 @@
#include <limits.h> #include <limits.h>
#include <string.h> #include <string.h>
#include <spawn.h> #include <spawn.h>
#include <dirent.h>
#define MAX_REDIRECTS 128 #define MAX_REDIRECTS 128
@ -189,9 +190,85 @@ int posix_spawnp(pid_t * pid, const char * file,
return posix_spawnp_real(pid, rewrite(file, buf), file_actions, attrp, argv, envp); return posix_spawnp_real(pid, rewrite(file, buf), file_actions, attrp, argv, envp);
} }
int execv(const char *path, char *const argv[]) int execv(const char * path, char * const argv[])
{ {
int (*execv_real) (const char *path, char *const argv[]) = dlsym(RTLD_NEXT, "execv"); int (*execv_real) (const char * path, char * const argv[]) = dlsym(RTLD_NEXT, "execv");
char buf[PATH_MAX]; char buf[PATH_MAX];
return execv_real(rewrite(path, buf), argv); return execv_real(rewrite(path, buf), argv);
} }
int execvp(const char * path, char * const argv[])
{
int (*_execvp) (const char *, char * const argv[]) = dlsym(RTLD_NEXT, "execvp");
char buf[PATH_MAX];
return _execvp(rewrite(path, buf), argv);
}
int execve(const char * path, char * const argv[], char * const envp[])
{
int (*_execve) (const char *, char * const argv[], char * const envp[]) = dlsym(RTLD_NEXT, "execve");
char buf[PATH_MAX];
return _execve(rewrite(path, buf), argv, envp);
}
DIR * opendir(const char * path)
{
char buf[PATH_MAX];
DIR * (*_opendir) (const char*) = dlsym(RTLD_NEXT, "opendir");
return _opendir(rewrite(path, buf));
}
#define SYSTEM_CMD_MAX 512
char *replace_substring(char * source, char * buf, char * replace_string, char * start_ptr, char * suffix_ptr) {
char head[SYSTEM_CMD_MAX] = {0};
strncpy(head, source, start_ptr - source);
char tail[SYSTEM_CMD_MAX] = {0};
if(suffix_ptr < source + strlen(source)) {
strcpy(tail, suffix_ptr);
}
sprintf(buf, "%s%s%s", head, replace_string, tail);
return buf;
}
char *replace_string(char * buf, char * from, char * to) {
int num_matches = 0;
char * matches[SYSTEM_CMD_MAX];
int from_len = strlen(from);
for(int i=0; i<strlen(buf); i++){
char *cmp_start = buf + i;
if(strncmp(from, cmp_start, from_len) == 0){
matches[num_matches] = cmp_start;
num_matches++;
}
}
int len_diff = strlen(to) - strlen(from);
for(int n = 0; n < num_matches; n++) {
char replaced[SYSTEM_CMD_MAX];
replace_substring(buf, replaced, to, matches[n], matches[n]+from_len);
strcpy(buf, replaced);
for(int nn = n+1; nn < num_matches; nn++) {
matches[nn] += len_diff;
}
}
return buf;
}
void rewriteSystemCall(const char * command, char * buf) {
strcpy(buf, command);
for (int n = 0; n < nrRedirects; ++n) {
replace_string(buf, from[n], to[n]);
}
}
int system(const char *command)
{
int (*_system) (const char*) = dlsym(RTLD_NEXT, "system");
char newCommand[SYSTEM_CMD_MAX];
rewriteSystemCall(command, newCommand);
return _system(newCommand);
}

View file

@ -2,6 +2,7 @@
#include <fcntl.h> #include <fcntl.h>
#include <spawn.h> #include <spawn.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -31,6 +32,10 @@ void test_execv(void) {
assert(execv(TESTPATH, argv) == 0); assert(execv(TESTPATH, argv) == 0);
} }
void test_system(void) {
assert(system(TESTPATH) == 0);
}
int main(void) int main(void)
{ {
FILE *testfp; FILE *testfp;
@ -50,6 +55,7 @@ int main(void)
assert(stat(TESTPATH, &testsb) != -1); assert(stat(TESTPATH, &testsb) != -1);
test_spawn(); test_spawn();
test_system();
test_execv(); test_execv();
/* If all goes well, this is never reached because test_execv() replaces /* If all goes well, this is never reached because test_execv() replaces

View file

@ -822,45 +822,6 @@ rec {
/* The set of supported Dpkg-based distributions. */ /* The set of supported Dpkg-based distributions. */
debDistros = { debDistros = {
# Interestingly, the SHA-256 hashes provided by Ubuntu in
# http://nl.archive.ubuntu.com/ubuntu/dists/{gutsy,hardy}/Release are
# wrong, but the SHA-1 and MD5 hashes are correct. Intrepid is fine.
ubuntu1204i386 = {
name = "ubuntu-12.04-precise-i386";
fullName = "Ubuntu 12.04 Precise (i386)";
packagesLists =
[ (fetchurl {
url = "mirror://ubuntu/dists/precise/main/binary-i386/Packages.bz2";
sha256 = "18ns9h4qhvjfcip9z55grzi371racxavgqkp6b5kfkdq2wwwax2d";
})
(fetchurl {
url = "mirror://ubuntu/dists/precise/universe/binary-i386/Packages.bz2";
sha256 = "085lkzbnzkc74kfdmwdc32sfqyfz8dr0rbiifk8kx9jih3xjw2jk";
})
];
urlPrefix = "mirror://ubuntu";
packages = commonDebPackages ++ [ "diffutils" ];
};
ubuntu1204x86_64 = {
name = "ubuntu-12.04-precise-amd64";
fullName = "Ubuntu 12.04 Precise (amd64)";
packagesLists =
[ (fetchurl {
url = "mirror://ubuntu/dists/precise/main/binary-amd64/Packages.bz2";
sha256 = "1aabpn0hdih6cbabyn87yvhccqj44q9k03mqmjsb920iqlckl3fc";
})
(fetchurl {
url = "mirror://ubuntu/dists/precise/universe/binary-amd64/Packages.bz2";
sha256 = "0x4hz5aplximgb7gnpvrhkw8m7a40s80rkm5b8hil0afblwlg4vr";
})
];
urlPrefix = "mirror://ubuntu";
packages = commonDebPackages ++ [ "diffutils" ];
};
ubuntu1404i386 = { ubuntu1404i386 = {
name = "ubuntu-14.04-trusty-i386"; name = "ubuntu-14.04-trusty-i386";
fullName = "Ubuntu 14.04 Trusty (i386)"; fullName = "Ubuntu 14.04 Trusty (i386)";
@ -929,40 +890,6 @@ rec {
packages = commonDebPackages ++ [ "diffutils" "libc-bin" ]; packages = commonDebPackages ++ [ "diffutils" "libc-bin" ];
}; };
ubuntu1710i386 = {
name = "ubuntu-17.10-artful-i386";
fullName = "Ubuntu 17.10 Artful (i386)";
packagesLists =
[ (fetchurl {
url = "mirror://ubuntu/dists/artful/main/binary-i386/Packages.xz";
sha256 = "18yrj4kqdzm39q0527m97h5ing58hkm9yq9iyj636zh2rclym3c8";
})
(fetchurl {
url = "mirror://ubuntu/dists/artful/universe/binary-i386/Packages.xz";
sha256 = "1v0njw2w80xfmxi7by76cs8hyxlla5h3gqajlpdw5srjgx2qrm2g";
})
];
urlPrefix = "mirror://ubuntu";
packages = commonDebPackages ++ [ "diffutils" "libc-bin" ];
};
ubuntu1710x86_64 = {
name = "ubuntu-17.10-artful-amd64";
fullName = "Ubuntu 17.10 Artful (amd64)";
packagesLists =
[ (fetchurl {
url = "mirror://ubuntu/dists/artful/main/binary-amd64/Packages.xz";
sha256 = "104g57j1l3vi8wb5f7rgjvjhf82ccs0vwhc59jfc4ynd51z7fqjk";
})
(fetchurl {
url = "mirror://ubuntu/dists/artful/universe/binary-amd64/Packages.xz";
sha256 = "1qzs95wfy9inaskfx9cf1l5yd3aaqwzy72zzi9xyvkxi75k5gcn4";
})
];
urlPrefix = "mirror://ubuntu";
packages = commonDebPackages ++ [ "diffutils" "libc-bin" ];
};
ubuntu1804i386 = { ubuntu1804i386 = {
name = "ubuntu-18.04-bionic-i386"; name = "ubuntu-18.04-bionic-i386";
fullName = "Ubuntu 18.04 Bionic (i386)"; fullName = "Ubuntu 18.04 Bionic (i386)";
@ -997,51 +924,83 @@ rec {
packages = commonDebPackages ++ [ "diffutils" "libc-bin" ]; packages = commonDebPackages ++ [ "diffutils" "libc-bin" ];
}; };
debian8i386 = { ubuntu2004i386 = {
name = "debian-8.11-jessie-i386"; name = "ubuntu-20.04-focal-i386";
fullName = "Debian 8.11 Jessie (i386)"; fullName = "Ubuntu 20.04 Focal (i386)";
packagesList = fetchurl { packagesLists =
url = "mirror://debian/dists/jessie/main/binary-i386/Packages.xz"; [ (fetchurl {
sha256 = "0adblarhx50yga900il6m25ng0csa81i3wid1dxxmydbdmri7v7d"; url = "mirror://ubuntu/dists/focal/main/binary-i386/Packages.xz";
}; sha256 = "sha256-7RAYURoN3RKYQAHpwBS9TIV6vCmpURpphyMJQmV4wLc=";
urlPrefix = "mirror://debian"; })
packages = commonDebianPackages; (fetchurl {
url = "mirror://ubuntu/dists/focal/universe/binary-i386/Packages.xz";
sha256 = "sha256-oA551xVE80volUPgkMyvzpQ1d+GhuZd4DAe7dXZnULM=";
})
];
urlPrefix = "mirror://ubuntu";
packages = commonDebPackages ++ [ "diffutils" "libc-bin" ];
}; };
debian8x86_64 = { ubuntu2004x86_64 = {
name = "debian-8.11-jessie-amd64"; name = "ubuntu-20.04-focal-amd64";
fullName = "Debian 8.11 Jessie (amd64)"; fullName = "Ubuntu 20.04 Focal (amd64)";
packagesList = fetchurl { packagesLists =
url = "mirror://debian/dists/jessie/main/binary-amd64/Packages.xz"; [ (fetchurl {
sha256 = "09y1mv4kqllhxpk1ibjsyl5jig5bp0qxw6pp4sn56rglrpygmn5x"; url = "mirror://ubuntu/dists/focal/main/binary-amd64/Packages.xz";
}; sha256 = "sha256-d1eSH/j+7Zw5NKDJk21EG6SiOL7j6myMHfXLzUP8mGE=";
urlPrefix = "mirror://debian"; })
packages = commonDebianPackages; (fetchurl {
url = "mirror://ubuntu/dists/focal/universe/binary-amd64/Packages.xz";
sha256 = "sha256-RqdG2seJvZU3rKVNsWgLnf9RwkgVMRE1A4IZnX2WudE=";
})
];
urlPrefix = "mirror://ubuntu";
packages = commonDebPackages ++ [ "diffutils" "libc-bin" ];
}; };
debian9i386 = { debian9i386 = {
name = "debian-9.8-stretch-i386"; name = "debian-9.13-stretch-i386";
fullName = "Debian 9.8 Stretch (i386)"; fullName = "Debian 9.13 Stretch (i386)";
packagesList = fetchurl { packagesList = fetchurl {
url = "http://snapshot.debian.org/archive/debian/20200301T030401Z/dists/stretch/main/binary-i386/Packages.xz"; url = "https://snapshot.debian.org/archive/debian/20210526T143040Z/dists/stretch/main/binary-i386/Packages.xz";
sha256 = "1jglr1d1jys3xddp8f7w9j05db39fah8xy4gfkpqbd1b5d2caslz"; sha256 = "sha256-fFRumd20wuVaYxzw0VPkAw5mQo8kIg+eXII15VSz9wA=";
}; };
urlPrefix = "mirror://debian"; urlPrefix = "mirror://debian";
packages = commonDebianPackages; packages = commonDebianPackages;
}; };
debian9x86_64 = { debian9x86_64 = {
name = "debian-9.8-stretch-amd64"; name = "debian-9.13-stretch-amd64";
fullName = "Debian 9.8 Stretch (amd64)"; fullName = "Debian 9.13 Stretch (amd64)";
packagesList = fetchurl { packagesList = fetchurl {
url = "http://snapshot.debian.org/archive/debian/20190503T090946Z/dists/stretch/main/binary-amd64/Packages.xz"; url = "https://snapshot.debian.org/archive/debian/20210526T143040Z/dists/stretch/main/binary-amd64/Packages.xz";
sha256 = "01q00nl47p12n7wx0xclx59wf3zlkzrgj3zxpshyvb91xdnw5sh6"; sha256 = "sha256-1p4DEVpTGlBE3PtbQ90kYw4QNHkW0F4rna/Xz+ncMhw=";
}; };
urlPrefix = "mirror://debian"; urlPrefix = "mirror://debian";
packages = commonDebianPackages; packages = commonDebianPackages;
}; };
debian10i386 = {
name = "debian-10.9-buster-i386";
fullName = "Debian 10.9 Buster (i386)";
packagesList = fetchurl {
url = "https://snapshot.debian.org/archive/debian/20210526T143040Z/dists/buster/main/binary-i386/Packages.xz";
sha256 = "sha256-zlkbKV+IGBCyWKD4v4LFM/EUA4TYS9fkLBPuF6MgUDo=";
};
urlPrefix = "mirror://debian";
packages = commonDebianPackages;
};
debian10x86_64 = {
name = "debian-10.9-buster-amd64";
fullName = "Debian 10.9 Buster (amd64)";
packagesList = fetchurl {
url = "https://snapshot.debian.org/archive/debian/20210526T143040Z/dists/buster/main/binary-amd64/Packages.xz";
sha256 = "sha256-k13toY1b3CX7GBPQ7Jm24OMqCEsgPlGK8M99x57o69o=";
};
urlPrefix = "mirror://debian";
packages = commonDebianPackages;
};
}; };
@ -1168,7 +1127,7 @@ rec {
"passwd" "passwd"
]; ];
commonDebianPackages = commonDebPackages ++ [ "sysvinit" "diff" "mktemp" ]; commonDebianPackages = commonDebPackages ++ [ "sysvinit" "diff" ];
/* A set of functions that build the Linux distributions specified /* A set of functions that build the Linux distributions specified

View file

@ -1,14 +1,14 @@
{ lib, stdenv, fetchFromGitHub, python3, sassc, glib, gdk-pixbuf, inkscape, gtk-engine-murrine }: { lib, stdenv, fetchFromGitHub, python3, sassc, glib, gdk-pixbuf, inkscape, gtk-engine-murrine }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "20200910";
pname = "numix-solarized-gtk-theme"; pname = "numix-solarized-gtk-theme";
version = "20210522";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Ferdi265"; owner = "Ferdi265";
repo = "numix-solarized-gtk-theme"; repo = pname;
rev = version; rev = version;
sha256 = "05h1563sy6sfz76jadxsf730mav6bbjsk9xnadv49r16b8n8p9a9"; sha256 = "0hin73fmfir4w1z0j87k5hahhf2blhcq4r7gf89gz4slnl18cvjh";
}; };
nativeBuildInputs = [ python3 sassc glib gdk-pixbuf inkscape ]; nativeBuildInputs = [ python3 sassc glib gdk-pixbuf inkscape ];
@ -23,10 +23,11 @@ stdenv.mkDerivation rec {
buildPhase = "true"; buildPhase = "true";
installPhase = '' installPhase = ''
HOME="$NIX_BUILD_ROOT" # shut up inkscape's warnings runHook preInstall
for theme in *.colors; do for theme in *.colors; do
make THEME="''${theme/.colors/}" install make THEME="''${theme/.colors/}" install
done done
runHook postInstall
''; '';
meta = with lib; { meta = with lib; {
@ -38,7 +39,7 @@ stdenv.mkDerivation rec {
''; '';
homepage = "https://github.com/Ferdi265/numix-solarized-gtk-theme"; homepage = "https://github.com/Ferdi265/numix-solarized-gtk-theme";
downloadPage = "https://github.com/Ferdi265/numix-solarized-gtk-theme/releases"; downloadPage = "https://github.com/Ferdi265/numix-solarized-gtk-theme/releases";
license = licenses.gpl3; license = licenses.gpl3Only;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = [ maintainers.offline ]; maintainers = [ maintainers.offline ];
}; };

View file

@ -0,0 +1,28 @@
{ lib, stdenv, fetchFromGitHub, meson, sassc, pkg-config, glib, ninja, python3, gtk3, gnome }:
stdenv.mkDerivation rec {
pname = "yaru-remix";
version = "40";
src = fetchFromGitHub {
owner = "Muqtxdir";
repo = pname;
rev = "v${version}";
sha256 = "0xilhw5gbxsyy80ixxgj0nw6w782lz9dsinhi24026li1xny804c";
};
nativeBuildInputs = [ meson sassc pkg-config glib ninja python3 ];
buildInputs = [ gtk3 gnome.gnome-themes-extra ];
dontDropIconThemeCache = true;
postPatch = "patchShebangs .";
meta = with lib; {
description = "Fork of the Yaru GTK theme";
homepage = "https://github.com/Muqtxdir/yaru-remix";
license = with licenses; [ cc-by-sa-40 gpl3Plus lgpl21Only lgpl3Only ];
platforms = platforms.linux;
maintainers = with maintainers; [ hoppla20 ];
};
}

View file

@ -6,13 +6,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "cinnamon-translations"; pname = "cinnamon-translations";
version = "4.8.3"; version = "5.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "linuxmint"; owner = "linuxmint";
repo = pname; repo = pname;
rev = version; rev = version;
hash = "sha256-o/JFfwloXLUOy9YQzHtMCuzK7yBp/G43VS/RguxiTPY="; hash = "sha256-qBLg0z0ZoS7clclKsIxMG6378Q1iv1NnhS9cz3f4cEc=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -17,11 +17,12 @@
, intltool , intltool
, shared-mime-info , shared-mime-info
, cinnamon-translations , cinnamon-translations
, libgsf
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "nemo"; pname = "nemo";
version = "4.8.6"; version = "5.0.0";
# TODO: add plugins support (see https://github.com/NixOS/nixpkgs/issues/78327) # TODO: add plugins support (see https://github.com/NixOS/nixpkgs/issues/78327)
@ -29,7 +30,7 @@ stdenv.mkDerivation rec {
owner = "linuxmint"; owner = "linuxmint";
repo = pname; repo = pname;
rev = version; rev = version;
hash = "sha256-OUv7l+klu5l1Y7m+iHiq/dDyxH3/hT4k7F9gDuUiGds="; sha256 = "07n9p93iyrzb7636qqwknq8dd3im1y6wb9jfvif96mbvvdwsnfyz";
}; };
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
@ -44,6 +45,7 @@ stdenv.mkDerivation rec {
libexif libexif
exempi exempi
gobject-introspection gobject-introspection
libgsf
]; ];
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -63,7 +63,7 @@ let
}; };
elixir_1_8 = lib'.callElixir ../interpreters/elixir/1.8.nix { elixir_1_8 = lib'.callElixir ../interpreters/elixir/1.8.nix {
inherit erlang; erlang = pkgs.beam.interpreters.erlangR23;
debugInfo = true; debugInfo = true;
}; };
@ -83,7 +83,6 @@ let
# without helper functions buildRebar3 and buildMix. # without helper functions buildRebar3 and buildMix.
hex = callPackage ./hex { }; hex = callPackage ./hex { };
webdriver = callPackage ./webdriver { }; webdriver = callPackage ./webdriver { };
relxExe = callPackage ../tools/erlang/relx-exe { };
}; };
in in
makeExtensible packages makeExtensible packages

View file

@ -1,6 +1,6 @@
{ fetchFromGitHub, fetchHex, rebar3Relx, buildRebar3, lib }: { fetchFromGitHub, fetchHex, rebar3Relx, buildRebar3, lib }:
let let
version = "0.15.0"; version = "0.16.0";
owner = "erlang-ls"; owner = "erlang-ls";
repo = "erlang_ls"; repo = "erlang_ls";
deps = import ./rebar-deps.nix { deps = import ./rebar-deps.nix {
@ -12,7 +12,7 @@ in rebar3Relx {
inherit version; inherit version;
src = fetchFromGitHub { src = fetchFromGitHub {
inherit owner repo; inherit owner repo;
sha256 = "1s6zk8r5plm7ajifz17mvfrnk5mzbhj7alayink9phqbmzrypnfg"; sha256 = "0l09yhj3rsb9zj4cs6a1bcfmi6zbyb3xk1lv494xbyiv5d61vkwm";
rev = version; rev = version;
}; };
releaseType = "escript"; releaseType = "escript";

View file

@ -113,11 +113,11 @@ in { builder ? fetchOnly, fetchHex, fetchFromGitHub }: rec {
}; };
ranch = builder { ranch = builder {
name = "ranch"; name = "ranch";
version = "1.7.1"; version = "2.0.0";
src = fetchHex { src = fetchHex {
pkg = "ranch"; pkg = "ranch";
version = "1.7.1"; version = "2.0.0";
sha256 = "sha256-RR2FJ3h99xbZncNhYvygWTSRXbC2FBu9rC6o08evx9c="; sha256 = "sha256-wgpIQMfWYjwZgS06fIKLLxvRU+8PEky2nFT+UdikKuA=";
}; };
beamDeps = [ ]; beamDeps = [ ];
}; };
@ -131,6 +131,17 @@ in { builder ? fetchOnly, fetchHex, fetchFromGitHub }: rec {
}; };
beamDeps = [ ]; beamDeps = [ ];
}; };
erlfmt = builder {
name = "erlfmt";
version = "git";
src = fetchFromGitHub {
owner = "whatsapp";
repo = "erlfmt";
rev = "2e93fc4a646111357642b0179a2a63151868d890";
sha256 = "0n7kygycn05aqdp5dyj192mja89l4nxv2wg16qg2c0bmw9s7j2mr";
};
beamDeps = [ ];
};
ephemeral = builder { ephemeral = builder {
name = "ephemeral"; name = "ephemeral";
version = "2.0.4"; version = "2.0.4";

View file

@ -41,7 +41,17 @@ llvmPackages.stdenv.mkDerivation rec {
# Note: only openblas and not atlas part of this Nix expression # Note: only openblas and not atlas part of this Nix expression
# see pkgs/development/libraries/science/math/liblapack/3.5.0.nix # see pkgs/development/libraries/science/math/liblapack/3.5.0.nix
# to get a hint howto setup atlas instead of openblas # to get a hint howto setup atlas instead of openblas
buildInputs = [ llvmPackages.llvm libpng libjpeg mesa eigen openblas ]; buildInputs = [
llvmPackages.llvm
llvmPackages.lld
llvmPackages.openmp
llvmPackages.libclang
libpng
libjpeg
mesa
eigen
openblas
];
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -177,7 +177,7 @@ in stdenv.mkDerivation (rec {
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
''; '';
doCheck = stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl); doCheck = stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl) && (!stdenv.hostPlatform.isRiscV);
checkTarget = "check-all"; checkTarget = "check-all";

View file

@ -177,7 +177,7 @@ in stdenv.mkDerivation (rec {
cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
''; '';
doCheck = stdenv.isLinux && (!stdenv.isx86_32); doCheck = stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isRiscV);
checkTarget = "check-all"; checkTarget = "check-all";

View file

@ -47,6 +47,7 @@ import ./default.nix {
x86_64-apple-darwin = "765212098a415996b767d1e372ce266caf94027402b269fec33291fffc085ca4"; x86_64-apple-darwin = "765212098a415996b767d1e372ce266caf94027402b269fec33291fffc085ca4";
aarch64-apple-darwin = "95d0410bbd20b05f8b7d5adf70e8737873995bc86611a90e643d7081ca35147f"; aarch64-apple-darwin = "95d0410bbd20b05f8b7d5adf70e8737873995bc86611a90e643d7081ca35147f";
powerpc64le-unknown-linux-gnu = "7362f561104d7be4836507d3a53cd39444efcdf065813d559beb1f54ce9f7680"; powerpc64le-unknown-linux-gnu = "7362f561104d7be4836507d3a53cd39444efcdf065813d559beb1f54ce9f7680";
riscv64gc-unknown-linux-gnu = "9d0c2c4ab2397e78758de8b6b57051482bcf20b6748e0e16d9d5bd23ce73d72a";
}; };
selectRustPackage = pkgs: pkgs.rust_1_52; selectRustPackage = pkgs: pkgs.rust_1_52;

View file

@ -36,6 +36,7 @@
"armv7l" = "armv7"; "armv7l" = "armv7";
"armv6l" = "arm"; "armv6l" = "arm";
"armv5tel" = "armv5te"; "armv5tel" = "armv5te";
"riscv64" = "riscv64gc";
}.${cpu.name} or cpu.name; }.${cpu.name} or cpu.name;
in platform.rustc.config in platform.rustc.config
or "${cpu_}-${vendor.name}-${kernel.name}${lib.optionalString (abi.name != "unknown") "-${abi.name}"}"; or "${cpu_}-${vendor.name}-${kernel.name}${lib.optionalString (abi.name != "unknown") "-${abi.name}"}";

View file

@ -18,6 +18,7 @@ PLATFORMS=(
x86_64-apple-darwin x86_64-apple-darwin
aarch64-apple-darwin aarch64-apple-darwin
powerpc64le-unknown-linux-gnu powerpc64le-unknown-linux-gnu
riscv64gc-unknown-linux-gnu
) )
BASEURL=https://static.rust-lang.org/dist BASEURL=https://static.rust-lang.org/dist
VERSION=${1:-} VERSION=${1:-}

View file

@ -0,0 +1,38 @@
{ lib, mkCoqDerivation, coq, mathcomp, zorns-lemma, version ? null }:
with lib;
mkCoqDerivation rec {
pname = "topology";
releaseRev = v: "v${v}";
release."8.12.0".sha256 = "sha256-ypHmHwzwZ6MQPYwuS3QyZmVOEPUCSbO2lhVaA6TypgQ=";
release."8.10.0".sha256 = "sha256-mCLF3JYIiO3AEW9yvlcLeF7zN4SjW3LG+Y5vYB0l55A=";
release."8.9.0".sha256 = "sha256-ZJh1BM34iZOQ75zqLIA+KtBjO2y33y0UpAw/ydCWQYc=";
release."8.8.0".sha256 = "sha256-Yfm3UymEP1e+BKMNPhdRFLdFhynMirtQ8E0HXnRiqHU=";
release."8.7.0".sha256 = "sha256-qcZQKvMRs5wWIAny8ciF9TrmEQfKKO9fWhwIRL+s7VA=";
release."8.6.0".sha256 = "sha256-eu/dBEFo3y6vnXlJljUD4hds6+qgAPQVvsuspyGHcj8=";
inherit version;
defaultVersion = with versions; switch coq.coq-version [
{ case = isGe "8.12"; out = "8.12.0"; }
{ case = "8.11"; out = "8.12.0"; }
{ case = "8.10"; out = "8.10.0"; }
{ case = "8.9"; out = "8.9.0"; }
{ case = "8.8"; out = "8.8.0"; }
{ case = "8.7"; out = "8.7.0"; }
{ case = "8.6"; out = "8.6.0"; }
] null;
propagatedBuildInputs = optional (versions.isLe "8.12" defaultVersion) zorns-lemma;
meta = {
description = "General topology in Coq";
longDescription = ''
This library develops some of the basic concepts and results of
general topology in Coq.
'';
maintainers = with maintainers; [ siraben ];
license = licenses.lgpl21Plus;
};
}

View file

@ -0,0 +1,38 @@
{ lib, mkCoqDerivation, coq, version ? null }:
with lib;
mkCoqDerivation {
pname = "zorns-lemma";
releaseRev = v: "v${v}";
release."8.11.0".sha256 = "sha256-2Hf7YwRcFmP/DqwFtF1p78MCNV50qUWfMVQtZbwKd0k=";
release."8.10.0".sha256 = "sha256-qLPLK2ZLJQ4SmJX2ADqFiP4kgHuQFJTeNXkBbjiFS+4=";
release."8.9.0".sha256 = "sha256-lEh978cXehglFX9D92RVltEuvN8umfPo/hvmFZm2NGo=";
release."8.8.0".sha256 = "sha256-ikXGzABu8VW7O0xNtCNvIq29c+mlDUm4k/ygVcsgDOI=";
release."8.7.0".sha256 = "sha256-jozvkkKLFBllN6K4oeYD0lNG+MdnOuKrDUPDocHUG6c=";
release."8.6.0".sha256 = "sha256-jozvkkKLFBllN6K4oeYD0lNG+MdnOuKrDUPDocHUG6c=";
release."8.5.0".sha256 = "sha256-mH/v02ObMjbVPYx2H+Jhz+Xp0XRKN67iMAdA1VNFzso=";
inherit version;
defaultVersion = with versions; switch coq.coq-version [
{ case = isGe "8.11"; out = "8.11.0"; }
{ case = "8.10"; out = "8.10.0"; }
{ case = "8.9"; out = "8.9.0"; }
{ case = "8.8"; out = "8.8.0"; }
{ case = "8.7"; out = "8.7.0"; }
{ case = "8.6"; out = "8.6.0"; }
{ case = "8.5"; out = "8.5.0"; }
] null;
meta = {
description = "Development of basic set theory";
longDescription = ''
This Coq library develops some basic set theory. The main
purpose the author had in writing it was as support for the
Topology library.
'';
maintainers = with maintainers; [ siraben ];
license = licenses.lgpl21Plus;
};
}

View file

@ -2,7 +2,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "babashka"; pname = "babashka";
version = "0.4.1"; version = "0.4.3";
reflectionJson = fetchurl { reflectionJson = fetchurl {
name = "reflection.json"; name = "reflection.json";
@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "https://github.com/babashka/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar"; url = "https://github.com/babashka/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar";
sha256 = "sha256-tKMxi0umMmM99NusSSE9tT95TBcfXm1lfo95fQRUBrs="; sha256 = "sha256-teZKAwSv9wliVFKdT76yQjMC5g7SGPAqcq/jZ07sYjQ=";
}; };
dontUnpack = true; dontUnpack = true;
@ -110,9 +110,15 @@ stdenv.mkDerivation rec {
- Batteries included (tools.cli, cheshire, ...) - Batteries included (tools.cli, cheshire, ...)
- Library support via popular tools like the clojure CLI - Library support via popular tools like the clojure CLI
''; '';
homepage = "https://github.com/borkdude/babashka"; homepage = "https://github.com/babashka/babashka";
license = licenses.epl10; license = licenses.epl10;
platforms = graalvm11-ce.meta.platforms; platforms = graalvm11-ce.meta.platforms;
maintainers = with maintainers; [ bandresen bhougland DerGuteMoritz jlesquembre ]; maintainers = with maintainers; [
bandresen
bhougland
DerGuteMoritz
jlesquembre
thiagokokada
];
}; };
} }

View file

@ -3,8 +3,8 @@
rec { rec {
lua5_4 = callPackage ./interpreter.nix { lua5_4 = callPackage ./interpreter.nix {
sourceVersion = { major = "5"; minor = "4"; patch = "2"; }; sourceVersion = { major = "5"; minor = "4"; patch = "3"; };
hash = "0ksj5zpj74n0jkamy3di1p6l10v4gjnd2zjnb453qc6px6bhsmqi"; hash = "1yxvjvnbg4nyrdv10bq42gz6dr66pyan28lgzfygqfwy2rv24qgq";
patches = lib.optional stdenv.isDarwin ./5.4.darwin.patch; patches = lib.optional stdenv.isDarwin ./5.4.darwin.patch;
}; };

View file

@ -1,10 +1,10 @@
{ self, callPackage, lib }: { self, callPackage, lib }:
callPackage ./default.nix { callPackage ./default.nix {
inherit self; inherit self;
version = "2.0.5-2021-05-17"; version = "2.0.5-2021-05-29";
rev = "44684fa71d8af6fa8b3051c7d763bbfdcf7915d7"; rev = "c2cfa04231785116d9d198462830f41ef94147c0";
isStable = true; isStable = true;
sha256 = "049d3l0miv4n0cnm35ml8flrb9vs12zvbda2743vypckymidliqp"; sha256 = "1fw64pv0dvzb9bgr2zwcv9q8gqgsmfnvrcrmrdfgj4ncamgdnilj";
extraMeta = { # this isn't precise but it at least stops the useless Hydra build extraMeta = { # this isn't precise but it at least stops the useless Hydra build
platforms = with lib; filter (p: p != "aarch64-linux") platforms = with lib; filter (p: p != "aarch64-linux")
(platforms.linux ++ platforms.darwin); (platforms.linux ++ platforms.darwin);

View file

@ -1,8 +1,8 @@
{ self, callPackage }: { self, callPackage }:
callPackage ./default.nix { callPackage ./default.nix {
inherit self; inherit self;
version = "2.1.0-2021-05-22"; version = "2.1.0-2021-05-29";
rev = "5783ba1bf73c53ca56e64ed0c462c62224f0393c"; rev = "839fb5bd72341d8e67b6cfc2053e2acffdb75567";
isStable = false; isStable = false;
sha256 = "1j25xnbradks58lwsqnxcc7k29wsk2hnky0b1vjzpadrj0sxxc42"; sha256 = "1gyzq4n0fwah0245wazv4c43q9in1mwbk3dhh6cb1ijnjcxp2bb6";
} }

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "armadillo"; pname = "armadillo";
version = "10.5.0"; version = "10.5.1";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/arma/armadillo-${version}.tar.xz"; url = "mirror://sourceforge/arma/armadillo-${version}.tar.xz";
sha256 = "sha256-6pkMNNxtcNfJW0NU2fOwgZveJX27Z3ljSOkeGWCCy4c="; sha256 = "sha256-lq1uHLzyjz0cH/ly3ixA2t3b12gyVrrVAtPEY9L2TN8=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

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