forked from mirrors/nixpkgs
Merge branch 'master' into staging
This commit is contained in:
commit
a1919db7cd
doc
lib
nixos
doc/manual/release-notes
lib
maintainers/scripts
modules
config
hardware
i18n/input-method
installer
misc
module-list.nixrename.nixsecurity
services
databases
logging
misc
monitoring/prometheus
networking
web-servers
x11
system/boot
tasks/filesystems
virtualisation
tests
pkgs/applications
audio
amarok
ardour
banshee
cantata
clementine
cmus
i-score
ir.lv2
jackmix
mod-distortion
morituri
opusfile
quodlibet
spotify
tomahawk
transcribe
x42-plugins
zam-plugins
editors
graphics
kde
akonadi-contacts.nixakonadi-mime.nixakonadi.nix
ark
baloo-widgets.nixbuild-support
default.nixdolphin-plugins.nixdolphin.nixfetch.shffmpegthumbs.nixfilelight.nixgwenview.nixkate.nixkcalc.nixkcolorchooser.nixkcontacts.nixkde-locale-4.nixkde-locale-5.nixkdegraphics-mobipocket.nixkdegraphics-thumbnailers.nixkdelibs
|
@ -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) <= 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>
|
||||
|
||||
<!--============================================================-->
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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>";
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
''}
|
||||
''
|
||||
)
|
||||
|
|
|
@ -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;
|
||||
|
|
24
nixos/maintainers/scripts/openstack/nova-image.nix
Normal file
24
nixos/maintainers/scripts/openstack/nova-image.nix
Normal 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> ];
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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" ];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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" ];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
37
nixos/modules/hardware/mcelog.nix
Normal file
37
nixos/modules/hardware/mcelog.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
|
@ -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.";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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
|
||||
'';
|
||||
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
'';
|
||||
|
||||
};
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" ] "")
|
||||
|
|
90
nixos/modules/security/dhparams.nix
Normal file
90
nixos/modules/security/dhparams.nix
Normal 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;
|
||||
}
|
|
@ -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")}
|
||||
'');
|
||||
};
|
||||
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
'';
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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";
|
||||
|
|
125
nixos/modules/services/networking/nftables.nix
Normal file
125
nixos/modules/services/networking/nftables.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
];
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
||||
})
|
||||
];
|
||||
|
||||
}
|
|
@ -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
|
||||
|
|
241
nixos/modules/services/x11/desktop-managers/plasma5.nix
Normal file
241
nixos/modules/services/x11/desktop-managers/plasma5.nix
Normal 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";
|
||||
|
||||
})
|
||||
];
|
||||
|
||||
}
|
|
@ -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}
|
||||
'';
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
57
nixos/modules/virtualisation/nova-config.nix
Normal file
57
nixos/modules/virtualisation/nova-config.nix
Normal 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" ];
|
||||
*/
|
||||
};
|
||||
}
|
|
@ -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" ];
|
||||
*/
|
||||
|
||||
}
|
|
@ -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 {};
|
||||
|
|
|
@ -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
42
nixos/tests/pgjwt.nix
Normal 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");
|
||||
|
||||
'';
|
||||
})
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" ])
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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; {
|
||||
|
|
|
@ -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
|
||||
];
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 ''
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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")
|
|
@ -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 ];
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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.
|
||||
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -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; {
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
}
|
|
@ -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
|
||||
];
|
|
@ -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 ];
|
||||
}
|
|
@ -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
|
||||
];
|
|
@ -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 ];
|
||||
};
|
||||
};
|
|
@ -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
|
||||
];
|
93
pkgs/applications/kde/default.nix
Normal file
93
pkgs/applications/kde/default.nix
Normal 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
|
|
@ -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
|
||||
];
|
|
@ -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
|
|
@ -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 ];
|
||||
}
|
|
@ -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
|
||||
];
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
];
|
|
@ -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
|
|
@ -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 ];
|
||||
}
|
|
@ -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 = ''
|
|
@ -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 ];
|
||||
}
|
|
@ -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 ];
|
||||
}
|
|
@ -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
Loading…
Reference in a new issue