Merge branch 'master' into staging

This commit is contained in:
Vladimír Čunát 2017-02-27 20:15:27 +01:00
commit a1919db7cd
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
832 changed files with 13598 additions and 13199 deletions

View File

@ -4,84 +4,222 @@
<title>Global configuration</title> <title>Global configuration</title>
<para>Nix packages can be configured to allow or deny certain options.</para> <para>Nix comes with certain defaults about what packages can and
cannot be installed, based on a package's metadata. By default, Nix
will prevent installation if any of the following criteria are
true:</para>
<para>To apply the configuration edit <itemizedlist>
<filename>~/.config/nixpkgs/config.nix</filename> and set it like <listitem><para>The package is thought to be broken, and has had
its <literal>meta.broken</literal> set to
<literal>true</literal>.</para></listitem>
<listitem><para>The package's <literal>meta.license</literal> is set
to a license which is considered to be unfree.</para></listitem>
<listitem><para>The package has known security vulnerabilities but
has not or can not be updated for some reason, and a list of issues
has been entered in to the package's
<literal>meta.knownVulnerabilities</literal>.</para></listitem>
</itemizedlist>
<para>Note that all this is checked during evaluation already,
and the check includes any package that is evaluated.
In particular, all build-time dependencies are checked.
<literal>nix-env -qa</literal> will (attempt to) hide any packages
that would be refused.
</para>
<para>Each of these criteria can be altered in the nixpkgs
configuration.</para>
<para>The nixpkgs configuration for a NixOS system is set in the
<literal>configuration.nix</literal>, as in the following example:
<programlisting>
{
nixpkgs.config = {
allowUnfree = true;
};
}
</programlisting>
However, this does not allow unfree software for individual users.
Their configurations are managed separately.</para>
<para>A user's of nixpkgs configuration is stored in a user-specific
configuration file located at
<filename>~/.config/nixpkgs/config.nix</filename>. For example:
<programlisting> <programlisting>
{ {
allowUnfree = true; allowUnfree = true;
} }
</programlisting> </programlisting>
</para>
and will allow the Nix package manager to install unfree licensed packages.</para> <section xml:id="sec-allow-broken">
<title>Installing broken packages</title>
<para>The configuration as listed also applies to NixOS under
<option>nixpkgs.config</option> set.</para> <para>There are two ways to try compiling a package which has been
marked as broken.</para>
<itemizedlist> <itemizedlist>
<listitem><para>
For allowing the build of a broken package once, you can use an
environment variable for a single invocation of the nix tools:
<listitem> <programlisting>$ export NIXPKGS_ALLOW_BROKEN=1</programlisting>
<para>Allow installing of packages that are distributed under </para></listitem>
unfree license by setting <programlisting>allowUnfree =
true;</programlisting> or deny them by setting it to
<literal>false</literal>.</para>
<para>Same can be achieved by setting the environment variable: <listitem><para>
For permanently allowing broken packages to be built, you may
add <literal>allowBroken = true;</literal> to your user's
configuration file, like this:
<programlisting> <programlisting>
$ export NIXPKGS_ALLOW_UNFREE=1 {
allowBroken = true;
}
</programlisting> </programlisting>
</para></listitem>
</itemizedlist>
</section>
<section xml:id="sec-allow-unfree">
<title>Installing unfree packages</title>
<para>There are several ways to tweak how Nix handles a package
which has been marked as unfree.</para>
<itemizedlist>
<listitem><para>
To temporarily allow all unfree packages, you can use an
environment variable for a single invocation of the nix tools:
<programlisting>$ export NIXPKGS_ALLOW_UNFREE=1</programlisting>
</para></listitem>
<listitem><para>
It is possible to permanently allow individual unfree packages,
while still blocking unfree packages by default using the
<literal>allowUnfreePredicate</literal> configuration
option in the user configuration file.</para>
<para>This option is a function which accepts a package as a
parameter, and returns a boolean. The following example
configuration accepts a package and always returns false:
<programlisting>
{
allowUnfreePredicate = (pkg: false);
}
</programlisting>
</para> </para>
</listitem>
<para>A more useful example, the following configuration allows
only allows flash player and visual studio code:
<programlisting>
{
allowUnfreePredicate = (pkg: elem (builtins.parseDrvName pkg.name).name [ "flashplayer" "vscode" ]);
}
</programlisting>
</para></listitem>
<listitem> <listitem>
<para>Whenever unfree packages are not allowed, single packages <para>It is also possible to whitelist and blacklist licenses
can still be allowed by a predicate function that accepts package that are specifically acceptable or not acceptable, using
as an argument and should return a boolean: <literal>whitelistedLicenses</literal> and
<literal>blacklistedLicenses</literal>, respectively.
<programlisting>
allowUnfreePredicate = (pkg: ...);
</programlisting>
Example to allow flash player and visual studio code only:
<programlisting>
allowUnfreePredicate = with builtins; (pkg: elem (parseDrvName pkg.name).name [ "flashplayer" "vscode" ]);
</programlisting>
</para> </para>
</listitem>
<listitem> <para>The following example configuration whitelists the
<para>Whenever unfree packages are not allowed, packages can still licenses <literal>amd</literal> and <literal>wtfpl</literal>:
be whitelisted by their license:
<programlisting> <programlisting>
{
whitelistedLicenses = with stdenv.lib.licenses; [ amd wtfpl ]; whitelistedLicenses = with stdenv.lib.licenses; [ amd wtfpl ];
}
</programlisting> </programlisting>
</para> </para>
</listitem>
<listitem> <para>The following example configuration blacklists the
<para>In addition to whitelisting licenses which are denied by the <literal>gpl3</literal> and <literal>agpl3</literal> licenses:
<literal>allowUnfree</literal> setting, you can also explicitely
deny installation of packages which have a certain license:
<programlisting> <programlisting>
{
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ]; blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ];
}
</programlisting> </programlisting>
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<para>A complete list of licenses can be found in the file <para>A complete list of licenses can be found in the file
<filename>lib/licenses.nix</filename> of the nix package tree.</para> <filename>lib/licenses.nix</filename> of the nixpkgs tree.</para>
</section>
<section xml:id="sec-allow-insecure">
<title>
Installing insecure packages
</title>
<para>There are several ways to tweak how Nix handles a package
which has been marked as insecure.</para>
<itemizedlist>
<listitem><para>
To temporarily allow all insecure packages, you can use an
environment variable for a single invocation of the nix tools:
<programlisting>$ export NIXPKGS_ALLOW_INSECURE=1</programlisting>
</para></listitem>
<listitem><para>
It is possible to permanently allow individual insecure
packages, while still blocking other insecure packages by
default using the <literal>permittedInsecurePackages</literal>
configuration option in the user configuration file.</para>
<para>The following example configuration permits the
installation of the hypothetically insecure package
<literal>hello</literal>, version <literal>1.2.3</literal>:
<programlisting>
{
permittedInsecurePackages = [
"hello-1.2.3"
];
}
</programlisting>
</para>
</listitem>
<listitem><para>
It is also possible to create a custom policy around which
insecure packages to allow and deny, by overriding the
<literal>allowInsecurePredicate</literal> configuration
option.</para>
<para>The <literal>allowInsecurePredicate</literal> option is a
function which accepts a package and returns a boolean, much
like <literal>allowUnfreePredicate</literal>.</para>
<para>The following configuration example only allows insecure
packages with very short names:
<programlisting>
{
allowInsecurePredicate = (pkg: (builtins.stringLength (builtins.parseDrvName pkg.name).name) &lt;= 5);
}
</programlisting>
</para>
<para>Note that <literal>permittedInsecurePackages</literal> is
only checked if <literal>allowInsecurePredicate</literal> is not
specified.
</para></listitem>
</itemizedlist>
</section>
<!--============================================================--> <!--============================================================-->
<section xml:id="sec-modify-via-packageOverrides"><title>Modify <section xml:id="sec-modify-via-packageOverrides"><title>Modify

View File

@ -2,67 +2,31 @@
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-qt"> xml:id="sec-language-qt">
<title>Qt</title> <title>Qt and KDE</title>
<para>The information in this section applies to Qt 5.5 and later.</para> <para>Qt is a comprehensive desktop and mobile application development toolkit for C++. Legacy support is available for Qt 3 and Qt 4, but all current development uses Qt 5. The Qt 5 packages in Nixpkgs are updated frequently to take advantage of new features, but older versions are typically retained to support packages that may not be compatible with the latest version. When packaging applications and libraries for Nixpkgs, it is important to ensure that compatible versions of Qt 5 are used throughout; this consideration motivates the tools described below.</para>
<para>Qt is an application development toolkit for C++. Although it is
not a distinct programming language, there are special considerations
for packaging Qt-based programs and libraries. A small set of tools
and conventions has grown out of these considerations.</para>
<section xml:id="ssec-qt-libraries"><title>Libraries</title> <section xml:id="ssec-qt-libraries"><title>Libraries</title>
<para>Packages that provide libraries should be listed in <para>Libraries that depend on Qt 5 should be built with each available version to avoid linking a dependent package against incompatible versions of Qt 5. (Although Qt 5 maintains backward ABI compatibility, linking against multiple versions at once is generally not possible; at best it will lead to runtime faults.) Packages that provide libraries should be added to the top-level function <varname>mkLibsForQt5</varname>, which is used to build a set of libraries for every Qt 5 version. The <varname>callPackage</varname> provided in this scope will ensure that only one Qt version will be used throughout the dependency tree. Dependencies should be imported unqualified, i.e. <literal>qtbase</literal> not <literal>qt5.qtbase</literal>, so that <varname>callPackage</varname> can do its work. <emphasis>Do not</emphasis> import a package set such as <literal>qt5</literal> or <literal>libsForQt5</literal> into your package; although it may work fine in the moment, it could well break at the next Qt update.</para>
<varname>qt5LibsFun</varname> so that the library is built with each
Qt version. A set of packages is provided for each version of Qt; for <para>If a library does not support a particular version of Qt 5, it is best to mark it as broken by setting its <literal>meta.broken</literal> attribute. A package may be marked broken for certain versions by testing the <literal>qtbase.version</literal> attribute, which will always give the current Qt 5 version.</para>
example, <varname>qt5Libs</varname> always provides libraries built
with the latest version, <varname>qt55Libs</varname> provides
libraries built with Qt 5.5, and so on. To avoid version conflicts, no
top-level attributes are created for these packages.</para>
</section> </section>
<section xml:id="ssec-qt-programs"><title>Programs</title> <section xml:id="ssec-qt-applications"><title>Applications</title>
<para>Application packages do not need to be built with every Qt <para>Applications generally do not need to be built with every Qt version because they do not provide any libraries for dependent packages to link against. The primary consideration is merely ensuring that the application itself and its dependencies are linked against only one version of Qt. To call your application expression, use <literal>libsForQt5.callPackage</literal> instead of <literal>callPackage</literal>. Dependencies should be imported unqualified, i.e. <literal>qtbase</literal> not <literal>qt5.qtbase</literal>. <emphasis>Do not</emphasis> import a package set such as <literal>qt5</literal> or <literal>libsForQt5</literal> into your package; although it may work fine in the moment, it could well break at the next Qt update.</para>
version. To ensure consistency between the package's dependencies,
call the package with <literal>qt5Libs.callPackage</literal> instead
of the usual <literal>callPackage</literal>. An older version may be
selected in case of incompatibility. For example, to build with Qt
5.5, call the package with
<literal>qt55Libs.callPackage</literal>.</para>
<para>Several environment variables must be set at runtime for Qt <para>It is generally best to build an application package against the <varname>libsForQt5</varname> library set. In case a package does not build with the latest Qt version, it is possible to pick a set pinned to a particular version, e.g. <varname>libsForQt55</varname> for Qt 5.5, if that is the latest version the package supports.</para>
applications to function correctly, including:</para>
<itemizedlist> <para>Qt-based applications require that several paths be set at runtime. This is accomplished by wrapping the provided executables in a package with <literal>wrapQtProgram</literal> or <literal>makeQtWrapper</literal> during the <literal>postFixup</literal> phase. To use the wrapper generators, add <literal>makeQtWrapper</literal> to <literal>nativeBuildInputs</literal>. The wrapper generators support the same options as <literal>wrapProgram</literal> and <literal>makeWrapper</literal> respectively. It is usually only necessary to generate wrappers for programs intended to be invoked by the user.</para>
<listitem><para><envar>QT_PLUGIN_PATH</envar></para></listitem>
<listitem><para><envar>QML_IMPORT_PATH</envar></para></listitem>
<listitem><para><envar>QML2_IMPORT_PATH</envar></para></listitem>
<listitem><para><envar>XDG_DATA_DIRS</envar></para></listitem>
</itemizedlist>
<para>To ensure that these are set correctly, the program must be wrapped by
invoking <literal>wrapQtProgram <replaceable>program</replaceable></literal>
during installation (for example, during
<literal>fixupPhase</literal>). <literal>wrapQtProgram</literal>
accepts the same options as <literal>makeWrapper</literal>.
</para>
</section> </section>
<section xml:id="ssec-qt-kde"><title>KDE</title> <section xml:id="ssec-qt-kde"><title>KDE</title>
<para>Many of the considerations above also apply to KDE packages, <para>The KDE Frameworks are a set of libraries for Qt 5 which form the basis of the Plasma desktop environment and the KDE Applications suite. Packaging a Frameworks-based library does not require any steps beyond those described above for general Qt-based libraries. Frameworks-based applications should not use <literal>makeQtWrapper</literal>; instead, use <literal>kdeWrapper</literal> to create the necessary wrappers: <literal>kdeWrapper { unwrapped = <replaceable>expr</replaceable>; targets = <replaceable>exes</replaceable>; }</literal>, where <replaceable>expr</replaceable> is the un-wrapped package expression and <replaceable>exes</replaceable> is a list of strings giving the relative paths to programs in the package which should be wrapped.</para>
especially the need to set the correct environment variables at
runtime. To ensure that this is done, invoke <literal>wrapKDEProgram
<replaceable>program</replaceable></literal> during
installation. <literal>wrapKDEProgram</literal> also generates a
<literal>ksycoca</literal> database so that required data and services
can be found. Like its Qt counterpart,
<literal>wrapKDEProgram</literal> accepts the same options as
<literal>makeWrapper</literal>.</para>
</section> </section>

View File

@ -177,9 +177,10 @@ rec {
let self = f self // { let self = f self // {
newScope = scope: newScope (self // scope); newScope = scope: newScope (self // scope);
callPackage = self.newScope {}; callPackage = self.newScope {};
override = g: makeScope newScope (self_: override = g:
let super = f self_; makeScope newScope
in super // g super self_); (self_: let super = f self_; in super // g super self_);
packages = f;
}; };
in self; in self;

View File

@ -343,6 +343,7 @@
nequissimus = "Tim Steinbach <tim@nequissimus.com>"; nequissimus = "Tim Steinbach <tim@nequissimus.com>";
nfjinjing = "Jinjing Wang <nfjinjing@gmail.com>"; nfjinjing = "Jinjing Wang <nfjinjing@gmail.com>";
nhooyr = "Anmol Sethi <anmol@aubble.com>"; nhooyr = "Anmol Sethi <anmol@aubble.com>";
nickhu = "Nick Hu <me@nickhu.co.uk>";
nicknovitski = "Nick Novitski <nixpkgs@nicknovitski.com>"; nicknovitski = "Nick Novitski <nixpkgs@nicknovitski.com>";
nico202 = "Nicolò Balzarotti <anothersms@gmail.com>"; nico202 = "Nicolò Balzarotti <anothersms@gmail.com>";
NikolaMandic = "Ratko Mladic <nikola@mandic.email>"; NikolaMandic = "Ratko Mladic <nikola@mandic.email>";

View File

@ -30,6 +30,14 @@ has the following highlights: </para>
<listitem> <listitem>
<para>PHP now defaults to PHP 7.1</para> <para>PHP now defaults to PHP 7.1</para>
</listitem> </listitem>
<listitem>
<para>Packages in nixpkgs can be marked as insecure through listed
vulnerabilities. See the <link
xlink:href="https://nixos.org/nixpkgs/manual/#sec-allow-insecure">Nixpkgs
manual</link> for more information.</para>
</listitem>
</itemizedlist> </itemizedlist>
<para>The following new services were added since the last release:</para> <para>The following new services were added since the last release:</para>

View File

@ -7,6 +7,12 @@
, # The size of the disk, in megabytes. , # The size of the disk, in megabytes.
diskSize diskSize
# The files and directories to be placed in the target file system.
# This is a list of attribute sets {source, target} where `source'
# is the file system object (regular file or directory) to be
# grafted in the file system at path `target'.
, contents ? []
, # Whether the disk should be partitioned (with a single partition , # Whether the disk should be partitioned (with a single partition
# containing the root filesystem) or contain the root filesystem # containing the root filesystem) or contain the root filesystem
# directly. # directly.
@ -45,7 +51,14 @@ pkgs.vmTools.runInLinuxVM (
${pkgs.vmTools.qemu}/bin/qemu-img create -f ${format} $diskImage "${toString diskSize}M" ${pkgs.vmTools.qemu}/bin/qemu-img create -f ${format} $diskImage "${toString diskSize}M"
mv closure xchg/ mv closure xchg/
''; '';
buildInputs = [ pkgs.utillinux pkgs.perl pkgs.e2fsprogs pkgs.parted ]; buildInputs = with pkgs; [ utillinux perl e2fsprogs parted rsync ];
# I'm preserving the line below because I'm going to search for it across nixpkgs to consolidate
# image building logic. The comment right below this now appears in 4 different places in nixpkgs :)
# !!! should use XML.
sources = map (x: x.source) contents;
targets = map (x: x.target) contents;
exportReferencesGraph = exportReferencesGraph =
[ "closure" config.system.build.toplevel ]; [ "closure" config.system.build.toplevel ];
inherit postVM; inherit postVM;
@ -98,11 +111,45 @@ pkgs.vmTools.runInLinuxVM (
# Remove /etc/machine-id so that each machine cloning this image will get its own id # Remove /etc/machine-id so that each machine cloning this image will get its own id
rm -f /mnt/etc/machine-id rm -f /mnt/etc/machine-id
# Copy arbitrary other files into the image
# Semi-shamelessly copied from make-etc.sh. I (@copumpkin) shall factor this stuff out as part of
# https://github.com/NixOS/nixpkgs/issues/23052.
set -f
sources_=($sources)
targets_=($targets)
set +f
for ((i = 0; i < ''${#targets_[@]}; i++)); do
source="''${sources_[$i]}"
target="''${targets_[$i]}"
if [[ "$source" =~ '*' ]]; then
# If the source name contains '*', perform globbing.
mkdir -p /mnt/$target
for fn in $source; do
rsync -a --no-o --no-g "$fn" /mnt/$target/
done
else
mkdir -p /mnt/$(dirname $target)
if ! [ -e /mnt/$target ]; then
rsync -a --no-o --no-g $source /mnt/$target
else
echo "duplicate entry $target -> $source"
exit 1
fi
fi
done
umount /mnt umount /mnt
# Make sure resize2fs works # Make sure resize2fs works. Note that resize2fs has stricter criteria for resizing than a normal
# mount, so the `-c 0` and `-i 0` don't affect it. Setting it to `now` doesn't produce deterministic
# output, of course, but we can fix that when/if we start making images deterministic.
${optionalString (fsType == "ext4") '' ${optionalString (fsType == "ext4") ''
tune2fs -c 0 -i 0 $rootDisk tune2fs -T now -c 0 -i 0 $rootDisk
''} ''}
'' ''
) )

View File

@ -2,15 +2,34 @@
with lib; with lib;
{ let
cfg = config.amazonImage;
in {
imports = imports =
[ ../../../modules/installer/cd-dvd/channel.nix [ ../../../modules/installer/cd-dvd/channel.nix
../../../modules/virtualisation/amazon-image.nix ../../../modules/virtualisation/amazon-image.nix
]; ];
system.build.amazonImage = import ../../../lib/make-disk-image.nix { options.amazonImage = {
contents = mkOption {
example = literalExample ''
[ { source = pkgs.memtest86 + "/memtest.bin";
target = "boot/memtest.bin";
}
]
'';
default = [];
description = ''
This option lists files to be copied to fixed locations in the
generated image. Glob patterns work.
'';
};
};
config.system.build.amazonImage = import ../../../lib/make-disk-image.nix {
inherit lib config; inherit lib config;
inherit (cfg) contents;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
partitioned = config.ec2.hvm; partitioned = config.ec2.hvm;
diskSize = if config.ec2.hvm then 2048 else 8192; diskSize = if config.ec2.hvm then 2048 else 8192;

View File

@ -0,0 +1,24 @@
{ config, lib, pkgs, ... }:
with lib;
{
imports =
[ ../../../modules/installer/cd-dvd/channel.nix
../../../modules/virtualisation/nova-config.nix
];
system.build.novaImage = import ../../../lib/make-disk-image.nix {
inherit lib config;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
diskSize = 8192;
format = "qcow2";
configFile = pkgs.writeText "configuration.nix"
''
{
imports = [ <nixpkgs/nixos/modules/virtualisation/nova-config.nix> ];
}
'';
};
}

View File

@ -251,11 +251,6 @@ in
# Install the proxy environment variables # Install the proxy environment variables
environment.sessionVariables = cfg.proxy.envVars; environment.sessionVariables = cfg.proxy.envVars;
# The ip-up target is kept for backwards compatibility.
# New services should use systemd upstream targets:
# See https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
systemd.targets.ip-up.description = "Services Requiring IP Connectivity (deprecated)";
# This is needed when /etc/resolv.conf is being overriden by networkd # This is needed when /etc/resolv.conf is being overriden by networkd
# and other configurations. If the file is destroyed by an environment # and other configurations. If the file is destroyed by an environment
# activation then it must be rebuilt so that applications which interface # activation then it must be rebuilt so that applications which interface

View File

@ -22,7 +22,8 @@ with lib;
###### implementation ###### implementation
config = mkIf config.hardware.cpu.amd.updateMicrocode { config = mkIf config.hardware.cpu.amd.updateMicrocode {
boot.initrd.prepend = [ "${pkgs.microcodeAmd}/amd-ucode.img" ]; # Microcode updates must be the first item prepended in the initrd
boot.initrd.prepend = mkOrder 1 [ "${pkgs.microcodeAmd}/amd-ucode.img" ];
}; };
} }

View File

@ -22,7 +22,8 @@ with lib;
###### implementation ###### implementation
config = mkIf config.hardware.cpu.intel.updateMicrocode { config = mkIf config.hardware.cpu.intel.updateMicrocode {
boot.initrd.prepend = [ "${pkgs.microcodeIntel}/intel-ucode.img" ]; # Microcode updates must be the first item prepended in the initrd
boot.initrd.prepend = mkOrder 1 [ "${pkgs.microcodeIntel}/intel-ucode.img" ];
}; };
} }

View File

@ -0,0 +1,37 @@
{ config, lib, pkgs, ... }:
with lib;
{
meta.maintainers = [ maintainers.grahamc ];
options = {
hardware.mcelog = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable the Machine Check Exception logger.
'';
};
};
};
config = mkIf config.hardware.mcelog.enable {
systemd.services.mcelog = {
description = "Machine Check Exception Logging Daemon";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.mcelog}/bin/mcelog --daemon --foreground";
SuccessExitStatus = [ 0 15 ];
ProtectHome = true;
PrivateNetwork = true;
PrivateTmp = true;
};
};
};
}

View File

@ -44,7 +44,7 @@ in
panel = mkOption { panel = mkOption {
type = with types; nullOr path; type = with types; nullOr path;
default = null; default = null;
example = literalExample "''${pkgs.kde5.plasma-desktop}/lib/libexec/kimpanel-ibus-panel"; example = literalExample "''${pkgs.plasma5.plasma-desktop}/lib/libexec/kimpanel-ibus-panel";
description = "Replace the IBus panel with another panel."; description = "Replace the IBus panel with another panel.";
}; };
}; };

View File

@ -66,7 +66,7 @@ with lib;
in '' in ''
mkdir -p /root/Desktop mkdir -p /root/Desktop
ln -sfT ${desktopFile} /root/Desktop/nixos-manual.desktop ln -sfT ${desktopFile} /root/Desktop/nixos-manual.desktop
ln -sfT ${pkgs.kde5.konsole}/share/applications/org.kde.konsole.desktop /root/Desktop/org.kde.konsole.desktop ln -sfT ${pkgs.kdeApplications.konsole}/share/applications/org.kde.konsole.desktop /root/Desktop/org.kde.konsole.desktop
ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop /root/Desktop/gparted.desktop ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop /root/Desktop/gparted.desktop
''; '';

View File

@ -1,5 +1,5 @@
{ {
x86_64-linux = "/nix/store/qdkzm17csr24snk247a1s0c47ikq5sl6-nix-1.11.6"; x86_64-linux = "/nix/store/4ssykr786d0wp7y6m4xd4qwqs4nrry1z-nix-1.11.7";
i686-linux = "/nix/store/hiwp53747lxlniqy5wpbql5izjrs8z0z-nix-1.11.6"; i686-linux = "/nix/store/61ggxx2072y2g877m01asy0lsn7xpn06-nix-1.11.7";
x86_64-darwin = "/nix/store/hca2hqcvwncf23hiqyqgwbsdy8vvl9xv-nix-1.11.6"; x86_64-darwin = "/nix/store/pxf5ri5kdbfqkhd10sw4lpj8sn385ks5-nix-1.11.7";
} }

View File

@ -106,9 +106,12 @@ in
NAME=NixOS NAME=NixOS
ID=nixos ID=nixos
VERSION="${config.system.nixosVersion} (${config.system.nixosCodeName})" VERSION="${config.system.nixosVersion} (${config.system.nixosCodeName})"
VERSION_CODENAME=${toLower config.system.nixosCodeName}
VERSION_ID="${config.system.nixosVersion}" VERSION_ID="${config.system.nixosVersion}"
PRETTY_NAME="NixOS ${config.system.nixosVersion} (${config.system.nixosCodeName})" PRETTY_NAME="NixOS ${config.system.nixosVersion} (${config.system.nixosCodeName})"
HOME_URL="http://nixos.org/" HOME_URL="https://nixos.org/"
SUPPORT_URL="https://nixos.org/nixos/support.html"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
''; '';
}; };

View File

@ -30,6 +30,7 @@
./hardware/cpu/amd-microcode.nix ./hardware/cpu/amd-microcode.nix
./hardware/cpu/intel-microcode.nix ./hardware/cpu/intel-microcode.nix
./hardware/ksm.nix ./hardware/ksm.nix
./hardware/mcelog.nix
./hardware/network/b43.nix ./hardware/network/b43.nix
./hardware/network/intel-2100bg.nix ./hardware/network/intel-2100bg.nix
./hardware/network/intel-2200bg.nix ./hardware/network/intel-2200bg.nix
@ -106,6 +107,7 @@
./security/audit.nix ./security/audit.nix
./security/ca.nix ./security/ca.nix
./security/chromium-suid-sandbox.nix ./security/chromium-suid-sandbox.nix
./security/dhparams.nix
./security/duosec.nix ./security/duosec.nix
./security/grsecurity.nix ./security/grsecurity.nix
./security/hidepid.nix ./security/hidepid.nix
@ -426,6 +428,7 @@
./services/networking/namecoind.nix ./services/networking/namecoind.nix
./services/networking/nat.nix ./services/networking/nat.nix
./services/networking/networkmanager.nix ./services/networking/networkmanager.nix
./services/networking/nftables.nix
./services/networking/ngircd.nix ./services/networking/ngircd.nix
./services/networking/nix-serve.nix ./services/networking/nix-serve.nix
./services/networking/nntp-proxy.nix ./services/networking/nntp-proxy.nix

View File

@ -178,6 +178,9 @@ with lib;
(mkRenamedOptionModule [ "services" "nfs" "lockdPort" ] [ "services" "nfs" "server" "lockdPort" ]) (mkRenamedOptionModule [ "services" "nfs" "lockdPort" ] [ "services" "nfs" "server" "lockdPort" ])
(mkRenamedOptionModule [ "services" "nfs" "statdPort" ] [ "services" "nfs" "server" "statdPort" ]) (mkRenamedOptionModule [ "services" "nfs" "statdPort" ] [ "services" "nfs" "server" "statdPort" ])
# KDE Plasma 5
(mkRenamedOptionModule [ "services" "xserver" "desktopManager" "kde5" ] [ "services" "xserver" "desktopManager" "plasma5" ])
# Options that are obsolete and have no replacement. # Options that are obsolete and have no replacement.
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "") (mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "") (mkRemovedOptionModule [ "programs" "bash" "enable" ] "")

View File

@ -0,0 +1,90 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.security.dhparams;
in
{
options = {
security.dhparams = {
params = mkOption {
description =
''
Diffie-Hellman parameters to generate.
The value is the size (in bits) of the DH params to generate. The
generated DH params path can be found in
<filename><replaceable>security.dhparams.path</replaceable>/<replaceable>name</replaceable>.pem</filename>.
Note: The name of the DH params is taken as being the name of the
service it serves: the params will be generated before the said
service is started.
'';
type = with types; attrsOf int;
default = {};
example = { nginx = 3072; };
};
path = mkOption {
description =
''
Path to the directory in which Diffie-Hellman parameters will be
stored.
'';
type = types.str;
default = "/var/lib/dhparams";
};
};
};
config.systemd.services = {
dhparams-init = {
description = "Cleanup old Diffie-Hellman parameters";
wantedBy = [ "multi-user.target" ]; # Clean up even when no DH params is set
serviceConfig.Type = "oneshot";
script =
# Create directory
''
if [ ! -d ${cfg.path} ]; then
mkdir -p ${cfg.path}
fi
'' +
# Remove old dhparams
''
for file in ${cfg.path}/*; do
if [ ! -f "$file" ]; then
continue
fi
'' + concatStrings (mapAttrsToList (name: value:
''
if [ "$file" == "${cfg.path}/${name}.pem" ] && \
${pkgs.openssl}/bin/openssl dhparam -in "$file" -text | head -n 1 | grep "(${toString value} bit)" > /dev/null; then
continue
fi
''
) cfg.params) +
''
rm $file
done
# TODO: Ideally this would be removing the *former* cfg.path, though this
# does not seem really important
rmdir -p --ignore-fail-on-non-empty ${cfg.path}
'';
};
} //
mapAttrs' (name: value: nameValuePair "dhparams-gen-${name}" {
description = "Generate Diffie-Hellman parameters for ${name} if they don't exist yet";
after = [ "dhparams-init.service" ];
before = [ "${name}.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "oneshot";
script =
''
mkdir -p ${cfg.path}
if [ ! -f ${cfg.path}/${name}.pem ]; then
${pkgs.openssl}/bin/openssl dhparam -out ${cfg.path}/${name}.pem ${toString value}
fi
'';
}) cfg.params;
}

View File

@ -280,8 +280,8 @@ let
${optionalString cfg.pamMount ${optionalString cfg.pamMount
"auth optional ${pkgs.pam_mount}/lib/security/pam_mount.so"} "auth optional ${pkgs.pam_mount}/lib/security/pam_mount.so"}
${optionalString cfg.enableKwallet ${optionalString cfg.enableKwallet
("auth optional ${pkgs.kde5.kwallet-pam}/lib/security/pam_kwallet5.so" + ("auth optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
" kwalletd=${pkgs.kde5.kwallet}/bin/kwalletd5")} " kwalletd=${pkgs.libsForQt5.kwallet}/bin/kwalletd5")}
'') + '' '') + ''
${optionalString cfg.unixAuth ${optionalString cfg.unixAuth
"auth sufficient pam_unix.so ${optionalString cfg.allowNullPassword "nullok"} likeauth try_first_pass"} "auth sufficient pam_unix.so ${optionalString cfg.allowNullPassword "nullok"} likeauth try_first_pass"}
@ -349,8 +349,8 @@ let
${optionalString (cfg.enableAppArmor && config.security.apparmor.enable) ${optionalString (cfg.enableAppArmor && config.security.apparmor.enable)
"session optional ${pkgs.apparmor-pam}/lib/security/pam_apparmor.so order=user,group,default debug"} "session optional ${pkgs.apparmor-pam}/lib/security/pam_apparmor.so order=user,group,default debug"}
${optionalString (cfg.enableKwallet) ${optionalString (cfg.enableKwallet)
("session optional ${pkgs.kde5.kwallet-pam}/lib/security/pam_kwallet5.so" + ("session optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
" kwalletd=${pkgs.kde5.kwallet}/bin/kwalletd5")} " kwalletd=${pkgs.libsForQt5.kwallet}/bin/kwalletd5")}
''); '');
}; };

View File

@ -84,7 +84,7 @@ in
security.pam.services.polkit-1 = {}; security.pam.services.polkit-1 = {};
security.wrappers = { security.wrappers = {
pkexec.source = "${pkgs.polkit.out}/bin/pkexec"; pkexec.source = "${pkgs.polkit.bin}/bin/pkexec";
"polkit-agent-helper-1".source = "${pkgs.polkit.out}/lib/polkit-1/polkit-agent-helper-1"; "polkit-agent-helper-1".source = "${pkgs.polkit.out}/lib/polkit-1/polkit-agent-helper-1";
}; };

View File

@ -30,9 +30,16 @@ let
''; '';
wrapperConfig = pkgs.writeText "neo4j-wrapper.conf" '' wrapperConfig = pkgs.writeText "neo4j-wrapper.conf" ''
# Default JVM parameters from neo4j.conf
dbms.jvm.additional=-XX:+UseG1GC
dbms.jvm.additional=-XX:-OmitStackTraceInFastThrow
dbms.jvm.additional=-XX:+AlwaysPreTouch
dbms.jvm.additional=-XX:+UnlockExperimentalVMOptions
dbms.jvm.additional=-XX:+TrustFinalNonStaticFields
dbms.jvm.additional=-XX:+DisableExplicitGC
dbms.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048
dbms.jvm.additional=-Dunsupported.dbms.udc.source=tarball dbms.jvm.additional=-Dunsupported.dbms.udc.source=tarball
dbms.jvm.additional=-XX:+UseConcMarkSweepGC
dbms.jvm.additional=-XX:+CMSClassUnloadingEnabled
''; '';
in { in {

View File

@ -17,9 +17,16 @@ let
elasticsearch_discovery_zen_ping_unicast_hosts = ${cfg.elasticsearchDiscoveryZenPingUnicastHosts} elasticsearch_discovery_zen_ping_unicast_hosts = ${cfg.elasticsearchDiscoveryZenPingUnicastHosts}
message_journal_dir = ${cfg.messageJournalDir} message_journal_dir = ${cfg.messageJournalDir}
mongodb_uri = ${cfg.mongodbUri} mongodb_uri = ${cfg.mongodbUri}
plugin_dir = /var/lib/graylog/plugins
${cfg.extraConfig} ${cfg.extraConfig}
''; '';
glPlugins = pkgs.buildEnv {
name = "graylog-plugins";
paths = cfg.plugins;
};
in in
{ {
@ -121,6 +128,12 @@ in
description = "Any other configuration options you might want to add"; description = "Any other configuration options you might want to add";
}; };
plugins = mkOption {
description = "Extra graylog plugins";
default = [ ];
type = types.listOf types.package;
};
}; };
}; };
@ -146,6 +159,16 @@ in
path = [ pkgs.openjdk8 pkgs.which pkgs.procps ]; path = [ pkgs.openjdk8 pkgs.which pkgs.procps ];
preStart = '' preStart = ''
mkdir -p /var/lib/graylog -m 755 mkdir -p /var/lib/graylog -m 755
rm -rf /var/lib/graylog/plugins || true
mkdir -p /var/lib/graylog/plugins -m 755
for declarativeplugin in `ls ${glPlugins}/bin/`; do
ln -sf ${glPlugins}/bin/$declarativeplugin /var/lib/graylog/plugins/$declarativeplugin
done
for includedplugin in `ls ${cfg.package}/plugin/`; do
ln -s ${cfg.package}/plugin/$includedplugin /var/lib/graylog/plugins/$includedplugin || true
done
chown -R ${cfg.user} /var/lib/graylog chown -R ${cfg.user} /var/lib/graylog
mkdir -p ${cfg.messageJournalDir} -m 755 mkdir -p ${cfg.messageJournalDir} -m 755

View File

@ -19,13 +19,8 @@ let
${toString cfg.extraProperties} ${toString cfg.extraProperties}
''; '';
configDir = pkgs.buildEnv { serverConfig = pkgs.writeText "server.properties" serverProperties;
name = "apache-kafka-conf"; logConfig = pkgs.writeText "log4j.properties" cfg.log4jProperties;
paths = [
(pkgs.writeTextDir "server.properties" serverProperties)
(pkgs.writeTextDir "log4j.properties" cfg.log4jProperties)
];
};
in { in {
@ -143,10 +138,11 @@ in {
serviceConfig = { serviceConfig = {
ExecStart = '' ExecStart = ''
${pkgs.jre}/bin/java \ ${pkgs.jre}/bin/java \
-cp "${cfg.package}/libs/*:${configDir}" \ -cp "${cfg.package}/libs/*" \
-Dlog4j.configuration=file:${logConfig} \
${toString cfg.jvmOptions} \ ${toString cfg.jvmOptions} \
kafka.Kafka \ kafka.Kafka \
${configDir}/server.properties ${serverConfig}
''; '';
User = "apache-kafka"; User = "apache-kafka";
PermissionsStartOnly = true; PermissionsStartOnly = true;

View File

@ -134,6 +134,7 @@ let
}; };
}); });
default = null; default = null;
apply = x: if x == null then null else _filter x;
description = '' description = ''
Optional http login credentials for metrics scraping. Optional http login credentials for metrics scraping.
''; '';

View File

@ -157,7 +157,7 @@ in
systemd.services.dhcpcd = systemd.services.dhcpcd =
{ description = "DHCP Client"; { description = "DHCP Client";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "network-online.target" ];
after = [ "network.target" ]; after = [ "network.target" ];
wants = [ "network.target" ]; wants = [ "network.target" ];
@ -173,7 +173,7 @@ in
serviceConfig = serviceConfig =
{ Type = "forking"; { Type = "forking";
PIDFile = "/run/dhcpcd.pid"; PIDFile = "/run/dhcpcd.pid";
ExecStart = "@${dhcpcd}/sbin/dhcpcd dhcpcd --quiet ${optionalString cfg.persistent "--persistent"} --config ${dhcpcdConf}"; ExecStart = "@${dhcpcd}/sbin/dhcpcd dhcpcd -w --quiet ${optionalString cfg.persistent "--persistent"} --config ${dhcpcdConf}";
ExecReload = "${dhcpcd}/sbin/dhcpcd --rebind"; ExecReload = "${dhcpcd}/sbin/dhcpcd --rebind";
Restart = "always"; Restart = "always";
}; };

View File

@ -61,7 +61,8 @@ let
}; };
machineOpts = { ... }: { machineOpts = { ... }: {
config = {
options = {
hostName = mkOption { hostName = mkOption {
type = types.str; type = types.str;
@ -156,7 +157,7 @@ let
}; };
machines = mkOption { machines = mkOption {
type = types.listOf (types.submodule machineOpts); type = with types; listOf (submodule machineOpts);
default = []; default = [];
example = [ example = [
{ hostName = "foo"; { hostName = "foo";

View File

@ -0,0 +1,125 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.networking.nftables;
in
{
###### interface
options = {
networking.nftables.enable = mkOption {
type = types.bool;
default = false;
description =
''
Whether to enable nftables. nftables is a Linux-based packet
filtering framework intended to replace frameworks like iptables.
This conflicts with the standard networking firewall, so make sure to
disable it before using nftables.
'';
};
networking.nftables.ruleset = mkOption {
type = types.lines;
example = ''
# Check out https://wiki.nftables.org/ for better documentation.
# Table for both IPv4 and IPv6.
table inet filter {
# Block all incomming connections traffic except SSH and "ping".
chain input {
type filter hook input priority 0;
# accept any localhost traffic
iifname lo accept
# accept traffic originated from us
ct state {established, related} accept
# ICMP
# routers may also want: mld-listener-query, nd-router-solicit
ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, parameter-problem, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } accept
ip protocol icmp icmp type { destination-unreachable, router-advertisement, time-exceeded, parameter-problem } accept
# allow "ping"
ip6 nexthdr icmp icmpv6 type echo-request accept
ip protocol icmp icmp type echo-request accept
# accept SSH connections (required for a server)
tcp dport 22 accept
# count and drop any other traffic
counter drop
}
# Allow all outgoing connections.
chain output {
type filter hook output priority 0;
accept
}
chain forward {
type filter hook forward priority 0;
accept
}
}
'';
description =
''
The ruleset to be used with nftables. Should be in a format that
can be loaded using "/bin/nft -f". The ruleset is updated atomically.
'';
};
networking.nftables.rulesetFile = mkOption {
type = types.path;
default = pkgs.writeTextFile {
name = "nftables-rules";
text = cfg.ruleset;
};
description =
''
The ruleset file to be used with nftables. Should be in a format that
can be loaded using "nft -f". The ruleset is updated atomically.
'';
};
};
###### implementation
config = mkIf cfg.enable {
assertions = [{
assertion = config.networking.firewall.enable == false;
message = "You can not use nftables with services.networking.firewall.";
}];
boot.blacklistedKernelModules = [ "ip_tables" ];
environment.systemPackages = [ pkgs.nftables ];
systemd.services.nftables = {
description = "nftables firewall";
before = [ "network-pre.target" ];
wants = [ "network-pre.target" ];
wantedBy = [ "multi-user.target" ];
reloadIfChanged = true;
serviceConfig = let
rulesScript = pkgs.writeScript "nftables-rules" ''
#! ${pkgs.nftables}/bin/nft -f
flush ruleset
include "${cfg.rulesetFile}"
'';
checkScript = pkgs.writeScript "nftables-check" ''
#! ${pkgs.stdenv.shell} -e
if $(${pkgs.kmod}/bin/lsmod | grep -q ip_tables); then
echo "Unload ip_tables before using nftables!" 1>&2
exit 1
else
${rulesScript}
fi
'';
in {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = checkScript;
ExecReload = checkScript;
ExecStop = "${pkgs.nftables}/bin/nft flush ruleset";
};
};
};
}

View File

@ -265,7 +265,8 @@ in
systemd.services.prosody = { systemd.services.prosody = {
description = "Prosody XMPP server"; description = "Prosody XMPP server";
after = [ "network.target" ]; after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
User = "prosody"; User = "prosody";

View File

@ -5,13 +5,16 @@ with lib;
let let
cfg = config.services.nginx; cfg = config.services.nginx;
virtualHosts = mapAttrs (vhostName: vhostConfig: virtualHosts = mapAttrs (vhostName: vhostConfig:
vhostConfig // { let
serverName = if vhostConfig.serverName != null serverName = if vhostConfig.serverName != null
then vhostConfig.serverName then vhostConfig.serverName
else vhostName; else vhostName;
in
vhostConfig // {
inherit serverName;
} // (optionalAttrs vhostConfig.enableACME { } // (optionalAttrs vhostConfig.enableACME {
sslCertificate = "/var/lib/acme/${vhostName}/fullchain.pem"; sslCertificate = "/var/lib/acme/${serverName}/fullchain.pem";
sslCertificateKey = "/var/lib/acme/${vhostName}/key.pem"; sslCertificateKey = "/var/lib/acme/${serverName}/key.pem";
}) })
) cfg.virtualHosts; ) cfg.virtualHosts;
enableIPv6 = config.networking.enableIPv6; enableIPv6 = config.networking.enableIPv6;
@ -382,6 +385,7 @@ in
description = "Nginx Web Server"; description = "Nginx Web Server";
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
stopIfChanged = false;
preStart = preStart =
'' ''
mkdir -p ${cfg.stateDir}/logs mkdir -p ${cfg.stateDir}/logs

View File

@ -24,10 +24,11 @@ let
${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)} ${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)}
''; '';
phpIni = pkgs.writeText "php.ini" '' phpIni = pkgs.runCommand "php.ini" {
${readFile "${cfg.phpPackage}/etc/php.ini"} inherit (cfg) phpPackage phpOptions;
passAsFile = [ "phpOptions" ];
${cfg.phpOptions} } ''
cat $phpPackage/etc/php.ini $phpOptionsFile > $out
''; '';
in { in {

View File

@ -16,9 +16,9 @@ in
{ {
# Note: the order in which desktop manager modules are imported here # Note: the order in which desktop manager modules are imported here
# determines the default: later modules (if enabled) are preferred. # determines the default: later modules (if enabled) are preferred.
# E.g., if KDE is enabled, it supersedes xterm. # E.g., if Plasma 5 is enabled, it supersedes xterm.
imports = [ imports = [
./none.nix ./xterm.nix ./xfce.nix ./kde5.nix ./lumina.nix ./none.nix ./xterm.nix ./xfce.nix ./plasma5.nix ./lumina.nix
./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix ./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix
]; ];

View File

@ -1,255 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.kde5;
xorg = pkgs.xorg;
kde5 = pkgs.kde5;
in
{
options = {
services.xserver.desktopManager.kde5 = {
enable = mkOption {
type = types.bool;
default = false;
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
};
enableQt4Support = mkOption {
type = types.bool;
default = true;
description = ''
Enable support for Qt 4-based applications. Particularly, install the
Qt 4 version of the Breeze theme and a default backend for Phonon.
'';
};
extraPackages = mkOption {
type = types.listOf types.package;
default = [];
description = ''
KDE packages that need to be installed system-wide.
'';
};
};
};
config = mkMerge [
(mkIf (cfg.extraPackages != []) {
environment.systemPackages = [ (kde5.kdeWrapper cfg.extraPackages) ];
})
(mkIf (xcfg.enable && cfg.enable) {
services.xserver.desktopManager.session = singleton {
name = "kde5";
bgSupport = true;
start = ''
# Load PulseAudio module for routing support.
# See http://colin.guthr.ie/2009/10/so-how-does-the-kde-pulseaudio-support-work-anyway/
${optionalString config.hardware.pulseaudio.enable ''
${getBin config.hardware.pulseaudio.package}/bin/pactl load-module module-device-manager "do_routing=1"
''}
exec "${kde5.startkde}"
'';
};
security.wrappers = {
kcheckpass.source = "${kde5.plasma-workspace.out}/lib/libexec/kcheckpass";
"start_kdeinit".source = "${kde5.kinit.out}/lib/libexec/kf5/start_kdeinit";
};
environment.systemPackages =
[
kde5.frameworkintegration
kde5.kactivities
kde5.kauth
kde5.kcmutils
kde5.kconfig
kde5.kconfigwidgets
kde5.kcoreaddons
kde5.kdbusaddons
kde5.kdeclarative
kde5.kded
kde5.kdesu
kde5.kdnssd
kde5.kemoticons
kde5.kfilemetadata
kde5.kglobalaccel
kde5.kguiaddons
kde5.kiconthemes
kde5.kidletime
kde5.kimageformats
kde5.kinit
kde5.kio
kde5.kjobwidgets
kde5.knewstuff
kde5.knotifications
kde5.knotifyconfig
kde5.kpackage
kde5.kparts
kde5.kpeople
kde5.krunner
kde5.kservice
kde5.ktextwidgets
kde5.kwallet
kde5.kwallet-pam
kde5.kwalletmanager
kde5.kwayland
kde5.kwidgetsaddons
kde5.kxmlgui
kde5.kxmlrpcclient
kde5.plasma-framework
kde5.solid
kde5.sonnet
kde5.threadweaver
kde5.breeze-qt5
kde5.kactivitymanagerd
kde5.kde-cli-tools
kde5.kdecoration
kde5.kdeplasma-addons
kde5.kgamma5
kde5.khotkeys
kde5.kinfocenter
kde5.kmenuedit
kde5.kscreen
kde5.kscreenlocker
kde5.ksysguard
kde5.kwayland
kde5.kwin
kde5.kwrited
kde5.libkscreen
kde5.libksysguard
kde5.milou
kde5.plasma-integration
kde5.polkit-kde-agent
kde5.systemsettings
kde5.plasma-desktop
kde5.plasma-workspace
kde5.plasma-workspace-wallpapers
kde5.dolphin-plugins
kde5.ffmpegthumbs
kde5.kdegraphics-thumbnailers
kde5.kio-extras
kde5.print-manager
# Install Breeze icons if available
(kde5.breeze-icons or kde5.oxygen-icons5 or kde5.oxygen-icons)
pkgs.hicolor_icon_theme
kde5.kde-gtk-config kde5.breeze-gtk
pkgs.qt5.phonon-backend-gstreamer
]
# Plasma 5.5 and later has a Breeze GTK theme.
# If it is not available, Orion is very similar to Breeze.
++ lib.optional (!(lib.hasAttr "breeze-gtk" kde5)) pkgs.orion
# Install activity manager if available
++ lib.optional (lib.hasAttr "kactivitymanagerd" kde5) kde5.kactivitymanagerd
# frameworkintegration was split with plasma-integration in Plasma 5.6
++ lib.optional (lib.hasAttr "plasma-integration" kde5) kde5.plasma-integration
++ lib.optionals cfg.enableQt4Support [ kde5.breeze-qt4 pkgs.phonon-backend-gstreamer ]
# Optional hardware support features
++ lib.optional config.hardware.bluetooth.enable kde5.bluedevil
++ lib.optional config.networking.networkmanager.enable kde5.plasma-nm
++ lib.optional config.hardware.pulseaudio.enable kde5.plasma-pa
++ lib.optional config.powerManagement.enable kde5.powerdevil
++ lib.optional config.services.colord.enable pkgs.colord-kde
++ lib.optionals config.services.samba.enable [ kde5.kdenetwork-filesharing pkgs.samba ];
services.xserver.desktopManager.kde5.extraPackages =
[
kde5.khelpcenter
kde5.oxygen
kde5.dolphin
kde5.konsole
];
environment.pathsToLink = [ "/share" ];
environment.etc = singleton {
source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
target = "X11/xkb";
};
environment.variables =
{
# Enable GTK applications to load SVG icons
GST_PLUGIN_SYSTEM_PATH_1_0 =
lib.makeSearchPath "/lib/gstreamer-1.0"
(builtins.map (pkg: pkg.out) (with pkgs.gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gst-plugins-bad
gst-libav # for mp3 playback
]));
}
// (if (lib.hasAttr "breeze-icons" kde5)
then { GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; }
else { });
fonts.fonts = [ (kde5.oxygen-fonts or pkgs.noto-fonts) ];
programs.ssh.askPassword = "${kde5.ksshaskpass.out}/bin/ksshaskpass";
# Enable helpful DBus services.
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
services.dbus.packages =
mkIf config.services.printing.enable [ pkgs.system-config-printer ];
# Extra UDEV rules used by Solid
services.udev.packages = [
pkgs.libmtp
pkgs.media-player-info
];
services.xserver.displayManager.sddm = {
theme = "breeze";
themes = [
kde5.ecm # for the setup-hook
kde5.plasma-workspace
kde5.breeze-icons
];
};
security.pam.services.kde = { allowNullPassword = true; };
# Doing these one by one seems silly, but we currently lack a better
# construct for handling common pam configs.
security.pam.services.gdm.enableKwallet = true;
security.pam.services.kdm.enableKwallet = true;
security.pam.services.lightdm.enableKwallet = true;
security.pam.services.sddm.enableKwallet = true;
security.pam.services.slim.enableKwallet = true;
# use kimpanel as the default IBus panel
i18n.inputMethod.ibus.panel =
lib.mkDefault
"${pkgs.kde5.plasma-desktop}/lib/libexec/kimpanel-ibus-panel";
})
];
}

View File

@ -32,8 +32,8 @@ in
environment.systemPackages = [ environment.systemPackages = [
pkgs.fluxbox pkgs.fluxbox
pkgs.kde5.kwindowsystem pkgs.qt5.kwindowsystem
pkgs.kde5.oxygen-icons5 pkgs.qt5.oxygen-icons5
pkgs.lumina pkgs.lumina
pkgs.numlockx pkgs.numlockx
pkgs.qt5.qtsvg pkgs.qt5.qtsvg

View File

@ -0,0 +1,241 @@
{ config, lib, pkgs, ... }:
with lib;
let
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.plasma5;
inherit (pkgs) kdeWrapper kdeApplications plasma5 libsForQt5 qt5 xorg;
in
{
options = {
services.xserver.desktopManager.plasma5 = {
enable = mkOption {
type = types.bool;
default = false;
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
};
enableQt4Support = mkOption {
type = types.bool;
default = true;
description = ''
Enable support for Qt 4-based applications. Particularly, install the
Qt 4 version of the Breeze theme and a default backend for Phonon.
'';
};
extraPackages = mkOption {
type = types.listOf types.package;
default = [];
description = ''
KDE packages that need to be installed system-wide.
'';
};
};
};
config = mkMerge [
(mkIf (cfg.extraPackages != []) {
environment.systemPackages = [ (kdeWrapper cfg.extraPackages) ];
})
(mkIf (xcfg.enable && cfg.enable) {
services.xserver.desktopManager.session = singleton {
name = "plasma5";
bgSupport = true;
start = ''
# Load PulseAudio module for routing support.
# See http://colin.guthr.ie/2009/10/so-how-does-the-kde-pulseaudio-support-work-anyway/
${optionalString config.hardware.pulseaudio.enable ''
${getBin config.hardware.pulseaudio.package}/bin/pactl load-module module-device-manager "do_routing=1"
''}
exec "${plasma5.startkde}"
'';
};
security.wrappers = {
kcheckpass.source = "${plasma5.plasma-workspace.out}/lib/libexec/kcheckpass";
"start_kdeinit".source = "${pkgs.kinit.out}/lib/libexec/kf5/start_kdeinit";
};
environment.systemPackages = with pkgs; with qt5; with libsForQt5; with plasma5; with kdeApplications;
[
frameworkintegration
kactivities
kauth
kcmutils
kconfig
kconfigwidgets
kcoreaddons
kdbusaddons
kdeclarative
kded
kdesu
kdnssd
kemoticons
kfilemetadata
kglobalaccel
kguiaddons
kiconthemes
kidletime
kimageformats
kinit
kio
kjobwidgets
knewstuff
knotifications
knotifyconfig
kpackage
kparts
kpeople
krunner
kservice
ktextwidgets
kwallet
kwallet-pam
kwalletmanager
kwayland
kwidgetsaddons
kxmlgui
kxmlrpcclient
plasma-framework
solid
sonnet
threadweaver
breeze-qt5
kactivitymanagerd
kde-cli-tools
kdecoration
kdeplasma-addons
kgamma5
khotkeys
kinfocenter
kmenuedit
kscreen
kscreenlocker
ksysguard
kwayland
kwin
kwrited
libkscreen
libksysguard
milou
plasma-integration
polkit-kde-agent
systemsettings
plasma-desktop
plasma-workspace
plasma-workspace-wallpapers
dolphin-plugins
ffmpegthumbs
kdegraphics-thumbnailers
kio-extras
print-manager
breeze-icons
pkgs.hicolor_icon_theme
kde-gtk-config breeze-gtk
phonon-backend-gstreamer
]
++ lib.optionals cfg.enableQt4Support [ breeze-qt4 pkgs.phonon-backend-gstreamer ]
# Optional hardware support features
++ lib.optional config.hardware.bluetooth.enable bluedevil
++ lib.optional config.networking.networkmanager.enable plasma-nm
++ lib.optional config.hardware.pulseaudio.enable plasma-pa
++ lib.optional config.powerManagement.enable powerdevil
++ lib.optional config.services.colord.enable colord-kde
++ lib.optionals config.services.samba.enable [ kdenetwork-filesharing pkgs.samba ];
services.xserver.desktopManager.plasma5.extraPackages =
with kdeApplications; with plasma5;
[
khelpcenter
oxygen
dolphin
konsole
];
environment.pathsToLink = [ "/share" ];
environment.etc = singleton {
source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
target = "X11/xkb";
};
environment.variables = {
# Enable GTK applications to load SVG icons
GST_PLUGIN_SYSTEM_PATH_1_0 =
lib.makeSearchPath "/lib/gstreamer-1.0"
(builtins.map (pkg: pkg.out) (with pkgs.gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gst-plugins-bad
gst-libav # for mp3 playback
]));
GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
};
fonts.fonts = with pkgs; [ noto-fonts hack-font ];
programs.ssh.askPassword = "${plasma5.ksshaskpass.out}/bin/ksshaskpass";
# Enable helpful DBus services.
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
services.dbus.packages =
mkIf config.services.printing.enable [ pkgs.system-config-printer ];
# Extra UDEV rules used by Solid
services.udev.packages = [
pkgs.libmtp
pkgs.media-player-info
];
services.xserver.displayManager.sddm = {
theme = "breeze";
themes = [
pkgs.extra-cmake-modules # for the setup-hook
plasma5.plasma-workspace
pkgs.breeze-icons
];
};
security.pam.services.kde = { allowNullPassword = true; };
# Doing these one by one seems silly, but we currently lack a better
# construct for handling common pam configs.
security.pam.services.gdm.enableKwallet = true;
security.pam.services.kdm.enableKwallet = true;
security.pam.services.lightdm.enableKwallet = true;
security.pam.services.sddm.enableKwallet = true;
security.pam.services.slim.enableKwallet = true;
# use kimpanel as the default IBus panel
i18n.inputMethod.ibus.panel =
lib.mkDefault
"${plasma5.plasma-desktop}/lib/libexec/kimpanel-ibus-panel";
})
];
}

View File

@ -46,15 +46,13 @@ let
[Seat:*] [Seat:*]
xserver-command = ${xserverWrapper} xserver-command = ${xserverWrapper}
session-wrapper = ${dmcfg.session.script} session-wrapper = ${dmcfg.session.script}
${optionalString (elem defaultSessionName dmcfg.session.names) ''
user-session = ${defaultSessionName}
''}
${optionalString cfg.greeter.enable '' ${optionalString cfg.greeter.enable ''
greeter-session = ${cfg.greeter.name} greeter-session = ${cfg.greeter.name}
''} ''}
${optionalString cfg.autoLogin.enable '' ${optionalString cfg.autoLogin.enable ''
autologin-user = ${cfg.autoLogin.user} autologin-user = ${cfg.autoLogin.user}
autologin-user-timeout = ${toString cfg.autoLogin.timeout} autologin-user-timeout = ${toString cfg.autoLogin.timeout}
autologin-session = ${defaultSessionName}
''} ''}
${cfg.extraSeatDefaults} ${cfg.extraSeatDefaults}
''; '';

View File

@ -842,6 +842,7 @@ in
systemd.services.systemd-journald.stopIfChanged = false; systemd.services.systemd-journald.stopIfChanged = false;
systemd.targets.local-fs.unitConfig.X-StopOnReconfiguration = true; systemd.targets.local-fs.unitConfig.X-StopOnReconfiguration = true;
systemd.targets.remote-fs.unitConfig.X-StopOnReconfiguration = true; systemd.targets.remote-fs.unitConfig.X-StopOnReconfiguration = true;
systemd.targets.network-online.wantedBy = [ "multi-user.target" ];
systemd.services.systemd-binfmt.wants = [ "proc-sys-fs-binfmt_misc.automount" ]; systemd.services.systemd-binfmt.wants = [ "proc-sys-fs-binfmt_misc.automount" ];
# Don't bother with certain units in containers. # Don't bother with certain units in containers.

View File

@ -10,7 +10,7 @@ in
system.fsPackages = [ pkgs.f2fs-tools ]; system.fsPackages = [ pkgs.f2fs-tools ];
boot.initrd.availableKernelModules = mkIf inInitrd [ "f2fs" ]; boot.initrd.availableKernelModules = mkIf inInitrd [ "f2fs" "crc32" ];
boot.initrd.extraUtilsCommands = mkIf inInitrd '' boot.initrd.extraUtilsCommands = mkIf inInitrd ''
copy_bin_and_libs ${pkgs.f2fs-tools}/sbin/fsck.f2fs copy_bin_and_libs ${pkgs.f2fs-tools}/sbin/fsck.f2fs

View File

@ -45,9 +45,8 @@ in {
inherit script; inherit script;
description = "Reconfigure the system from EC2 userdata on startup"; description = "Reconfigure the system from EC2 userdata on startup";
wantedBy = [ "sshd.service" ]; wantedBy = [ "multi-user.target" ];
before = [ "sshd.service" ]; after = [ "multi-user.target" ];
after = [ "network-online.target" ];
requires = [ "network-online.target" ]; requires = [ "network-online.target" ];
restartIfChanged = false; restartIfChanged = false;

View File

@ -23,7 +23,7 @@ in
postVM = postVM =
'' ''
PATH=$PATH:${stdenv.lib.makeBinPath [ pkgs.gnutar pkgs.gzip ]} PATH=$PATH:${pkgs.stdenv.lib.makeBinPath [ pkgs.gnutar pkgs.gzip ]}
pushd $out pushd $out
mv $diskImageBase disk.raw mv $diskImageBase disk.raw
tar -Szcf $diskImageBase.tar.gz disk.raw tar -Szcf $diskImageBase.tar.gz disk.raw

View File

@ -0,0 +1,57 @@
{ config, lib, pkgs, ... }:
with lib;
{
imports = [
../profiles/qemu-guest.nix
../profiles/headless.nix
./grow-partition.nix
];
config = {
fileSystems."/" = {
device = "/dev/disk/by-label/nixos";
autoResize = true;
};
virtualisation.growPartition = true;
boot.kernelParams = [ "console=ttyS0" ];
boot.loader.grub.device = "/dev/vda";
boot.loader.timeout = 0;
# Allow root logins
services.openssh.enable = true;
services.openssh.permitRootLogin = "prohibit-password";
# Put /tmp and /var on /ephemeral0, which has a lot more space.
# Unfortunately we can't do this with the `fileSystems' option
# because it has no support for creating the source of a bind
# mount. Also, "move" /nix to /ephemeral0 by layering a unionfs-fuse
# mount on top of it so we have a lot more space for Nix operations.
/*
boot.initrd.postMountCommands =
''
mkdir -m 1777 -p $targetRoot/ephemeral0/tmp
mkdir -m 1777 -p $targetRoot/tmp
mount --bind $targetRoot/ephemeral0/tmp $targetRoot/tmp
mkdir -m 755 -p $targetRoot/ephemeral0/var
mkdir -m 755 -p $targetRoot/var
mount --bind $targetRoot/ephemeral0/var $targetRoot/var
mkdir -p /unionfs-chroot/ro-nix
mount --rbind $targetRoot/nix /unionfs-chroot/ro-nix
mkdir -p /unionfs-chroot/rw-nix
mkdir -m 755 -p $targetRoot/ephemeral0/nix
mount --rbind $targetRoot/ephemeral0/nix /unionfs-chroot/rw-nix
unionfs -o allow_other,cow,nonempty,chroot=/unionfs-chroot,max_files=32768 /rw-nix=RW:/ro-nix=RO $targetRoot/nix
'';
boot.initrd.supportedFilesystems = [ "unionfs-fuse" ];
*/
};
}

View File

@ -1,65 +0,0 @@
# Usage:
# $ NIXOS_CONFIG=`pwd`/nixos/modules/virtualisation/nova-image.nix nix-build '<nixpkgs/nixos>' -A config.system.build.novaImage
{ config, lib, pkgs, ... }:
with lib;
{
system.build.novaImage = import ../../lib/make-disk-image.nix {
inherit pkgs lib config;
partitioned = true;
diskSize = 1 * 1024;
configFile = pkgs.writeText "configuration.nix"
''
{
imports = [ <nixpkgs/nixos/modules/virtualisation/nova-image.nix> ];
}
'';
};
imports = [
../profiles/qemu-guest.nix
../profiles/headless.nix
];
fileSystems."/".device = "/dev/disk/by-label/nixos";
boot.kernelParams = [ "console=ttyS0" ];
boot.loader.grub.device = "/dev/vda";
boot.loader.timeout = 0;
# Allow root logins
services.openssh.enable = true;
services.openssh.permitRootLogin = "prohibit-password";
# Put /tmp and /var on /ephemeral0, which has a lot more space.
# Unfortunately we can't do this with the `fileSystems' option
# because it has no support for creating the source of a bind
# mount. Also, "move" /nix to /ephemeral0 by layering a unionfs-fuse
# mount on top of it so we have a lot more space for Nix operations.
/*
boot.initrd.postMountCommands =
''
mkdir -m 1777 -p $targetRoot/ephemeral0/tmp
mkdir -m 1777 -p $targetRoot/tmp
mount --bind $targetRoot/ephemeral0/tmp $targetRoot/tmp
mkdir -m 755 -p $targetRoot/ephemeral0/var
mkdir -m 755 -p $targetRoot/var
mount --bind $targetRoot/ephemeral0/var $targetRoot/var
mkdir -p /unionfs-chroot/ro-nix
mount --rbind $targetRoot/nix /unionfs-chroot/ro-nix
mkdir -p /unionfs-chroot/rw-nix
mkdir -m 755 -p $targetRoot/ephemeral0/nix
mount --rbind $targetRoot/ephemeral0/nix /unionfs-chroot/rw-nix
unionfs -o allow_other,cow,nonempty,chroot=/unionfs-chroot,max_files=32768 /rw-nix=RW:/ro-nix=RO $targetRoot/nix
'';
boot.initrd.supportedFilesystems = [ "unionfs-fuse" ];
*/
}

View File

@ -286,6 +286,7 @@ in rec {
tests.pam-oath-login = callTest tests/pam-oath-login.nix {}; tests.pam-oath-login = callTest tests/pam-oath-login.nix {};
#tests.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; }); #tests.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; });
tests.peerflix = callTest tests/peerflix.nix {}; tests.peerflix = callTest tests/peerflix.nix {};
tests.pgjwt = callTest tests/pgjwt.nix {};
tests.postgresql = callTest tests/postgresql.nix {}; tests.postgresql = callTest tests/postgresql.nix {};
tests.printing = callTest tests/printing.nix {}; tests.printing = callTest tests/printing.nix {};
tests.proxy = callTest tests/proxy.nix {}; tests.proxy = callTest tests/proxy.nix {};

View File

@ -25,8 +25,13 @@ let
# access. Mostly copied from # access. Mostly copied from
# modules/profiles/installation-device.nix. # modules/profiles/installation-device.nix.
system.extraDependencies = system.extraDependencies =
[ pkgs.stdenv pkgs.busybox pkgs.perlPackages.ArchiveCpio with pkgs; [
pkgs.unionfs-fuse pkgs.mkinitcpio-nfs-utils stdenv busybox perlPackages.ArchiveCpio unionfs-fuse mkinitcpio-nfs-utils
# These are used in the configure-from-userdata tests for EC2. Httpd and valgrind are requested
# directly by the configuration we set, and libxslt.bin is used indirectly as a build dependency
# of the derivation for dbus configuration files.
apacheHttpd valgrind.doc libxslt.bin
]; ];
} }
]; ];
@ -137,6 +142,8 @@ in {
# ### http://nixos.org/channels/nixos-unstable nixos # ### http://nixos.org/channels/nixos-unstable nixos
userData = '' userData = ''
{ pkgs, ... }:
{ {
imports = [ imports = [
<nixpkgs/nixos/modules/virtualisation/amazon-image.nix> <nixpkgs/nixos/modules/virtualisation/amazon-image.nix>
@ -146,12 +153,22 @@ in {
environment.etc.testFile = { environment.etc.testFile = {
text = "whoa"; text = "whoa";
}; };
services.httpd = {
enable = true;
adminAddr = "test@example.org";
documentRoot = "${pkgs.valgrind.doc}/share/doc/valgrind/html";
};
networking.firewall.allowedTCPPorts = [ 80 ];
} }
''; '';
script = '' script = ''
$machine->start; $machine->start;
$machine->waitForFile("/etc/testFile"); $machine->waitForFile("/etc/testFile");
$machine->succeed("cat /etc/testFile | grep -q 'whoa'"); $machine->succeed("cat /etc/testFile | grep -q 'whoa'");
$machine->waitForUnit("httpd.service");
$machine->succeed("curl http://localhost | grep Valgrind");
''; '';
}; };
} }

42
nixos/tests/pgjwt.nix Normal file
View File

@ -0,0 +1,42 @@
import ./make-test.nix ({ pkgs, ...} :
let
test = pkgs.writeText "test.sql" ''
CREATE EXTENSION pgcrypto;
CREATE EXTENSION pgjwt;
select sign('{"sub":"1234567890","name":"John Doe","admin":true}', 'secret');
select * from verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ', 'secret');
'';
in
{
name = "pgjwt";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ spinus ];
};
nodes = {
master =
{ pkgs, config, ... }:
{
services.postgresql = let mypg = pkgs.postgresql95; in {
enable = true;
package = mypg;
extraPlugins =[pkgs.pgjwt];
initialScript = pkgs.writeText "postgresql-init.sql"
''
CREATE ROLE postgres WITH superuser login createdb;
'';
};
};
};
testScript = ''
startAll;
$master->waitForUnit("postgresql");
$master->succeed("timeout 10 bash -c 'while ! psql postgres -c \"SELECT 1;\";do sleep 1;done;'");
$master->succeed("cat ${test} | psql postgres");
# I can't make original test working :[
# $master->succeed("${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}/bin/pg_prove -d postgres ${pkgs.pgjwt.src}/test.sql");
'';
})

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, lib, automoc4, cmake, perl, pkgconfig { stdenv, fetchurl, lib, automoc4, cmake, perl, pkgconfig
, qtscriptgenerator, gettext, curl , libxml2, mysql, taglib , qtscriptgenerator, gettext, curl , libxml2, mysql, taglib
, taglib_extras, loudmouth , kdelibs , qca2, libmtp, liblastfm, libgpod , taglib_extras, loudmouth , kdelibs4, qca2, libmtp, liblastfm, libgpod
, phonon , strigi, soprano, qjson, ffmpeg, libofa, nepomuk_core ? null , phonon , strigi, soprano, qjson, ffmpeg, libofa, nepomuk_core ? null
, lz4, lzo, snappy, libaio, pcre , lz4, lzo, snappy, libaio, pcre
}: }:
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
buildInputs = [ buildInputs = [
qtscriptgenerator stdenv.cc.libc gettext curl libxml2 mysql.server/*libmysqld*/ qtscriptgenerator stdenv.cc.libc gettext curl libxml2 mysql.server/*libmysqld*/
taglib taglib_extras loudmouth kdelibs phonon strigi soprano qca2 taglib taglib_extras loudmouth kdelibs4 phonon strigi soprano qca2
libmtp liblastfm libgpod qjson ffmpeg libofa nepomuk_core libmtp liblastfm libgpod qjson ffmpeg libofa nepomuk_core
lz4 lzo snappy libaio pcre lz4 lzo snappy libaio pcre
]; ];
@ -43,6 +43,6 @@ stdenv.mkDerivation rec {
description = "Popular music player for KDE"; description = "Popular music player for KDE";
license = "GPL"; license = "GPL";
homepage = http://amarok.kde.org; homepage = http://amarok.kde.org;
inherit (kdelibs.meta) platforms maintainers; inherit (kdelibs4.meta) platforms;
}; };
} }

View File

@ -16,7 +16,7 @@ let
# "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH. # "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
# Version to build. # Version to build.
tag = "5.5"; tag = "5.6";
in in
@ -25,8 +25,8 @@ stdenv.mkDerivation rec {
src = fetchgit { src = fetchgit {
url = "git://git.ardour.org/ardour/ardour.git"; url = "git://git.ardour.org/ardour/ardour.git";
rev = "bb3312c3bb9c6ed9b75ac6739a6ee720ddf86c86"; rev = "08353095dfee421f299d30d5d91259bc2df7e19d";
sha256 = "1yrg0d86k9fqw7lmzjglilbadb4cjqxqkf6ii4bjs6rihj6b0qrf"; sha256 = "1fgvjmvdyh61qn8azpmh19ac58ps5sl2dywwshr56v0svakhwwh9";
}; };
buildInputs = buildInputs =

View File

@ -1,5 +1,5 @@
{ pkgs, stdenv, lib, fetchurl, intltool, pkgconfig, gstreamer, gst_plugins_base { pkgs, stdenv, lib, fetchurl, intltool, pkgconfig, gstreamer, gst-plugins-base
, gst_plugins_good, gst_plugins_bad, gst_plugins_ugly, gst_ffmpeg, glib , gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, gst-ffmpeg, glib
, mono, mono-addins, dbus-sharp-1_0, dbus-sharp-glib-1_0, notify-sharp, gtk-sharp-2_0 , mono, mono-addins, dbus-sharp-1_0, dbus-sharp-glib-1_0, notify-sharp, gtk-sharp-2_0
, boo, gdata-sharp, taglib-sharp, sqlite, gnome-sharp, gconf, gtk-sharp-beans, gio-sharp , boo, gdata-sharp, taglib-sharp, sqlite, gnome-sharp, gconf, gtk-sharp-beans, gio-sharp
, libmtp, libgpod, mono-zeroconf }: , libmtp, libgpod, mono-zeroconf }:
@ -17,8 +17,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkgconfig intltool ]; nativeBuildInputs = [ pkgconfig intltool ];
buildInputs = [ buildInputs = [
gtk-sharp-2_0.gtk gstreamer gst_plugins_base gst_plugins_good gtk-sharp-2_0.gtk gstreamer gst-plugins-base gst-plugins-good
gst_plugins_bad gst_plugins_ugly gst_ffmpeg gst-plugins-bad gst-plugins-ugly gst-ffmpeg
mono dbus-sharp-1_0 dbus-sharp-glib-1_0 mono-addins notify-sharp mono dbus-sharp-1_0 dbus-sharp-glib-1_0 mono-addins notify-sharp
gtk-sharp-2_0 boo gdata-sharp taglib-sharp sqlite gnome-sharp gconf gtk-sharp-beans gtk-sharp-2_0 boo gdata-sharp taglib-sharp sqlite gnome-sharp gconf gtk-sharp-beans
gio-sharp libmtp libgpod mono-zeroconf gio-sharp libmtp libgpod mono-zeroconf

View File

@ -2,10 +2,6 @@
, withQt4 ? false, qt4 , withQt4 ? false, qt4
, withQt5 ? true, qtbase, qtsvg, qttools, makeQtWrapper , withQt5 ? true, qtbase, qtsvg, qttools, makeQtWrapper
# I'm unable to make KDE work here, crashes at runtime so I simply
# make Qt4 the default until someone who wants KDE can figure it out.
, withKDE4 ? false, kde4
# Cantata doesn't build with cdparanoia enabled so we disable that # Cantata doesn't build with cdparanoia enabled so we disable that
# default for now until I (or someone else) figure it out. # default for now until I (or someone else) figure it out.
, withCdda ? false, cdparanoia , withCdda ? false, cdparanoia
@ -24,10 +20,9 @@
}: }:
# One and only one front-end. # One and only one front-end.
assert withQt5 -> withQt4 == false && withKDE4 == false; assert withQt5 -> withQt4 == false;
assert withQt4 -> withQt5 == false && withKDE4 == false; assert withQt4 -> withQt5 == false;
assert withKDE4 -> withQt4 == false && withQt5 == false; assert withQt4 || withQt5;
assert withQt4 || withQt5 || withKDE4;
# Inter-dependencies. # Inter-dependencies.
assert withCddb -> withCdda && withTaglib; assert withCddb -> withCdda && withTaglib;
@ -58,7 +53,6 @@ stdenv.mkDerivation rec {
[ cmake ] [ cmake ]
++ stdenv.lib.optional withQt4 qt4 ++ stdenv.lib.optional withQt4 qt4
++ stdenv.lib.optionals withQt5 [ qtbase qtsvg qttools ] ++ stdenv.lib.optionals withQt5 [ qtbase qtsvg qttools ]
++ stdenv.lib.optional withKDE4 kde4.kdelibs
++ stdenv.lib.optionals withTaglib [ taglib taglib_extras ] ++ stdenv.lib.optionals withTaglib [ taglib taglib_extras ]
++ stdenv.lib.optionals withReplaygain [ ffmpeg speex mpg123 ] ++ stdenv.lib.optionals withReplaygain [ ffmpeg speex mpg123 ]
++ stdenv.lib.optional withCdda cdparanoia ++ stdenv.lib.optional withCdda cdparanoia
@ -66,16 +60,14 @@ stdenv.mkDerivation rec {
++ stdenv.lib.optional withLame lame ++ stdenv.lib.optional withLame lame
++ stdenv.lib.optional withMtp libmtp ++ stdenv.lib.optional withMtp libmtp
++ stdenv.lib.optional withMusicbrainz libmusicbrainz5 ++ stdenv.lib.optional withMusicbrainz libmusicbrainz5
++ stdenv.lib.optional (withTaglib && !withKDE4 && withDevices) udisks2; ++ stdenv.lib.optional (withTaglib && withDevices) udisks2;
nativeBuildInputs = stdenv.lib.optional withQt5 makeQtWrapper; nativeBuildInputs = stdenv.lib.optional withQt5 makeQtWrapper;
unpackPhase = "tar -xvf $src"; unpackPhase = "tar -xvf $src";
sourceRoot = "${name}"; sourceRoot = "${name}";
# Qt4 is implicit when KDE is switched off.
cmakeFlags = stdenv.lib.flatten [ cmakeFlags = stdenv.lib.flatten [
(fstats withKDE4 [ "KDE" "KWALLET" ])
(fstat withQt5 "QT5") (fstat withQt5 "QT5")
(fstats withTaglib [ "TAGLIB" "TAGLIB_EXTRAS" ]) (fstats withTaglib [ "TAGLIB" "TAGLIB_EXTRAS" ])
(fstats withReplaygain [ "FFMPEG" "MPG123" "SPEEXDSP" ]) (fstats withReplaygain [ "FFMPEG" "MPG123" "SPEEXDSP" ])

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base { stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst-plugins-base
, liblastfm, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist , liblastfm, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist
, usbmuxd, libmtp, gvfs, libcdio, libspotify, protobuf, qca2, pkgconfig , usbmuxd, libmtp, gvfs, libcdio, libspotify, protobuf, qca2, pkgconfig
, sparsehash, config, makeWrapper, runCommand, gst_plugins }: , sparsehash, config, makeWrapper, runCommand, gst_plugins }:
@ -27,7 +27,7 @@ let
fftw fftw
gettext gettext
glew glew
gst_plugins_base gst-plugins-base
gstreamer gstreamer
gvfs gvfs
libcdio libcdio

View File

@ -29,11 +29,10 @@
, tremorSupport ? false, tremor ? null , tremorSupport ? false, tremor ? null
, vorbisSupport ? true, libvorbis ? null , vorbisSupport ? true, libvorbis ? null
, wavpackSupport ? true, wavpack ? null , wavpackSupport ? true, wavpack ? null
, opusSupport ? true, opusfile ? null
# can't make these work, something is broken , aacSupport ? false, faad2 ? null # already handled by ffmpeg
#, aacSupport ? true, faac ? null , mp4Support ? false, mp4v2 ? null # ffmpeg does support mp4 better
#, mp4Support ? true, mp4v2 ? null
#, opusSupport ? true, opusfile ? null
# not in nixpkgs # not in nixpkgs
#, vtxSupport ? true, libayemu ? null #, vtxSupport ? true, libayemu ? null
@ -82,10 +81,10 @@ let
(mkFlag tremorSupport "CONFIG_TREMOR=y" tremor) (mkFlag tremorSupport "CONFIG_TREMOR=y" tremor)
(mkFlag vorbisSupport "CONFIG_VORBIS=y" libvorbis) (mkFlag vorbisSupport "CONFIG_VORBIS=y" libvorbis)
(mkFlag wavpackSupport "CONFIG_WAVPACK=y" wavpack) (mkFlag wavpackSupport "CONFIG_WAVPACK=y" wavpack)
(mkFlag opusSupport "CONFIG_OPUS=y" opusfile)
#(mkFlag opusSupport "CONFIG_OPUS=y" opusfile) (mkFlag mp4Support "CONFIG_MP4=y" mp4v2)
#(mkFlag mp4Support "CONFIG_MP4=y" mp4v2) (mkFlag aacSupport "CONFIG_AAC=y" faad2)
#(mkFlag aacSupport "CONFIG_AAC=y" faac)
#(mkFlag vtxSupport "CONFIG_VTX=y" libayemu) #(mkFlag vtxSupport "CONFIG_VTX=y" libayemu)
]; ];

View File

@ -6,7 +6,7 @@
gcc, gcc,
ginac, ginac,
jamomacore, jamomacore,
kde5, kdnssd,
libsndfile, libsndfile,
ninja, ninja,
portaudio, portaudio,
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
ginac ginac
gcc gcc
jamomacore jamomacore
kde5.kdnssd kdnssd
libsndfile libsndfile
ninja ninja
portaudio portaudio

View File

@ -1,20 +1,21 @@
{ stdenv, fetchurl, fftw, gtk, lv2, libsamplerate, libsndfile, pkgconfig, zita-convolver }: { stdenv, fetchFromGitHub, fftw, gtk2, lv2, libsamplerate, libsndfile, pkgconfig, zita-convolver }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "ir.lv2-${version}"; name = "ir.lv2-${version}";
version = "1.2.2"; version = "1.2.3";
src = fetchurl { src = fetchFromGitHub {
url = "http://factorial.hu/system/files/${name}.tar.gz"; owner = "tomszilagyi";
sha256 = "17a6h2mv9xv41jpbx6bdakkngin4kqzh2v67l4076ddq609k5a7v"; repo = "ir.lv2";
rev = "${version}";
sha256 = "16vy06qb0vgwg4yx15grzh5m2q3cbzm3jd0p37g2qb8rgvjhladg";
}; };
buildInputs = [ fftw gtk lv2 libsamplerate libsndfile pkgconfig zita-convolver ]; buildInputs = [ fftw gtk2 lv2 libsamplerate libsndfile zita-convolver ];
buildPhase = '' nativeBuildInputs = [ pkgconfig ];
make
make convert4chan postBuild = "make convert4chan";
'';
installPhase = '' installPhase = ''
mkdir -p "$out/bin" mkdir -p "$out/bin"
@ -23,10 +24,6 @@ stdenv.mkDerivation rec {
make PREFIX="$out" install make PREFIX="$out" install
install -Dm755 convert4chan "$out/bin/convert4chan" install -Dm755 convert4chan "$out/bin/convert4chan"
# fixed location
sed -i 's/, but seem like its gone://' README
sed -i 's@rhythminmind.net/1313@rhythminmind.net/STN@' README
install -Dm644 README "$out/share/doc/README"
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, pkgs, jack ? pkgs.libjack2 }: { stdenv, fetchurl, pkgconfig, scons, qt4, lash, libjack2, jack ? libjack2 }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "jackmix-0.5.2"; name = "jackmix-0.5.2";
@ -8,10 +8,10 @@ stdenv.mkDerivation rec {
}; };
buildInputs = [ buildInputs = [
pkgs.pkgconfig pkgconfig
pkgs.scons scons
pkgs.kde4.qt4 qt4
pkgs.lash lash
jack jack
]; ];

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
buildInputs = [ lv2 ]; buildInputs = [ lv2 ];
installFlags = [ "LV2_PATH=$out/lib/lv2" ]; installFlags = [ "LV2_PATH=$(out)/lib/lv2" ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/portalmod/mod-distortion; homepage = https://github.com/portalmod/mod-distortion;

View File

@ -1,5 +1,5 @@
{ stdenv, fetchgit, pythonPackages, cdparanoia, cdrdao { stdenv, fetchgit, pythonPackages, cdparanoia, cdrdao
, gst_python, gst_plugins_base, gst_plugins_good , gst-python, gst-plugins-base, gst-plugins-good
, utillinux, makeWrapper, substituteAll, autoreconfHook }: , utillinux, makeWrapper, substituteAll, autoreconfHook }:
let let
@ -17,7 +17,7 @@ in stdenv.mkDerivation rec {
}; };
pythonPath = with pythonPackages; [ pythonPath = with pythonPackages; [
pygobject2 gst_python musicbrainzngs pygobject2 gst-python musicbrainzngs
pycdio pyxdg setuptools pycdio pyxdg setuptools
CDDB CDDB
]; ];
@ -25,7 +25,7 @@ in stdenv.mkDerivation rec {
nativeBuildInputs = [ autoreconfHook ]; nativeBuildInputs = [ autoreconfHook ];
buildInputs = [ buildInputs = [
python cdparanoia cdrdao utillinux makeWrapper python cdparanoia cdrdao utillinux makeWrapper
gst_plugins_base gst_plugins_good gst-plugins-base gst-plugins-good
] ++ pythonPath; ] ++ pythonPath;
patches = [ patches = [

View File

@ -13,11 +13,11 @@ stdenv.mkDerivation rec {
patches = [ ./include-multistream.patch ]; patches = [ ./include-multistream.patch ];
configureFlags = [ "--disable-examples" ]; configureFlags = [ "--disable-examples" ];
meta = { meta = with stdenv.lib; {
description = "High-level API for decoding and seeking in .opus files"; description = "High-level API for decoding and seeking in .opus files";
homepage = http://www.opus-codec.org/; homepage = http://www.opus-codec.org/;
license = stdenv.lib.licenses.bsd3; license = licenses.bsd3;
platforms = stdenv.lib.platforms.linux; platforms = platforms.linux ++ platforms.darwin;
maintainers = with stdenv.lib.maintainers; [ fuuzetsu ]; maintainers = with maintainers; [ fuuzetsu ];
}; };
} }

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, python2Packages, intltool { stdenv, fetchurl, python2Packages, intltool
, gst_python, withGstPlugins ? false, gst_plugins_base ? null , gst-python, withGstPlugins ? false, gst-plugins-base ? null
, gst_plugins_good ? null, gst_plugins_ugly ? null, gst_plugins_bad ? null }: , gst-plugins-good ? null, gst-plugins-ugly ? null, gst-plugins-bad ? null }:
assert withGstPlugins -> gst_plugins_base != null assert withGstPlugins -> gst-plugins-base != null
|| gst_plugins_good != null || gst-plugins-good != null
|| gst_plugins_ugly != null || gst-plugins-ugly != null
|| gst_plugins_bad != null; || gst-plugins-bad != null;
let let
version = "2.6.3"; version = "2.6.3";
@ -44,11 +44,11 @@ in buildPythonApplication {
patches = [ ./quodlibet-package-plugins.patch ]; patches = [ ./quodlibet-package-plugins.patch ];
buildInputs = stdenv.lib.optionals withGstPlugins [ buildInputs = stdenv.lib.optionals withGstPlugins [
gst_plugins_base gst_plugins_good gst_plugins_ugly gst_plugins_bad gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [
mutagen pygtk pygobject2 dbus-python gst_python intltool mutagen pygtk pygobject2 dbus-python gst-python intltool
]; ];
postInstall = stdenv.lib.optionalString withGstPlugins '' postInstall = stdenv.lib.optionalString withGstPlugins ''

View File

@ -8,7 +8,7 @@ let
# Please update the stable branch! # Please update the stable branch!
# Latest version number can be found at: # Latest version number can be found at:
# http://repository-origin.spotify.com/pool/non-free/s/spotify-client/ # http://repository-origin.spotify.com/pool/non-free/s/spotify-client/
version = "1.0.49.125.g72ee7853-83"; version = "1.0.49.125.g72ee7853-111";
deps = [ deps = [
alsaLib alsaLib
@ -53,7 +53,7 @@ stdenv.mkDerivation {
src = src =
fetchurl { fetchurl {
url = "http://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb"; url = "http://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb";
sha256 = "1sqi79yj503y4b7pfvr6xi0i8g7hj01hkhn0vpkc3y3jz5c0ih9g"; sha256 = "0l008x06d257vcw6gq3q90hvv93cq6mxpj11by1np6bzzg61qv8x";
}; };
buildInputs = [ dpkg makeWrapper ]; buildInputs = [ dpkg makeWrapper ];

View File

@ -3,12 +3,12 @@
, qtkeychain, quazip, sparsehash, taglib, websocketpp, makeWrapper , qtkeychain, quazip, sparsehash, taglib, websocketpp, makeWrapper
, enableXMPP ? true, libjreen ? null , enableXMPP ? true, libjreen ? null
, enableKDE ? false, kdelibs ? null , enableKDE ? false, kdelibs4 ? null
, enableTelepathy ? false, telepathy_qt ? null , enableTelepathy ? false, telepathy_qt ? null
}: }:
assert enableXMPP -> libjreen != null; assert enableXMPP -> libjreen != null;
assert enableKDE -> kdelibs != null; assert enableKDE -> kdelibs4 != null;
assert enableTelepathy -> telepathy_qt != null; assert enableTelepathy -> telepathy_qt != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
qca2 qjson qt4 qtkeychain quazip sparsehash taglib websocketpp qca2 qjson qt4 qtkeychain quazip sparsehash taglib websocketpp
makeWrapper makeWrapper
] ++ stdenv.lib.optional enableXMPP libjreen ] ++ stdenv.lib.optional enableXMPP libjreen
++ stdenv.lib.optional enableKDE kdelibs ++ stdenv.lib.optional enableKDE kdelibs4
++ stdenv.lib.optional enableTelepathy telepathy_qt; ++ stdenv.lib.optional enableTelepathy telepathy_qt;
postInstall = let postInstall = let

View File

@ -1,6 +1,6 @@
{ stdenv, fetchzip, lib, makeWrapper, alsaLib, atk, cairo, gdk_pixbuf { stdenv, fetchzip, lib, makeWrapper, alsaLib, atk, cairo, gdk_pixbuf
, glib, gst_ffmpeg, gst_plugins_bad, gst_plugins_base , glib, gst-ffmpeg, gst-plugins-bad, gst-plugins-base
, gst_plugins_good, gst_plugins_ugly, gstreamer, gtk2, libSM, libX11 , gst-plugins-good, gst-plugins-ugly, gstreamer, gtk2, libSM, libX11
, libpng12, pango, zlib }: , libpng12, pango, zlib }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -21,14 +21,14 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
buildInputs = [ gst_plugins_base gst_plugins_good buildInputs = [ gst-plugins-base gst-plugins-good
gst_plugins_bad gst_plugins_ugly gst_ffmpeg ]; gst-plugins-bad gst-plugins-ugly gst-ffmpeg ];
dontPatchELF = true; dontPatchELF = true;
libPath = lib.makeLibraryPath [ libPath = lib.makeLibraryPath [
stdenv.cc.cc glib gtk2 atk pango cairo gdk_pixbuf alsaLib stdenv.cc.cc glib gtk2 atk pango cairo gdk_pixbuf alsaLib
libX11 libSM libpng12 gstreamer gst_plugins_base zlib libX11 libSM libpng12 gstreamer gst-plugins-base zlib
]; ];
installPhase = '' installPhase = ''

View File

@ -3,12 +3,12 @@
, mesa_glu, lv2, mesa, gtk2, cairo, pango, fftwFloat, zita-convolver }: , mesa_glu, lv2, mesa, gtk2, cairo, pango, fftwFloat, zita-convolver }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "20160825"; version = "20161230";
name = "x42-plugins-${version}"; name = "x42-plugins-${version}";
src = fetchurl { src = fetchurl {
url = "http://gareus.org/misc/x42-plugins/${name}.tar.xz"; url = "http://gareus.org/misc/x42-plugins/${name}.tar.xz";
sha256 = "13ln5ccmrrc07ykfp040389av60dlgqz1kh6vfjkga6sq7z51msr"; sha256 = "1yni9c17kl2pi9lqxip07b6g6lyfii1pch5czp183113gk54fwj5";
}; };
buildInputs = [ mesa_glu ftgl freefont_ttf libjack2 libltc libsndfile libsamplerate lv2 mesa gtk2 cairo pango fftwFloat pkgconfig zita-convolver]; buildInputs = [ mesa_glu ftgl freefont_ttf libjack2 libltc libsndfile libsamplerate lv2 mesa gtk2 cairo pango fftwFloat pkgconfig zita-convolver];

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "zam-plugins-${version}"; name = "zam-plugins-${version}";
version = "3.7"; version = "3.8";
src = fetchgit { src = fetchgit {
url = "https://github.com/zamaudio/zam-plugins.git"; url = "https://github.com/zamaudio/zam-plugins.git";
deepClone = true; deepClone = true;
rev = "932046905a57f698406318765a60807a1f81257d"; rev = "830ab2e9dd1db8cf56d12c71057157e5d8e9fd74";
sha256 = "0zgkmq3jgysrsb6cm6sfbgqpgfpwv8nxlgkqm29zzvb97j56bm7z"; sha256 = "1hyly5inis59cvh0r7lyi203h8v5jh84ca9jpaljm53cvw6d93px";
}; };
buildInputs = [ boost libX11 mesa liblo libjack2 ladspaH lv2 pkgconfig rubberband libsndfile ]; buildInputs = [ boost libX11 mesa liblo libjack2 ladspaH lv2 pkgconfig rubberband libsndfile ];

View File

@ -1,20 +1,27 @@
{stdenv, fetchurl, fltk13, ghostscript}: {stdenv, fetchurl, fltk13, ghostscript}:
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "flpsed-0.7.3"; name = "flpsed-${version}";
version = "0.7.3";
src = fetchurl { src = fetchurl {
url = "http://www.ecademix.com/JohannesHofmann/flpsed-0.7.3.tar.gz"; url = "http://www.flpsed.org/${name}.tar.gz";
sha256 = "0vngqxanykicabhfdznisv82k5ypkxwg0s93ms9ribvhpm8vf2xp"; sha256 = "0vngqxanykicabhfdznisv82k5ypkxwg0s93ms9ribvhpm8vf2xp";
}; };
buildInputs = [ fltk13 ghostscript ]; buildInputs = [ fltk13 ];
meta = { postPatch = ''
# replace the execvp call to ghostscript
sed -e '/exec_gs/ {n; s|"gs"|"${stdenv.lib.getBin ghostscript}/bin/gs"|}' \
-i src/GsWidget.cxx
'';
meta = with stdenv.lib; {
description = "WYSIWYG PostScript annotator"; description = "WYSIWYG PostScript annotator";
homepage = "http://http://flpsed.org/flpsed.html"; homepage = "http://http://flpsed.org/flpsed.html";
license = stdenv.lib.licenses.gpl3; license = licenses.gpl3;
platforms = stdenv.lib.platforms.mesaPlatforms; platforms = platforms.mesaPlatforms;
maintainers = with stdenv.lib.maintainers; [ fuuzetsu ]; maintainers = with maintainers; [ fuuzetsu ];
}; };
} }

View File

@ -136,12 +136,12 @@ in
{ {
clion = buildClion rec { clion = buildClion rec {
name = "clion-${version}"; name = "clion-${version}";
version = "2016.3.2"; version = "2016.3.3";
description = "C/C++ IDE. New. Intelligent. Cross-platform"; description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz"; url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
sha256 = "0ygnj3yszgd1si1qgx7m4n7smm583l5pww8xhx8n86mvz7ywdhbn"; sha256 = "1zziyg0y51lfybflq83qwd94wcypkv4gh0cdkwfybbk4yidpnz05";
}; };
wmClass = "jetbrains-clion"; wmClass = "jetbrains-clion";
}; };
@ -208,12 +208,12 @@ in
idea-ultimate = buildIdea rec { idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}"; name = "idea-ultimate-${version}";
version = "2016.3.3"; version = "2016.3.4";
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license"; description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz"; url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
sha256 = "1bwy86rm0mifizmhkm9wxwc4nrrizk2zp4zl5ycxh6zdiad1r1wm"; sha256 = "1ichjrdmnhyqv9cr73d8kif9l53k3x36i8js8nf9cmkbhdsfckn3";
}; };
wmClass = "jetbrains-idea"; wmClass = "jetbrains-idea";
}; };

View File

@ -1,38 +0,0 @@
{ stdenv, fetchurl, kdevplatform, cmake, pkgconfig, automoc4, shared_mime_info,
kdebase_workspace, gettext, perl, okteta, qjson, kate, konsole, kde_runtime, oxygen_icons }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
version = "4.7.3";
pname = "kdevelop";
src = fetchurl {
url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.bz2";
sha256 = "9db388d1c8274da7d168c13db612c7e94ece7815757b945b0aa0371620a06b35";
};
buildInputs = [ kdevplatform kdebase_workspace okteta qjson ];
nativeBuildInputs = [ cmake pkgconfig automoc4 shared_mime_info gettext perl ];
propagatedUserEnvPkgs = [ kdevplatform kate konsole kde_runtime oxygen_icons ];
patches = [ ./gettext.patch ];
NIX_CFLAGS_COMPILE = "-I${okteta}/include/KDE";
meta = with stdenv.lib; {
maintainers = [ maintainers.urkud ];
platforms = platforms.linux;
description = "KDE official IDE";
longDescription =
''
A free, opensource IDE (Integrated Development Environment)
for MS Windows, Mac OsX, Linux, Solaris and FreeBSD. It is a
feature-full, plugin extendable IDE for C/C++ and other
programing languages. It is based on KDevPlatform, KDE and Qt
libraries and is under development since 1998.
'';
homepage = https://www.kdevelop.org;
};
}

View File

@ -1,8 +0,0 @@
diff -urN kdevelop-4.7.3.orig/po/CMakeLists.txt kdevelop-4.7.3/po/CMakeLists.txt
--- kdevelop-4.7.3.orig/po/CMakeLists.txt 2016-03-04 23:29:09.411886565 +0100
+++ kdevelop-4.7.3/po/CMakeLists.txt 2016-03-04 23:28:35.108451713 +0100
@@ -1,3 +1,4 @@
+cmake_policy(SET CMP0002 OLD)
find_package(Gettext REQUIRED)
if (NOT GETTEXT_MSGMERGE_EXECUTABLE)
MESSAGE(FATAL_ERROR "Please install msgmerge binary")

View File

@ -1,28 +1,68 @@
{ stdenv, fetchurl, automoc4, cmake, gettext, perl, pkgconfig { kdeDerivation
, shared_mime_info, kdelibs , lib
, fetchgit
, extra-cmake-modules
, kdoctools
, kdeWrapper
, qtscript
, kconfig
, kcrash
, kdbusaddons
, kdelibs4support
, kguiaddons
, kiconthemes
, kinit
, khtml
, konsole
, kparts
, ktexteditor
, kwindowsystem
, poppler
}: }:
stdenv.mkDerivation rec { let
name = "kile-2.1.3"; unwrapped =
kdeDerivation rec {
name = "kile-${version}";
version = "2017-02-09";
src = fetchgit {
url = git://anongit.kde.org/kile.git;
rev = "f77f6e627487c152f111e307ad6dc71699ade746";
sha256 = "0wpqaix9ssa28cm7qqjj0zfrscjgk8s3kmi5b4kk8h583gsrikib";
src = fetchurl {
url = "mirror://sourceforge/kile/${name}.tar.bz2";
sha256 = "18nfi37s46v9xav7vyki3phasddgcy4m7nywzxis198vr97yqqx0";
}; };
nativeBuildInputs = [ nativeBuildInputs = [ extra-cmake-modules kdoctools ];
automoc4 cmake gettext perl pkgconfig shared_mime_info
];
buildInputs = [ kdelibs ];
# for KDE 4.7 the nl translations fail since kile-2.1.2 buildInputs = [
preConfigure = "rm -r translations/nl"; kconfig
kcrash
kdbusaddons
kdelibs4support
kdoctools
kguiaddons
kiconthemes
kinit
khtml
kparts
ktexteditor
kwindowsystem
poppler
qtscript
];
meta = { meta = {
description = "An integrated LaTeX editor for KDE"; description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment";
homepage = http://kile.sourceforge.net; homepage = https://www.kde.org/applications/office/kile/;
maintainers = [ stdenv.lib.maintainers.urkud ]; maintainers = with lib.maintainers; [ fridh ];
license = stdenv.lib.licenses.gpl2Plus; license = lib.licenses.gpl2Plus;
inherit (kdelibs.meta) platforms;
}; };
};
in
kdeWrapper
{
inherit unwrapped;
targets = [ "bin/kile" ];
paths = [ konsole.unwrapped ];
} }

View File

@ -1,68 +0,0 @@
{ kdeDerivation
, lib
, fetchgit
, ecm
, kdoctools
, kdeWrapper
, qtscript
, kconfig
, kcrash
, kdbusaddons
, kdelibs4support
, kguiaddons
, kiconthemes
, kinit
, khtml
, konsole
, kparts
, ktexteditor
, kwindowsystem
, poppler
}:
let
unwrapped =
kdeDerivation rec {
name = "kile-${version}";
version = "2017-02-09";
src = fetchgit {
url = git://anongit.kde.org/kile.git;
rev = "f77f6e627487c152f111e307ad6dc71699ade746";
sha256 = "0wpqaix9ssa28cm7qqjj0zfrscjgk8s3kmi5b4kk8h583gsrikib";
};
nativeBuildInputs = [ ecm kdoctools ];
buildInputs = [
kconfig
kcrash
kdbusaddons
kdelibs4support
kdoctools
kguiaddons
kiconthemes
kinit
khtml
kparts
ktexteditor
kwindowsystem
poppler
qtscript
];
meta = {
description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment";
homepage = https://www.kde.org/applications/office/kile/;
maintainers = with lib.maintainers; [ fridh ];
license = lib.licenses.gpl2Plus;
};
};
in
kdeWrapper
{
inherit unwrapped;
targets = [ "bin/kile" ];
paths = [ konsole.unwrapped ];
}

View File

@ -1,122 +0,0 @@
{ stdenv, fetchurl, cmake, ecm, makeQtWrapper
# For `digitaglinktree`
, perl, sqlite
, qtbase
, qtxmlpatterns
, qtsvg
, qtwebkit
, kconfigwidgets
, kcoreaddons
, kdoctools
, kfilemetadata
, knotifications
, knotifyconfig
, ktextwidgets
, kwidgetsaddons
, kxmlgui
, bison
, boost
, eigen
, exiv2
, flex
, jasper
, lcms2
, lensfun
, libgphoto2
, libkipi
, liblqr1
, libusb1
, marble
, mysql
, opencv
, threadweaver
# For panorama and focus stacking
, enblend-enfuse
, hugin
, gnumake
, oxygen
}:
stdenv.mkDerivation rec {
name = "digikam-${version}";
version = "5.4.0";
src = fetchurl {
url = "http://download.kde.org/stable/digikam/${name}.tar.xz";
sha256 = "0dgsgji14l5zvxny36hrfsp889fsfrsbbn9bg57m18404xp903kg";
};
nativeBuildInputs = [ cmake ecm makeQtWrapper ];
patches = [ ./0001-Disable-fno-operator-names.patch ];
buildInputs = [
qtbase
qtxmlpatterns
qtsvg
qtwebkit
kconfigwidgets
kcoreaddons
kdoctools
kfilemetadata
knotifications
knotifyconfig
ktextwidgets
kwidgetsaddons
kxmlgui
bison
boost
eigen
exiv2
flex
jasper
lcms2
lensfun
libgphoto2
libkipi
liblqr1
libusb1
marble.unwrapped
mysql
opencv
threadweaver
oxygen
];
enableParallelBuilding = true;
cmakeFlags = [
"-DLIBUSB_LIBRARIES=${libusb1.out}/lib"
"-DLIBUSB_INCLUDE_DIR=${libusb1.dev}/include/libusb-1.0"
"-DENABLE_MYSQLSUPPORT=1"
"-DENABLE_INTERNALMYSQL=1"
];
fixupPhase = ''
substituteInPlace $out/bin/digitaglinktree \
--replace "/usr/bin/perl" "${perl}/bin/perl" \
--replace "/usr/bin/sqlite3" "${sqlite}/bin/sqlite3"
wrapQtProgram $out/bin/digikam \
--prefix PATH : "${gnumake}/bin:${hugin}/bin:${enblend-enfuse}/bin"
wrapQtProgram $out/bin/showfoto
'';
meta = {
description = "Photo Management Program";
license = stdenv.lib.licenses.gpl2;
homepage = http://www.digikam.org;
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -1,235 +1,122 @@
{ stdenv, fetchurl, fetchpatch, automoc4, boost, shared_desktop_ontologies { stdenv, fetchurl, cmake, extra-cmake-modules, makeQtWrapper
, cmake, eigen, lcms, gettext, jasper, kdelibs, kdepimlibs, lensfun
, libgphoto2, libjpeg, libkdcraw, libkexiv2, libkipi, libpgf, libtiff
, libusb1, liblqr1, marble, mysql, opencv, perl, phonon, pkgconfig
, qca2, qimageblitz, qjson, qt4, soprano
# Optional build time dependencies # For `digitaglinktree`
, baloo, doxygen, kfilemetadata , perl, sqlite
, qtbase
, qtxmlpatterns
, qtsvg
, qtwebkit
, kconfigwidgets
, kcoreaddons
, kdoctools
, kfilemetadata
, knotifications
, knotifyconfig
, ktextwidgets
, kwidgetsaddons
, kxmlgui
, bison
, boost
, eigen
, exiv2
, flex
, jasper
, lcms2 , lcms2
, kfaceSupport ? true, libkface ? null , lensfun
, kgeomapSupport ? true, libkgeomap ? null , libgphoto2
, libxslt , libkipi
, liblqr1
, libusb1
, marble
, mysql
, opencv
, threadweaver
# Plugins optional build time dependencies # For panorama and focus stacking
, gdk_pixbuf, imagemagick , enblend-enfuse
, libgpod, libksane, libkvkontakte , hugin
, qt_gstreamer1 /*qt_soap, <https://github.com/commontk/QtSOAP> herqq <http://www.herqq.org> -> is missing its av part.*/ , gnumake
/*qt_koauth <http://gitorious.org/kqoauth>*/
# Supplementary packages required only by the wrapper. , oxygen
, bash, kde_runtime, kde_baseapps, makeWrapper, oxygen_icons
, phonon-backend-vlc /*phonon-backend-gstreamer,*/
, ffmpegthumbs /*mplayerthumbs*/
, runCommand, shared_mime_info, writeScriptBin
}: }:
let stdenv.mkDerivation rec {
version = "4.12.0"; name = "digikam-${version}";
pName = "digikam-${version}"; version = "5.4.0";
build = stdenv.mkDerivation rec {
name = "digikam-build-${version}";
src = fetchurl { src = fetchurl {
url = "http://download.kde.org/stable/digikam/${pName}.tar.bz2"; url = "http://download.kde.org/stable/digikam/${name}.tar.xz";
sha256 = "081ldsaf3frf5khznjd3sxkjmi4dyp6w6nqnc2a0agkk0kxkl10m"; sha256 = "0dgsgji14l5zvxny36hrfsp889fsfrsbbn9bg57m18404xp903kg";
}; };
patches = [ nativeBuildInputs = [ cmake extra-cmake-modules makeQtWrapper ];
(fetchpatch {
# Fix compilation against Lensfun 0.3.2
url = "http://cgit.kde.org/digikam.git/patch/?id=0f159981176faa6da701f112bfe557b79804d468";
sha256 = "1c8bg7s84vg4v620gbs16cjcbpml749018gy5dpvfacx5vl24wza";
})
];
patchFlags = ["-p1" "-dcore"]; patches = [ ./0001-Disable-fno-operator-names.patch ];
nativeBuildInputs = [
automoc4 cmake gettext perl pkgconfig
] ++ [
# Optional
doxygen
];
buildInputs = [ buildInputs = [
boost eigen jasper kdelibs kdepimlibs lcms lensfun qtbase
libgphoto2 libjpeg libkdcraw libkexiv2 libkipi liblqr1 libpgf qtxmlpatterns
libtiff marble mysql.lib opencv phonon qca2 qimageblitz qjson qt4 qtsvg
shared_desktop_ontologies soprano ] qtwebkit
# Optional build time dependencies
++ [ kconfigwidgets
baloo kcoreaddons
kdoctools
kfilemetadata kfilemetadata
lcms2 ] knotifications
++ stdenv.lib.optional (kfaceSupport && null != libkface) [ libkface ] knotifyconfig
++ stdenv.lib.optional (kgeomapSupport && null != libkgeomap) [ libkgeomap ] ++ ktextwidgets
[ libxslt ] kwidgetsaddons
# Plugins optional build time dependencies kxmlgui
++ [
gdk_pixbuf imagemagick libgpod libksane
libkvkontakte
qt_gstreamer1 ];
# Make digikam find some FindXXXX.cmake bison
KDEDIRS="${marble}:${qjson}"; boost
eigen
exiv2
flex
jasper
lcms2
lensfun
libgphoto2
libkipi
liblqr1
libusb1
marble.unwrapped
mysql
opencv
threadweaver
# Find kdepimlibs's upper case headers under `include/KDE`. oxygen
NIX_CFLAGS_COMPILE = "-I${kdepimlibs}/include/KDE"; ];
# Help digiKam find libusb, otherwise gphoto2 support is disabled
cmakeFlags = [
"-DLIBUSB_LIBRARIES=${libusb1.out}/lib"
"-DLIBUSB_INCLUDE_DIR=${libusb1.dev}/include/libusb-1.0"
"-DENABLE_BALOOSUPPORT=ON"
"-DENABLE_KDEPIMLIBSSUPPORT=ON"
"-DENABLE_LCMS2=ON" ]
++ stdenv.lib.optional (kfaceSupport && null == libkface) [ "-DDIGIKAMSC_COMPILE_LIBKFACE=ON" ]
++ stdenv.lib.optional (kgeomapSupport && null == libkgeomap) [ "-DDIGIKAMSC_COMPILE_LIBKGEOMAP=ON" ];
enableParallelBuilding = true; enableParallelBuilding = true;
meta = { cmakeFlags = [
description = "Photo Management Program"; "-DLIBUSB_LIBRARIES=${libusb1.out}/lib"
license = stdenv.lib.licenses.gpl2; "-DLIBUSB_INCLUDE_DIR=${libusb1.dev}/include/libusb-1.0"
homepage = http://www.digikam.org; "-DENABLE_MYSQLSUPPORT=1"
maintainers = with stdenv.lib.maintainers; [ goibhniu viric urkud ]; "-DENABLE_INTERNALMYSQL=1"
inherit (kdelibs.meta) platforms;
};
};
kdePkgs = [
build # digikam's own build
kdelibs kdepimlibs kde_runtime kde_baseapps libkdcraw oxygen_icons
/*phonon-backend-gstreamer*/ phonon-backend-vlc
ffmpegthumbs /*mplayerthumbs*/ shared_mime_info ]
# Optional build time dependencies
++ [
baloo kfilemetadata ]
++ stdenv.lib.optional (kfaceSupport && null != libkface) [ libkface ]
++ stdenv.lib.optional (kgeomapSupport && null != libkgeomap) [ libkgeomap ]
++ [
libkipi ]
# Plugins optional build time dependencies
++ [
libksane libkvkontakte
]; ];
fixupPhase = ''
substituteInPlace $out/bin/digitaglinktree \
--replace "/usr/bin/perl" "${perl}/bin/perl" \
--replace "/usr/bin/sqlite3" "${sqlite}/bin/sqlite3"
# TODO: It should be the responsability of these packages to add themselves to `KDEDIRS`. See wrapQtProgram $out/bin/digikam \
# <https://github.com/ttuegel/nixpkgs/commit/a0efeacc0ef2cf63bbb768bfb172a483307d080b> for --prefix PATH : "${gnumake}/bin:${hugin}/bin:${enblend-enfuse}/bin"
# a practical example.
# IMPORTANT: Note that using `XDG_DATA_DIRS` here instead of `KDEDIRS` won't work properly.
KDEDIRS = with stdenv.lib; concatStrings (intersperse ":" (map (x: "${x}") kdePkgs));
sycocaDirRelPath = "var/lib/kdesycoca"; wrapQtProgram $out/bin/showfoto
sycocaFileRelPath = "${sycocaDirRelPath}/${pName}.sycoca";
sycoca = runCommand "${pName}" {
name = "digikam-sycoca-${version}";
nativeBuildInputs = [ kdelibs ];
dontPatchELF = true;
dontStrip = true;
} ''
# Make sure kbuildsycoca4 does not attempt to write to user home directory.
export HOME=$PWD
export KDESYCOCA="$out/${sycocaFileRelPath}"
mkdir -p $out/${sycocaDirRelPath}
export XDG_DATA_DIRS=""
export KDEDIRS="${KDEDIRS}"
kbuildsycoca4 --noincremental --nosignal
''; '';
replaceExeListWithWrapped =
let f = exeName: ''
rm -f "$out/bin/${exeName}"
makeWrapper "${build}/bin/${exeName}" "$out/bin/${exeName}" \
--set XDG_DATA_DIRS "" \
--set KDEDIRS "${KDEDIRS}" \
--set KDESYCOCA "${sycoca}/${sycocaFileRelPath}"
'';
in
with stdenv.lib; exeNameList: concatStrings (intersperse "\n" (map f exeNameList));
in
with stdenv.lib;
/*
Final derivation
----------------
- Create symlinks to our original build derivation items.
- Wrap specific executables so that they know of the appropriate
sycoca database, `KDEDIRS` to use and block any interference
from `XDG_DATA_DIRS` (only `dnginfo` is not wrapped).
*/
runCommand "${pName}" {
inherit build;
inherit sycoca;
nativeBuildInputs = [ makeWrapper ];
buildInputs = kdePkgs;
dontPatchELF = true;
dontStrip = true;
meta = { meta = {
description = "Photo Management Program"; description = "Photo Management Program";
license = stdenv.lib.licenses.gpl2; license = stdenv.lib.licenses.gpl2;
homepage = http://www.digikam.org; homepage = http://www.digikam.org;
maintainers = with stdenv.lib.maintainers; [ /*jraygauthier*/ ]; maintainers = with stdenv.lib.maintainers; [ the-kenny ];
inherit (kdelibs.meta) platforms; platforms = stdenv.lib.platforms.linux;
broken = true;
}; };
}
} ''
pushd $build > /dev/null
for d in `find . -maxdepth 1 -name "*" -printf "%f\n" | tail -n+2`; do
mkdir -p $out/$d
for f in `find $d -maxdepth 1 -name "*" -printf "%f\n" | tail -n+2`; do
ln -s "$build/$d/$f" "$out/$d/$f"
done
done
popd > /dev/null
${replaceExeListWithWrapped [ "cleanup_digikamdb" "digitaglinktree" "digikam" "dngconverter"
"expoblending" "photolayoutseditor" "scangui" "showfoto" ]}
''
/*
TODO
----
### Useful ###
- Per lib `KDELIBS` environment variable export. See above in-code TODO comment.
- Missing optional `qt_soap` or `herqq` (av + normal package) dependencies. Those are not
yet (or not fully) packaged in nix. Mainly required for upnp export.
- Possibility to use the `phonon-backend-gstreamer` with its own user specified set of backend.
- Allow user to disable optional features or dependencies reacting properly.
- Compile `kipiplugins` as a separate package (so that it can be used by other kde packages
and so that this package's build time is reduced).
### Not so useful ###
- Missing optional `qt_koauth` (not packaged in nix).
- Missing optional `libmediawiki` (not packaged in nix)..
- For some reason the cmake build does not detect `libkvkontakte`. Fix this.
- Possibility to use `mplayerthumbs` thumbnail creator backend. In digikam dev docs,
it is however suggested to use `ffmpegthumbs`. Maybe we should stick to it.
*/

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, automoc4, cmake, gettext, perl, pkgconfig { stdenv, fetchurl, automoc4, cmake, gettext, perl, pkgconfig
, kdelibs, boost, graphviz , kdelibs4, boost, graphviz
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "13zhjs57xavzrj4nrlqs35n35ihvzij7hgbszf5fhlp2a4d4rrqs"; sha256 = "13zhjs57xavzrj4nrlqs35n35ihvzij7hgbszf5fhlp2a4d4rrqs";
}; };
buildInputs = [ kdelibs boost graphviz ]; buildInputs = [ kdelibs4 boost graphviz ];
nativeBuildInputs = [ automoc4 cmake gettext perl pkgconfig ]; nativeBuildInputs = [ automoc4 cmake gettext perl pkgconfig ];
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -1,34 +0,0 @@
{
stdenv, fetchurl,
ecm,
karchive, kconfig, ki18n, kiconthemes, kio, kservice, kwindowsystem, kxmlgui,
libkipi, qtbase, qtsvg, qtxmlpatterns
}:
stdenv.mkDerivation rec {
name = "kipi-plugins-${version}";
version = "5.2.0";
src = fetchurl {
url = "http://download.kde.org/stable/digikam/digikam-${version}.tar.xz";
sha256 = "0q4j7iv20cxgfsr14qwzx05wbp2zkgc7cg2pi7ibcnwba70ky96g";
};
prePatch = ''
cd extra/kipi-plugins
'';
nativeBuildInputs = [ ecm ];
buildInputs = [
karchive kconfig ki18n kiconthemes kio kservice kwindowsystem kxmlgui libkipi
qtbase qtsvg qtxmlpatterns
];
meta = {
description = "Plugins for KDE-based image applications";
license = stdenv.lib.licenses.gpl2;
homepage = http://www.digikam.org;
maintainers = with stdenv.lib.maintainers; [ ttuegel ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -1,30 +1,34 @@
{ stdenv, fetchurl, kdelibs, qimageblitz, qca2, kdepimlibs, libxml2, libxslt {
, gettext, opencv, libgpod, gdk_pixbuf , qjson, pkgconfig stdenv, fetchurl,
, cmake, automoc4 extra-cmake-modules,
, kdegraphics, libkexiv2 ? kdegraphics, libkdcraw ? kdegraphics karchive, kconfig, ki18n, kiconthemes, kio, kservice, kwindowsystem, kxmlgui,
, libkipi ? kdegraphics, libksane ? kdegraphics }: libkipi, qtbase, qtsvg, qtxmlpatterns
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "kipi-plugins-1.9.0"; name = "kipi-plugins-${version}";
version = "5.2.0";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/kipi/${name}.tar.bz2"; url = "http://download.kde.org/stable/digikam/digikam-${version}.tar.xz";
sha256 = "0k4k9v1rj7129n0s0i5pvv4rabx0prxqs6sca642fj95cxc6c96m"; sha256 = "0q4j7iv20cxgfsr14qwzx05wbp2zkgc7cg2pi7ibcnwba70ky96g";
}; };
buildInputs = prePatch = ''
[ kdelibs libkexiv2 libkdcraw libkipi qimageblitz qca2 kdepimlibs libxml2 cd extra/kipi-plugins
libksane libxslt gettext opencv libgpod gdk_pixbuf qjson '';
nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [
karchive kconfig ki18n kiconthemes kio kservice kwindowsystem kxmlgui libkipi
qtbase qtsvg qtxmlpatterns
]; ];
nativeBuildInputs = [ pkgconfig cmake automoc4 ];
meta = { meta = {
description = "Photo Management Program"; description = "Plugins for KDE-based image applications";
license = "GPL"; license = stdenv.lib.licenses.gpl2;
homepage = http://www.kipi-plugins.org; homepage = http://www.digikam.org;
inherit (kdelibs.meta) platforms; maintainers = with stdenv.lib.maintainers; [ ttuegel ];
maintainers = with stdenv.lib.maintainers; [ viric urkud ]; platforms = stdenv.lib.platforms.linux;
broken = true; # it should be built from digikam sources, perhaps together
}; };
} }

View File

@ -1,14 +0,0 @@
{ stdenv, fetchurl, automoc4, kdelibs, imlib, cmake, pkgconfig, gettext }:
stdenv.mkDerivation rec {
name = "kuickshow-0.9.1";
src = fetchurl {
url = "http://hosti.leonde.de/~gis/${name}.tar.bz2";
sha256 = "0l488a6p0ligbhv6p1lnx5k2d00x9bkkvms30winifa8rmisa9wl";
};
buildInputs = [ kdelibs imlib ];
nativeBuildInputs = [ automoc4 cmake gettext pkgconfig ];
}

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, extra-cmake-modules,
akonadi-mime, grantlee, kcontacts, kio, kitemmodels, kmime, qtwebengine, akonadi-mime, grantlee, kcontacts, kio, kitemmodels, kmime, qtwebengine,
akonadi akonadi
}: }:
@ -11,7 +11,7 @@ kdeApp {
license = with lib.licenses; [ gpl2 lgpl21 ]; license = with lib.licenses; [ gpl2 lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm ]; nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [ buildInputs = [
akonadi-mime grantlee kcontacts kio kitemmodels kmime qtwebengine akonadi-mime grantlee kcontacts kio kitemmodels kmime qtwebengine
]; ];

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, extra-cmake-modules,
akonadi, kdbusaddons, kio, kitemmodels, kmime akonadi, kdbusaddons, kio, kitemmodels, kmime
}: }:
@ -10,6 +10,6 @@ kdeApp {
license = with lib.licenses; [ gpl2 lgpl21 ]; license = with lib.licenses; [ gpl2 lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm ]; nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [ akonadi kdbusaddons kio kitemmodels kmime ]; buildInputs = [ akonadi kdbusaddons kio kitemmodels kmime ];
} }

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, extra-cmake-modules,
kcompletion, kconfigwidgets, kdbusaddons, kdesignerplugin, kiconthemes, kcompletion, kconfigwidgets, kdbusaddons, kdesignerplugin, kiconthemes,
kio, kio,
boost, kitemmodels boost, kitemmodels
@ -12,7 +12,7 @@ kdeApp {
license = [ lib.licenses.lgpl21 ]; license = [ lib.licenses.lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm ]; nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [ buildInputs = [
kcompletion kconfigwidgets kdbusaddons kdesignerplugin kiconthemes kio kcompletion kconfigwidgets kdbusaddons kdesignerplugin kiconthemes kio
]; ];

View File

@ -1,13 +1,16 @@
{ {
kdeApp, lib, kdeWrapper, kdeApp, lib, config, kdeWrapper,
ecm, kdoctools, makeWrapper, extra-cmake-modules, kdoctools, makeWrapper,
karchive, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, khtml, kio, karchive, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, khtml, kio,
kservice, kpty, kwidgetsaddons, libarchive, kservice, kpty, kwidgetsaddons, libarchive,
# Archive tools # Archive tools
p7zip, unrar, unzipNLS, zip p7zip, unzipNLS, zip,
# Unfree tools
unfreeEnableUnrar ? false, unrar,
}: }:
let let
@ -15,7 +18,7 @@ let
kdeApp { kdeApp {
name = "ark"; name = "ark";
nativeBuildInputs = [ nativeBuildInputs = [
ecm kdoctools makeWrapper extra-cmake-modules kdoctools makeWrapper
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [
khtml ki18n kio karchive kconfig kcrash kdbusaddons kiconthemes kservice khtml ki18n kio karchive kconfig kcrash kdbusaddons kiconthemes kservice
@ -23,15 +26,16 @@ let
]; ];
postInstall = postInstall =
let let
PATH = lib.makeBinPath [ PATH =
p7zip unrar unzipNLS zip lib.makeBinPath
]; ([ p7zip unzipNLS zip ] ++ lib.optional unfreeEnableUnrar unrar);
in '' in ''
wrapProgram "$out/bin/ark" \ wrapProgram "$out/bin/ark" \
--prefix PATH : "${PATH}" --prefix PATH : "${PATH}"
''; '';
meta = { meta = {
license = with lib.licenses; [ gpl2 lgpl3 ]; license = with lib.licenses;
[ gpl2 lgpl3 ] ++ lib.optional unfreeEnableUnrar unfree;
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
}; };

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, kdoctools, extra-cmake-modules, kdoctools,
baloo, kconfig, kdelibs4support, kfilemetadata, ki18n, kio, kservice baloo, kconfig, kdelibs4support, kfilemetadata, ki18n, kio, kservice
}: }:
@ -10,7 +10,7 @@ kdeApp {
license = [ lib.licenses.lgpl21 ]; license = [ lib.licenses.lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm kdoctools ]; nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [ propagatedBuildInputs = [
baloo kconfig kdelibs4support kfilemetadata ki18n kio kservice baloo kconfig kdelibs4support kfilemetadata ki18n kio kservice
]; ];

View File

@ -0,0 +1,93 @@
/*
# New packages
READ THIS FIRST
This module is for official packages in the KDE Applications Bundle. All
available packages are listed in `./srcs.nix`, although some are not yet
packaged in Nixpkgs (see below).
IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
Many of the packages released upstream are not yet built in Nixpkgs due to lack
of demand. To add a Nixpkgs build for an upstream package, copy one of the
existing packages here and modify it as necessary. A simple example package that
still shows most of the available features is in `./gwenview.nix`.
# Updates
1. Update the URL in `./fetch.sh`.
2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/kde-5/applications`
from the top of the Nixpkgs tree.
3. Use `nox-review wip` to check that everything builds.
4. Commit the changes and open a pull request.
*/
{
stdenv, lib, libsForQt5, fetchurl, recurseIntoAttrs,
kdeDerivation, plasma5,
attica, phonon,
debug ? false,
}:
let
mirror = "mirror://kde";
srcs = import ./srcs.nix { inherit fetchurl mirror; };
in
let
packages = self: with self;
let
callPackage = self.newScope {
kdeApp = import ./build-support/application.nix {
inherit lib kdeDerivation;
inherit debug srcs;
};
};
in {
kdelibs = callPackage ./kdelibs { inherit attica phonon; };
akonadi = callPackage ./akonadi.nix {};
akonadi-contacts = callPackage ./akonadi-contacts.nix {};
akonadi-mime = callPackage ./akonadi-mime.nix {};
ark = callPackage ./ark/default.nix {};
baloo-widgets = callPackage ./baloo-widgets.nix {};
dolphin = callPackage ./dolphin.nix {};
dolphin-plugins = callPackage ./dolphin-plugins.nix {};
ffmpegthumbs = callPackage ./ffmpegthumbs.nix { };
filelight = callPackage ./filelight.nix {};
gwenview = callPackage ./gwenview.nix {};
kate = callPackage ./kate.nix {};
kdenlive = callPackage ./kdenlive.nix {};
kcalc = callPackage ./kcalc.nix {};
kcolorchooser = callPackage ./kcolorchooser.nix {};
kcontacts = callPackage ./kcontacts.nix {};
kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket.nix {};
kdegraphics-thumbnailers = callPackage ./kdegraphics-thumbnailers.nix {};
kdenetwork-filesharing = callPackage ./kdenetwork-filesharing.nix {};
kdf = callPackage ./kdf.nix {};
kgpg = callPackage ./kgpg.nix {};
khelpcenter = callPackage ./khelpcenter.nix {};
kig = callPackage ./kig.nix {};
kio-extras = callPackage ./kio-extras.nix {};
kmime = callPackage ./kmime.nix {};
kmix = callPackage ./kmix.nix {};
kompare = callPackage ./kompare.nix {};
konsole = callPackage ./konsole.nix {};
kwalletmanager = callPackage ./kwalletmanager.nix {};
libkdcraw = callPackage ./libkdcraw.nix {};
libkexiv2 = callPackage ./libkexiv2.nix {};
libkipi = callPackage ./libkipi.nix {};
libkomparediff2 = callPackage ./libkomparediff2.nix {};
marble = callPackage ./marble.nix {};
okteta = callPackage ./okteta.nix {};
okular = callPackage ./okular.nix {};
print-manager = callPackage ./print-manager.nix {};
spectacle = callPackage ./spectacle.nix {};
l10n = recurseIntoAttrs (import ./l10n.nix { inherit callPackage lib recurseIntoAttrs; });
};
in lib.makeScope libsForQt5.newScope packages

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, kdoctools, extra-cmake-modules, kdoctools,
dolphin, kdelibs4support, ki18n, kio, kxmlgui dolphin, kdelibs4support, ki18n, kio, kxmlgui
}: }:
@ -10,7 +10,7 @@ kdeApp {
license = [ lib.licenses.gpl2 ]; license = [ lib.licenses.gpl2 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm kdoctools ]; nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [ propagatedBuildInputs = [
dolphin.unwrapped kdelibs4support ki18n kio kxmlgui dolphin.unwrapped kdelibs4support ki18n kio kxmlgui
]; ];

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeWrapper, kdeApp, lib, kdeWrapper,
ecm, kdoctools, makeQtWrapper, extra-cmake-modules, kdoctools, makeQtWrapper,
baloo, baloo-widgets, dolphin-plugins, kactivities, kbookmarks, kcmutils, baloo, baloo-widgets, dolphin-plugins, kactivities, kbookmarks, kcmutils,
kcompletion, kconfig, kcoreaddons, kdelibs4support, kdbusaddons, kcompletion, kconfig, kcoreaddons, kdelibs4support, kdbusaddons,
kfilemetadata, ki18n, kiconthemes, kinit, kio, knewstuff, knotifications, kfilemetadata, ki18n, kiconthemes, kinit, kio, knewstuff, knotifications,
@ -15,7 +15,7 @@ let
license = with lib.licenses; [ gpl2 fdl12 ]; license = with lib.licenses; [ gpl2 fdl12 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm kdoctools makeQtWrapper ]; nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
propagatedBuildInputs = [ propagatedBuildInputs = [
baloo baloo-widgets kactivities kbookmarks kcmutils kcompletion kconfig baloo baloo-widgets kactivities kbookmarks kcmutils kcompletion kconfig
kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, extra-cmake-modules,
ffmpeg, kio ffmpeg, kio
}: }:
@ -10,6 +10,6 @@ kdeApp {
license = with lib.licenses; [ gpl2 bsd3 ]; license = with lib.licenses; [ gpl2 bsd3 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm ]; nativeBuildInputs = [ extra-cmake-modules ];
propagatedBuildInputs = [ ffmpeg kio ]; propagatedBuildInputs = [ ffmpeg kio ];
} }

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeWrapper, kdeApp, lib, kdeWrapper,
ecm, kdoctools, extra-cmake-modules, kdoctools,
kio, kparts, kxmlgui, qtscript, solid kio, kparts, kxmlgui, qtscript, solid
}: }:
@ -12,7 +12,7 @@ let
license = with lib.licenses; [ gpl2 ]; license = with lib.licenses; [ gpl2 ];
maintainers = with lib.maintainers; [ fridh vcunat ]; maintainers = with lib.maintainers; [ fridh vcunat ];
}; };
nativeBuildInputs = [ ecm kdoctools ]; nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [ propagatedBuildInputs = [
kio kparts kxmlgui qtscript solid kio kparts kxmlgui qtscript solid
]; ];

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeWrapper, kdeApp, lib, kdeWrapper,
ecm, kdoctools, extra-cmake-modules, kdoctools,
baloo, exiv2, kactivities, kdelibs4support, kio, kipi-plugins, lcms2, baloo, exiv2, kactivities, kdelibs4support, kio, kipi-plugins, lcms2,
libkdcraw, libkipi, phonon, qtimageformats, qtsvg, qtx11extras libkdcraw, libkipi, phonon, qtimageformats, qtsvg, qtx11extras
}: }:
@ -13,7 +13,7 @@ let
license = with lib.licenses; [ gpl2 fdl12 ]; license = with lib.licenses; [ gpl2 fdl12 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm kdoctools ]; nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [ propagatedBuildInputs = [
baloo kactivities kdelibs4support kio exiv2 lcms2 libkdcraw baloo kactivities kdelibs4support kio exiv2 lcms2 libkdcraw
libkipi phonon qtimageformats qtsvg qtx11extras libkipi phonon qtimageformats qtsvg qtx11extras

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeWrapper, kdeApp, lib, kdeWrapper,
ecm, kdoctools, extra-cmake-modules, kdoctools,
kactivities, kconfig, kcrash, kdbusaddons, kguiaddons, kiconthemes, ki18n, kactivities, kconfig, kcrash, kdbusaddons, kguiaddons, kiconthemes, ki18n,
kinit, kio, kitemmodels, kjobwidgets, knewstuff, knotifications, konsole, kinit, kio, kitemmodels, kjobwidgets, knewstuff, knotifications, konsole,
kparts, ktexteditor, kwindowsystem, kwallet, kxmlgui, libgit2, kparts, ktexteditor, kwindowsystem, kwallet, kxmlgui, libgit2,
@ -15,7 +15,7 @@ let
license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ]; license = with lib.licenses; [ gpl3 lgpl3 lgpl2 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm kdoctools ]; nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [ propagatedBuildInputs = [
kactivities ki18n kio ktexteditor kwindowsystem plasma-framework kactivities ki18n kio ktexteditor kwindowsystem plasma-framework
qtscript kconfig kcrash kguiaddons kiconthemes kinit kjobwidgets kparts qtscript kconfig kcrash kguiaddons kiconthemes kinit kjobwidgets kparts

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeWrapper, kdeApp, lib, kdeWrapper,
ecm, kdoctools, extra-cmake-modules, kdoctools,
kconfig, kconfigwidgets, kguiaddons, kinit, knotifications, gmp kconfig, kconfigwidgets, kguiaddons, kinit, knotifications, gmp
}: }:
@ -12,7 +12,7 @@ let
license = with lib.licenses; [ gpl2 ]; license = with lib.licenses; [ gpl2 ];
maintainers = [ lib.maintainers.fridh ]; maintainers = [ lib.maintainers.fridh ];
}; };
nativeBuildInputs = [ ecm kdoctools ]; nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [ propagatedBuildInputs = [
gmp kconfig kconfigwidgets kguiaddons kinit knotifications gmp kconfig kconfigwidgets kguiaddons kinit knotifications
]; ];

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeWrapper, kdeApp, lib, kdeWrapper,
ecm, ki18n, kwidgetsaddons, kxmlgui extra-cmake-modules, ki18n, kwidgetsaddons, kxmlgui
}: }:
let let
@ -11,7 +11,7 @@ let
license = with lib.licenses; [ mit ]; license = with lib.licenses; [ mit ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm ]; nativeBuildInputs = [ extra-cmake-modules ];
propagatedBuildInputs = [ ki18n kwidgetsaddons kxmlgui ]; propagatedBuildInputs = [ ki18n kwidgetsaddons kxmlgui ];
}; };
in in

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, ki18n, extra-cmake-modules, ki18n,
kcoreaddons, kconfig, kcodecs kcoreaddons, kconfig, kcodecs
}: }:
@ -10,6 +10,6 @@ kdeApp {
license = [ lib.licenses.lgpl21 ]; license = [ lib.licenses.lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm ki18n ]; nativeBuildInputs = [ extra-cmake-modules ki18n ];
buildInputs = [ kcoreaddons kconfig kcodecs ]; buildInputs = [ kcoreaddons kconfig kcodecs ];
} }

View File

@ -1,6 +1,6 @@
name: args: name: args:
{ kdeApp, cmake, ecm, gettext, kdoctools }: { kdeApp, cmake, extra-cmake-modules, gettext, kdoctools }:
kdeApp (args // { kdeApp (args // {
sname = "kde-l10n-${name}"; sname = "kde-l10n-${name}";
@ -9,7 +9,7 @@ kdeApp (args // {
outputs = [ "out" ]; outputs = [ "out" ];
nativeBuildInputs = nativeBuildInputs =
[ cmake ecm gettext kdoctools ] [ cmake extra-cmake-modules gettext kdoctools ]
++ (args.nativeBuildInputs or []); ++ (args.nativeBuildInputs or []);
preConfigure = '' preConfigure = ''

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, extra-cmake-modules,
kio kio
}: }:
@ -10,6 +10,6 @@ kdeApp {
license = [ lib.licenses.gpl2Plus ]; license = [ lib.licenses.gpl2Plus ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm ]; nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [ kio ]; buildInputs = [ kio ];
} }

View File

@ -1,6 +1,6 @@
{ {
kdeApp, lib, kdeApp, lib,
ecm, kio, libkexiv2, libkdcraw extra-cmake-modules, kio, libkexiv2, libkdcraw
}: }:
kdeApp { kdeApp {
@ -9,6 +9,6 @@ kdeApp {
license = [ lib.licenses.lgpl21 ]; license = [ lib.licenses.lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ]; maintainers = [ lib.maintainers.ttuegel ];
}; };
nativeBuildInputs = [ ecm ]; nativeBuildInputs = [ extra-cmake-modules ];
propagatedBuildInputs = [ kio libkexiv2 libkdcraw ]; propagatedBuildInputs = [ kio libkexiv2 libkdcraw ];
} }

View File

@ -1,5 +1,5 @@
{ {
kdeApp, lib, src, version, kdeApp, lib,
automoc4, bison, cmake, flex, libxslt, perl, pkgconfig, shared_mime_info, automoc4, bison, cmake, flex, libxslt, perl, pkgconfig, shared_mime_info,
attica, attr, avahi, docbook_xml_dtd_42, docbook_xsl, giflib, ilmbase, attica, attr, avahi, docbook_xml_dtd_42, docbook_xsl, giflib, ilmbase,
libdbusmenu_qt, libjpeg, libxml2, phonon, polkit_qt4, qca2, qt4, libdbusmenu_qt, libjpeg, libxml2, phonon, polkit_qt4, qca2, qt4,

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