Merge branch 'master' into staging

Conflicts (relatively simple):
	pkgs/applications/audio/spotify/default.nix
	pkgs/build-support/cc-wrapper/default.nix
	pkgs/development/compilers/cryptol/1.8.x.nix
This commit is contained in:
Vladimír Čunát 2015-01-31 19:32:23 +01:00
commit dbae4f109f
564 changed files with 41840 additions and 27780 deletions

6
.gitignore vendored
View File

@ -10,4 +10,8 @@ result-*
/doc/manual.pdf
.version-suffix
.DS_Store
.DS_Store
/pkgs/applications/kde-apps-*/tmp/
/pkgs/development/libraries/kde-frameworks-*/tmp/
/pkgs/desktops/plasma-*/tmp/

View File

@ -14,5 +14,5 @@ manager.
Communication:
* [Mailing list](https://lists.science.uu.nl/mailman/listinfo/nix-dev)
* [Mailing list](http://lists.science.uu.nl/mailman/listinfo/nix-dev)
* [IRC - #nixos on freenode.net](irc://irc.freenode.net/#nixos)

View File

@ -1,6 +1,6 @@
if ! builtins ? nixVersion || builtins.compareVersions "1.8" builtins.nixVersion == 1 then
abort "This version of Nixpkgs requires Nix >= 1.8, please upgrade!"
abort "This version of Nixpkgs requires Nix >= 1.8, please upgrade! See https://nixos.org/wiki/How_to_update_when_nix_is_too_old_to_evaluate_nixpkgs"
else

View File

@ -618,7 +618,7 @@ sed -i '/ = data_files/d' setup.py</programlisting>
<screen>
$ nix-env -i gem-nix
$ gem-nix --no-user-install --nix-file=pkgs/development/interpreters/ruby/generated.nix yajl-ruby
$ nix-build -A rubyLibs.yajl-ruby
$ nix-build -A rubyPackages.yajl-ruby
</screen>
</section>

View File

@ -12,6 +12,7 @@
<xi:include href="introduction.xml" />
<xi:include href="quick-start.xml" />
<xi:include href="stdenv.xml" />
<xi:include href="packageconfig.xml" />
<xi:include href="meta.xml" />
<xi:include href="language-support.xml" />
<xi:include href="package-notes.xml" />

85
doc/packageconfig.xml Normal file
View File

@ -0,0 +1,85 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="chap-packageconfig">
<title>nixpkgs global configuration</title>
<para>
Nix packages can be configured to allow or deny certain
options.
</para>
<para>
To apply the configuration edit <filename>~/.nixpkgs/config.nix</filename>
and set it like
<programlisting>
{
allowUnfree = true;
}
</programlisting>
and will allow the Nix package manager to install unfree licensed packages.
The configuration as listed also applies to NixOS under <option>nixpkgs.config</option> set.
</para>
<itemizedlist>
<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>
<para>
Same can be achieved by setting the environment variable:
<programlisting>
export NIXPKGS_ALLOW_UNFREE=1
</programlisting>
</para>
</listitem>
<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:
<programlisting>
allowUnfreePredicate = (pkg: ...);
</programlisting>
Example to allow flash player only:
<programlisting>
allowUnfreePredicate = (pkg: pkgs.lib.hasPrefix "flashplayer-" pkg.name);
</programlisting>
</para>
</listitem>
<listitem>
<para>
Whenever unfree packages are not allowed, packages can still be
whitelisted by their license:
<programlisting>
whitelistedLicenses = with stdenv.lib.licenses; [ amd wtfpl ];
</programlisting>
</para>
</listitem>
<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:
<programlisting>
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ];
</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>
</chapter>

View File

@ -130,6 +130,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "Eclipse Public License 1.0";
};
fdl12 = spdx {
spdxId = "GFDL-1.2";
fullName = "GNU Free Documentation License v1.2";
};
free = {
fullName = "Unspecified free software license";
};

View File

@ -43,6 +43,7 @@
chaoflow = "Florian Friesdorf <flo@chaoflow.net>";
christopherpoole = "Christopher Mark Poole <mail@christopherpoole.net>";
coconnor = "Corey O'Connor <coreyoconnor@gmail.com>";
cocreature = "Moritz Kiefer <moritz.kiefer@purelyfunctional.org>";
codyopel = "Cody Opel <codyopel@gmail.com>";
copumpkin = "Dan Peebles <pumpkingod@gmail.com>";
coroa = "Jonas Hörsch <jonas@chaoflow.net>";
@ -105,6 +106,7 @@
ludo = "Ludovic Courtès <ludo@gnu.org>";
madjar = "Georges Dubus <georges.dubus@compiletoi.net>";
magnetophon = "Bart Brouns <bart@magnetophon.nl>";
malyn = "Michael Alyn Miller <malyn@strangeGizmo.com>";
manveru = "Michael Fellinger <m.fellinger@gmail.com>";
marcweber = "Marc Weber <marco-oweber@gmx.de>";
matejc = "Matej Cotman <cotman.matej@gmail.com>";
@ -121,22 +123,26 @@
nathan-gs = "Nathan Bijnens <nathan@nathan.gs>";
nckx = "Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>";
notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>";
np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>";
nslqqq = "Nikita Mikhailov <nslqqq@gmail.com>";
ocharles = "Oliver Charles <ollie@ocharles.org.uk>";
offline = "Jaka Hudoklin <jakahudoklin@gmail.com>";
olcai = "Erik Timan <dev@timan.info>";
orbitz = "Malcolm Matalka <mmatalka@gmail.com>";
page = "Carles Pagès <page@cubata.homelinux.net>";
paholg = "Paho Lurie-Gregg <paho@paholg.com>";
pashev = "Igor Pashev <pashev.igor@gmail.com>";
phreedom = "Evgeny Egorochkin <phreedom@yandex.ru>";
pierron = "Nicolas B. Pierron <nixos@nbp.name>";
piotr = "Piotr Pietraszkiewicz <ppietrasa@gmail.com>";
pjones = "Peter Jones <pjones@devalot.com>";
pkmx = "Chih-Mao Chen <pkmx.tw@gmail.com>";
plcplc = "Philip Lykke Carlsen <plcplc@gmail.com>";
prikhi = "Pavan Rikhi <pavan.rikhi@gmail.com>";
pSub = "Pascal Wittmann <mail@pascal-wittmann.de>";
puffnfresh = "Brian McKenna <brian@brianmckenna.org>";
qknight = "Joachim Schiele <js@lastlog.de>";
ragge = "Ragnar Dahlen <r.dahlen@gmail.com>";
raskin = "Michael Raskin <7c6f434c@mail.ru>";
redbaron = "Maxim Ivanov <ivanov.maxim@gmail.com>";
refnil = "Martin Lavoie <broemartino@gmail.com>";
@ -179,6 +185,7 @@
viric = "Lluís Batlle i Rossell <viric@viric.name>";
vizanto = "Danny Wilson <danny@prime.vc>";
vlstill = "Vladimír Štill <xstill@fi.muni.cz>";
vmandela = "Venkateswara Rao Mandela <venkat.mandela@gmail.com>";
vozz = "Oliver Hunt <oliver.huntuk@gmail.com>";
winden = "Antonio Vargas Gonzalez <windenntw@gmail.com>";
wizeman = "Ricardo M. Correia <rcorreia@wizy.org>";

View File

@ -32,6 +32,7 @@
<xi:include href="configuration/configuration.xml" />
<xi:include href="administration/running.xml" />
<!-- <xi:include href="userconfiguration.xml" /> -->
<xi:include href="development/development.xml" />
<xi:include href="release-notes/release-notes.xml" />
<appendix xml:id="ch-options">

View File

@ -112,9 +112,9 @@ xlink:href="http://httpd.apache.org/docs/2.4/upgrading.html">Apaches
documentation</link> for details. If you wish to continue to use
httpd 2.2, add the following line to your NixOS configuration:
rogramlisting>
rvices.httpd.package = pkgs.apacheHttpd_2_2;
programlisting>
<programlisting>
services.httpd.package = pkgs.apacheHttpd_2_2;
</programlisting>
</para></listitem>

View File

@ -148,9 +148,9 @@ if [ -n "$buildNix" ]; then
if ! nix-build '<nixpkgs>' -A nix -o $tmpDir/nix "${extraBuildFlags[@]}" > /dev/null; then
machine="$(uname -m)"
if [ "$machine" = x86_64 ]; then
nixStorePath=/nix/store/d34q3q2zj9nriq4ifhn3dnnngqvinjb3-nix-1.7
nixStorePath=/nix/store/ffig6yaggbh12dh9y5pnf1grf5lqyipz-nix-1.8
elif [[ "$machine" =~ i.86 ]]; then
nixStorePath=/nix/store/qlah0darpcn6sf3lr2226rl04l1gn4xz-nix-1.7
nixStorePath=/nix/store/lglhfp4mimfa5wzjjf1kqz6f5wlsj2mn-nix-1.8
else
echo "$0: unsupported platform"
exit 1

View File

@ -176,7 +176,7 @@
tox-bootstrapd = 166;
cadvisor = 167;
nylon = 168;
apache-kafka = 169;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
nixbld = 30000; # start of range of uids

5
nixos/modules/module-list.nix Executable file → Normal file
View File

@ -144,11 +144,13 @@
./services/hardware/acpid.nix
./services/hardware/amd-hybrid-graphics.nix
./services/hardware/bluetooth.nix
./services/hardware/freefall.nix
./services/hardware/nvidia-optimus.nix
./services/hardware/pcscd.nix
./services/hardware/pommed.nix
./services/hardware/sane.nix
./services/hardware/tcsd.nix
./services/hardware/tlp.nix
./services/hardware/thinkfan.nix
./services/hardware/udev.nix
./services/hardware/udisks2.nix
@ -168,6 +170,7 @@
./services/mail/opensmtpd.nix
./services/mail/postfix.nix
./services/mail/spamassassin.nix
./services/misc/apache-kafka.nix
#./services/misc/autofs.nix
./services/misc/cpuminer-cryptonight.nix
./services/misc/cgminer.nix
@ -290,6 +293,7 @@
./services/networking/tcpcrypt.nix
./services/networking/teamspeak3.nix
./services/networking/tftpd.nix
./services/networking/tlsdated.nix
./services/networking/tox-bootstrapd.nix
./services/networking/unbound.nix
./services/networking/unifi.nix
@ -369,6 +373,7 @@
./system/boot/kernel.nix
./system/boot/kexec.nix
./system/boot/loader/efi.nix
./system/boot/loader/loader.nix
./system/boot/loader/generations-dir/generations-dir.nix
./system/boot/loader/grub/grub.nix
./system/boot/loader/grub/ipxe.nix

View File

@ -46,12 +46,14 @@ in
PERL5LIB = [ "/lib/perl5/site_perl" ];
KDEDIRS = [ "" ];
STRIGI_PLUGIN_PATH = [ "/lib/strigi/" ];
QT_PLUGIN_PATH = [ "/lib/qt4/plugins" "/lib/kde4/plugins" ];
QT_PLUGIN_PATH = [ "/lib/qt4/plugins" "/lib/kde4/plugins" "/lib/qt5/plugins" ];
QML2_IMPORT_PATH = [ "/lib/qml" ];
QTWEBKIT_PLUGIN_PATH = [ "/lib/mozilla/plugins/" ];
GTK_PATH = [ "/lib/gtk-2.0" "/lib/gtk-3.0" ];
XDG_CONFIG_DIRS = [ "/etc/xdg" ];
XDG_DATA_DIRS = [ "/share" ];
MOZ_PLUGIN_PATH = [ "/lib/mozilla/plugins" ];
LIBEXEC_PATH = [ "/lib/libexec" ];
};
environment.extraInit =

View File

@ -33,7 +33,8 @@ let
zipModules = list:
zipAttrsWith (n: v:
if tail v != [] then
if n == "_type" then (head v)
if all (o: isAttrs o && o ? _type) v then mkMerge v
else if n == "_type" then head v
else if n == "warnings" then concatLists v
else if n == "description" || n == "apply" then
abort "Cannot rename an option to multiple options."
@ -115,8 +116,8 @@ in zipModules ([]
++ obsolete [ "nix" "proxy" ] [ "networking" "proxy" "default" ]
# KDE
++ deprecated [ "kde" "extraPackages" ] [ "environment" "kdePackages" ]
# ++ obsolete [ "environment" "kdePackages" ] [ "environment" "systemPackages" ] # !!! doesn't work!
++ deprecated [ "kde" "extraPackages" ] [ "environment" "systemPackages" ]
++ obsolete [ "environment" "kdePackages" ] [ "environment" "systemPackages" ]
# Multiple efi bootloaders now
++ obsolete [ "boot" "loader" "efi" "efibootmgr" "enable" ] [ "boot" "loader" "efi" "canTouchEfiVariables" ]

View File

@ -156,6 +156,24 @@ in
'';
};
denyUSB = mkOption {
type = types.bool;
default = false;
description = ''
If true, then set <literal>GRKERNSEC_DENYUSB y</literal>.
This enables a sysctl with name
<literal>kernel.grsecurity.deny_new_usb</literal>. Setting
its value to <literal>1</literal> will prevent any new USB
devices from being recognized by the OS. Any attempted
USB device insertion will be logged.
This option is intended to be used against custom USB
devices designed to exploit vulnerabilities in various USB
device drivers.
'';
};
restrictProc = mkOption {
type = types.bool;
default = false;

View File

@ -31,6 +31,15 @@ in {
<literal>guest</literal> by default, so you should delete
this user if you intend to allow external access.
'';
type = types.str;
};
port = mkOption {
default = 5672;
description = ''
Port on which RabbitMQ will listen for AMQP connections.
'';
type = types.int;
};
dataDir = mkOption {
@ -77,6 +86,7 @@ in {
users.extraUsers.rabbitmq = {
description = "RabbitMQ server user";
home = "${cfg.dataDir}";
createHome = true;
group = "rabbitmq";
uid = config.ids.uids.rabbitmq;
};
@ -87,14 +97,16 @@ in {
description = "RabbitMQ Server";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
after = [ "network.target" ];
path = [ pkgs.rabbitmq_server ];
path = [ pkgs.rabbitmq_server pkgs.procps ];
environment = {
RABBITMQ_MNESIA_BASE = "${cfg.dataDir}/mnesia";
RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress;
RABBITMQ_NODE_PORT = toString cfg.port;
RABBITMQ_SERVER_START_ARGS = "-rabbit error_logger tty -rabbit sasl_error_logger false";
RABBITMQ_PID_FILE = "${cfg.dataDir}/pid";
SYS_PREFIX = "";
RABBITMQ_ENABLED_PLUGINS_FILE = pkgs.writeText "enabled_plugins" ''
[ ${concatStringsSep "," cfg.plugins} ].
@ -103,26 +115,22 @@ in {
serviceConfig = {
ExecStart = "${pkgs.rabbitmq_server}/sbin/rabbitmq-server";
ExecStop = "${pkgs.rabbitmq_server}/sbin/rabbitmqctl stop";
User = "rabbitmq";
Group = "rabbitmq";
PermissionsStartOnly = true;
WorkingDirectory = cfg.dataDir;
};
postStart = ''
rabbitmqctl wait ${cfg.dataDir}/pid
'';
preStart = ''
mkdir -p ${cfg.dataDir} && chmod 0700 ${cfg.dataDir}
if [ "$(id -u)" = 0 ]; then chown rabbitmq:rabbitmq ${cfg.dataDir}; fi
${optionalString (cfg.cookie != "") ''
echo -n ${cfg.cookie} > ${cfg.dataDir}/.erlang.cookie
chmod 400 ${cfg.dataDir}/.erlang.cookie
chown rabbitmq:rabbitmq ${cfg.dataDir}/.erlang.cookie
''}
mkdir -p /var/log/rabbitmq && chmod 0700 /var/log/rabbitmq
chown rabbitmq:rabbitmq /var/log/rabbitmq
'';
postStart = mkBefore "until rabbitmqctl status; do sleep 1; done";
};
};

View File

@ -20,23 +20,49 @@ in
services.openldap = {
enable = mkOption {
type = types.bool;
default = false;
description = "
Whether to enable the ldap server.
";
example = literalExample ''
openldap.enable = true;
openldap.extraConfig = '''
include ''${pkgs.openldap}/etc/openldap/schema/core.schema
include ''${pkgs.openldap}/etc/openldap/schema/cosine.schema
include ''${pkgs.openldap}/etc/openldap/schema/inetorgperson.schema
include ''${pkgs.openldap}/etc/openldap/schema/nis.schema
database bdb
suffix dc=example,dc=org
rootdn cn=admin,dc=example,dc=org
# NOTE: change after first start
rootpw secret
directory /var/db/openldap
''';
'';
};
user = mkOption {
type = types.string;
default = "openldap";
description = "User account under which slapd runs.";
};
group = mkOption {
type = types.string;
default = "openldap";
description = "Group account under which slapd runs.";
};
dataDir = mkOption {
type = types.string;
default = "/var/db/openldap";
description = "The database directory.";
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = "
sldapd.conf configuration
@ -60,22 +86,22 @@ in
preStart = ''
mkdir -p /var/run/slapd
chown -R ${cfg.user}:${cfg.group} /var/run/slapd
mkdir -p /var/db/openldap
chown -R ${cfg.user}:${cfg.group} /var/db/openldap
mkdir -p ${cfg.dataDir}
chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}
'';
serviceConfig.ExecStart = "${openldap}/libexec/slapd -u openldap -g openldap -d 0 -f ${configFile}";
serviceConfig.ExecStart = "${openldap}/libexec/slapd -u ${cfg.user} -g ${cfg.group} -d 0 -f ${configFile}";
};
users.extraUsers = optionalAttrs (cfg.user == "openldap") (singleton
{ name = "openldap";
users.extraUsers.openldap =
{ name = cfg.user;
group = cfg.group;
uid = config.ids.uids.openldap;
});
};
users.extraGroups = optionalAttrs (cfg.group == "openldap") (singleton
{ name = "openldap";
users.extraGroups.openldap =
{ name = cfg.group;
gid = config.ids.gids.openldap;
});
};
};
}

View File

@ -0,0 +1,62 @@
{ config, lib, pkgs, utils, ... }:
with lib;
{
###### interface
options = with types; {
services.freefall = {
enable = mkOption {
default = false;
description = ''
Whether to protect HP/Dell laptop hard drives (not SSDs) in free fall.
'';
type = bool;
};
devices = mkOption {
default = [ "/dev/sda" ];
description = ''
Device paths to all internal spinning hard drives.
'';
type = listOf string;
};
};
};
###### implementation
config = let
cfg = config.services.freefall;
mkService = dev:
assert dev != "";
let dev' = utils.escapeSystemdPath dev; in
nameValuePair "freefall-${dev'}"
{ description = "Free-fall protection for ${dev}";
after = [ "${dev'}.device" ];
wantedBy = [ "${dev'}.device" ];
path = [ pkgs.freefall ];
serviceConfig = {
ExecStart = "${pkgs.freefall}/bin/freefall ${dev}";
Restart = "on-failure";
Type = "forking";
};
};
in mkIf cfg.enable {
environment.systemPackages = [ pkgs.freefall ];
systemd.services = listToAttrs (map mkService cfg.devices);
};
}

View File

@ -0,0 +1,93 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.tlp;
tlp = pkgs.tlp.override { kmod = config.system.sbin.modprobe; };
confFile = pkgs.writeText "tlp" (builtins.readFile "${tlp}/etc/default/tlp" + cfg.extraConfig);
in
{
###### interface
options = {
services.tlp = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable the TLP daemon.";
};
extraConfig = mkOption {
type = types.str;
default = "";
description = "Additional configuration variables for TLP";
};
};
};
###### implementation
config = mkIf cfg.enable {
systemd.services = {
tlp = {
description = "TLP system startup/shutdown";
after = [ "multi-user.target" ];
wantedBy = [ "multi-user.target" ];
before = [ "shutdown.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${tlp}/bin/tlp init start";
ExecStop = "${tlp}/bin/tlp init stop";
};
};
tlp-sleep = {
description = "TLP suspend/resume";
wantedBy = [ "sleep.target" ];
before = [ "sleep.target" ];
unitConfig = {
StopWhenUnneeded = true;
};
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${tlp}/bin/tlp suspend";
ExecStop = "${tlp}/bin/tlp resume";
};
};
};
services.udev.packages = [ tlp ];
environment.etc = [{ source = confFile;
target = "default/tlp";
}
] ++ optional tlp.enableRDW {
source = "${tlp}/etc/NetworkManager/dispatcher.d/99tlp-rdw-nm";
target = "NetworkManager/dispatcher.d/99tlp-rdw-nm";
};
environment.systemPackages = [ tlp ];
};
}

View File

@ -0,0 +1,156 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.apache-kafka;
serverProperties =
if cfg.serverProperties != null then
cfg.serverProperties
else
''
# Generated by nixos
broker.id=${toString cfg.brokerId}
port=${toString cfg.port}
host.name=${cfg.hostname}
log.dirs=${concatStringsSep "," cfg.logDirs}
zookeeper.connect=${cfg.zookeeper}
${toString cfg.extraProperties}
'';
configDir = pkgs.buildEnv {
name = "apache-kafka-conf";
paths = [
(pkgs.writeTextDir "server.properties" serverProperties)
(pkgs.writeTextDir "log4j.properties" cfg.log4jProperties)
];
};
in {
options.services.apache-kafka = {
enable = mkOption {
description = "Whether to enable Apache Kafka.";
default = false;
type = types.uniq types.bool;
};
brokerId = mkOption {
description = "Broker ID.";
default = 0;
type = types.int;
};
port = mkOption {
description = "Port number the broker should listen on.";
default = 9092;
type = types.int;
};
hostname = mkOption {
description = "Hostname the broker should bind to.";
default = "localhost";
type = types.string;
};
logDirs = mkOption {
description = "Log file directories";
default = [ "/tmp/kafka-logs" ];
type = types.listOf types.path;
};
zookeeper = mkOption {
description = "Zookeeper connection string";
default = "localhost:2181";
type = types.string;
};
extraProperties = mkOption {
description = "Extra properties for server.properties.";
type = types.nullOr types.lines;
default = null;
};
serverProperties = mkOption {
description = ''
Complete server.properties content. Other server.properties config
options will be ignored if this option is used.
'';
type = types.nullOr types.lines;
default = null;
};
log4jProperties = mkOption {
description = "Kafka log4j property configuration.";
default = ''
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n
'';
type = types.lines;
};
jvmOptions = mkOption {
description = "Extra command line options for the JVM running Kafka.";
default = [
"-server"
"-Xmx1G"
"-Xms1G"
"-XX:+UseCompressedOops"
"-XX:+UseParNewGC"
"-XX:+UseConcMarkSweepGC"
"-XX:+CMSClassUnloadingEnabled"
"-XX:+CMSScavengeBeforeRemark"
"-XX:+DisableExplicitGC"
"-Djava.awt.headless=true"
"-Djava.net.preferIPv4Stack=true"
];
type = types.listOf types.string;
example = [
"-Djava.net.preferIPv4Stack=true"
"-Dcom.sun.management.jmxremote"
"-Dcom.sun.management.jmxremote.local.only=true"
];
};
};
config = mkIf cfg.enable {
environment.systemPackages = [pkgs.apacheKafka];
users.extraUsers = singleton {
name = "apache-kafka";
uid = config.ids.uids.apache-kafka;
description = "Apache Kafka daemon user";
home = head cfg.logDirs;
};
systemd.services.apache-kafka = {
description = "Apache Kafka Daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
serviceConfig = {
ExecStart = ''
${pkgs.jre}/bin/java \
-cp "${pkgs.apacheKafka}/libs/*:${configDir}" \
${toString cfg.jvmOptions} \
kafka.Kafka \
${configDir}/server.properties
'';
User = "apache-kafka";
PermissionsStartOnly = true;
};
preStart = ''
mkdir -m 0700 -p ${concatStringsSep " " cfg.logDirs}
if [ "$(id -u)" = 0 ]; then
chown apache-kafka ${concatStringsSep " " cfg.logDirs};
fi
'';
};
};
}

View File

@ -7,8 +7,10 @@ with lib;
let
cfg = config.services.gitlab;
ruby = pkgs.ruby;
rubyLibs = pkgs.rubyLibs;
ruby = pkgs.gitlab.ruby;
bundler = pkgs.bundler;
gemHome = "${pkgs.gitlab.env}/${ruby.gemPath}";
databaseYml = ''
production:
@ -38,13 +40,14 @@ let
gitlab-runner = pkgs.stdenv.mkDerivation rec {
name = "gitlab-runner";
buildInputs = [ pkgs.gitlab pkgs.rubyLibs.bundler pkgs.makeWrapper ];
buildInputs = [ pkgs.gitlab pkgs.bundler pkgs.makeWrapper ];
phases = "installPhase fixupPhase";
buildPhase = "";
installPhase = ''
mkdir -p $out/bin
makeWrapper ${rubyLibs.bundler}/bin/bundle $out/bin/gitlab-runner\
makeWrapper ${bundler}/bin/bundle $out/bin/gitlab-runner\
--set RAKEOPT '"-f ${pkgs.gitlab}/share/gitlab/Rakefile"'\
--set GEM_HOME '${gemHome}'\
--set UNICORN_PATH "${cfg.stateDir}/"\
--set GITLAB_PATH "${pkgs.gitlab}/share/gitlab/"\
--set GITLAB_APPLICATION_LOG_PATH "${cfg.stateDir}/log/application.log"\
@ -172,6 +175,7 @@ in {
after = [ "network.target" "redis.service" ];
wantedBy = [ "multi-user.target" ];
environment.HOME = "${cfg.stateDir}/home";
environment.GEM_HOME = gemHome;
environment.UNICORN_PATH = "${cfg.stateDir}/";
environment.GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
environment.GITLAB_APPLICATION_LOG_PATH = "${cfg.stateDir}/log/application.log";
@ -201,7 +205,7 @@ in {
Group = "gitlab";
TimeoutSec = "300";
WorkingDirectory = "${pkgs.gitlab}/share/gitlab";
ExecStart="${rubyLibs.bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailer -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.stateDir}/tmp/sidekiq.pid\"";
ExecStart="${bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailer -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.stateDir}/tmp/sidekiq.pid\"";
};
};
@ -209,6 +213,7 @@ in {
after = [ "network.target" "postgresql.service" "redis.service" ];
wantedBy = [ "multi-user.target" ];
environment.HOME = "${cfg.stateDir}/home";
environment.GEM_HOME = gemHome;
environment.UNICORN_PATH = "${cfg.stateDir}/";
environment.GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
environment.GITLAB_APPLICATION_LOG_PATH = "${cfg.stateDir}/log/application.log";
@ -263,7 +268,7 @@ in {
# force=yes disables the manual-interaction yes/no prompt
# which breaks without an stdin.
force=yes ${rubyLibs.bundler}/bin/bundle exec rake -f ${pkgs.gitlab}/share/gitlab/Rakefile gitlab:setup RAILS_ENV=production
force=yes ${bundler}/bin/bundle exec rake -f ${pkgs.gitlab}/share/gitlab/Rakefile gitlab:setup RAILS_ENV=production
fi
fi
@ -285,7 +290,7 @@ in {
Group = "gitlab";
TimeoutSec = "300";
WorkingDirectory = "${pkgs.gitlab}/share/gitlab";
ExecStart="${rubyLibs.bundler}/bin/bundle exec \"unicorn -c ${cfg.stateDir}/config/unicorn.rb -E production\"";
ExecStart="${bundler}/bin/bundle exec \"unicorn -c ${cfg.stateDir}/config/unicorn.rb -E production\"";
};
};

View File

@ -36,6 +36,7 @@ in
Initial administrative public key for Gitolite. This should
be an SSH Public Key. Note that this key will only be used
once, upon the first initialization of the Gitolite user.
The key string cannot have any line breaks in it.
'';
};

View File

@ -8,7 +8,6 @@ let
cfg = config.services.redmine;
ruby = pkgs.ruby;
rubyLibs = pkgs.rubyLibs;
databaseYml = ''
production:
@ -155,7 +154,7 @@ in {
environment.HOME = "${pkgs.redmine}/share/redmine";
environment.REDMINE_LANG = "en";
environment.GEM_HOME = "${pkgs.redmine}/share/redmine/vendor/bundle/ruby/1.9.1";
environment.GEM_PATH = "${rubyLibs.bundler}/lib/ruby/gems/1.9";
environment.GEM_PATH = "${bundler}/${bundler.ruby.gemPath}";
path = with pkgs; [
imagemagickBig
subversion

View File

@ -15,7 +15,7 @@ let
launcher = writeScriptBin "riemann-dash" ''
#!/bin/sh
exec ${rubyLibs.riemann_dash}/bin/riemann-dash ${conf}
exec ${pkgs.riemann-dash}/bin/riemann-dash ${conf}
'';
in {

View File

@ -356,7 +356,7 @@ in
''
If pings are allowed, this allows setting rate limits
on them. If non-null, this option should be in the form
of flags like "-limit 1/minute -limit-burst 5"
of flags like "--limit 1/minute --limit-burst 5"
'';
};

View File

@ -82,7 +82,8 @@ in
'';
serviceConfig = {
ExecStart = "@${ntp}/bin/ntpd ntpd -g -n ${ntpFlags}";
ExecStart = "@${ntp}/bin/ntpd ntpd -g ${ntpFlags}";
Type = "forking";
};
};

View File

@ -12,6 +12,7 @@ let
cfgFile = pkgs.writeText "openntpd.conf" ''
${concatStringsSep "\n" (map (s: "server ${s}") cfg.servers)}
${cfg.extraConfig}
'';
in
{
@ -25,6 +26,27 @@ in
type = types.listOf types.str;
inherit (options.services.ntp.servers) description;
};
extraConfig = mkOption {
type = with types; lines;
default = "";
example = ''
listen on 127.0.0.1
listen on ::1
'';
description = ''
Additional text appended to <filename>openntpd.conf</filename>.
'';
};
extraOptions = mkOption {
type = with types; string;
default = "";
example = "-s";
description = ''
Extra options used when launching openntpd.
'';
};
};
###### implementation
@ -42,7 +64,7 @@ in
systemd.services.openntpd = {
description = "OpenNTP Server";
wantedBy = [ "multi-user.target" ];
serviceConfig.ExecStart = "${package}/sbin/ntpd -d -f ${cfgFile}";
serviceConfig.ExecStart = "${package}/sbin/ntpd -d -f ${cfgFile} ${cfg.extraOptions}";
};
};
}

View File

@ -0,0 +1,110 @@
{ config, lib, pkgs, ... }:
with lib;
let
inherit (pkgs) coreutils tlsdate;
cfg = config.services.tlsdated;
in
{
###### interface
options = {
services.tlsdated = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable tlsdated daemon.
'';
};
extraOptions = mkOption {
type = types.string;
description = ''
Additional command line arguments to pass to tlsdated.
'';
};
sources = mkOption {
type = types.listOf (types.submodule {
options = {
host = mkOption {
type = types.string;
description = ''
Remote hostname.
'';
};
port = mkOption {
type = types.int;
description = ''
Remote port.
'';
};
proxy = mkOption {
type = types.nullOr types.string;
default = null;
description = ''
The proxy argument expects HTTP, SOCKS4A or SOCKS5 formatted as followed:
http://127.0.0.1:8118
socks4a://127.0.0.1:9050
socks5://127.0.0.1:9050
The proxy support should not leak DNS requests and is suitable for use with Tor.
'';
};
};
});
default = [
{
host = "www.ptb.de";
port = 443;
proxy = null;
}
];
description = ''
You can list one or more sources to fetch time from.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
# Make tools such as tlsdate available in the system path
environment.systemPackages = [ tlsdate ];
systemd.services.tlsdated = {
description = "tlsdated daemon";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
# XXX because pkgs.tlsdate is compiled to run as nobody:nogroup, we
# hard-code base-path to /tmp and use PrivateTmp.
ExecStart = "${tlsdate}/bin/tlsdated -f ${pkgs.writeText "tlsdated.confg" ''
base-path /tmp
${concatMapStrings (src: ''
source
host ${src.host}
port ${toString src.port}
proxy ${if src.proxy == null then "none" else src.proxy}
end
'') cfg.sources}
''} ${cfg.extraOptions}";
PrivateTmp = "yes";
};
};
};
}

View File

@ -682,6 +682,7 @@ in
serviceConfig.Type = "forking";
serviceConfig.PIDFile = "${mainCfg.stateDir}/httpd.pid";
serviceConfig.Restart = "always";
serviceConfig.RestartSec = "5s";
};
};

View File

@ -0,0 +1,577 @@
{ config, lib, pkgs, serverInfo, php, ... }:
with lib;
let
httpd = serverInfo.serverConfig.package;
version24 = !versionOlder httpd.version "2.4";
allGranted = if version24 then ''
Require all granted
'' else ''
Order allow,deny
Allow from all
'';
owncloudConfig = pkgs.writeText "config.php"
''
<?php
/* Only enable this for local development and not in productive environments */
/* This will disable the minifier and outputs some additional debug informations */
define("DEBUG", false);
$CONFIG = array(
/* Flag to indicate ownCloud is successfully installed (true = installed) */
"installed" => true,
/* Type of database, can be sqlite, mysql or pgsql */
"dbtype" => "${config.dbType}",
/* Name of the ownCloud database */
"dbname" => "${config.dbName}",
/* User to access the ownCloud database */
"dbuser" => "${config.dbUser}",
/* Password to access the ownCloud database */
"dbpassword" => "${config.dbPassword}",
/* Host running the ownCloud database. To specify a port use "HOSTNAME:####"; to specify a unix sockets use "localhost:/path/to/socket". */
"dbhost" => "${config.dbServer}",
/* Prefix for the ownCloud tables in the database */
"dbtableprefix" => "",
/* Force use of HTTPS connection (true = use HTTPS) */
"forcessl" => ${config.forceSSL},
/* Blacklist a specific file and disallow the upload of files with this name - WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING. */
"blacklisted_files" => array('.htaccess'),
/* The automatic hostname detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */
"overwritehost" => "${config.overwriteHost}",
/* The automatic protocol detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the protocol detection. For example "https" */
"overwriteprotocol" => "${config.overwriteProtocol}",
/* The automatic webroot detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud". The value "/" can be used to remove the root. */
"overwritewebroot" => "${config.overwriteWebRoot}",
/* The automatic detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */
"overwritecondaddr" => "",
/* A proxy to use to connect to the internet. For example "myproxy.org:88" */
"proxy" => "",
/* The optional authentication for the proxy to use to connect to the internet. The format is: [username]:[password] */
"proxyuserpwd" => "",
/* List of trusted domains, to prevent host header poisoning ownCloud is only using these Host headers */
'trusted_domains' => array('${config.trustedDomain}'),
/* Theme to use for ownCloud */
"theme" => "",
/* Optional ownCloud default language - overrides automatic language detection on public pages like login or shared items. This has no effect on the user's language preference configured under "personal -> language" once they have logged in */
"default_language" => "${config.defaultLang}",
/* Path to the parent directory of the 3rdparty directory */
"3rdpartyroot" => "",
/* URL to the parent directory of the 3rdparty directory, as seen by the browser */
"3rdpartyurl" => "",
/* Default app to open on login.
* This can be a comma-separated list of app ids.
* If the first app is not enabled for the current user,
* it will try with the second one and so on. If no enabled app could be found,
* the "files" app will be displayed instead. */
"defaultapp" => "${config.defaultApp}",
/* Enable the help menu item in the settings */
"knowledgebaseenabled" => true,
/* Enable installing apps from the appstore */
"appstoreenabled" => ${config.appStoreEnable},
/* URL of the appstore to use, server should understand OCS */
"appstoreurl" => "https://api.owncloud.com/v1",
/* Domain name used by ownCloud for the sender mail address, e.g. no-reply@example.com */
"mail_domain" => "${config.mailFromDomain}",
/* FROM address used by ownCloud for the sender mail address, e.g. owncloud@example.com
This setting overwrites the built in 'sharing-noreply' and 'lostpassword-noreply'
FROM addresses, that ownCloud uses
*/
"mail_from_address" => "${config.mailFrom}",
/* Enable SMTP class debugging */
"mail_smtpdebug" => false,
/* Mode to use for sending mail, can be sendmail, smtp, qmail or php, see PHPMailer docs */
"mail_smtpmode" => "${config.SMTPMode}",
/* Host to use for sending mail, depends on mail_smtpmode if this is used */
"mail_smtphost" => "${config.SMTPHost}",
/* Port to use for sending mail, depends on mail_smtpmode if this is used */
"mail_smtpport" => ${config.SMTPPort},
/* SMTP server timeout in seconds for sending mail, depends on mail_smtpmode if this is used */
"mail_smtptimeout" => ${config.SMTPTimeout},
/* SMTP connection prefix or sending mail, depends on mail_smtpmode if this is used.
Can be "", ssl or tls */
"mail_smtpsecure" => "${config.SMTPSecure}",
/* authentication needed to send mail, depends on mail_smtpmode if this is used
* (false = disable authentication)
*/
"mail_smtpauth" => ${config.SMTPAuth},
/* authentication type needed to send mail, depends on mail_smtpmode if this is used
* Can be LOGIN (default), PLAIN or NTLM */
"mail_smtpauthtype" => "${config.SMTPAuthType}",
/* Username to use for sendmail mail, depends on mail_smtpauth if this is used */
"mail_smtpname" => "${config.SMTPUser}",
/* Password to use for sendmail mail, depends on mail_smtpauth if this is used */
"mail_smtppassword" => "${config.SMTPPass}",
/* memcached servers (Only used when xCache, APC and APCu are absent.) */
"memcached_servers" => array(
// hostname, port and optional weight. Also see:
// http://www.php.net/manual/en/memcached.addservers.php
// http://www.php.net/manual/en/memcached.addserver.php
//array('localhost', 11211),
//array('other.host.local', 11211),
),
/* How long should ownCloud keep deleted files in the trash bin, default value: 30 days */
'trashbin_retention_obligation' => 30,
/* Disable/Enable auto expire for the trash bin, by default auto expire is enabled */
'trashbin_auto_expire' => true,
/* allow user to change his display name, if it is supported by the back-end */
'allow_user_to_change_display_name' => true,
/* Check 3rdparty apps for malicious code fragments */
"appcodechecker" => true,
/* Check if ownCloud is up to date */
"updatechecker" => true,
/* Are we connected to the internet or are we running in a closed network? */
"has_internet_connection" => true,
/* Check if the ownCloud WebDAV server is working correctly. Can be disabled if not needed in special situations*/
"check_for_working_webdav" => true,
/* Check if .htaccess protection of data is working correctly. Can be disabled if not needed in special situations*/
"check_for_working_htaccess" => true,
/* Place to log to, can be owncloud and syslog (owncloud is log menu item in admin menu) */
"log_type" => "owncloud",
/* File for the owncloud logger to log to, (default is ownloud.log in the data dir) */
"logfile" => "${config.dataDir}/owncloud.log",
/* Loglevel to start logging at. 0=DEBUG, 1=INFO, 2=WARN, 3=ERROR (default is WARN) */
"loglevel" => "2",
/* date format to be used while writing to the owncloud logfile */
'logdateformat' => 'F d, Y H:i:s',
/* timezone used while writing to the owncloud logfile (default: UTC) */
'logtimezone' => '${serverInfo.fullConfig.time.timeZone}',
/* Append all database queries and parameters to the log file.
(watch out, this option can increase the size of your log file)*/
"log_query" => false,
/* Whether ownCloud should log the last successfull cron exec */
"cron_log" => true,
/*
* Configure the size in bytes log rotation should happen, 0 or false disables the rotation.
* This rotates the current owncloud logfile to a new name, this way the total log usage
* will stay limited and older entries are available for a while longer. The
* total disk usage is twice the configured size.
* WARNING: When you use this, the log entries will eventually be lost.
*/
'log_rotate_size' => "104857600", // 104857600, // 100 MiB
/* Lifetime of the remember login cookie, default is 15 days */
"remember_login_cookie_lifetime" => 1296000,
/* Life time of a session after inactivity */
"session_lifetime" => 86400,
/*
* Enable/disable session keep alive when a user is logged in in the Web UI.
* This is achieved by sending a "heartbeat" to the server to prevent
* the session timing out.
*/
"session_keepalive" => true,
/* Custom CSP policy, changing this will overwrite the standard policy */
"custom_csp_policy" => "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:; media-src *",
/* Enable/disable X-Frame-Restriction */
/* HIGH SECURITY RISK IF DISABLED*/
"xframe_restriction" => true,
/* The directory where the user data is stored, default to data in the owncloud
* directory. The sqlite database is also stored here, when sqlite is used.
*/
"datadirectory" => "${config.dataDir}/storage",
/* The directory where the skeleton files are located. These files will be copied to the data
* directory of new users. Leave empty to not copy any skeleton files.
*/
// "skeletondirectory" => "",
/* Enable maintenance mode to disable ownCloud
If you want to prevent users to login to ownCloud before you start doing some maintenance work,
you need to set the value of the maintenance parameter to true.
Please keep in mind that users who are already logged-in are kicked out of ownCloud instantly.
*/
"maintenance" => false,
"apps_paths" => array(
/* Set an array of path for your apps directories
key 'path' is for the fs path and the key 'url' is for the http path to your
applications paths. 'writable' indicates whether the user can install apps in this folder.
You must have at least 1 app folder writable or you must set the parameter 'appstoreenabled' to false
*/
array(
'path'=> '${config.dataDir}/apps',
'url' => '/apps',
'writable' => true,
),
),
'user_backends'=>array(
/*
array(
'class'=>'OC_User_IMAP',
'arguments'=>array('{imap.gmail.com:993/imap/ssl}INBOX')
)
*/
),
//links to custom clients
'customclient_desktop' => ''', //http://owncloud.org/sync-clients/
'customclient_android' => ''', //https://play.google.com/store/apps/details?id=com.owncloud.android
'customclient_ios' => ''', //https://itunes.apple.com/us/app/owncloud/id543672169?mt=8
// PREVIEW
'enable_previews' => true,
/* the max width of a generated preview, if value is null, there is no limit */
'preview_max_x' => null,
/* the max height of a generated preview, if value is null, there is no limit */
'preview_max_y' => null,
/* the max factor to scale a preview, default is set to 10 */
'preview_max_scale_factor' => 10,
/* custom path for libreoffice / openoffice binary */
'preview_libreoffice_path' => '${config.libreofficePath}',
/* cl parameters for libreoffice / openoffice */
'preview_office_cl_parameters' => ''',
/* whether avatars should be enabled */
'enable_avatars' => true,
// Extra SSL options to be used for configuration
'openssl' => array(
'config' => '/etc/ssl/openssl.cnf',
),
// default cipher used for file encryption, currently we support AES-128-CFB and AES-256-CFB
'cipher' => 'AES-256-CFB',
/* whether usage of the instance should be restricted to admin users only */
'singleuser' => false,
/* all css and js files will be served by the web server statically in one js file and ons css file*/
'asset-pipeline.enabled' => false,
/* where mount.json file should be stored, defaults to data/mount.json */
'mount_file' => ''',
/*
* Location of the cache folder, defaults to "data/$user/cache" where "$user" is the current user.
*
* When specified, the format will change to "$cache_path/$user" where "$cache_path" is the configured
* cache directory and "$user" is the user.
*
*/
'cache_path' => ''',
/* EXPERIMENTAL: option whether to include external storage in quota calculation, defaults to false */
'quota_include_external_storage' => false,
/*
* specifies how often the filesystem is checked for changes made outside owncloud
* 0 -> never check the filesystem for outside changes, provides a performance increase when it's certain that no changes are made directly to the filesystem
* 1 -> check each file or folder at most once per request, recomended for general use if outside changes might happen
* 2 -> check every time the filesystem is used, causes a performance hit when using external storages, not recomended for regular use
*/
'filesystem_check_changes' => 1,
/* If true, prevent owncloud from changing the cache due to changes in the filesystem for all storage */
'filesystem_cache_readonly' => false,
/**
* define default folder for shared files and folders
*/
'share_folder' => '/',
'version' => '${pkgs.owncloud.version}',
'openssl' => '${pkgs.openssl}/bin/openssl'
);
'';
in
rec {
extraConfig =
''
ServerName ${config.siteName}
ServerAdmin ${config.adminAddr}
DocumentRoot ${documentRoot}
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
<Directory ${pkgs.owncloud}>
${builtins.readFile "${pkgs.owncloud}/.htaccess"}
</Directory>
'';
globalEnvVars = [
{ name = "OC_CONFIG_PATH"; value = "${config.dataDir}/config/"; }
];
documentRoot = pkgs.owncloud;
enablePHP = true;
options = {
id = mkOption {
default = "main";
description = ''
A unique identifier necessary to keep multiple owncloud server
instances on the same machine apart. This is used to
disambiguate the administrative scripts, which get names like
mediawiki-$id-change-password.
'';
};
adminUser = mkOption {
default = "owncloud";
description = "The admin user name for accessing owncloud.";
};
adminPassword = mkOption {
description = "The admin password for accessing owncloud.
Warning: this is stored in cleartext in the Nix store!";
};
dbType = mkOption {
default = "pgsql";
description = "Type of database, in NixOS, for now, only pgsql.";
};
dbName = mkOption {
default = "owncloud";
description = "Name of the database that holds the owncloud data.";
};
dbServer = mkOption {
default = "localhost:5432";
description = ''
The location of the database server.
'';
};
dbUser = mkOption {
default = "owncloud";
description = "The user name for accessing the database.";
};
dbPassword = mkOption {
example = "foobar";
description = ''
The password of the database user. Warning: this is stored in
cleartext in the Nix store!
'';
};
forceSSL = mkOption {
default = "false";
description = "Force use of HTTPS connection.";
};
adminAddr = mkOption {
default = serverInfo.serverConfig.adminAddr;
example = "admin@example.com";
description = ''
Emergency contact e-mail address. Defaults to the Apache
admin address.
'';
};
siteName = mkOption {
default = "owncloud";
example = "Foobar owncloud";
description = "Name of the owncloud";
};
trustedDomain = mkOption {
default = "";
description = "Trusted domain";
};
defaultLang = mkOption {
default = "";
description = "Default language";
};
defaultApp = mkOption {
default = "";
description = "Default application";
};
appStoreEnable = mkOption {
default = "true";
description = "Enable app store";
};
mailFrom = mkOption {
default = "no-reply";
description = "Mail from";
};
mailFromDomain = mkOption {
default = "example.xyz";
description = "Mail from domain";
};
SMTPMode = mkOption {
default = "smtp";
description = "Which mode to use for sending mail: sendmail, smtp, qmail or php.";
};
SMTPHost = mkOption {
default = "";
description = "SMTP host";
};
SMTPPort = mkOption {
default = "25";
description = "SMTP port";
};
SMTPTimeout = mkOption {
default = "10";
description = "SMTP mode";
};
SMTPSecure = mkOption {
default = "ssl";
description = "SMTP secure";
};
SMTPAuth = mkOption {
default = "true";
description = "SMTP auth";
};
SMTPAuthType = mkOption {
default = "LOGIN";
description = "SMTP auth type";
};
SMTPUser = mkOption {
default = "";
description = "SMTP user";
};
SMTPPass = mkOption {
default = "";
description = "SMTP pass";
};
dataDir = mkOption {
default = "/var/lib/owncloud";
description = "Data dir";
};
libreofficePath = mkOption {
default = "/usr/bin/libreoffice";
description = "Path for LibreOffice/OpenOffice binary.";
};
overwriteHost = mkOption {
default = "";
description = "The automatic hostname detection of ownCloud can fail in
certain reverse proxy and CLI/cron situations. This option allows to
manually override the automatic detection. You can also add a port.";
};
overwriteProtocol = mkOption {
default = "";
description = "The automatic protocol detection of ownCloud can fail in
certain reverse proxy and CLI/cron situations. This option allows to
manually override the protocol detection.";
};
overwriteWebRoot = mkOption {
default = "";
description = "The automatic webroot detection of ownCloud can fail in
certain reverse proxy and CLI/cron situations. This option allows to
manually override the automatic detection.";
};
};
startupScript = pkgs.writeScript "owncloud_startup.sh" ''
if [ ! -d ${config.dataDir}/config ]; then
mkdir -p ${config.dataDir}/config
cp ${owncloudConfig} ${config.dataDir}/config/config.php
mkdir -p ${config.dataDir}/storage
mkdir -p ${config.dataDir}/apps
cp -r ${pkgs.owncloud}/apps/* ${config.dataDir}/apps/
chmod -R ug+rw ${config.dataDir}
chmod -R o-rwx ${config.dataDir}
chown -R wwwrun:wwwrun ${config.dataDir}
${pkgs.postgresql}/bin/createuser -s -r postgres
${pkgs.postgresql}/bin/createuser --no-superuser --no-createdb --no-createrole "${config.dbUser}" || true
${pkgs.postgresql}/bin/createdb "${config.dbName}" -O "${config.dbUser}" || true
${pkgs.sudo}/bin/sudo -u postgres ${pkgs.postgresql}/bin/psql -U postgres -d postgres -c "alter user ${config.dbUser} with password '${config.dbPassword}';" || true
QUERY="CREATE TABLE appconfig (appid VARCHAR( 255 ) NOT NULL ,configkey VARCHAR( 255 ) NOT NULL ,configvalue VARCHAR( 255 ) NOT NULL); GRANT ALL ON appconfig TO ${config.dbUser}; ALTER TABLE appconfig OWNER TO ${config.dbUser};"
${pkgs.sudo}/bin/sudo -u postgres ${pkgs.postgresql}/bin/psql -h "/tmp" -U postgres -d ${config.dbName} -Atw -c "$QUERY" || true
fi
${php}/bin/php ${pkgs.owncloud}/occ upgrade || true
chown wwwrun:wwwrun ${config.dataDir}/owncloud.log || true
QUERY="INSERT INTO groups (gid) values('admin'); INSERT INTO users (uid,password) values('${config.adminUser}','`echo -n "${config.adminPassword}" | ${pkgs.openssl}/bin/openssl dgst -sha1 | ${pkgs.gawk}/bin/awk '{print $2}'`'); INSERT INTO group_user (gid,uid) values('admin','${config.adminUser}');"
${pkgs.sudo}/bin/sudo -u postgres ${pkgs.postgresql}/bin/psql -h "/tmp" -U postgres -d ${config.dbName} -Atw -c "$QUERY" || true
'';
}

View File

@ -18,8 +18,8 @@ in
# determines the default: later modules (if enabled) are preferred.
# E.g., if KDE is enabled, it supersedes xterm.
imports = [
./none.nix ./xterm.nix ./xfce.nix ./kde4.nix
./e19.nix ./gnome3.nix ./xbmc.nix
./none.nix ./xterm.nix ./xfce.nix ./kde4.nix ./kde5.nix
./e19.nix ./gnome3.nix ./xbmc.nix ./kodi.nix
];
options = {

View File

@ -70,14 +70,6 @@ in
description = "Custom kde-workspace, used for NixOS rebranding.";
};
};
environment.kdePackages = mkOption {
default = [];
example = literalExample "[ pkgs.kde4.kdesdk ]";
type = types.listOf types.package;
description = "This option is obsolete. Please use <option>environment.systemPackages</option> instead.";
};
};

View File

@ -0,0 +1,143 @@
{ config, lib, pkgs, ... }:
with lib;
let
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.kde5;
xorg = pkgs.xorg;
phononBackends = {
gstreamer = [
pkgs.phonon_backend_gstreamer
pkgs.gst_all.gstPluginsBase
pkgs.gst_all.gstPluginsGood
pkgs.gst_all.gstPluginsUgly
pkgs.gst_all.gstPluginsBad
pkgs.gst_all.gstFfmpeg # for mp3 playback
pkgs.phonon_qt5_backend_gstreamer
pkgs.gst_all_1.gst-plugins-base
pkgs.gst_all_1.gst-plugins-good
pkgs.gst_all_1.gst-plugins-ugly
pkgs.gst_all_1.gst-plugins-bad
pkgs.gst_all_1.gst-libav # for mp3 playback
];
vlc = [
pkgs.phonon_qt5_backend_vlc
pkgs.phonon_backend_vlc
];
};
phononBackendPackages = flip concatMap cfg.phononBackends
(name: attrByPath [name] (throw "unknown phonon backend `${name}'") phononBackends);
kf5 = pkgs.kf5_stable;
plasma5 = pkgs.plasma5_stable;
kdeApps = pkgs.kdeApps_stable;
in
{
options = {
services.xserver.desktopManager.kde5 = {
enable = mkOption {
type = types.bool;
default = false;
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
};
phononBackends = mkOption {
type = types.listOf types.str;
default = ["gstreamer"];
example = ["gstreamer" "vlc"];
description = ''
Phonon backends to use in KDE. Only the VLC and gstreamer backends are
available. The VLC backend is preferred by upstream.
'';
};
};
};
config = mkIf (xcfg.enable && cfg.enable) {
warnings = optional config.services.xserver.desktopManager.kde4.enable
"KDE 4 should not be enabled at the same time as KDE 5";
services.xserver.desktopManager.session = singleton {
name = "kde5";
bgSupport = true;
start = ''exec ${plasma5.startkde}/bin/startkde;'';
};
security.setuidOwners = singleton {
program = "kcheckpass";
source = "${plasma5.plasma-workspace}/lib/libexec/kcheckpass";
owner = "root";
group = "root";
setuid = true;
};
environment.systemPackages = with plasma5; with kf5;
(builtins.attrValues
(removeAttrs plasma5
[ "deepOverride" "override" "overrideDerivation"
"recurseForDerivations" "scope"
]))
++
(builtins.attrValues
(removeAttrs kf5
[ "deepOverride" "extra-cmake-modules" "mkDerivation" "override"
"overrideDerivation" "recurseForDerivations" "scope"
]))
++
[
pkgs.qt4 # qtconfig is the only way to set Qt 4 theme
kdeApps.kde-baseapps
kdeApps.kde-base-artwork
kdeApps.kde-workspace
kdeApps.kde-runtime
kdeApps.kmix
kdeApps.konsole
kdeApps.oxygen-icons
pkgs.hicolor_icon_theme
pkgs.orion # GTK theme, nearly identical to Breeze
]
++ (optional config.networking.networkmanager.enable plasma-nm)
++ phononBackendPackages;
environment.pathsToLink = [ "/share" ];
environment.etc = singleton {
source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
target = "X11/xkb";
};
environment.profileRelativeEnvVars =
mkIf (lib.elem "gstreamer" cfg.phononBackends)
{
GST_PLUGIN_SYSTEM_PATH = [ "/lib/gstreamer-0.10" ];
GST_PLUGIN_SYSTEM_PATH_1_0 = [ "/lib/gstreamer-1.0" ];
};
fonts.fonts = [ plasma5.oxygen-fonts ];
# Enable helpful DBus services.
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
security.pam.services.kde = { allowNullPassword = true; };
};
}

View File

@ -0,0 +1,31 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.xserver.desktopManager.kodi;
in
{
options = {
services.xserver.desktopManager.kodi = {
enable = mkOption {
default = false;
example = true;
description = "Enable the kodi multimedia center.";
};
};
};
config = mkIf cfg.enable {
services.xserver.desktopManager.session = [{
name = "kodi";
start = ''
${pkgs.kodi}/bin/kodi --lircdev /var/run/lirc/lircd --standalone &
waitPID=$!
'';
}];
environment.systemPackages = [ pkgs.kodi ];
};
}

View File

@ -151,6 +151,9 @@ in
description = "KDM user";
};
environment.systemPackages =
[ pkgs.kde4.kde_wallpapers ]; # contains kdm's default background
};
}

View File

@ -196,7 +196,7 @@ in
};
timeout = mkOption {
default = 5;
default = if (config.boot.loader.timeout != null) then config.boot.loader.timeout else -1;
type = types.int;
description = ''
Timeout (in seconds) until GRUB boots the default menu item.

View File

@ -31,7 +31,7 @@ in {
};
timeout = mkOption {
default = null;
default = if config.boot.loader.timeout == null then 10000 else config.boot.loader.timeout;
example = 4;

View File

@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
with lib;
{
options = {
boot.loader.timeout = mkOption {
default = 5;
type = types.nullOr types.int;
description = ''
Timeout (in seconds) until loader boots the default menu item. Use null if the loader menu should be displayed indefinitely.
'';
};
};
}

View File

@ -10,10 +10,18 @@ with lib;
system.sbin.modprobe = mkOption {
internal = true;
default = pkgs.writeTextFile {
default = pkgs.stdenv.mkDerivation {
name = "modprobe";
destination = "/sbin/modprobe";
executable = true;
buildCommand = ''
mkdir -p $out/bin
for i in ${pkgs.kmod}/sbin/*; do
name=$(basename $i)
echo "$text" > $out/bin/$name
echo 'exec '$i' "$@"' >> $out/bin/$name
chmod +x $out/bin/$name
done
ln -s bin $out/sbin
'';
text =
''
#! ${pkgs.stdenv.shell}
@ -26,7 +34,6 @@ with lib;
MODULE_DIR=/run/booted-system/kernel-modules/lib/modules/
fi
exec ${pkgs.kmod}/sbin/modprobe "$@"
'';
};
description = ''

View File

@ -142,7 +142,10 @@ in
++ config.system.fsPackages;
environment.etc.fstab.text =
''
let
fsToSkipCheck = [ "none" "btrfs" "zfs" "tmpfs" "nfs" ];
skipCheck = fs: fs.noCheck || fs.device == "none" || builtins.elem fs.fsType fsToSkipCheck;
in ''
# This is a generated file. Do not edit!
# Filesystems.
@ -154,7 +157,7 @@ in
+ " " + fs.fsType
+ " " + fs.options
+ " 0"
+ " " + (if fs.fsType == "none" || fs.device == "none" || fs.fsType == "btrfs" || fs.fsType == "tmpfs" || fs.noCheck then "0" else
+ " " + (if skipCheck fs then "0" else
if fs.mountPoint == "/" then "1" else "2")
+ "\n"
)}

View File

@ -54,6 +54,14 @@ in
'';
};
boot.enableContainers = mkOption {
type = types.bool;
default = !config.boot.isContainer;
description = ''
Whether to enable support for nixos containers.
'';
};
containers = mkOption {
type = types.attrsOf (types.submodule (
{ config, options, name, ... }:
@ -164,7 +172,7 @@ in
};
config = mkIf (!config.boot.isContainer) {
config = mkIf (config.boot.enableContainers) {
systemd.services."container@" =
{ description = "Container '%i'";

View File

@ -104,6 +104,10 @@ if ($action eq "create") {
die "$0: container $containerName already exists\n" if -e $confFile;
# Due to interface name length restrictions, container names must
# be restricted too.
die "$0: container name $containerName is too long\n" if length $containerName > 11;
# Get an unused IP address.
my %usedIPs;
foreach my $confFile2 (glob "/etc/containers/*.conf") {

View File

@ -252,7 +252,7 @@ in rec {
tests.firefox = callTest tests/firefox.nix {};
tests.firewall = callTest tests/firewall.nix {};
tests.fleet = scrubDrv (import tests/fleet.nix { system = "x86_64-linux"; });
tests.gitlab = callTest tests/gitlab.nix {};
#tests.gitlab = callTest tests/gitlab.nix {};
tests.gnome3 = callTest tests/gnome3.nix {};
tests.installer.grub1 = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).grub1.test);
tests.installer.lvm = forAllSystems (system: scrubDrv (import tests/installer.nix { inherit system; }).lvm.test);

View File

@ -10,6 +10,7 @@ import ./make-test.nix (
name = "chromium";
machine.imports = [ ./common/x11.nix ];
machine.virtualisation.memorySize = 1024;
startupHTML = pkgs.writeText "chromium-startup.html" ''
<!DOCTYPE html>

View File

@ -1,7 +1,8 @@
{ stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base
, gst_plugins_good, gst_plugins_bad, gst_plugins_ugly, gst_ffmpeg
, liblastfm, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist
, usbmuxd, libmtp, gvfs, libcdio, protobuf, libspotify, qca2, pkgconfig
, sparsehash, config }:
, sparsehash, config, makeWrapper }:
let withSpotify = config.clementine.spotify or false;
in
@ -22,6 +23,9 @@ stdenv.mkDerivation {
gettext
glew
gst_plugins_base
gst_plugins_good
gst_plugins_ugly
gst_ffmpeg
gstreamer
gvfs
libcdio
@ -29,6 +33,7 @@ stdenv.mkDerivation {
liblastfm
libmtp
libplist
makeWrapper
pkgconfig
protobuf
qca2
@ -42,6 +47,11 @@ stdenv.mkDerivation {
enableParallelBuilding = true;
postInstall = ''
wrapProgram $out/bin/clementine \
--set GST_PLUGIN_SYSTEM_PATH "$GST_PLUGIN_SYSTEM_PATH"
'';
meta = with stdenv.lib; {
homepage = "http://www.clementine-player.org";
description = "A multiplatform music player";

View File

@ -2,15 +2,15 @@
, libxslt, lv2, pkgconfig, premake3, xlibs }:
let
rev = "99efbf0b";
rev = "3bfddf7f";
in
stdenv.mkDerivation rec {
name = "distrho-${rev}";
src = fetchgit {
url = "https://github.com/falkTX/DISTRHO.git";
url = "https://github.com/DISTRHO/DISTRHO-Ports.git";
inherit rev;
sha256 = "ed26a6edca19ebb8260b3dc042f69c32162e1d91179fb9d22da42ec7131936f9";
sha256 = "55dc52921bb757c3213da5ef6cab40909f39be3e3b41ba4c6cd66ad90bfb2e6c";
};
patchPhase = ''
@ -50,5 +50,9 @@ stdenv.mkDerivation rec {
'';
maintainers = [ maintainers.goibhniu ];
platforms = platforms.linux;
# The old repo was removed and split into multiple repos. More
# work is required to get everything to build and work.
broken = true;
};
}

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "drumkv1-${version}";
version = "0.5.1";
version = "0.6.0";
src = fetchurl {
url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
sha256 = "1cih4f22922ndk8yrcf955fvzkd8mh7qz1xcdyn3xybs7ackgarq";
sha256 = "1y3imsh059y9sihr92f3drwmcby4x3krmhly111ahwkydb94kphw";
};
buildInputs = [ jack2 libsndfile lv2 qt4 ];

View File

@ -0,0 +1,21 @@
{ stdenv, fetchurl, cmake }:
stdenv.mkDerivation rec {
version = "0.6.0";
name = "game-music-emu-${version}";
src = fetchurl {
url = "https://game-music-emu.googlecode.com/files/${name}.tar.bz2";
sha256 = "11s9l938nxbrk7qb2k1ppfgizcz00cakbxgv0gajc6hyqv882vjh";
};
buildInputs = [ cmake ];
meta = with stdenv.lib; {
homepage = https://code.google.com/p/game-music-emu/;
description = "A collection of video game music file emulators";
license = licenses.lgpl21Plus;
platforms = platforms.all;
maintainers = [ ];
};
}

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
name = "guitarix-${version}";
version = "0.32.1";
version = "0.32.2";
src = fetchurl {
url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.bz2";
sha256 = "1sl7ca1lj0wchh3xq7qw3zqrbyyh4r8cwljb9i3yplpsn90d1i3k";
sha256 = "0mh4ma48hc8kq3xw25y1zjcrwgsdb0scd36vzw50a1qmmnh74rgp";
};
buildInputs = [

View File

@ -0,0 +1,32 @@
{ stdenv, fetchFromGitHub, libav, libkeyfinder }:
stdenv.mkDerivation rec {
version = "20150125";
name = "keyfinder-cli-${version}";
src = fetchFromGitHub {
repo = "keyfinder-cli";
owner = "EvanPurkhiser";
rev = "3a6f598b3661fdba73ada81cd200a6e56c23ddca";
sha256 = "05k4g9zdzi4q81p8lax9b2j4bcg1bpp04sdbza5i5pfz2fng2cf7";
};
meta = with stdenv.lib; {
description = "Musical key detection for digital audio (command-line tool)";
longDescription = ''
This small utility is the automation-oriented DJ's best friend. By making
use of Ibrahim Sha'ath's high quality libKeyFinder library, it can be
used to estimate the musical key of many different audio formats.
'';
homepage = https://github.com/EvanPurkhiser/keyfinder-cli;
license = with licenses; gpl3Plus;
platforms = with platforms; linux;
maintainers = with maintainers; [ nckx ];
};
buildInputs = [ libav libkeyfinder ];
makeFlagsArray = "PREFIX=$(out)";
enableParallelBuilding = true;
}

View File

@ -0,0 +1,42 @@
{ stdenv, fetchFromGitHub, libav_0_8, libkeyfinder, qt5, taglib }:
stdenv.mkDerivation rec {
version = "1.25-17-gf670607";
name = "keyfinder-${version}";
src = fetchFromGitHub {
repo = "is_KeyFinder";
owner = "ibsh";
rev = "f6706074435ac14c5238ee3f0dd22ac22d72af9c";
sha256 = "1sfnywc6jdpm03344i6i4pz13mqa4i5agagj4k6252m63cqmjkrc";
};
meta = with stdenv.lib; {
description = "Musical key detection for digital audio (graphical UI)";
longDescription = ''
KeyFinder is an open source key detection tool, for DJs interested in
harmonic and tonal mixing. Designed primarily for electronic and dance
music, it is highly configurable and can be applied to many genres. It
supports a huge range of codecs thanks to LibAV, and writes to metadata
tags using TagLib. It's intended to be very focused: no library
management, no track suggestions, no media player. Just a fast,
efficient workflow tool.
'';
homepage = http://www.ibrahimshaath.co.uk/keyfinder/;
license = with licenses; gpl3Plus;
platforms = with platforms; linux;
maintainers = with maintainers; [ nckx ];
};
# TODO: upgrade libav when "Audio sample format conversion failed" is fixed
buildInputs = [ libav_0_8 libkeyfinder qt5 taglib ];
configurePhase = ''
substituteInPlace is_KeyFinder.pro \
--replace "keyfinder.0" "keyfinder" \
--replace '$$[QT_INSTALL_PREFIX]' "$out"
qmake
'';
enableParallelBuilding = true;
}

0
pkgs/applications/audio/mpc/default.nix Executable file → Normal file
View File

0
pkgs/applications/audio/ncmpc/default.nix Executable file → Normal file
View File

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "samplv1-${version}";
version = "0.5.1";
version = "0.6.0";
src = fetchurl {
url = "mirror://sourceforge/samplv1/${name}.tar.gz";
sha256 = "155qq7gxyqn7sh8bbyhjk40lxl157lb2h539j4gqgv5jphz8g6wy";
sha256 = "0fbkdb2dqw7v6n8j1h6pjz2019ylli9rmz8awywv2ycm8blr5pf0";
};
buildInputs = [ jack2 libsndfile lv2 qt4 ];

View File

@ -4,11 +4,11 @@
}:
stdenv.mkDerivation rec {
name = "snd-15.1";
name = "snd-15.2";
src = fetchurl {
url = "mirror://sourceforge/snd/${name}.tar.gz";
sha256 = "01xrgxmkibadm3zva2n7qv00dz8yy9wlkpwv7vancqfb8x44x1ji";
sha256 = "0v2r7a6363aai726cywi7ai0qlwdc20bqdprs5fmyz8sbmksbqzr";
};
nativeBuildInputs = [ pkgconfig ];

View File

@ -0,0 +1,34 @@
{ stdenv, fetchurl, liblo, libxml2, jack2, libsndfile, wxGTK, libsigcxx
,libsamplerate, rubberband, pkgconfig, ncurses
}:
stdenv.mkDerivation rec {
name = "sooperlooper-${version}";
version = "1.7.3";
src = fetchurl {
url = "http://essej.net/sooperlooper/${name}.tar.gz";
sha256 = "0n2gdxw1fx8nxxnpzf4sj0kp6k6zi1yq59cbz6qqzcnsnpnvszbs";
};
buildInputs = [
liblo libxml2 jack2 libsndfile wxGTK libsigcxx
libsamplerate rubberband pkgconfig ncurses
];
meta = {
description = "A live looping sampler capable of immediate loop recording, overdubbing, multiplying, reversing and more";
longDescription = ''
It allows for multiple simultaneous multi-channel loops limited only by your computer's available memory.
The application is a standalone JACK client with an engine controllable via OSC and MIDI.
It also includes a GUI which communicates with the engine via OSC (even over a network) for user-friendly control on a desktop.
However, this kind of live performance looping tool is most effectively used via hardware (midi footpedals, etc)
and the engine can be run standalone on a computer without a monitor.
'';
version = "${version}";
homepage = "http://essej.net/sooperlooper/index.html";
license = stdenv.lib.licenses.gpl2;
maintainers = [ stdenv.lib.maintainers.magnetophon ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -1,6 +1,6 @@
{ fetchurl, stdenv, dpkg, xlibs, qt4, alsaLib, makeWrapper, openssl, freetype
, glib, pango, cairo, atk, gdk_pixbuf, gtk, cups, nspr, nss, libpng, GConf
, libgcrypt, chromium, sqlite, gst_plugins_base, gstreamer, udev, fontconfig
, libgcrypt, chromium, udev, fontconfig
, dbus, expat }:
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
@ -10,20 +10,6 @@ let
then "0.9.4.183.g644e24e.428"
else "0.9.11.27.g2b1a638.81";
qt4webkit =
if stdenv.system == "i686-linux" then
fetchurl {
name = "libqtwebkit4_2.3.2_i386.deb";
url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.3.2-0ubuntu7_i386.deb;
sha256 = "0q4abhczx91ma57fjss0gn8j6nkfbfsbsh6kxhykzj88dih2s8rn";
}
else
fetchurl {
name = "libqtwebkit4_2.3.2_amd64.deb";
url = http://ie.archive.ubuntu.com/ubuntu/pool/main/q/qtwebkit-source/libqtwebkit4_2.3.2-0ubuntu7_amd64.deb;
sha256 = "0sac88avfivwkfhmd6fik7ili8fdznqas6741dbspf9mfnawbwch";
};
deps = [
alsaLib
atk
@ -36,15 +22,12 @@ let
GConf
gdk_pixbuf
glib
gst_plugins_base
gstreamer
gtk
libgcrypt
libpng
nss
pango
qt4
sqlite
stdenv.cc.cc
xlibs.libX11
xlibs.libXcomposite
@ -56,7 +39,6 @@ let
xlibs.libXrender
xlibs.libXrender
xlibs.libXScrnSaver
#xlibs.libXss
];
in
@ -83,37 +65,37 @@ stdenv.mkDerivation {
installPhase =
''
mkdir -p $out
libdir=$out/lib/spotify
mkdir -p $libdir
dpkg-deb -x $src $out
mv $out/opt/spotify/* $out/
rm -rf $out/usr $out/opt
# Work around Spotify referring to a specific minor version of
# OpenSSL.
mkdir $out/lib
ln -s ${nss}/lib/libnss3.so $out/lib/libnss3.so.1d
ln -s ${nss}/lib/libnssutil3.so $out/lib/libnssutil3.so.1d
ln -s ${nss}/lib/libsmime3.so $out/lib/libsmime3.so.1d
ln -s ${nss}/lib/libnss3.so $libdir/libnss3.so.1d
ln -s ${nss}/lib/libnssutil3.so $libdir/libnssutil3.so.1d
ln -s ${nss}/lib/libsmime3.so $libdir/libsmime3.so.1d
${if stdenv.system == "x86_64-linux" then ''
ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.1.0.0
ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.1.0.0
ln -s ${nspr}/lib/libnspr4.so $out/lib/libnspr4.so
ln -s ${nspr}/lib/libplc4.so $out/lib/libplc4.so
ln -s ${openssl}/lib/libssl.so $libdir/libssl.so.1.0.0
ln -s ${openssl}/lib/libcrypto.so $libdir/libcrypto.so.1.0.0
ln -s ${nspr}/lib/libnspr4.so $libdir/libnspr4.so
ln -s ${nspr}/lib/libplc4.so $libdir/libplc4.so
'' else ''
ln -s ${openssl}/lib/libssl.so $out/lib/libssl.so.0.9.8
ln -s ${openssl}/lib/libcrypto.so $out/lib/libcrypto.so.0.9.8
ln -s ${nspr}/lib/libnspr4.so $out/lib/libnspr4.so.0d
ln -s ${nspr}/lib/libplc4.so $out/lib/libplc4.so.0d
ln -s ${openssl}/lib/libssl.so $libdir/libssl.so.0.9.8
ln -s ${openssl}/lib/libcrypto.so $libdir/libcrypto.so.0.9.8
ln -s ${nspr}/lib/libnspr4.so $libdir/libnspr4.so.0d
ln -s ${nspr}/lib/libplc4.so $libdir/libplc4.so.0d
''}
# Work around Spotify trying to open libudev.so.0 (which we don't have)
ln -s ${udev}/lib/libudev.so.1 $out/lib/libudev.so.0
ln -s ${udev}/lib/libudev.so.1 $libdir/libudev.so.0
mkdir -p $out/bin
rpath="$out/spotify-client/Data:$out/lib:$out/spotify-client:${stdenv.cc.cc}/lib64"
rpath="$out/spotify-client/Data:$libdir:$out/spotify-client:${stdenv.cc.cc}/lib64"
ln -s $out/spotify-client/spotify $out/bin/spotify
@ -125,12 +107,8 @@ stdenv.mkDerivation {
--interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath $rpath $out/spotify-client/Data/SpotifyHelper
dpkg-deb -x ${qt4webkit} ./
mkdir -p $out/lib/
cp -v usr/lib/*/* $out/lib/
preload=$out/libexec/spotify/libpreload.so
librarypath="${stdenv.lib.makeLibraryPath deps}:$out/lib"
librarypath="${stdenv.lib.makeLibraryPath deps}:$libdir"
mkdir -p $out/libexec/spotify
gcc -shared ${./preload.c} -o $preload -ldl -DOUT=\"$out\" -fPIC

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "synthv1-${version}";
version = "0.5.1";
version = "0.6.0";
src = fetchurl {
url = "mirror://sourceforge/synthv1/${name}.tar.gz";
sha256 = "16wcxrcjwp0qp2xgahhzvcs2k31sr6c9jsxyhivj4famj7a39pfw";
sha256 = "07570mi7rjwkkvfzdw1jcbhpkpxpjp69xj7wfzng92rk2gz7yi8m";
};
buildInputs = [ qt4 jack2 lv2 ];

0
pkgs/applications/audio/vimpc/default.nix Executable file → Normal file
View File

View File

@ -0,0 +1,32 @@
{ stdenv, fetchFromGitHub, emacs, let-alist, dash, texinfo }:
stdenv.mkDerivation {
name = "flycheck-0.22-64-g90dbc2d";
src = fetchFromGitHub {
owner = "flycheck";
repo = "flycheck";
rev = "90dbc2d";
sha256 = "08bg4jps6hjldbcrvqarrwdv4xzirm5pns5s0331wm0sc47yvbli";
};
buildInputs = [ emacs texinfo ];
buildPhase = ''
emacs -L ${let-alist}/share/emacs/site-lisp -L ${dash}/share/emacs/site-lisp --batch -f batch-byte-compile flycheck.el
makeinfo --force --no-split -o doc/flycheck.info doc/flycheck.texi
'';
installPhase = ''
mkdir -p $out/share/emacs/site-lisp $out/share/info
mv flycheck.el flycheck.elc $out/share/emacs/site-lisp/
mv "doc/"*.info $out/share/info/
'';
meta = {
homepage = "https://github.com/magit/git-modes";
description = "Emacs modes for various Git-related files";
license = stdenv.lib.licenses.gpl3Plus;
maintainers = with stdenv.lib.maintainers; [ simons ];
};
}

View File

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, emacs, texinfo }:
let
version = "13.10-299-g74b5a3c"; # git describe --tags
version = "13.10-361-gfa09425"; # git describe --tags
in
stdenv.mkDerivation {
name = "haskell-mode-${version}";
@ -10,7 +10,7 @@ stdenv.mkDerivation {
owner = "haskell";
repo = "haskell-mode";
rev = "v${version}";
sha256 = "1qjrc1c4jsgbbhnhssvadg00qffn80a8slrxc9g1hnzp632kv8wl";
sha256 = "1bq4gddzwjy2w1hbsmwxcamcy87amz7ksy1vmpwg0qij88fk4av9";
};
buildInputs = [ emacs texinfo ];

View File

@ -0,0 +1,27 @@
{ stdenv, fetchurl, emacs }:
stdenv.mkDerivation rec {
name = "let-alist-1.0.3";
src = fetchurl {
url = "http://elpa.gnu.org/packages/let-alist-1.0.3.el";
sha256 = "12n1cmjc7hzyy0jmsdxqz1hqzg4ri4nvvi0p9mw1d6v44xzfm0mx";
};
buildInputs = [ emacs ];
unpackPhase = "cp -v ${src} let-alist.el";
buildPhase = "emacs --batch -f batch-byte-compile let-alist.el";
installPhase = ''
mkdir -p $out/share/emacs/site-lisp
mv -v *.el *.elc $out/share/emacs/site-lisp/
'';
meta = {
homepage = "http://elpa.gnu.org/packages/let-alist.html";
description = "Easily let-bind values of an assoc-list by their names";
license = stdenv.lib.licenses.gpl3Plus;
maintainers = with stdenv.lib.maintainers; [ simons ];
};
}

View File

@ -1,28 +0,0 @@
source $stdenv/setup
source $makeWrapper
export MONO_GAC_PREFIX=$monodoc:$gtksharp
postInstall() {
mv $out/bin $out/bin-orig
mkdir $out/bin
moz=$(ls $mozilla/lib/*/libgtkembedmoz.so)
for i in $out/bin-orig/*; do
echo "wrapping $(basename $i)"
# !!! TODO: figure out the MONO_GAC_PREFIX automatically
makeWrapper "$i" "$out/bin/$(basename $i)" \
--suffix PATH ':' "$(dirname $(type -p mono))" \
--suffix PATH ':' "$(dirname $(type -p mono))" \
--suffix LD_LIBRARY_PATH ':' "$gtksharp/lib" \
--suffix MONO_GAC_PREFIX ':' "$gtksharp" \
--suffix MONO_GAC_PREFIX ':' "$gtkmozembedsharp" \
--suffix MONO_GAC_PREFIX ':' "$gtksourceviewsharp" \
--suffix MONO_GAC_PREFIX ':' "$monodoc" \
--set MOZILLA_FIVE_HOME "$(dirname $moz)"
done
}
genericBuild

View File

@ -1,26 +1,47 @@
{ stdenv, fetchurl, file, mono, gtksharp, gtksourceviewsharp
, gtkmozembedsharp, monodoc
, perl, perlXMLParser, pkgconfig
, glib, gtk, GConf, gnome_vfs, libbonobo, libglade, libgnome
, mozilla, makeWrapper
{stdenv, fetchgit
, autoconf, automake, pkgconfig, shared_mime_info, intltool
, glib, mono, gtk-sharp, gnome-sharp
}:
stdenv.mkDerivation {
name = "monodevelop-0.6-pre2315";
builder = ./builder.sh;
src = fetchurl {
url = http://tarballs.nixos.org/monodevelop-0.6-pre2315.tar.bz2;
md5 = "8c33df5629b0676b7ab552854c1de6fd";
stdenv.mkDerivation rec {
version = "5.1.4.0";
revision = "7d45bbe2ee22625f125d0c52548524f02d005cca";
name = "monodevelop-${version}";
src = fetchgit {
url = https://github.com/mono/monodevelop.git;
rev = revision;
sha256 = "0qy12zdvb0jiic3pq1w9mcsz2wwxrn0m92abd184q06yg5m48g1b";
};
patches = [./prefix.patch];
buildInputs = [
file mono gtksharp gtksourceviewsharp perl perlXMLParser pkgconfig
glib gtk GConf gnome_vfs libbonobo libglade libgnome
gtkmozembedsharp monodoc
autoconf automake pkgconfig shared_mime_info intltool
mono gtk-sharp gnome-sharp
];
inherit mozilla monodoc gtksharp gtkmozembedsharp gtksourceviewsharp makeWrapper;
preConfigure = "patchShebangs ./configure";
preBuild = ''
cat > ./main/buildinfo <<EOF
Release ID: ${version}
Git revision: ${revision}
Build date: 1970-01-01 00:00:01
EOF
'';
postInstall = ''
for prog in monodevelop mdtool; do
patch -p 0 $out/bin/$prog <<EOF
2a3,5
> export MONO_GAC_PREFIX=${gtk-sharp}:\$MONO_GAC_PREFIX
> export PATH=${mono}/bin:\$PATH
> export LD_LIBRARY_PATH=${glib}/lib:${gnome-sharp}/lib:${gtk-sharp}/lib:${gtk-sharp.gtk}/lib:\$LD_LIBRARY_PATH
>
EOF
done
'';
dontStrip = true;
meta = with stdenv.lib; {
platforms = platforms.linux;
};
}

View File

@ -1,44 +0,0 @@
diff -rc MonoDevelop-orig/Makefile.in MonoDevelop/Makefile.in
*** MonoDevelop-orig/Makefile.in 2005-03-09 17:43:58.000000000 +0100
--- MonoDevelop/Makefile.in 2005-03-09 18:10:20.000000000 +0100
***************
*** 298,304 ****
# (mkdir ../../build/bin/ hack)
SUBDIRS = Core build po Extras
bin_SCRIPTS = monodevelop
! gnome_data = @gnome_prefix@/share
desktopdir = $(gnome_data)/applications
desktop_DATA = monodevelop.desktop
pixmapdir = $(gnome_data)/pixmaps
--- 298,304 ----
# (mkdir ../../build/bin/ hack)
SUBDIRS = Core build po Extras
bin_SCRIPTS = monodevelop
! gnome_data = @prefix@/share
desktopdir = $(gnome_data)/applications
desktop_DATA = monodevelop.desktop
pixmapdir = $(gnome_data)/pixmaps
***************
*** 809,818 ****
all:
install-data-hook:
! $(UPDATE_MIME_DB) $(gnome_data)/mime
uninstall-hook:
! $(UPDATE_MIME_DB) $(gnome_data)/mime
run: runmd
--- 809,818 ----
all:
install-data-hook:
! # $(UPDATE_MIME_DB) $(gnome_data)/mime
uninstall-hook:
! # $(UPDATE_MIME_DB) $(gnome_data)/mime
run: runmd
Only in MonoDevelop: Makefile.in~

View File

@ -1,20 +0,0 @@
source $stdenv/setup
source $makeWrapper
postInstall() {
mv $out/bin $out/bin-orig
mkdir $out/bin
for i in $out/bin-orig/*; do
echo "wrapping $(basename $i)"
# !!! TODO: figure out the MONO_GAC_PREFIX automatically
makeWrapper "$i" "$out/bin/$(basename $i)" \
--suffix PATH ':' "$(dirname $(type -p mono))" \
--suffix MONO_GAC_PREFIX ':' "$gtksharp" \
--suffix MONO_GAC_PREFIX ':' "$out"
done
}
genericBuild

View File

@ -1,15 +0,0 @@
{stdenv, fetchurl, mono, gtksharp, pkgconfig, makeWrapper}:
stdenv.mkDerivation {
name = "monodoc-1.0.6";
builder = ./builder.sh;
src = fetchurl {
url = http://tarballs.nixos.org/monodoc-1.0.6.tar.gz;
md5 = "f2fc27e8e4717d90dc7efa2450625693";
};
buildInputs = [mono gtksharp pkgconfig];
inherit gtksharp makeWrapper;
}

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, qt }:
stdenv.mkDerivation rec {
name = "tiled-qt-0.9.1";
name = "tiled-0.11.0";
src = fetchurl {
url = "mirror://sourceforge/tiled/${name}.tar.gz";
sha256 = "09xm6ry56zsqbfl9fvlvc5kq9ikzdskm283r059q6rlc7crzhs38";
url = "https://github.com/bjorn/tiled/archive/v0.11.0.tar.gz";
sha256 = "03a15vbzjfwc8dpifbjvd0gnr208mzmdkgs2nlc8zq6z0a4h4jqd";
};
buildInputs = [ qt ];

View File

@ -1,13 +1,14 @@
{ stdenv, fetchurl, gdal, cmake, qt4, flex, bison, proj, geos, x11, sqlite, gsl,
pyqt4, qwt, fcgi, python, libspatialindex, libspatialite }:
pyqt4, qwt, fcgi, pythonPackages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper }:
stdenv.mkDerivation rec {
name = "qgis-2.4.0";
name = "qgis-2.6.1";
buildInputs = [ gdal qt4 flex bison proj geos x11 sqlite gsl pyqt4 qwt
fcgi libspatialindex libspatialite ];
buildInputs = [ gdal qt4 flex bison proj geos x11 sqlite gsl pyqt4 qwt qscintilla
fcgi libspatialindex libspatialite postgresql ] ++
(with pythonPackages; [ numpy psycopg2 ]);
nativeBuildInputs = [ cmake python ];
nativeBuildInputs = [ cmake makeWrapper ];
# fatal error: ui_qgsdelimitedtextsourceselectbase.h: No such file or directory
#enableParallelBuilding = true;
@ -20,11 +21,14 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "http://qgis.org/downloads/${name}.tar.bz2";
sha256 = "711b7d81ddff45b083a21f05c8aa5093a6a38a0ee42dfcc873234fcef1fcdd76";
sha256 = "1avw9mnhrcxsdalqr2yhyif1cacl4dsgcpfc31axkv7vj401djnl";
};
postInstall = ''
wrapProgram $out/bin/qgis \
--prefix PYTHONPATH : $PYTHONPATH
'';
meta = {
description = "User friendly Open Source Geographic Information System";
homepage = http://www.qgis.org;

View File

@ -30,10 +30,10 @@ let
in
stdenv.mkDerivation rec {
name = "ImageMagick-${version}";
name = "imagemagick-${version}";
src = fetchurl {
url = "mirror://imagemagick/releases/${name}.tar.xz";
url = "mirror://imagemagick/releases/ImageMagick-${version}.tar.xz";
sha256 = "1dmrl5x63msdnxsf4cmhz5v4ard2z3jrgp2zhqlb27399j81qcqj";
};

View File

@ -1,11 +1,17 @@
{stdenv, fetchurl, python, boost, pkgconfig, imagemagick}:
stdenv.mkDerivation {
name = "PythonMagick-0.7";
let
version = "0.9.11";
in
stdenv.mkDerivation rec {
name = "pythonmagick-${version}";
src = fetchurl {
url = http://www.imagemagick.org/download/python/PythonMagick-0.7.tar.gz;
sha256 = "1553kyzdcysii2qhbpbgs0icmfpm6s2lp3zchgs73cxfnfym8lz1";
url = "http://www.imagemagick.org/download/python/releases/PythonMagick-${version}.tar.gz";
sha256 = "01z01mlqkk0lvrh2jsmf84qjw29sq4rpj0653x7nqy7mrszwwp2v";
};
buildInputs = [python boost pkgconfig imagemagick];

View File

@ -1,21 +1,21 @@
{ stdenv, fetchurl, cmake, qt4, kdelibs, automoc4, phonon, qimageblitz, qca2, eigen,
lcms, jasper, libgphoto2, kdepimlibs, gettext, soprano, libjpeg, libtiff,
liblqr1, lensfun, pkgconfig, qjson, libkdcraw, opencv, libkexiv2, libkipi, boost,
shared_desktop_ontologies, marble, mysql }:
shared_desktop_ontologies, marble, mysql, libpgf }:
stdenv.mkDerivation rec {
name = "digikam-4.4.0";
name = "digikam-4.6.0";
src = fetchurl {
url = "http://download.kde.org/stable/digikam/${name}.tar.bz2";
sha256 = "1sflh3i989f9xi4qym3rzcrx7ahrjf1n9si8c5q05dgm039a4s2w";
sha256 = "0id3anikki8c3rzqzapdbg00h577qwybknvkbz1kdq0348bs6ixh";
};
nativeBuildInputs = [ cmake automoc4 pkgconfig ];
buildInputs = [ qt4 kdelibs phonon qimageblitz qca2 eigen lcms libjpeg libtiff
jasper libgphoto2 kdepimlibs gettext soprano liblqr1 lensfun qjson libkdcraw
opencv libkexiv2 libkipi boost shared_desktop_ontologies marble mysql ];
opencv libkexiv2 libkipi boost shared_desktop_ontologies marble mysql libpgf ];
# Make digikam find some FindXXXX.cmake
KDEDIRS="${marble}:${qjson}";

View File

@ -1,27 +0,0 @@
source $stdenv/setup
source $makeWrapper
postInstall() {
mv $out/bin $out/bin-orig
mkdir $out/bin
for i in $out/bin-orig/*; do
echo "wrapping $(basename $i)"
# !!! TODO: figure out the MONO_GAC_PREFIX automatically
makeWrapper "$i" "$out/bin/$(basename $i)" \
--prefix PATH ':' "$(dirname $(type -p mono))" \
--prefix LD_LIBRARY_PATH ':' "$sqlite/lib" \
--prefix LD_LIBRARY_PATH ':' "$libgnomeui/lib/libglade/2.0" \
--prefix MONO_GAC_PREFIX ':' "$gtksharp"
done
# !!! hack
export ALL_INPUTS="$out $pkgs"
find $out -name "*.dll.config" -o -name "*.exe.config" | while read configFile; do
echo "modifying config file $configFile"
$monoDLLFixer "$configFile"
done
}
genericBuild

View File

@ -1,32 +0,0 @@
{ stdenv, fetchurl, perl, perlXMLParser, pkgconfig, mono, libexif
, libgnome, libgnomeui, gtksharp, libjpeg, sqlite, lcms, libgphoto2
, monoDLLFixer
, makeWrapper
}:
stdenv.mkDerivation {
name = "f-spot-0.0.10";
builder = ./builder.sh;
inherit makeWrapper;
src = fetchurl {
url = http://tarballs.nixos.org/f-spot-0.0.10.tar.bz2;
sha256 = "1hgls6hzvxsnk09j9y6hq10qxsc92i864mdg3gk2cimbkbr0mh8b";
};
patches = [./dllmap.patch];
buildInputs = [
perl perlXMLParser pkgconfig mono libexif
libgnome libgnomeui gtksharp libjpeg sqlite
lcms libgphoto2
];
inherit monoDLLFixer gtksharp sqlite libgnomeui;
meta = {
homepage = http://f-spot.org;
};
}

View File

@ -1,28 +0,0 @@
diff -rc f-spot-0.0.10-orig/libgphoto2-sharp/libgphoto2-sharp.dll.config f-spot-0.0.10/libgphoto2-sharp/libgphoto2-sharp.dll.config
*** f-spot-0.0.10-orig/libgphoto2-sharp/libgphoto2-sharp.dll.config 2005-02-27 19:25:09.000000000 +0100
--- f-spot-0.0.10/libgphoto2-sharp/libgphoto2-sharp.dll.config 2005-03-11 12:13:12.000000000 +0100
***************
*** 1,3 ****
<configuration>
! <dllmap dll="libgphoto2.so" target="/usr/lib/libgphoto2.so.2"/>
</configuration>
--- 1,3 ----
<configuration>
! <dllmap dll="libgphoto2.so" target="libgphoto2.so.2"/>
</configuration>
diff -rc f-spot-0.0.10-orig/src/f-spot.exe.config.in f-spot-0.0.10/src/f-spot.exe.config.in
*** f-spot-0.0.10-orig/src/f-spot.exe.config.in 2005-02-27 18:03:02.000000000 +0100
--- f-spot-0.0.10/src/f-spot.exe.config.in 2005-03-11 12:48:03.000000000 +0100
***************
*** 9,13 ****
<dllmap dll="libfspoteog" target="@prefix@/lib/f-spot/libfspoteog.so.0"/>
<dllmap dll="libfspotjpeg" target="@prefix@/lib/f-spot/libfspotjpg.so.0"/>
<dllmap dll="liblcms-1.0.0.dll" target="liblcms.so.1"/>
! <dllmap dll="libexif.dll" target="libexif.so.@EXIF_SOVERSION@"/>
</configuration>
--- 9,13 ----
<dllmap dll="libfspoteog" target="@prefix@/lib/f-spot/libfspoteog.so.0"/>
<dllmap dll="libfspotjpeg" target="@prefix@/lib/f-spot/libfspotjpg.so.0"/>
<dllmap dll="liblcms-1.0.0.dll" target="liblcms.so.1"/>
! <dllmap dll="libexif.dll" target="libexif.so"/>
</configuration>

View File

@ -1,5 +1,5 @@
{ stdenv, makeWrapper, fetchurl, x11, imlib2, libjpeg, libpng
, libXinerama, curl }:
, libXinerama, curl, libexif }:
stdenv.mkDerivation rec {
name = "feh-2.12";
@ -9,10 +9,10 @@ stdenv.mkDerivation rec {
sha256 = "0ckhidmsms2l5jycp0qf71jzmb3bpbhjq3bcgfpvfvszah7pmq30";
};
buildInputs = [makeWrapper x11 imlib2 libjpeg libpng libXinerama curl];
buildInputs = [ makeWrapper x11 imlib2 libjpeg libpng libXinerama curl libexif ];
preBuild = ''
makeFlags="PREFIX=$out"
makeFlags="PREFIX=$out exif=1"
'';
postInstall = ''

View File

@ -0,0 +1,28 @@
/*
To use aditional parts libraries
set the variable LEOCAD_LIB=/path/to/libs/ or use option -l /path/to/libs/
*/
{ stdenv, fetchsvn, qt4, zlib }:
stdenv.mkDerivation rec {
name = "leocad-${version}";
version = "0.81";
src = fetchsvn {
url = "http://svn.leocad.org/tags/${name}";
sha256 = "1190gb437ls51hhfiwa79fq131026kywpy3j3k4fkdgfr8a9v3q8";
};
buildInputs = [ qt4 zlib ];
prefixKey="INSTALL_PREFIX=";
configureScript = "qmake leocad.pro";
meta = with stdenv.lib; {
description = "CAD program for creating virtual LEGO models";
homepage = http://www.leocad.org/;
license = licenses.gpl2;
inherit (qt4.meta) platforms;
};
}

View File

@ -5,8 +5,8 @@ stdenv.mkDerivation {
src = fetchgit {
url = "https://github.com/muennich/sxiv.git";
rev = "6216bf6c2d42be63025d29550831d9f4447f4066";
sha256 = "e25e19cf073cc2621656e50d2c31cc59cc0fc200716f96c765374568a26977f1";
rev = "92e3b57816e999b46f8d0778984719227631e9a7";
sha256 = "0jbswh0k1xq5hgrv1pyvk7lpwbbj66p7gjsdm8zh6ah324apjr2b";
};
postUnpack = ''

View File

@ -0,0 +1,265 @@
# Maintainer's Notes:
#
# Minor updates:
# 1. Edit ./manifest.sh to point to the updated URL. Upstream sometimes
# releases updates that include only the changed packages; in this case,
# multiple URLs can be provided and the results will be merged.
# 2. Run ./manifest.sh and ./dependencies.sh.
# 3. Build and enjoy.
#
# Major updates:
# We prefer not to immediately overwrite older versions with major updates, so
# make a copy of this directory first. After copying, be sure to delete ./tmp
# if it exists. Then follow the minor update instructions.
{ autonix, kde4, kf55, pkgs, qt4, stdenv, debug ? false }:
with stdenv.lib; with autonix;
let
kf5 = kf55.override { inherit debug; };
mirror = "mirror://kde";
renames =
(builtins.removeAttrs
(import ./renames.nix {})
["Backend" "CTest"])
// {
"KDE4" = "kdelibs";
"Kexiv2" = "libkexiv2";
"Kdcraw" = "libkdcraw";
"Kipi" = "libkipi";
"LibKMahjongg" = "libkmahjongg";
"LibKonq" = "kde-baseapps";
};
scope =
# packages in this collection
(mapAttrs (dep: name: kdeApps."${name}") renames) //
# packages from KDE Frameworks 5
kf5.scope //
# packages from nixpkgs
(with pkgs;
{
ACL = acl;
Akonadi = kde4.akonadi;
Alsa = alsaLib;
Automoc4 = automoc4;
Avahi = avahi;
BISON = bison;
Baloo = kde4.baloo;
Boost = boost156;
Canberra = libcanberra;
Cdparanoia = cdparanoia;
CUPS = cups;
DBusMenuQt = libdbusmenu_qt;
DjVuLibre = djvulibre;
ENCHANT = enchant;
EPub = ebook_tools;
Eigen2 = eigen2;
Eigen3 = eigen;
Exiv2 = exiv2;
FAM = fam;
FFmpeg = ffmpeg;
Flac = flac;
FLEX = flex;
Freetype = freetype;
GMP = gmp;
Gettext = gettext;
Gpgme = gpgme;
Gphoto2 = libgphoto2;
Grantlee = grantlee;
GSL = gsl;
HUNSPELL = hunspell;
HUpnp = herqq;
Jasper = jasper;
KActivities = kde4.kactivities;
LCMS2 = lcms2;
Ldap = openldap;
LibAttica = attica;
LibGcrypt = libgcrypt;
LibSSH = libssh;
LibSpectre = libspectre;
LibVNCServer = libvncserver;
Libical = libical;
MusicBrainz3 = libmusicbrainz;
NetworkManager = networkmanager;
OggVorbis = libvorbis;
OpenAL = openal;
OpenEXR = openexr;
Poppler = poppler.poppler_qt4;
Prison = prison;
PulseAudio = pulseaudio;
PythonLibrary = python;
Qalculate = libqalculate;
QCA2 = qca2;
QImageBlitz = qimageblitz;
QJSON = qjson;
Qt4 = qt4;
Samba = samba;
Sasl2 = cyrus_sasl;
SharedDesktopOntologies = shared_desktop_ontologies;
SndFile = libsndfile;
Speechd = speechd;
TIFF = libtiff;
Taglib = taglib;
TelepathyQt4 = telepathy_qt;
TunePimp = libtunepimp;
UDev = udev;
USB = libusb;
Xscreensaver = xscreensaver;
Xsltproc = libxslt;
}
);
preResolve = super:
fold (f: x: f x) super
[
(userEnvPkg "SharedMimeInfo")
(userEnvPkg "SharedDesktopOntologies")
(blacklist ["artikulate"]) # build failure, wrong boost?
(blacklist ["kde-dev-scripts" "kde-dev-utils"]) # docbook errors
(blacklist ["kdewebdev"]) # unknown build failure
];
postResolve = super:
super // {
ark = with pkgs; super.ark // {
buildInputs = (super.ark.buildInputs or []) ++ [ makeWrapper ];
postInstall = ''
wrapProgram $out/bin/ark --prefix PATH : "${unzipNLS}/bin"
'';
};
ffmpegthumbs = with pkgs; super.ffmpegthumbs // {
nativeBuildInputs = super.ffmpegthumbs.nativeBuildInputs ++ [pkgconfig];
};
kalzium = with pkgs; super.kalzium // {
nativeBuildInputs = super.kalzium.nativeBuildInputs ++ [pkgconfig];
};
kde-runtime = with pkgs; super.kde-runtime // {
buildInputs =
super.kde-runtime.buildInputs ++ [libcanberra];
nativeBuildInputs =
super.kde-runtime.nativeBuildInputs ++ [pkgconfig];
NIX_CFLAGS_COMPILE =
(super.kde-runtime.NIX_CFLAGS_COMPILE or "")
+ " -I${ilmbase}/include/OpenEXR";
};
kde-workspace = with pkgs; super.kde-workspace // {
buildInputs = with xlibs;
super.kde-workspace.buildInputs
++
[
libxkbfile libXcomposite xcbutilimage xcbutilkeysyms
xcbutilrenderutil
];
nativeBuildInputs =
super.kde-workspace.nativeBuildInputs
++ [ pkgconfig ];
};
kdelibs = with pkgs; super.kdelibs // {
buildInputs =
super.kdelibs.buildInputs ++ [ attr libxslt polkit_qt4 xz ];
nativeBuildInputs =
super.kdelibs.nativeBuildInputs ++ [ pkgconfig ];
NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
propagatedBuildInputs =
super.kdelibs.propagatedBuildInputs ++ [ qt4 soprano phonon strigi ];
propagatedNativeBuildInputs =
super.kdelibs.propagatedNativeBuildInputs
++ [ automoc4 cmake perl shared_mime_info ];
patches = [ ./kdelibs/polkit-install.patch ];
cmakeFlags = [
"-DDOCBOOKXML_CURRENTDTD_DIR=${docbook_xml_dtd_42}/xml/dtd/docbook"
"-DDOCBOOKXSL_DIR=${docbook_xsl}/xml/xsl/docbook"
"-DHUPNP_ENABLED=ON"
"-DWITH_SOLID_UDISKS2=ON"
];
};
kdepim = with pkgs; super.kdepim // {
buildInputs =
super.kdepim.buildInputs ++ [ gpgme libassuan ];
nativeBuildInputs =
super.kdepim.nativeBuildInputs ++ [ pkgconfig ];
};
kdepimlibs = with pkgs; super.kdepimlibs // {
nativeBuildInputs =
super.kdepimlibs.nativeBuildInputs ++ [ pkgconfig ];
};
kdesdk-thumbnailers = with pkgs; super.kdesdk-thumbnailers // {
nativeBuildInputs =
super.kdesdk-thumbnailers.nativeBuildInputs
++ [gettext];
};
kgpg = with pkgs; super.kgpg // {
buildInputs = super.kgpg.buildInputs ++ [boost];
};
kmix = with pkgs; super.kmix // {
nativeBuildInputs = super.kmix.nativeBuildInputs ++ [pkgconfig];
cmakeFlags = [ "-DKMIX_KF5_BUILD=ON" ];
};
kmousetool = with pkgs; super.kmousetool // {
buildInputs = with xlibs;
super.kmousetool.buildInputs
++ [libXtst libXt];
};
kremotecontrol = with pkgs; super.kremotecontrol // {
buildInputs = super.kremotecontrol.buildInputs ++ [xlibs.libXtst];
};
krfb = with pkgs; super.krfb // {
buildInputs =
super.krfb.buildInputs
++ [xlibs.libXtst kde4.telepathy.common_internals];
};
libkdcraw = with pkgs; super.libkdcraw // {
buildInputs = super.libkdcraw.buildInputs ++ [scope.KDE4 libraw];
nativeBuildInputs = super.libkdcraw.nativeBuildInputs ++ [pkgconfig];
};
libkexiv2 = with pkgs; super.libkexiv2 // {
buildInputs = super.libkexiv2.buildInputs ++ [exiv2 scope.KDE4];
};
libkface = with pkgs; super.libkface // {
buildInputs = super.libkface.buildInputs ++ [scope.KDE4 opencv];
};
libkipi = with pkgs; super.libkipi // {
buildInputs = super.libkipi.buildInputs ++ [scope.KDE4];
};
libksane = with pkgs; super.libksane // {
buildInputs = super.libksane.buildInputs ++ [scope.KDE4 saneBackends];
};
};
kdeApps = generateCollection ./. {
inherit (kf5) mkDerivation;
inherit mirror preResolve postResolve renames scope;
};
in kdeApps

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
#!/bin/sh
manifestXML=$(nix-build -E 'with (import ../../.. {}); autonix.writeManifestXML ./manifest.nix')
autonixDepsKf5=""
if [[ -z $1 ]]; then
autonixDepsKF5=$(nix-build ../../.. -A haskellngPackages.autonix-deps-kf5)/bin
else
autonixDepsKF5="$1/dist/build/kf5-deps"
fi
exec ${autonixDepsKF5}/kf5-deps "${manifestXML}"

View File

@ -0,0 +1,12 @@
diff -ru -x '*~' kdelibs-4.6.90-orig/kdecore/auth/ConfigureChecks.cmake kdelibs-4.6.90/kdecore/auth/ConfigureChecks.cmake
--- kdelibs-4.6.90-orig/kdecore/auth/ConfigureChecks.cmake 2011-05-20 22:24:54.000000000 +0200
+++ kdelibs-4.6.90/kdecore/auth/ConfigureChecks.cmake 2011-07-12 14:03:00.000000000 +0200
@@ -139,7 +139,7 @@
${CMAKE_INSTALL_PREFIX} _KDE4_AUTH_POLICY_FILES_INSTALL_DIR
${POLKITQT-1_POLICY_FILES_INSTALL_DIR})
- set(KDE4_AUTH_POLICY_FILES_INSTALL_DIR ${_KDE4_AUTH_POLICY_FILES_INSTALL_DIR} CACHE STRING
+ set(KDE4_AUTH_POLICY_FILES_INSTALL_DIR "\${CMAKE_INSTALL_PREFIX}/share/polkit-1/actions" CACHE STRING
"Where policy files generated by KAuth will be installed" FORCE)
elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "FAKE")
set (KAUTH_COMPILING_FAKE_BACKEND TRUE)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,15 @@
#!/bin/sh
if [ $# -eq 0 ]; then
# The extra slash at the end of the URL is necessary to stop wget
# from recursing over the whole server! (No, it's not a bug.)
$(nix-build ../../.. -A autonix.manifest) \
http://download.kde.org/stable/applications/14.12.1/ \
-A '*.tar.xz'
else
$(nix-build ../../.. -A autonix.manifest) -A '*.tar.xz' "$@"
fi

View File

@ -0,0 +1,23 @@
# DO NOT EDIT! This file is generated automatically.
{ }:
{
"Analitza5" = "analitza";
"Backend" = "kde-workspace";
"CTest" = "sweeper";
"ECM" = "extra-cmake-modules";
"Gpgmepp" = "kdepimlibs";
"JDns" = "kopete";
"KDE4Workspace" = "kde-workspace";
"KDEGames" = "libkdegames";
"KDeclarative" = "kdelibs";
"KSane" = "libksane";
"KdepimLibs" = "kdepimlibs";
"LibKEduVocDocument" = "libkeduvocdocument";
"LibKdeEdu" = "libkdeedu";
"LibKompareDiff2" = "libkomparediff2";
"Libkcddb" = "libkcddb";
"Libkcompactdisc" = "libkcompactdisc";
"Okular" = "okular";
"QJDns" = "kopete";
"QMobipocket" = "kdegraphics-mobipocket";
}

View File

@ -0,0 +1 @@
addToSearchPath XDG_DATA_DIRS @out@/share

View File

@ -10,11 +10,11 @@
with lib;
stdenv.mkDerivation rec {
name = "blender-2.73";
name = "blender-2.73a";
src = fetchurl {
url = "http://download.blender.org/source/${name}.tar.gz";
sha256 = "140fcxjb73gim430v08021ls3civ3yghld63ljkgxi5vaww1cq95";
sha256 = "114ipidrja6ryi6wv0w55wmh10ikazy24r8js596g7b9fpkzpymc";
};
buildInputs =
@ -35,7 +35,6 @@ stdenv.mkDerivation rec {
[ "-DWITH_MOD_OCEANSIM=ON"
"-DWITH_CODEC_FFMPEG=ON"
"-DWITH_CODEC_SNDFILE=ON"
"-DWITH_FFTW3=ON"
"-DWITH_INSTALL_PORTABLE=OFF"
"-DWITH_FFTW3=ON"
"-DWITH_SDL=ON"

View File

@ -5,11 +5,11 @@
}:
stdenv.mkDerivation rec {
name = "calibre-2.16.0";
name = "calibre-2.18.0";
src = fetchurl {
url = "mirror://sourceforge/calibre/${name}.tar.xz";
sha256 = "1a9s99r92wk09lsbx8kn2kyg1wr7j84j8vjf65zaf5siwxnwy291";
sha256 = "05n7kfih4mbhnvpzi5i821jl0na66si2ygz8cql931p2qcfhnixx";
};
inherit python;

View File

@ -0,0 +1,36 @@
{ stdenv, fetchurl, python, pythonPackages, gettext, pygtksourceview, sqlite }:
stdenv.mkDerivation rec {
name = "cherrytree-0.35.6";
src = fetchurl {
url = "http://www.giuspen.com/software/${name}.tar.xz";
sha256 = "1nfrnnwaxb07jf5c3id8zimr3q3rbhvzjlmpb99d41d7hqrd2bxj";
};
propagatedBuildInputs = [ pythonPackages.sqlite3 ];
buildInputs = with pythonPackages; [ python gettext wrapPython pygtk dbus pygtksourceview ];
pythonPath = with pythonPackages; [ pygtk dbus pygtksourceview ];
patches = [ ./subprocess.patch ];
installPhase = ''
python setup.py install --prefix="$out"
for file in "$out"/bin/*; do
wrapProgram "$file" \
--prefix PYTHONPATH : "$(toPythonPath $out):$PYTHONPATH"
done
'';
doCheck = false;
meta = {
description = "A hierarchical note taking application, featuring rich text and syntax highlighting, storing data in a single xml or sqlite file";
homepage = http://www.giuspen.com/cherrytree;
license = stdenv.lib.licenses.gpl3;
platforms = with stdenv.lib.platforms; linux;
};
}

View File

@ -0,0 +1,15 @@
diff -Naur cherrytree-0.35.6-orig/setup.py cherrytree-0.35.6/setup.py
--- cherrytree-0.35.6-orig/setup.py 2014-05-30 23:25:11.000000000 +0200
+++ cherrytree-0.35.6/setup.py 2015-01-29 07:35:32.785904009 +0100
@@ -205,4 +205,9 @@
},
distclass=CherryTreeDist
)
- subprocess.call("update-desktop-database")
+ try:
+ subprocess.check_call(['update-desktop-database'])
+ except subprocess.CalledProcessError:
+ pass # handle errors in the called executable
+ except OSError:
+ pass # executable not found

View File

@ -1,53 +0,0 @@
{ stdenv, fetchFromGitHub, qt5 }:
stdenv.mkDerivation rec {
version = "0.9";
name = "cool-old-term-${version}";
src = fetchFromGitHub {
owner = "Swordifish90";
repo = "cool-old-term";
rev = "2494bc05228290545df8c59c05624a4b903e9068";
sha256 = "8462f3eded7b2219acc143258544b0dfac32d81e10cac61ff14276d426704c93";
};
buildInputs = [ qt5 ];
buildPhase = ''
pushd ./konsole-qml-plugin
qmake konsole-qml-plugin.pro PREFIX=$out
make
popd
'';
installPhase = ''
pushd ./konsole-qml-plugin
make install
popd
install -d $out/bin $out/lib/cool-old-term $out/share/cool-old-term
cp -a ./imports $out/lib/cool-old-term/
cp -a ./app $out/share/cool-old-term/
cat > $out/bin/cool-old-term <<EOF
#!${stdenv.shell}
${qt5}/bin/qmlscene -I $out/lib/cool-old-term/imports $out/share/cool-old-term/app/main.qml
EOF
chmod a+x $out/bin/cool-old-term
'';
enableParallelBuilding = true;
meta = {
description = "Terminal emulator which mimics the old cathode display";
longDescription = ''
cool-old-term is a terminal emulator which tries to mimic the look and
feel of the old cathode tube screens. It has been designed to be
eye-candy, customizable, and reasonably lightweight.
'';
homepage = "https://github.com/Swordifish90/cool-old-term";
licenses = with stdenv.lib.licenses; [ gpl2 gpl3 ];
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ skeidel ];
};
}

View File

@ -0,0 +1,47 @@
{ stdenv, fetchgit, makeWrapper, qt5, qmltermwidget }:
stdenv.mkDerivation rec {
version = "1.0.0";
name = "cool-retro-term-${version}";
src = fetchgit {
url = "https://github.com/Swordfish90/cool-retro-term.git";
rev = "refs/tags/v${version}";
sha256 = "042ikarg6n0c09niwrm987pkzi8xjxxdrg2nqvk9pj7lgmmkkfn1";
fetchSubmodules = false;
};
patchPhase = ''
sed -i -e '/qmltermwidget/d' cool-retro-term.pro
'';
buildInputs = [ makeWrapper qt5 qmltermwidget ];
configurePhase = "qmake PREFIX=$out";
installPhase = "make -j $NIX_BUILD_CORES INSTALL_ROOT=$out install";
preFixup = ''
mv $out/usr/share $out/share
mv $out/usr/bin $out/bin
rmdir $out/usr
wrapProgram $out/bin/cool-retro-term \
--prefix QML2_IMPORT_PATH : "${qmltermwidget}/lib/qml/"
'';
enableParallelBuilding = true;
meta = {
description = "Terminal emulator which mimics the old cathode display";
longDescription = ''
cool-retro-term is a terminal emulator which tries to mimic the look and
feel of the old cathode tube screens. It has been designed to be
eye-candy, customizable, and reasonably lightweight.
'';
homepage = "https://github.com/Swordifish90/cool-retro-term";
licenses = with stdenv.lib.licenses; [ gpl2 gpl3 ];
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ skeidel ];
};
}

View File

@ -1,14 +1,14 @@
{ stdenv, python27Packages, curaengine, makeDesktopItem, fetchurl }:
let
py = python27Packages;
version = "14.09";
version = "14.12.1";
in
stdenv.mkDerivation rec {
name = "cura-${version}";
src = fetchurl {
url = "https://github.com/daid/Cura/archive/${version}.tar.gz";
sha256 = "1nr26hfqa6chim5qch92wpk0s28wfvznvcf3kkzgf23hw707f40v";
sha256 = "1sybsa84qznlzcgn18p70gh1v60npwfca5yn80h35msxrnh8gbp5";
};
desktopItem = makeDesktopItem {

View File

@ -1,18 +1,18 @@
{ stdenv, fetchurl }:
let
version = "14.03";
version = "14.12.1";
in
stdenv.mkDerivation {
name = "curaengine-${version}";
src = fetchurl {
url = "https://github.com/Ultimaker/CuraEngine/archive/${version}.tar.gz";
sha256 = "0f37jk6w3zd9x29c1rydqmfdzybx9nbmwdi3y3nzynq1vq7zmxcc";
sha256 = "1cfns71mjndy2dlmccmjx8ldd0p5v88sqg0jg6ak5c864cvgbjdr";
};
installPhase = ''
mkdir -p $out/bin
cp CuraEngine $out/bin/
cp build/CuraEngine $out/bin/
'';
meta = with stdenv.lib; {

View File

@ -0,0 +1,20 @@
{ stdenv, fetchurl, intltool, pkgconfig, gtk, gpgme, libgpgerror, libassuan }:
stdenv.mkDerivation rec {
name = "gpa-0.9.7";
src = fetchurl {
url = "mirror://gnupg/gpa/${name}.tar.bz2";
sha256 = "1r8pnvfw66b2m9lhajlarbxx9172c1gzripdij01bawgbrhwp33y";
};
buildInputs = [ intltool pkgconfig gtk gpgme libgpgerror libassuan ];
meta = with stdenv.lib; {
description = "Graphical user interface for the GnuPG";
homepage = https://www.gnupg.org/related_software/gpa/;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View File

@ -177,6 +177,7 @@ a.composableDerivation.composableDerivation {} (fix: {
description = "free Geographic Information System (GIS) software used for geospatial data management and analysis, image processing, graphics/maps production, spatial modeling, and visualization";
homepage = http://grass.itc.it/index.php;
license = [ "GPL" ];
broken = true;
};
})

View File

@ -23,7 +23,7 @@ assert mercurialSupport -> (mercurial != null);
let
name = "ikiwiki";
version = "3.20141016";
version = "3.20150107";
lib = stdenv.lib;
in
@ -31,8 +31,8 @@ stdenv.mkDerivation {
name = "${name}-${version}";
src = fetchurl {
url = "http://ftp.de.debian.org/debian/pool/main/i/ikiwiki/${name}_${version}.tar.gz";
sha256 = "1amvrb6djil7g0yabsngfs0f1n7qcvj2hddipjkgfjbmghd6jqiw";
url = "https://github.com/joeyh/ikiwiki/archive/debian/${version}.tar.gz";
sha256 = "12kiqjxrh93gysdp7bhglnks2md9davl8jgzqlj0m8xs5rf1972n";
};
buildInputs = [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate

View File

@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
unpackPhase = "unpackFile \$src; sourceRoot=.";
buildPhase = "pwd; gcc -o pstree pstree.c";
buildPhase = "pwd; $CC -o pstree pstree.c";
installPhase = "mkdir -p \$out/bin; cp pstree \$out/bin";
meta = {

View File

@ -0,0 +1,80 @@
{ stdenv, fetchurl, wxGTK, libuuid, xercesc, zip , libXt, libXtst
, libXi, xextproto, gettext, perl, pkgconfig, libyubikey, ykpers
}:
stdenv.mkDerivation rec {
name = "pwsafe-${version}";
version = "0.95";
src = fetchurl {
url = "mirror://sourceforge/passwordsafe/pwsafe-${version}BETA-src.tgz";
sha256 = "f0b081bc358fee97fce20f352e360960d2813989023b837102b90ba6ed787d46";
};
makefile = "Makefile.linux";
makeFlags = "YBPERS_LIBPATH=${ykpers}/lib";
buildFlags = "unicoderelease";
buildInputs = [ wxGTK libuuid gettext perl zip
xercesc libXt libXtst libXi xextproto
pkgconfig libyubikey ykpers ];
postPatch = ''
# Fix perl scripts used during the build.
for f in `find . -type f -name '*.pl'`; do
patchShebangs $f
done
# Fix hard coded paths.
for f in `grep -Rl /usr/share/ src`; do
substituteInPlace $f --replace /usr/share/ $out/share/
done
for f in `grep -Rl /usr/bin/ .`; do
substituteInPlace $f --replace /usr/bin/ ""
done
'';
installPhase = ''
mkdir -p $out/bin \
$out/share/applications \
$out/share/pwsafe/xml \
$out/share/icons/hicolor/48x48/apps \
$out/share/doc/passwordsafe/help \
$out/share/man/man1 \
$out/share/locale
(cd help && make -f Makefile.linux)
cp help/help.zip $out/share/doc/passwordsafe/help
(cd src/ui/wxWidgets/I18N && make mos)
cp -dr src/ui/wxWidgets/I18N/mos/* $out/share/locale/
# */
cp README.txt docs/ReleaseNotes.txt docs/ChangeLog.txt \
LICENSE install/copyright $out/share/doc/passwordsafe
cp src/ui/wxWidgets/GCCUnicodeRelease/pwsafe $out/bin/
cp install/graphics/pwsafe.png $out/share/icons/hicolor/48x48/apps
cp docs/pwsafe.1 $out/share/man/man1
cp xml/* $out/share/pwsafe/xml
# */
'';
meta = with stdenv.lib; {
description = "Password Safe is a password database utility";
longDescription = ''
Password Safe is a password database utility. Like many other
such products, commercial and otherwise, it stores your
passwords in an encrypted file, allowing you to remember only
one password (the "safe combination"), instead of all the
username/password combinations that you use.
'';
homepage = http://passwordsafe.sourceforge.net/;
maintainers = with maintainers; [ pjones ];
platforms = platforms.linux;
license = licenses.artistic2;
};
}

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