3
0
Fork 0
forked from mirrors/nixpkgs

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
doc
configuration.xml
languages-frameworks
lib
nixos
pkgs/applications

View file

@ -4,83 +4,221 @@
<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
<filename>~/.config/nixpkgs/config.nix</filename> and set it like
<itemizedlist>
<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>
{
allowUnfree = true;
}
</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>
<itemizedlist>
<para>There are two ways to try compiling a package which has been
marked as broken.</para>
<listitem>
<para>Allow installing of packages that are distributed under
unfree license by setting <programlisting>allowUnfree =
true;</programlisting> or deny them by setting it to
<literal>false</literal>.</para>
<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:
<para>Same can be achieved by setting the environment variable:
<programlisting>$ export NIXPKGS_ALLOW_BROKEN=1</programlisting>
</para></listitem>
<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>
$ export NIXPKGS_ALLOW_UNFREE=1
{
allowBroken = true;
}
</programlisting>
</para></listitem>
</itemizedlist>
</section>
</para>
</listitem>
<section xml:id="sec-allow-unfree">
<title>Installing unfree packages</title>
<listitem>
<para>Whenever unfree packages are not allowed, single packages
can still be allowed by a predicate function that accepts package
as an argument and should return a boolean:
<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>A more useful example, the following configuration allows
only allows flash player and visual studio code:
<programlisting>
allowUnfreePredicate = (pkg: ...);
{
allowUnfreePredicate = (pkg: elem (builtins.parseDrvName pkg.name).name [ "flashplayer" "vscode" ]);
}
</programlisting>
</para></listitem>
Example to allow flash player and visual studio code only:
<listitem>
<para>It is also possible to whitelist and blacklist licenses
that are specifically acceptable or not acceptable, using
<literal>whitelistedLicenses</literal> and
<literal>blacklistedLicenses</literal>, respectively.
</para>
<para>The following example configuration whitelists the
licenses <literal>amd</literal> and <literal>wtfpl</literal>:
<programlisting>
allowUnfreePredicate = with builtins; (pkg: elem (parseDrvName pkg.name).name [ "flashplayer" "vscode" ]);
{
whitelistedLicenses = with stdenv.lib.licenses; [ amd wtfpl ];
}
</programlisting>
</para>
</para>
</listitem>
<listitem>
<para>Whenever unfree packages are not allowed, packages can still
be whitelisted by their license:
<para>The following example configuration blacklists the
<literal>gpl3</literal> and <literal>agpl3</literal> licenses:
<programlisting>
whitelistedLicenses = with stdenv.lib.licenses; [ amd wtfpl ];
{
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ];
}
</programlisting>
</para>
</listitem>
</para>
</listitem>
</itemizedlist>
<listitem>
<para>In addition to whitelisting licenses which are denied by the
<literal>allowUnfree</literal> setting, you can also explicitely
deny installation of packages which have a certain license:
<para>A complete list of licenses can be found in the file
<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>
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ];
{
allowInsecurePredicate = (pkg: (builtins.stringLength (builtins.parseDrvName pkg.name).name) &lt;= 5);
}
</programlisting>
</para>
</listitem>
</itemizedlist>
<para>A complete list of licenses can be found in the file
<filename>lib/licenses.nix</filename> of the nix package tree.</para>
</para>
<para>Note that <literal>permittedInsecurePackages</literal> is
only checked if <literal>allowInsecurePredicate</literal> is not
specified.
</para></listitem>
</itemizedlist>
</section>
<!--============================================================-->

View file

@ -2,67 +2,31 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
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 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>
<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>
<section xml:id="ssec-qt-libraries"><title>Libraries</title>
<para>Packages that provide libraries should be listed in
<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
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>
<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>
<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>
</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
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>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>
<para>Several environment variables must be set at runtime for Qt
applications to function correctly, including:</para>
<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>
<itemizedlist>
<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>
<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>
</section>
<section xml:id="ssec-qt-kde"><title>KDE</title>
<para>Many of the considerations above also apply to KDE packages,
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>
<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>
</section>

View file

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

View file

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

View file

@ -30,6 +30,14 @@ has the following highlights: </para>
<listitem>
<para>PHP now defaults to PHP 7.1</para>
</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>
<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.
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
# containing the root filesystem) or contain the root filesystem
# directly.
@ -45,7 +51,14 @@ pkgs.vmTools.runInLinuxVM (
${pkgs.vmTools.qemu}/bin/qemu-img create -f ${format} $diskImage "${toString diskSize}M"
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 =
[ "closure" config.system.build.toplevel ];
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
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
# 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") ''
tune2fs -c 0 -i 0 $rootDisk
tune2fs -T now -c 0 -i 0 $rootDisk
''}
''
)

View file

@ -2,15 +2,34 @@
with lib;
{
let
cfg = config.amazonImage;
in {
imports =
[ ../../../modules/installer/cd-dvd/channel.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 (cfg) contents;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
partitioned = config.ec2.hvm;
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
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
# and other configurations. If the file is destroyed by an environment
# activation then it must be rebuilt so that applications which interface

View file

@ -22,7 +22,8 @@ with lib;
###### implementation
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
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 {
type = with types; nullOr path;
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.";
};
};

View file

@ -66,7 +66,7 @@ with lib;
in ''
mkdir -p /root/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
'';

View file

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

View file

@ -106,9 +106,12 @@ in
NAME=NixOS
ID=nixos
VERSION="${config.system.nixosVersion} (${config.system.nixosCodeName})"
VERSION_CODENAME=${toLower config.system.nixosCodeName}
VERSION_ID="${config.system.nixosVersion}"
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/intel-microcode.nix
./hardware/ksm.nix
./hardware/mcelog.nix
./hardware/network/b43.nix
./hardware/network/intel-2100bg.nix
./hardware/network/intel-2200bg.nix
@ -106,6 +107,7 @@
./security/audit.nix
./security/ca.nix
./security/chromium-suid-sandbox.nix
./security/dhparams.nix
./security/duosec.nix
./security/grsecurity.nix
./security/hidepid.nix
@ -426,6 +428,7 @@
./services/networking/namecoind.nix
./services/networking/nat.nix
./services/networking/networkmanager.nix
./services/networking/nftables.nix
./services/networking/ngircd.nix
./services/networking/nix-serve.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" "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.
(mkRemovedOptionModule [ "boot" "initrd" "luks" "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
"auth optional ${pkgs.pam_mount}/lib/security/pam_mount.so"}
${optionalString cfg.enableKwallet
("auth optional ${pkgs.kde5.kwallet-pam}/lib/security/pam_kwallet5.so" +
" kwalletd=${pkgs.kde5.kwallet}/bin/kwalletd5")}
("auth optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
" kwalletd=${pkgs.libsForQt5.kwallet}/bin/kwalletd5")}
'') + ''
${optionalString cfg.unixAuth
"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)
"session optional ${pkgs.apparmor-pam}/lib/security/pam_apparmor.so order=user,group,default debug"}
${optionalString (cfg.enableKwallet)
("session optional ${pkgs.kde5.kwallet-pam}/lib/security/pam_kwallet5.so" +
" kwalletd=${pkgs.kde5.kwallet}/bin/kwalletd5")}
("session optional ${pkgs.plasma5.kwallet-pam}/lib/security/pam_kwallet5.so" +
" kwalletd=${pkgs.libsForQt5.kwallet}/bin/kwalletd5")}
'');
};

View file

@ -84,7 +84,7 @@ in
security.pam.services.polkit-1 = {};
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";
};

View file

@ -30,9 +30,16 @@ let
'';
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=-XX:+UseConcMarkSweepGC
dbms.jvm.additional=-XX:+CMSClassUnloadingEnabled
'';
in {

View file

@ -17,9 +17,16 @@ let
elasticsearch_discovery_zen_ping_unicast_hosts = ${cfg.elasticsearchDiscoveryZenPingUnicastHosts}
message_journal_dir = ${cfg.messageJournalDir}
mongodb_uri = ${cfg.mongodbUri}
plugin_dir = /var/lib/graylog/plugins
${cfg.extraConfig}
'';
glPlugins = pkgs.buildEnv {
name = "graylog-plugins";
paths = cfg.plugins;
};
in
{
@ -121,6 +128,12 @@ in
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 ];
preStart = ''
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
mkdir -p ${cfg.messageJournalDir} -m 755

View file

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

View file

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

View file

@ -157,7 +157,7 @@ in
systemd.services.dhcpcd =
{ description = "DHCP Client";
wantedBy = [ "multi-user.target" ];
wantedBy = [ "network-online.target" ];
after = [ "network.target" ];
wants = [ "network.target" ];
@ -173,7 +173,7 @@ in
serviceConfig =
{ Type = "forking";
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";
Restart = "always";
};

View file

@ -60,8 +60,9 @@ let
};
};
machineOpts = {...}: {
config = {
machineOpts = { ... }: {
options = {
hostName = mkOption {
type = types.str;
@ -156,7 +157,7 @@ let
};
machines = mkOption {
type = types.listOf (types.submodule machineOpts);
type = with types; listOf (submodule machineOpts);
default = [];
example = [
{ 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 = {
description = "Prosody XMPP server";
after = [ "network.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = "prosody";

View file

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

View file

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

View file

@ -16,9 +16,9 @@ in
{
# Note: the order in which desktop manager modules are imported here
# 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 = [
./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
];

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 = [
pkgs.fluxbox
pkgs.kde5.kwindowsystem
pkgs.kde5.oxygen-icons5
pkgs.qt5.kwindowsystem
pkgs.qt5.oxygen-icons5
pkgs.lumina
pkgs.numlockx
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:*]
xserver-command = ${xserverWrapper}
session-wrapper = ${dmcfg.session.script}
${optionalString (elem defaultSessionName dmcfg.session.names) ''
user-session = ${defaultSessionName}
''}
${optionalString cfg.greeter.enable ''
greeter-session = ${cfg.greeter.name}
''}
${optionalString cfg.autoLogin.enable ''
autologin-user = ${cfg.autoLogin.user}
autologin-user-timeout = ${toString cfg.autoLogin.timeout}
autologin-session = ${defaultSessionName}
''}
${cfg.extraSeatDefaults}
'';

View file

@ -842,6 +842,7 @@ in
systemd.services.systemd-journald.stopIfChanged = false;
systemd.targets.local-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" ];
# Don't bother with certain units in containers.

View file

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

View file

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

View file

@ -23,7 +23,7 @@ in
postVM =
''
PATH=$PATH:${stdenv.lib.makeBinPath [ pkgs.gnutar pkgs.gzip ]}
PATH=$PATH:${pkgs.stdenv.lib.makeBinPath [ pkgs.gnutar pkgs.gzip ]}
pushd $out
mv $diskImageBase 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.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; });
tests.peerflix = callTest tests/peerflix.nix {};
tests.pgjwt = callTest tests/pgjwt.nix {};
tests.postgresql = callTest tests/postgresql.nix {};
tests.printing = callTest tests/printing.nix {};
tests.proxy = callTest tests/proxy.nix {};

View file

@ -25,8 +25,13 @@ let
# access. Mostly copied from
# modules/profiles/installation-device.nix.
system.extraDependencies =
[ pkgs.stdenv pkgs.busybox pkgs.perlPackages.ArchiveCpio
pkgs.unionfs-fuse pkgs.mkinitcpio-nfs-utils
with pkgs; [
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
userData = ''
{ pkgs, ... }:
{
imports = [
<nixpkgs/nixos/modules/virtualisation/amazon-image.nix>
@ -146,12 +153,22 @@ in {
environment.etc.testFile = {
text = "whoa";
};
services.httpd = {
enable = true;
adminAddr = "test@example.org";
documentRoot = "${pkgs.valgrind.doc}/share/doc/valgrind/html";
};
networking.firewall.allowedTCPPorts = [ 80 ];
}
'';
script = ''
$machine->start;
$machine->waitForFile("/etc/testFile");
$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
, 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
, lz4, lzo, snappy, libaio, pcre
}:
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
buildInputs = [
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
lz4 lzo snappy libaio pcre
];
@ -43,6 +43,6 @@ stdenv.mkDerivation rec {
description = "Popular music player for KDE";
license = "GPL";
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.
# Version to build.
tag = "5.5";
tag = "5.6";
in
@ -25,8 +25,8 @@ stdenv.mkDerivation rec {
src = fetchgit {
url = "git://git.ardour.org/ardour/ardour.git";
rev = "bb3312c3bb9c6ed9b75ac6739a6ee720ddf86c86";
sha256 = "1yrg0d86k9fqw7lmzjglilbadb4cjqxqkf6ii4bjs6rihj6b0qrf";
rev = "08353095dfee421f299d30d5d91259bc2df7e19d";
sha256 = "1fgvjmvdyh61qn8azpmh19ac58ps5sl2dywwshr56v0svakhwwh9";
};
buildInputs =

View file

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

View file

@ -2,10 +2,6 @@
, withQt4 ? false, qt4
, 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
# default for now until I (or someone else) figure it out.
, withCdda ? false, cdparanoia
@ -24,10 +20,9 @@
}:
# One and only one front-end.
assert withQt5 -> withQt4 == false && withKDE4 == false;
assert withQt4 -> withQt5 == false && withKDE4 == false;
assert withKDE4 -> withQt4 == false && withQt5 == false;
assert withQt4 || withQt5 || withKDE4;
assert withQt5 -> withQt4 == false;
assert withQt4 -> withQt5 == false;
assert withQt4 || withQt5;
# Inter-dependencies.
assert withCddb -> withCdda && withTaglib;
@ -58,7 +53,6 @@ stdenv.mkDerivation rec {
[ cmake ]
++ stdenv.lib.optional withQt4 qt4
++ stdenv.lib.optionals withQt5 [ qtbase qtsvg qttools ]
++ stdenv.lib.optional withKDE4 kde4.kdelibs
++ stdenv.lib.optionals withTaglib [ taglib taglib_extras ]
++ stdenv.lib.optionals withReplaygain [ ffmpeg speex mpg123 ]
++ stdenv.lib.optional withCdda cdparanoia
@ -66,16 +60,14 @@ stdenv.mkDerivation rec {
++ stdenv.lib.optional withLame lame
++ stdenv.lib.optional withMtp libmtp
++ stdenv.lib.optional withMusicbrainz libmusicbrainz5
++ stdenv.lib.optional (withTaglib && !withKDE4 && withDevices) udisks2;
++ stdenv.lib.optional (withTaglib && withDevices) udisks2;
nativeBuildInputs = stdenv.lib.optional withQt5 makeQtWrapper;
unpackPhase = "tar -xvf $src";
sourceRoot = "${name}";
# Qt4 is implicit when KDE is switched off.
cmakeFlags = stdenv.lib.flatten [
(fstats withKDE4 [ "KDE" "KWALLET" ])
(fstat withQt5 "QT5")
(fstats withTaglib [ "TAGLIB" "TAGLIB_EXTRAS" ])
(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
, usbmuxd, libmtp, gvfs, libcdio, libspotify, protobuf, qca2, pkgconfig
, sparsehash, config, makeWrapper, runCommand, gst_plugins }:
@ -27,7 +27,7 @@ let
fftw
gettext
glew
gst_plugins_base
gst-plugins-base
gstreamer
gvfs
libcdio

View file

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

View file

@ -6,7 +6,7 @@
gcc,
ginac,
jamomacore,
kde5,
kdnssd,
libsndfile,
ninja,
portaudio,
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
ginac
gcc
jamomacore
kde5.kdnssd
kdnssd
libsndfile
ninja
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 {
name = "ir.lv2-${version}";
version = "1.2.2";
version = "1.2.3";
src = fetchurl {
url = "http://factorial.hu/system/files/${name}.tar.gz";
sha256 = "17a6h2mv9xv41jpbx6bdakkngin4kqzh2v67l4076ddq609k5a7v";
src = fetchFromGitHub {
owner = "tomszilagyi";
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 = ''
make
make convert4chan
'';
nativeBuildInputs = [ pkgconfig ];
postBuild = "make convert4chan";
installPhase = ''
mkdir -p "$out/bin"
@ -23,10 +24,6 @@ stdenv.mkDerivation rec {
make PREFIX="$out" install
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; {

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -3,12 +3,12 @@
, mesa_glu, lv2, mesa, gtk2, cairo, pango, fftwFloat, zita-convolver }:
stdenv.mkDerivation rec {
version = "20160825";
version = "20161230";
name = "x42-plugins-${version}";
src = fetchurl {
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];

View file

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

View file

@ -1,20 +1,27 @@
{stdenv, fetchurl, fltk13, ghostscript}:
stdenv.mkDerivation {
name = "flpsed-0.7.3";
stdenv.mkDerivation rec {
name = "flpsed-${version}";
version = "0.7.3";
src = fetchurl {
url = "http://www.ecademix.com/JohannesHofmann/flpsed-0.7.3.tar.gz";
url = "http://www.flpsed.org/${name}.tar.gz";
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";
homepage = "http://http://flpsed.org/flpsed.html";
license = stdenv.lib.licenses.gpl3;
platforms = stdenv.lib.platforms.mesaPlatforms;
maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
license = licenses.gpl3;
platforms = platforms.mesaPlatforms;
maintainers = with maintainers; [ fuuzetsu ];
};
}

View file

@ -136,12 +136,12 @@ in
{
clion = buildClion rec {
name = "clion-${version}";
version = "2016.3.2";
version = "2016.3.3";
description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
sha256 = "0ygnj3yszgd1si1qgx7m4n7smm583l5pww8xhx8n86mvz7ywdhbn";
sha256 = "1zziyg0y51lfybflq83qwd94wcypkv4gh0cdkwfybbk4yidpnz05";
};
wmClass = "jetbrains-clion";
};
@ -208,12 +208,12 @@ in
idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}";
version = "2016.3.3";
version = "2016.3.4";
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
sha256 = "1bwy86rm0mifizmhkm9wxwc4nrrizk2zp4zl5ycxh6zdiad1r1wm";
sha256 = "1ichjrdmnhyqv9cr73d8kif9l53k3x36i8js8nf9cmkbhdsfckn3";
};
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
, shared_mime_info, kdelibs
{ kdeDerivation
, lib
, fetchgit
, extra-cmake-modules
, kdoctools
, kdeWrapper
, qtscript
, kconfig
, kcrash
, kdbusaddons
, kdelibs4support
, kguiaddons
, kiconthemes
, kinit
, khtml
, konsole
, kparts
, ktexteditor
, kwindowsystem
, poppler
}:
stdenv.mkDerivation rec {
name = "kile-2.1.3";
let
unwrapped =
kdeDerivation rec {
name = "kile-${version}";
version = "2017-02-09";
src = fetchurl {
url = "mirror://sourceforge/kile/${name}.tar.bz2";
sha256 = "18nfi37s46v9xav7vyki3phasddgcy4m7nywzxis198vr97yqqx0";
};
src = fetchgit {
url = git://anongit.kde.org/kile.git;
rev = "f77f6e627487c152f111e307ad6dc71699ade746";
sha256 = "0wpqaix9ssa28cm7qqjj0zfrscjgk8s3kmi5b4kk8h583gsrikib";
nativeBuildInputs = [
automoc4 cmake gettext perl pkgconfig shared_mime_info
];
buildInputs = [ kdelibs ];
};
# for KDE 4.7 the nl translations fail since kile-2.1.2
preConfigure = "rm -r translations/nl";
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
meta = {
description = "An integrated LaTeX editor for KDE";
homepage = http://kile.sourceforge.net;
maintainers = [ stdenv.lib.maintainers.urkud ];
license = stdenv.lib.licenses.gpl2Plus;
inherit (kdelibs.meta) platforms;
};
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,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
, 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
{ stdenv, fetchurl, cmake, extra-cmake-modules, makeQtWrapper
# Optional build time dependencies
, baloo, doxygen, kfilemetadata
# For `digitaglinktree`
, perl, sqlite
, qtbase
, qtxmlpatterns
, qtsvg
, qtwebkit
, kconfigwidgets
, kcoreaddons
, kdoctools
, kfilemetadata
, knotifications
, knotifyconfig
, ktextwidgets
, kwidgetsaddons
, kxmlgui
, bison
, boost
, eigen
, exiv2
, flex
, jasper
, lcms2
, kfaceSupport ? true, libkface ? null
, kgeomapSupport ? true, libkgeomap ? null
, libxslt
, lensfun
, libgphoto2
, libkipi
, liblqr1
, libusb1
, marble
, mysql
, opencv
, threadweaver
# Plugins optional build time dependencies
, gdk_pixbuf, imagemagick
, libgpod, libksane, libkvkontakte
, qt_gstreamer1 /*qt_soap, <https://github.com/commontk/QtSOAP> herqq <http://www.herqq.org> -> is missing its av part.*/
/*qt_koauth <http://gitorious.org/kqoauth>*/
# For panorama and focus stacking
, enblend-enfuse
, hugin
, gnumake
# Supplementary packages required only by the wrapper.
, bash, kde_runtime, kde_baseapps, makeWrapper, oxygen_icons
, phonon-backend-vlc /*phonon-backend-gstreamer,*/
, ffmpegthumbs /*mplayerthumbs*/
, runCommand, shared_mime_info, writeScriptBin
, oxygen
}:
let
version = "4.12.0";
pName = "digikam-${version}";
stdenv.mkDerivation rec {
name = "digikam-${version}";
version = "5.4.0";
build = stdenv.mkDerivation rec {
name = "digikam-build-${version}";
src = fetchurl {
url = "http://download.kde.org/stable/digikam/${pName}.tar.bz2";
sha256 = "081ldsaf3frf5khznjd3sxkjmi4dyp6w6nqnc2a0agkk0kxkl10m";
};
patches = [
(fetchpatch {
# Fix compilation against Lensfun 0.3.2
url = "http://cgit.kde.org/digikam.git/patch/?id=0f159981176faa6da701f112bfe557b79804d468";
sha256 = "1c8bg7s84vg4v620gbs16cjcbpml749018gy5dpvfacx5vl24wza";
})
];
patchFlags = ["-p1" "-dcore"];
nativeBuildInputs = [
automoc4 cmake gettext perl pkgconfig
] ++ [
# Optional
doxygen
];
buildInputs = [
boost eigen jasper kdelibs kdepimlibs lcms lensfun
libgphoto2 libjpeg libkdcraw libkexiv2 libkipi liblqr1 libpgf
libtiff marble mysql.lib opencv phonon qca2 qimageblitz qjson qt4
shared_desktop_ontologies soprano ]
# Optional build time dependencies
++ [
baloo
kfilemetadata
lcms2 ]
++ stdenv.lib.optional (kfaceSupport && null != libkface) [ libkface ]
++ stdenv.lib.optional (kgeomapSupport && null != libkgeomap) [ libkgeomap ] ++
[ libxslt ]
# Plugins optional build time dependencies
++ [
gdk_pixbuf imagemagick libgpod libksane
libkvkontakte
qt_gstreamer1 ];
# Make digikam find some FindXXXX.cmake
KDEDIRS="${marble}:${qjson}";
# Find kdepimlibs's upper case headers under `include/KDE`.
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;
meta = {
description = "Photo Management Program";
license = stdenv.lib.licenses.gpl2;
homepage = http://www.digikam.org;
maintainers = with stdenv.lib.maintainers; [ goibhniu viric urkud ];
inherit (kdelibs.meta) platforms;
};
src = fetchurl {
url = "http://download.kde.org/stable/digikam/${name}.tar.xz";
sha256 = "0dgsgji14l5zvxny36hrfsp889fsfrsbbn9bg57m18404xp903kg";
};
nativeBuildInputs = [ cmake extra-cmake-modules makeQtWrapper ];
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
++ [
patches = [ ./0001-Disable-fno-operator-names.patch ];
baloo kfilemetadata ]
++ stdenv.lib.optional (kfaceSupport && null != libkface) [ libkface ]
++ stdenv.lib.optional (kgeomapSupport && null != libkgeomap) [ libkgeomap ]
++ [
libkipi ]
# Plugins optional build time dependencies
++ [
libksane libkvkontakte
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;
# TODO: It should be the responsability of these packages to add themselves to `KDEDIRS`. See
# <https://github.com/ttuegel/nixpkgs/commit/a0efeacc0ef2cf63bbb768bfb172a483307d080b> for
# 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));
cmakeFlags = [
"-DLIBUSB_LIBRARIES=${libusb1.out}/lib"
"-DLIBUSB_INCLUDE_DIR=${libusb1.dev}/include/libusb-1.0"
"-DENABLE_MYSQLSUPPORT=1"
"-DENABLE_INTERNALMYSQL=1"
];
sycocaDirRelPath = "var/lib/kdesycoca";
sycocaFileRelPath = "${sycocaDirRelPath}/${pName}.sycoca";
fixupPhase = ''
substituteInPlace $out/bin/digitaglinktree \
--replace "/usr/bin/perl" "${perl}/bin/perl" \
--replace "/usr/bin/sqlite3" "${sqlite}/bin/sqlite3"
sycoca = runCommand "${pName}" {
wrapQtProgram $out/bin/digikam \
--prefix PATH : "${gnumake}/bin:${hugin}/bin:${enblend-enfuse}/bin"
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
wrapQtProgram $out/bin/showfoto
'';
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 = {
description = "Photo Management Program";
license = stdenv.lib.licenses.gpl2;
homepage = http://www.digikam.org;
maintainers = with stdenv.lib.maintainers; [ /*jraygauthier*/ ];
inherit (kdelibs.meta) platforms;
broken = true;
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
platforms = stdenv.lib.platforms.linux;
};
} ''
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
, kdelibs, boost, graphviz
, kdelibs4, boost, graphviz
}:
stdenv.mkDerivation rec {
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "13zhjs57xavzrj4nrlqs35n35ihvzij7hgbszf5fhlp2a4d4rrqs";
};
buildInputs = [ kdelibs boost graphviz ];
buildInputs = [ kdelibs4 boost graphviz ];
nativeBuildInputs = [ automoc4 cmake gettext perl pkgconfig ];
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
, cmake, automoc4
, kdegraphics, libkexiv2 ? kdegraphics, libkdcraw ? kdegraphics
, libkipi ? kdegraphics, libksane ? kdegraphics }:
{
stdenv, fetchurl,
extra-cmake-modules,
karchive, kconfig, ki18n, kiconthemes, kio, kservice, kwindowsystem, kxmlgui,
libkipi, qtbase, qtsvg, qtxmlpatterns
}:
stdenv.mkDerivation rec {
name = "kipi-plugins-1.9.0";
name = "kipi-plugins-${version}";
version = "5.2.0";
src = fetchurl {
url = "mirror://sourceforge/kipi/${name}.tar.bz2";
sha256 = "0k4k9v1rj7129n0s0i5pvv4rabx0prxqs6sca642fj95cxc6c96m";
url = "http://download.kde.org/stable/digikam/digikam-${version}.tar.xz";
sha256 = "0q4j7iv20cxgfsr14qwzx05wbp2zkgc7cg2pi7ibcnwba70ky96g";
};
buildInputs =
[ kdelibs libkexiv2 libkdcraw libkipi qimageblitz qca2 kdepimlibs libxml2
libksane libxslt gettext opencv libgpod gdk_pixbuf qjson
];
prePatch = ''
cd extra/kipi-plugins
'';
nativeBuildInputs = [ pkgconfig cmake automoc4 ];
nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [
karchive kconfig ki18n kiconthemes kio kservice kwindowsystem kxmlgui libkipi
qtbase qtsvg qtxmlpatterns
];
meta = {
description = "Photo Management Program";
license = "GPL";
homepage = http://www.kipi-plugins.org;
inherit (kdelibs.meta) platforms;
maintainers = with stdenv.lib.maintainers; [ viric urkud ];
broken = true; # it should be built from digikam sources, perhaps together
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,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,
ecm,
extra-cmake-modules,
akonadi-mime, grantlee, kcontacts, kio, kitemmodels, kmime, qtwebengine,
akonadi
}:
@ -11,7 +11,7 @@ kdeApp {
license = with lib.licenses; [ gpl2 lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ];
};
nativeBuildInputs = [ ecm ];
nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [
akonadi-mime grantlee kcontacts kio kitemmodels kmime qtwebengine
];

View file

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

View file

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

View file

@ -1,6 +1,6 @@
{
kdeApp, lib,
ecm, kdoctools,
extra-cmake-modules, kdoctools,
baloo, kconfig, kdelibs4support, kfilemetadata, ki18n, kio, kservice
}:
@ -10,7 +10,7 @@ kdeApp {
license = [ lib.licenses.lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ];
};
nativeBuildInputs = [ ecm kdoctools ];
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [
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,
ecm, kdoctools,
extra-cmake-modules, kdoctools,
dolphin, kdelibs4support, ki18n, kio, kxmlgui
}:
@ -10,7 +10,7 @@ kdeApp {
license = [ lib.licenses.gpl2 ];
maintainers = [ lib.maintainers.ttuegel ];
};
nativeBuildInputs = [ ecm kdoctools ];
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [
dolphin.unwrapped kdelibs4support ki18n kio kxmlgui
];

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,6 @@
{
kdeApp, lib,
ecm, kio, libkexiv2, libkdcraw
extra-cmake-modules, kio, libkexiv2, libkdcraw
}:
kdeApp {
@ -9,6 +9,6 @@ kdeApp {
license = [ lib.licenses.lgpl21 ];
maintainers = [ lib.maintainers.ttuegel ];
};
nativeBuildInputs = [ ecm ];
nativeBuildInputs = [ extra-cmake-modules ];
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,
attica, attr, avahi, docbook_xml_dtd_42, docbook_xsl, giflib, ilmbase,
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