This commit is contained in:
David Rusu 2014-10-25 21:08:11 -04:00
commit d73ae615c5
407 changed files with 7693 additions and 3385 deletions

View File

@ -1,3 +1,5 @@
language: python language: python
python: "3.4" python: "3.4"
script: ./maintainers/scripts/travis-nox-review-pr.sh before_install: ./maintainers/scripts/travis-nox-review-pr.sh nix
install: ./maintainers/scripts/travis-nox-review-pr.sh nox
script: ./maintainers/scripts/travis-nox-review-pr.sh build

View File

@ -1 +1 @@
14.10 14.11

View File

@ -62,6 +62,8 @@ rec {
makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs)); makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs));
deepOverride = newArgs: deepOverride = newArgs:
makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs); makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs);
overrideDerivation = fdrv:
makeOverridable (args: overrideDerivation (f args) fdrv) origArgs;
}) })
else ff; else ff;

View File

@ -285,6 +285,12 @@ rec {
unfreeRedistributableFirmware = "unfree-redistributable-firmware"; unfreeRedistributableFirmware = "unfree-redistributable-firmware";
unlicense = {
shortName = "Unlicense";
fullName = "Unlicense";
url = http://unlicense.org/;
};
wadalab = { wadalab = {
shortName = "wadalab"; shortName = "wadalab";
fullName = "Wadalab Font License"; fullName = "Wadalab Font License";

View File

@ -57,6 +57,7 @@
ertes = "Ertugrul Söylemez <ertesx@gmx.de>"; ertes = "Ertugrul Söylemez <ertesx@gmx.de>";
falsifian = "James Cook <james.cook@utoronto.ca>"; falsifian = "James Cook <james.cook@utoronto.ca>";
flosse = "Markus Kohlhase <mail@markus-kohlhase.de>"; flosse = "Markus Kohlhase <mail@markus-kohlhase.de>";
fpletz = "Franz Pletz <fpletz@fnordicwalking.de>";
ftrvxmtrx = "Siarhei Zirukin <ftrvxmtrx@gmail.com>"; ftrvxmtrx = "Siarhei Zirukin <ftrvxmtrx@gmail.com>";
funfunctor = "Edward O'Callaghan <eocallaghan@alterapraxis.com>"; funfunctor = "Edward O'Callaghan <eocallaghan@alterapraxis.com>";
fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>"; fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>";

View File

@ -3,33 +3,40 @@ set -e
export NIX_CURL_FLAGS=-sS export NIX_CURL_FLAGS=-sS
# Install Nix if [[ $1 == nix ]]; then
echo "=== Installing Nix..." echo "=== Installing Nix..."
bash <(curl -sS https://nixos.org/nix/install) >/dev/null 2>&1 # Install Nix
source $HOME/.nix-profile/etc/profile.d/nix.sh bash <(curl -sS https://nixos.org/nix/install)
source $HOME/.nix-profile/etc/profile.d/nix.sh
# Make sure we can use hydra's binary cache # Make sure we can use hydra's binary cache
sudo mkdir /etc/nix sudo mkdir /etc/nix
sudo tee /etc/nix/nix.conf <<EOF >/dev/null sudo tee /etc/nix/nix.conf <<EOF >/dev/null
binary-caches = http://cache.nixos.org http://hydra.nixos.org binary-caches = http://cache.nixos.org http://hydra.nixos.org
trusted-binary-caches = http://hydra.nixos.org trusted-binary-caches = http://hydra.nixos.org
build-max-jobs = 4 build-max-jobs = 4
EOF EOF
echo "=== Checking evaluation, including meta" # Verify evaluation
nix-env -f. -qa --json >/dev/null echo "=== Verifying that nixpkgs evaluates..."
nix-env -f. -qa --json >/dev/null
elif [[ $1 == nox ]]; then
echo "=== Installing nox..."
git clone -q https://github.com/madjar/nox
pip --quiet install -e nox
elif [[ $1 == build ]]; then
source $HOME/.nix-profile/etc/profile.d/nix.sh
if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then if [[ $TRAVIS_PULL_REQUEST == false ]]; then
echo "===> Not a pull request, checking evaluation" echo "===> Not a pull request, checking evaluation"
nix-build pkgs/top-level/release.nix -A tarball nix-build pkgs/top-level/release.nix -A tarball
exit 0 else
echo "=== Checking PR"
# The current HEAD is the PR merged into origin/master, so we compare
# against origin/master
nox-review wip --against origin/master
fi
else
echo "$0: Unknown option $1" >&2
false
fi fi
echo "=== Installing nox"
git clone -q https://github.com/madjar/nox
pip --quiet install -e nox
echo "=== Reviewing PR"
# The current HEAD is the PR merged into origin/master, so we compare
# against origin/master
nox-review wip --against origin/master

View File

@ -10,7 +10,7 @@
<para>This section lists the release notes for each stable version of NixOS.</para> <para>This section lists the release notes for each stable version of NixOS.</para>
</partintro> </partintro>
<xi:include href="rl-1410.xml" /> <xi:include href="rl-1411.xml" />
<xi:include href="rl-1404.xml" /> <xi:include href="rl-1404.xml" />
<xi:include href="rl-1310.xml" /> <xi:include href="rl-1310.xml" />

View File

@ -2,9 +2,9 @@
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0" version="5.0"
xml:id="sec-release-14.10"> xml:id="sec-release-14.11">
<title>Release 14.10 (“Caterpillar”, 2014/10/??)</title> <title>Release 14.11 (“Caterpillar”, 2014/11/??)</title>
<para>When upgrading from a previous release, please be aware of the <para>When upgrading from a previous release, please be aware of the
following incompatible changes: following incompatible changes:
@ -19,4 +19,4 @@ following incompatible changes:
</para> </para>
</chapter> </chapter>

View File

@ -184,7 +184,7 @@ let
type = with types; uniq (nullOr string); type = with types; uniq (nullOr string);
default = null; default = null;
description = '' description = ''
The path to a file that contains the user's password. The password The full path to a file that contains the user's password. The password
file is read on each system activation. The file should contain file is read on each system activation. The file should contain
exactly one line, which should be the password in an encrypted form exactly one line, which should be the password in an encrypted form
that is suitable for the <literal>chpasswd -e</literal> command. that is suitable for the <literal>chpasswd -e</literal> command.

View File

@ -42,6 +42,9 @@ with lib;
# Get a console as soon as the initrd loads fbcon on EFI boot. # Get a console as soon as the initrd loads fbcon on EFI boot.
boot.initrd.kernelModules = [ "fbcon" ]; boot.initrd.kernelModules = [ "fbcon" ];
# Add support for cow filesystems and their utilities
boot.supportedFilesystems = [ "zfs" "btrfs" ];
# Allow the user to log in as root without a password. # Allow the user to log in as root without a password.
security.initialRootPassword = ""; security.initialRootPassword = "";
} }

View File

@ -11,6 +11,9 @@ with lib;
# Provide wicd for easy wireless configuration. # Provide wicd for easy wireless configuration.
#networking.wicd.enable = true; #networking.wicd.enable = true;
# Include gparted for partitioning disks
environment.systemPackages = [ pkgs.gparted ];
# KDE complains if power management is disabled (to be precise, if # KDE complains if power management is disabled (to be precise, if
# there is no power management backend such as upower). # there is no power management backend such as upower).
powerManagement.enable = true; powerManagement.enable = true;
@ -27,4 +30,70 @@ with lib;
AutoLoginUser=root AutoLoginUser=root
AutoLoginPass="" AutoLoginPass=""
''; '';
# Custom kde-workspace adding some icons on the desktop
system.activationScripts.installerDesktop = let
openManual = pkgs.writeScript "nixos-manual.sh" ''
#!${pkgs.stdenv.shell}
cd ${config.system.build.manual.manual}/share/doc/nixos/
konqueror ./index.html
'';
desktopFile = pkgs.writeText "nixos-manual.desktop" ''
[Desktop Entry]
Version=1.0
Type=Application
Name=NixOS Manual
Exec=${openManual}
Icon=konqueror
'';
in ''
mkdir -p /root/Desktop
ln -sfT ${desktopFile} /root/Desktop/nixos-manual.desktop
ln -sfT ${pkgs.kde4.konsole}/share/applications/kde4/konsole.desktop /root/Desktop/konsole.desktop
ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop /root/Desktop/gparted.desktop
'';
services.xserver.desktopManager.kde4.kdeWorkspacePackage = let
pkg = pkgs.kde4.kde_workspace;
plasmaInit = pkgs.writeText "00-defaultLayout.js" ''
loadTemplate("org.kde.plasma-desktop.defaultPanel")
for (var i = 0; i < screenCount; ++i) {
var desktop = new Activity
desktop.name = i18n("Desktop")
desktop.screen = i
desktop.wallpaperPlugin = 'image'
desktop.wallpaperMode = 'SingleImage'
var folderview = desktop.addWidget("folderview");
folderview.writeConfig("url", "desktop:/");
//Create more panels for other screens
if (i > 0){
var panel = new Panel
panel.screen = i
panel.location = 'bottom'
panel.height = screenGeometry(i).height > 1024 ? 35 : 27
var tasks = panel.addWidget("tasks")
tasks.writeConfig("showOnlyCurrentScreen", true);
}
}
'';
in
pkgs.stdenv.mkDerivation {
inherit (pkg) name meta;
buildCommand = ''
mkdir -p $out
cp -prf ${pkg}/* $out/
chmod a+w $out/share/apps/plasma-desktop/init
cp -f ${plasmaInit} $out/share/apps/plasma-desktop/init/00-defaultLayout.js
'';
};
} }

View File

@ -1,7 +1,7 @@
# This module generates nixos-install, nixos-rebuild, # This module generates nixos-install, nixos-rebuild,
# nixos-generate-config, etc. # nixos-generate-config, etc.
{ config, pkgs, modulesPath, lib, ... }: { config, pkgs, modulesPath, ... }:
let let

View File

@ -156,8 +156,7 @@
mailpile = 146; mailpile = 146;
redmine = 147; redmine = 147;
seeks = 148; seeks = 148;
prosody = 149;
prosody = 148;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -281,8 +280,7 @@
mailpile = 146; mailpile = 146;
redmine = 147; redmine = 147;
seeks = 148; seeks = 148;
prosody = 149;
prosody = 148;
# When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399! # When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399!

View File

@ -364,6 +364,7 @@
./tasks/filesystems/cifs.nix ./tasks/filesystems/cifs.nix
./tasks/filesystems/ext.nix ./tasks/filesystems/ext.nix
./tasks/filesystems/f2fs.nix ./tasks/filesystems/f2fs.nix
./tasks/filesystems/jfs.nix
./tasks/filesystems/nfs.nix ./tasks/filesystems/nfs.nix
./tasks/filesystems/reiserfs.nix ./tasks/filesystems/reiserfs.nix
./tasks/filesystems/unionfs-fuse.nix ./tasks/filesystems/unionfs-fuse.nix

View File

@ -30,7 +30,7 @@ in
type = types.bool; type = types.bool;
default = false; default = false;
description = '' description = ''
Enable the stable grsecurity patch, based on Linux 3.2. Enable the stable grsecurity patch, based on Linux 3.14.
''; '';
}; };
@ -38,7 +38,7 @@ in
type = types.bool; type = types.bool;
default = false; default = false;
description = '' description = ''
Enable the testing grsecurity patch, based on Linux 3.13. Enable the testing grsecurity patch, based on Linux 3.17.
''; '';
}; };

View File

@ -19,7 +19,7 @@ let
org.neo4j.server.webadmin.rrdb.location=${cfg.dataDir}/data/rrd org.neo4j.server.webadmin.rrdb.location=${cfg.dataDir}/data/rrd
org.neo4j.server.webadmin.data.uri=/db/data/ org.neo4j.server.webadmin.data.uri=/db/data/
org.neo4j.server.webadmin.management.uri=/db/manage/ org.neo4j.server.webadmin.management.uri=/db/manage/
org.neo4j.server.db.tuning.properties=${pkgs.neo4j}/share/neo4j/conf/neo4j.properties org.neo4j.server.db.tuning.properties=${cfg.package}/share/neo4j/conf/neo4j.properties
org.neo4j.server.manage.console_engines=shell org.neo4j.server.manage.console_engines=shell
${cfg.extraServerConfig} ${cfg.extraServerConfig}
''; '';
@ -46,6 +46,12 @@ in {
type = types.uniq types.bool; type = types.uniq types.bool;
}; };
package = mkOption {
description = "Neo4j package to use.";
default = pkgs.neo4j;
type = types.package;
};
host = mkOption { host = mkOption {
description = "Neo4j listen address."; description = "Neo4j listen address.";
default = "127.0.0.1"; default = "127.0.0.1";
@ -119,7 +125,7 @@ in {
after = [ "network-interfaces.target" ]; after = [ "network-interfaces.target" ];
environment = { NEO4J_INSTANCE = cfg.dataDir; }; environment = { NEO4J_INSTANCE = cfg.dataDir; };
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.neo4j}/bin/neo4j console"; ExecStart = "${cfg.package}/bin/neo4j console";
User = "neo4j"; User = "neo4j";
PermissionsStartOnly = true; PermissionsStartOnly = true;
}; };

View File

@ -168,7 +168,6 @@ in
hardware.firmware = mkOption { hardware.firmware = mkOption {
type = types.listOf types.path; type = types.listOf types.path;
default = []; default = [];
example = [ "/root/my-firmware" ];
description = '' description = ''
List of directories containing firmware files. Such files List of directories containing firmware files. Such files
will be loaded automatically if the kernel asks for them will be loaded automatically if the kernel asks for them
@ -177,10 +176,10 @@ in
firmware file with the same name, the first path in the list firmware file with the same name, the first path in the list
takes precedence. Note that you must rebuild your system if takes precedence. Note that you must rebuild your system if
you add files to any of these directories. For quick testing, you add files to any of these directories. For quick testing,
put firmware files in /root/test-firmware and add that put firmware files in <filename>/root/test-firmware</filename>
directory to the list. and add that directory to the list. Note that you can also
Note that you can also add firmware packages to this add firmware packages to this list as these are directories in
list as these are directories in the nix store. the nix store.
''; '';
apply = list: pkgs.buildEnv { apply = list: pkgs.buildEnv {
name = "firmware"; name = "firmware";
@ -244,6 +243,11 @@ in
echo "regenerating udev hardware database..." echo "regenerating udev hardware database..."
${config.systemd.package}/bin/udevadm hwdb --update && ln -sfn ${config.systemd.package} /var/lib/udev/prev-systemd ${config.systemd.package}/bin/udevadm hwdb --update && ln -sfn ${config.systemd.package} /var/lib/udev/prev-systemd
fi fi
# Allow the kernel to find our firmware.
if [ -e /sys/module/firmware_class/parameters/path ]; then
echo -n "${config.hardware.firmware}" > /sys/module/firmware_class/parameters/path
fi
''; '';
systemd.services.systemd-udevd = systemd.services.systemd-udevd =

View File

@ -21,6 +21,7 @@ in
config = mkOption { config = mkOption {
default = ""; default = "";
type = types.lines;
description = '' description = ''
The contents of the logrotate config file The contents of the logrotate config file
''; '';

View File

@ -7,8 +7,7 @@ let
cfg = config.services.syslog-ng; cfg = config.services.syslog-ng;
syslogngConfig = pkgs.writeText "syslog-ng.conf" '' syslogngConfig = pkgs.writeText "syslog-ng.conf" ''
@version: 3.5 ${cfg.configHeader}
@include "scl.conf"
${cfg.extraConfig} ${cfg.extraConfig}
''; '';
@ -72,6 +71,17 @@ in {
Configuration added to the end of <literal>syslog-ng.conf</literal>. Configuration added to the end of <literal>syslog-ng.conf</literal>.
''; '';
}; };
configHeader = mkOption {
type = types.lines;
default = ''
@version: 3.5
@include "scl.conf"
'';
description = ''
The very first lines of the configuration file. Should usually contain
the syslog-ng version header.
'';
};
}; };
}; };

View File

@ -24,6 +24,8 @@ let
GRAPHITE_URL = cfg.seyren.graphiteUrl; GRAPHITE_URL = cfg.seyren.graphiteUrl;
} // cfg.seyren.extraConfig; } // cfg.seyren.extraConfig;
pagerConfig = pkgs.writeText "alarms.yaml" cfg.pager.alerts;
configDir = pkgs.buildEnv { configDir = pkgs.buildEnv {
name = "graphite-config"; name = "graphite-config";
paths = lists.filter (el: el != null) [ paths = lists.filter (el: el != null) [
@ -83,13 +85,21 @@ in {
api = { api = {
enable = mkOption { enable = mkOption {
description = "Whether to enable graphite api."; description = ''
Whether to enable graphite api. Graphite api is lightweight alternative
to graphite web, with api and without dashboard. It's advised to use
grafana as alternative dashboard and influxdb as alternative to
graphite carbon.
For more information visit
<link xlink:href="http://graphite-api.readthedocs.org/en/latest/"/>
'';
default = false; default = false;
type = types.uniq types.bool; type = types.uniq types.bool;
}; };
finders = mkOption { finders = mkOption {
description = "List of finder plugins load."; description = "List of finder plugins to load.";
default = []; default = [];
example = [ pkgs.python27Packages.graphite_influxdb ]; example = [ pkgs.python27Packages.graphite_influxdb ];
type = types.listOf types.package; type = types.listOf types.package;
@ -301,170 +311,238 @@ in {
''; '';
}; };
}; };
pager = {
enable = mkOption {
description = ''
Whether to enable graphite-pager service. For more information visit
<link xlink:href="https://github.com/seatgeek/graphite-pager"/>
'';
default = false;
type = types.uniq types.bool;
};
redisUrl = mkOption {
description = "Redis connection string.";
default = "redis://localhost:${toString config.services.redis.port}/";
type = types.str;
};
graphiteUrl = mkOption {
description = "URL to your graphite service.";
default = "http://${cfg.web.host}:${toString cfg.web.port}";
type = types.str;
};
alerts = mkOption {
description = "Alerts configuration for graphite-pager.";
default = ''
alerts:
- target: constantLine(100)
warning: 90
critical: 200
name: Test
'';
example = literalExample ''
pushbullet_key: pushbullet_api_key
alerts:
- target: stats.seatgeek.app.deal_quality.venue_info_cache.hit
warning: .5
critical: 1
name: Deal quality venue cache hits
'';
type = types.lines;
};
};
}; };
###### implementation ###### implementation
config = mkIf ( config = mkMerge [
cfg.carbon.enableAggregator || (mkIf cfg.carbon.enableCache {
cfg.carbon.enableCache || systemd.services.carbonCache = {
cfg.carbon.enableRelay || description = "Graphite Data Storage Backend";
cfg.web.enable || wantedBy = [ "multi-user.target" ];
cfg.api.enable || after = [ "network-interfaces.target" ];
cfg.seyren.enable environment = carbonEnv;
) { serviceConfig = {
systemd.services.carbonCache = { ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-cache"}";
enable = cfg.carbon.enableCache; User = "graphite";
description = "Graphite Data Storage Backend"; Group = "graphite";
wantedBy = [ "multi-user.target" ]; PermissionsStartOnly = true;
after = [ "network-interfaces.target" ]; };
environment = carbonEnv; preStart = ''
serviceConfig = { mkdir -p ${cfg.dataDir}/whisper
ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-cache"}"; chmod 0700 ${cfg.dataDir}/whisper
User = "graphite";
Group = "graphite";
PermissionsStartOnly = true;
};
preStart = ''
mkdir -p ${cfg.dataDir}/whisper
chmod 0700 ${cfg.dataDir}/whisper
chown -R graphite:graphite ${cfg.dataDir}
'';
};
systemd.services.carbonAggregator = {
enable = cfg.carbon.enableAggregator;
description = "Carbon Data Aggregator";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = carbonEnv;
serviceConfig = {
ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-aggregator"}";
User = "graphite";
Group = "graphite";
};
};
systemd.services.carbonRelay = {
enable = cfg.carbon.enableRelay;
description = "Carbon Data Relay";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = carbonEnv;
serviceConfig = {
ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-relay"}";
User = "graphite";
Group = "graphite";
};
};
systemd.services.graphiteWeb = {
enable = cfg.web.enable;
description = "Graphite Web Interface";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
path = [ pkgs.perl ];
environment = {
PYTHONPATH = "${pkgs.python27Packages.graphite_web}/lib/python2.7/site-packages";
DJANGO_SETTINGS_MODULE = "graphite.settings";
GRAPHITE_CONF_DIR = configDir;
GRAPHITE_STORAGE_DIR = dataDir;
};
serviceConfig = {
ExecStart = ''
${pkgs.python27Packages.waitress}/bin/waitress-serve \
--host=${cfg.web.host} --port=${toString cfg.web.port} \
--call django.core.handlers.wsgi:WSGIHandler'';
User = "graphite";
Group = "graphite";
PermissionsStartOnly = true;
};
preStart = ''
if ! test -e ${dataDir}/db-created; then
mkdir -p ${dataDir}/{whisper/,log/webapp/}
chmod 0700 ${dataDir}/{whisper/,log/webapp/}
# populate database
${pkgs.python27Packages.graphite_web}/bin/manage-graphite.py syncdb --noinput
# create index
${pkgs.python27Packages.graphite_web}/bin/build-index.sh
touch ${dataDir}/db-created
chown -R graphite:graphite ${cfg.dataDir} chown -R graphite:graphite ${cfg.dataDir}
fi
'';
};
systemd.services.graphiteApi = {
enable = cfg.api.enable;
description = "Graphite Api Interface";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = {
PYTHONPATH =
"${cfg.api.package}/lib/python2.7/site-packages:" +
concatMapStringsSep ":" (f: f + "/lib/python2.7/site-packages") cfg.api.finders;
GRAPHITE_API_CONFIG = graphiteApiConfig;
LD_LIBRARY_PATH = "${pkgs.cairo}/lib";
};
serviceConfig = {
ExecStart = ''
${pkgs.python27Packages.waitress}/bin/waitress-serve \
--host=${cfg.api.host} --port=${toString cfg.api.port} \
graphite_api.app:app
''; '';
User = "graphite";
Group = "graphite";
PermissionsStartOnly = true;
}; };
preStart = '' })
if ! test -e ${dataDir}/db-created; then
mkdir -p ${dataDir}/cache/
chmod 0700 ${dataDir}/cache/
touch ${dataDir}/db-created (mkIf cfg.carbon.enableAggregator {
systemd.services.carbonAggregator = {
chown -R graphite:graphite ${cfg.dataDir} enable = cfg.carbon.enableAggregator;
fi description = "Carbon Data Aggregator";
''; wantedBy = [ "multi-user.target" ];
}; after = [ "network-interfaces.target" ];
environment = carbonEnv;
systemd.services.seyren = { serviceConfig = {
enable = cfg.seyren.enable; ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-aggregator"}";
description = "Graphite Alerting Dashboard"; User = "graphite";
wantedBy = [ "multi-user.target" ]; Group = "graphite";
after = [ "network-interfaces.target" "mongodb.service" ]; };
environment = seyrenConfig;
serviceConfig = {
ExecStart = "${pkgs.seyren}/bin/seyren -httpPort ${toString cfg.seyren.port}";
WorkingDirectory = dataDir;
User = "graphite";
Group = "graphite";
}; };
preStart = '' })
if ! test -e ${dataDir}/db-created; then
mkdir -p ${dataDir}
chown -R graphite:graphite ${dataDir}
fi
'';
};
services.mongodb.enable = mkDefault cfg.seyren.enable; (mkIf cfg.carbon.enableRelay {
systemd.services.carbonRelay = {
description = "Carbon Data Relay";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = carbonEnv;
serviceConfig = {
ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-relay"}";
User = "graphite";
Group = "graphite";
};
};
})
environment.systemPackages = [ (mkIf (cfg.carbon.enableCache || cfg.carbon.enableAggregator || cfg.carbon.enableRelay) {
pkgs.pythonPackages.carbon environment.systemPackages = [
pkgs.python27Packages.graphite_web pkgs.pythonPackages.carbon
pkgs.python27Packages.waitress ];
]; })
users.extraUsers = singleton { (mkIf cfg.web.enable {
name = "graphite"; systemd.services.graphiteWeb = {
uid = config.ids.uids.graphite; description = "Graphite Web Interface";
description = "Graphite daemon user"; wantedBy = [ "multi-user.target" ];
home = dataDir; after = [ "network-interfaces.target" ];
}; path = [ pkgs.perl ];
users.extraGroups.graphite.gid = config.ids.gids.graphite; environment = {
}; PYTHONPATH = "${pkgs.python27Packages.graphite_web}/lib/python2.7/site-packages";
DJANGO_SETTINGS_MODULE = "graphite.settings";
GRAPHITE_CONF_DIR = configDir;
GRAPHITE_STORAGE_DIR = dataDir;
};
serviceConfig = {
ExecStart = ''
${pkgs.python27Packages.waitress}/bin/waitress-serve \
--host=${cfg.web.host} --port=${toString cfg.web.port} \
--call django.core.handlers.wsgi:WSGIHandler'';
User = "graphite";
Group = "graphite";
PermissionsStartOnly = true;
};
preStart = ''
if ! test -e ${dataDir}/db-created; then
mkdir -p ${dataDir}/{whisper/,log/webapp/}
chmod 0700 ${dataDir}/{whisper/,log/webapp/}
# populate database
${pkgs.python27Packages.graphite_web}/bin/manage-graphite.py syncdb --noinput
# create index
${pkgs.python27Packages.graphite_web}/bin/build-index.sh
touch ${dataDir}/db-created
chown -R graphite:graphite ${cfg.dataDir}
fi
'';
};
environment.systemPackages = [ pkgs.python27Packages.graphite_web ];
})
(mkIf cfg.api.enable {
systemd.services.graphiteApi = {
description = "Graphite Api Interface";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = {
PYTHONPATH =
"${cfg.api.package}/lib/python2.7/site-packages:" +
concatMapStringsSep ":" (f: f + "/lib/python2.7/site-packages") cfg.api.finders;
GRAPHITE_API_CONFIG = graphiteApiConfig;
LD_LIBRARY_PATH = "${pkgs.cairo}/lib";
};
serviceConfig = {
ExecStart = ''
${pkgs.python27Packages.waitress}/bin/waitress-serve \
--host=${cfg.api.host} --port=${toString cfg.api.port} \
graphite_api.app:app
'';
User = "graphite";
Group = "graphite";
PermissionsStartOnly = true;
};
preStart = ''
if ! test -e ${dataDir}/db-created; then
mkdir -p ${dataDir}/cache/
chmod 0700 ${dataDir}/cache/
touch ${dataDir}/db-created
chown -R graphite:graphite ${cfg.dataDir}
fi
'';
};
})
(mkIf cfg.seyren.enable {
systemd.services.seyren = {
description = "Graphite Alerting Dashboard";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" "mongodb.service" ];
environment = seyrenConfig;
serviceConfig = {
ExecStart = "${pkgs.seyren}/bin/seyren -httpPort ${toString cfg.seyren.port}";
WorkingDirectory = dataDir;
User = "graphite";
Group = "graphite";
};
preStart = ''
if ! test -e ${dataDir}/db-created; then
mkdir -p ${dataDir}
chown -R graphite:graphite ${dataDir}
fi
'';
};
services.mongodb.enable = mkDefault true;
})
(mkIf cfg.pager.enable {
systemd.services.graphitePager = {
description = "Graphite Pager Alerting Daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" "redis.service" ];
environment = {
REDIS_URL = cfg.pager.redisUrl;
GRAPHITE_URL = cfg.pager.graphiteUrl;
};
serviceConfig = {
ExecStart = "${pkgs.pythonPackages.graphite_pager}/bin/graphite-pager --config ${pagerConfig}";
User = "graphite";
Group = "graphite";
};
};
services.redis.enable = mkDefault true;
environment.systemPackages = [ pkgs.pythonPackages.graphite_pager ];
})
{
users.extraUsers = singleton {
name = "graphite";
uid = config.ids.uids.graphite;
description = "Graphite daemon user";
home = dataDir;
};
users.extraGroups.graphite.gid = config.ids.gids.graphite;
}
];
} }

View File

@ -64,6 +64,13 @@ in
Use fixed port for rpc.mountd, usefull if server is behind firewall. Use fixed port for rpc.mountd, usefull if server is behind firewall.
''; '';
}; };
lockdPort = mkOption {
default = 0;
description = ''
Fix the lockd port number. This can help setting firewall rules for NFS.
'';
};
}; };
}; };
@ -104,6 +111,9 @@ in
# Create a state directory required by NFSv4. # Create a state directory required by NFSv4.
mkdir -p /var/lib/nfs/v4recovery mkdir -p /var/lib/nfs/v4recovery
${pkgs.procps}/sbin/sysctl -w fs.nfs.nlm_tcpport=${builtins.toString cfg.lockdPort}
${pkgs.procps}/sbin/sysctl -w fs.nfs.nlm_udpport=${builtins.toString cfg.lockdPort}
rpc.nfsd \ rpc.nfsd \
${if cfg.hostName != null then "-H ${cfg.hostName}" else ""} \ ${if cfg.hostName != null then "-H ${cfg.hostName}" else ""} \
${builtins.toString cfg.nproc} ${builtins.toString cfg.nproc}

View File

@ -0,0 +1,11 @@
pubs=($pubs)
hosts=($hosts)
lines="''\n"
for ((i = 0; i < ${#pubs[*]}; i++)); do
addr=$($cjdns/bin/publictoip6 ${pubs[i]})
lines="${lines}$addr ${hosts[i]}\n"
done
lines="${lines}''"
echo -ne $lines > $out

View File

@ -4,8 +4,46 @@ with lib;
let let
pkg = pkgs.cjdns;
cfg = config.services.cjdns; cfg = config.services.cjdns;
connectToSubmodule =
{ options, ... }:
{ options =
{ password = mkOption {
type = types.str;
description = "Authorized password to the opposite end of the tunnel.";
};
publicKey = mkOption {
type = types.str;
description = "Public key at the opposite end of the tunnel.";
};
hostname = mkOption {
default = "";
example = "foobar.hype";
type = types.str;
description = "Optional hostname to add to /etc/hosts; prevents reverse lookup failures.";
};
};
};
peers = mapAttrsToList (n: v: v) (cfg.ETHInterface.connectTo // cfg.UDPInterface.connectTo);
pubs = toString (map (p: if p.hostname == "" then "" else p.publicKey) peers);
hosts = toString (map (p: if p.hostname == "" then "" else p.hostname) peers);
cjdnsHosts =
if hosts != "" then
import (pkgs.stdenv.mkDerivation {
name = "cjdns-hosts";
builder = ./cjdns-hosts.sh;
inherit (pkgs) cjdns;
inherit pubs hosts;
})
else "";
# would be nice to merge 'cfg' with a //, # would be nice to merge 'cfg' with a //,
# but the json nesting is wacky. # but the json nesting is wacky.
cjdrouteConf = builtins.toJSON ( { cjdrouteConf = builtins.toJSON ( {
@ -44,7 +82,7 @@ in
enable = mkOption { enable = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
description = '' description = ''
Whether to enable the cjdns network encryption Whether to enable the cjdns network encryption
and routing engine. A file at /etc/cjdns.keys will and routing engine. A file at /etc/cjdns.keys will
@ -53,84 +91,80 @@ in
''; '';
}; };
confFile = mkOption {
type = types.str;
default = "";
example = "/etc/cjdroute.conf";
description = ''
Ignore all other cjdns options and load configuration from this file.
'';
};
authorizedPasswords = mkOption { authorizedPasswords = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ ]; default = [ ];
example = [ example = [
"snyrfgkqsc98qh1y4s5hbu0j57xw5s0" "snyrfgkqsc98qh1y4s5hbu0j57xw5s0"
"z9md3t4p45mfrjzdjurxn4wuj0d8swv" "z9md3t4p45mfrjzdjurxn4wuj0d8swv"
"49275fut6tmzu354pq70sr5b95qq0vj" "49275fut6tmzu354pq70sr5b95qq0vj"
]; ];
description = '' description = ''
Any remote cjdns nodes that offer these passwords on Any remote cjdns nodes that offer these passwords on
connection will be allowed to route through this node. connection will be allowed to route through this node.
''; '';
}; };
admin = { admin = {
bind = mkOption { bind = mkOption {
type = types.string; type = types.string;
default = "127.0.0.1:11234"; default = "127.0.0.1:11234";
description = '' description = ''
Bind the administration port to this address and port. Bind the administration port to this address and port.
''; '';
}; };
}; };
UDPInterface = { UDPInterface = {
bind = mkOption { bind = mkOption {
type = types.string; type = types.string;
default = ""; default = "";
example = "192.168.1.32:43211"; example = "192.168.1.32:43211";
description = '' description = ''
Address and port to bind UDP tunnels to. Address and port to bind UDP tunnels to.
''; '';
}; };
connectTo = mkOption { connectTo = mkOption {
type = types.attrsOf ( types.submodule ( type = types.attrsOf ( types.submodule ( connectToSubmodule ) );
{ options, ... }: default = { };
{ options = {
# TODO make host an option, and add it to networking.extraHosts
password = mkOption {
type = types.str;
description = "Authorized password to the opposite end of the tunnel.";
};
publicKey = mkOption {
type = types.str;
description = "Public key at the opposite end of the tunnel.";
};
};
}
));
default = { };
example = { example = {
"192.168.1.1:27313" = { "192.168.1.1:27313" = {
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM"; hostname = "homer.hype";
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k"; publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
}; };
}; };
description = '' description = ''
Credentials for making UDP tunnels. Credentials for making UDP tunnels.
''; '';
}; };
}; };
ETHInterface = { ETHInterface = {
bind = mkOption { bind = mkOption {
default = ""; default = "";
example = "eth0"; example = "eth0";
description = '' description = ''
Bind to this device for native ethernet operation. Bind to this device for native ethernet operation.
''; '';
}; };
beacon = mkOption { beacon = mkOption {
type = types.int; type = types.int;
default = 2; default = 2;
description = '' description = ''
Auto-connect to other cjdns nodes on the same network. Auto-connect to other cjdns nodes on the same network.
Options: Options:
0: Disabled. 0: Disabled.
1: Accept beacons, this will cause cjdns to accept incoming 1: Accept beacons, this will cause cjdns to accept incoming
beacon messages and try connecting to the sender. beacon messages and try connecting to the sender.
2: Accept and send beacons, this will cause cjdns to broadcast 2: Accept and send beacons, this will cause cjdns to broadcast
@ -142,32 +176,20 @@ in
}; };
connectTo = mkOption { connectTo = mkOption {
type = types.attrsOf ( types.submodule ( type = types.attrsOf ( types.submodule ( connectToSubmodule ) );
{ options, ... }: default = { };
{ options = {
password = mkOption {
type = types.str;
description = "Authorized password to the opposite end of the tunnel.";
};
publicKey = mkOption {
type = types.str;
description = "Public key at the opposite end of the tunnel.";
};
};
}
));
default = { };
example = { example = {
"01:02:03:04:05:06" = { "01:02:03:04:05:06" = {
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM"; hostname = "homer.hype";
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k"; publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
}; };
}; };
description = '' description = ''
Credentials for connecting look similar to UDP credientials Credentials for connecting look similar to UDP credientials
except they begin with the mac address. except they begin with the mac address.
''; '';
}; };
}; };
}; };
@ -185,34 +207,48 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ]; after = [ "network-interfaces.target" ];
script = '' script = (
source /etc/cjdns.keys if cfg.confFile != "" then "${pkg}/bin/cjdroute < ${cfg.confFile}" else
echo '${cjdrouteConf}' | sed \ ''
-e "s/@CJDNS_ADMIN_PASSWORD@/$CJDNS_ADMIN_PASSWORD/g" \ source /etc/cjdns.keys
-e "s/@CJDNS_PRIVATE_KEY@/$CJDNS_PRIVATE_KEY/g" \ echo '${cjdrouteConf}' | sed \
| ${pkgs.cjdns}/bin/cjdroute -e "s/@CJDNS_ADMIN_PASSWORD@/$CJDNS_ADMIN_PASSWORD/g" \
''; -e "s/@CJDNS_PRIVATE_KEY@/$CJDNS_PRIVATE_KEY/g" \
| ${pkg}/bin/cjdroute
''
);
serviceConfig = { serviceConfig = {
Type = "forking"; Type = "forking";
Restart = "on-failure"; Restart = "on-failure";
}; };
}; };
system.activationScripts.cjdns = '' system.activationScripts.cjdns = if (cfg.confFile == "") then "" else ''
cjdnsWriteKeys() {
private=$1
ipv6=$2
public=$3
echo "CJDNS_PRIVATE_KEY=$1" >> /etc/cjdns.keys
echo -e "CJDNS_IPV6=$2\nCJDNS_PUBLIC_KEY=$3" > /etc/cjdns.public
chmod 600 /etc/cjdns.keys
chmod 444 /etc/cjdns.public
}
grep -q "CJDNS_PRIVATE_KEY=" /etc/cjdns.keys || \ grep -q "CJDNS_PRIVATE_KEY=" /etc/cjdns.keys || \
echo "CJDNS_PRIVATE_KEY=$(${pkgs.cjdns}/bin/makekey)" \ cjdnsWriteKeys $(${pkg}/bin/makekeys)
>> /etc/cjdns.keys
grep -q "CJDNS_ADMIN_PASSWORD=" /etc/cjdns.keys || \ grep -q "CJDNS_ADMIN_PASSWORD=" /etc/cjdns.keys || \
echo "CJDNS_ADMIN_PASSWORD=$(${pkgs.coreutils}/bin/head -c 96 /dev/urandom | ${pkgs.coreutils}/bin/tr -dc A-Za-z0-9)" \ echo "CJDNS_ADMIN_PASSWORD=$(${pkgs.coreutils}/bin/head -c 96 /dev/urandom | ${pkgs.coreutils}/bin/tr -dc A-Za-z0-9)" \
>> /etc/cjdns.keys >> /etc/cjdns.keys
chmod 600 /etc/cjdns.keys
''; '';
networking.extraHosts = "${cjdnsHosts}";
assertions = [ assertions = [
{ assertion = ( cfg.ETHInterface.bind != "" || cfg.UDPInterface.bind != "" ); { assertion = ( cfg.ETHInterface.bind != "" || cfg.UDPInterface.bind != "" || cfg.confFile == "" );
message = "Neither cjdns.ETHInterface.bind nor cjdns.UDPInterface.bind defined."; message = "Neither cjdns.ETHInterface.bind nor cjdns.UDPInterface.bind defined.";
} }
{ assertion = config.networking.enableIPv6; { assertion = config.networking.enableIPv6;

View File

@ -103,12 +103,8 @@ in
description = "caching web proxy"; description = "caching web proxy";
after = [ "network.target" "nss-lookup.target" ]; after = [ "network.target" "nss-lookup.target" ];
wantedBy = [ "multi-user.target"]; wantedBy = [ "multi-user.target"];
preStart = ''
${pkgs.coreutils}/bin/chown polipo:polipo /var/cache/polipo -R
'';
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.polipo}/bin/polipo -c ${polipoConfig}"; ExecStart = "${pkgs.polipo}/bin/polipo -c ${polipoConfig}";
ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
User = "polipo"; User = "polipo";
}; };
}; };

View File

@ -91,6 +91,11 @@ let
description = "Serve static files from a directory over HTTP"; description = "Serve static files from a directory over HTTP";
}; };
websocket = mkOption {
default = false;
description = "Enable WebSocket support";
};
}; };
createSSLOptsStr = o: createSSLOptsStr = o:

View File

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

View File

@ -81,7 +81,7 @@ in {
services.upower.enable = config.powerManagement.enable; services.upower.enable = config.powerManagement.enable;
services.upower.package = gnome3.upower; services.upower.package = gnome3.upower;
fonts.fonts = [ pkgs.dejavu_fonts ]; fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell_fonts ];
services.xserver.desktopManager.session = singleton services.xserver.desktopManager.session = singleton
{ name = "gnome3"; { name = "gnome3";

View File

@ -7,6 +7,7 @@ let
xcfg = config.services.xserver; xcfg = config.services.xserver;
cfg = xcfg.desktopManager.kde4; cfg = xcfg.desktopManager.kde4;
xorg = pkgs.xorg; xorg = pkgs.xorg;
kde_workspace = config.services.xserver.desktopManager.kde4.kdeWorkspacePackage;
# Disable Nepomuk and Strigi by default. As of KDE 4.7, they don't # Disable Nepomuk and Strigi by default. As of KDE 4.7, they don't
# really work very well (e.g. searching files often fails to find # really work very well (e.g. searching files often fails to find
@ -61,6 +62,13 @@ in
example = ["gstreamer" "vlc"]; example = ["gstreamer" "vlc"];
description = "Which phonon multimedia backend kde should use"; description = "Which phonon multimedia backend kde should use";
}; };
kdeWorkspacePackage = mkOption {
internal = true;
default = pkgs.kde4.kde_workspace;
type = types.package;
description = "Custom kde-workspace, used for NixOS rebranding.";
};
}; };
environment.kdePackages = mkOption { environment.kdePackages = mkOption {
@ -108,13 +116,13 @@ in
fi fi
# Start KDE. # Start KDE.
exec ${pkgs.kde4.kdebase_workspace}/bin/startkde exec ${kde_workspace}/bin/startkde
''; '';
}; };
security.setuidOwners = singleton security.setuidOwners = singleton
{ program = "kcheckpass"; { program = "kcheckpass";
source = "${pkgs.kde4.kdebase_workspace}/lib/kde4/libexec/kcheckpass"; source = "${kde_workspace}/lib/kde4/libexec/kcheckpass";
owner = "root"; owner = "root";
group = "root"; group = "root";
setuid = true; setuid = true;
@ -124,7 +132,7 @@ in
[ pkgs.kde4.kdelibs [ pkgs.kde4.kdelibs
pkgs.kde4.kde_baseapps # Splitted kdebase pkgs.kde4.kde_baseapps # Splitted kdebase
pkgs.kde4.kde_workspace kde_workspace
pkgs.kde4.kde_runtime pkgs.kde4.kde_runtime
pkgs.kde4.konsole pkgs.kde4.konsole
pkgs.kde4.kate pkgs.kde4.kate
@ -146,8 +154,10 @@ in
pkgs.strigi # used by nepomuk pkgs.strigi # used by nepomuk
pkgs.mysql # used by akonadi pkgs.mysql # used by akonadi
] ]
++ [ nepomukConfig ] ++ phononBackendPackages ++ lib.optional config.hardware.pulseaudio.enable pkgs.kde4.kmix # Perhaps this should always be enabled
++ config.environment.kdePackages; ++ lib.optional config.hardware.bluetooth.enable pkgs.kde4.bluedevil
++ lib.optional config.networking.networkmanager.enable pkgs.kde4.plasma-nm
++ [ nepomukConfig ] ++ phononBackendPackages;
environment.pathsToLink = [ "/share" ]; environment.pathsToLink = [ "/share" ];

View File

@ -1,163 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.kde4_next;
xorg = pkgs.xorg;
kde = pkgs.kde4_next;
# Disable Nepomuk and Strigi by default. As of KDE 4.7, they don't
# really work very well (e.g. searching files often fails to find
# files), segfault sometimes and consume significant resources.
# They can be re-enabled in the KDE System Settings under "Desktop
# Search".
nepomukConfig = pkgs.writeTextFile
{ name = "nepomuk-config";
destination = "/share/config/nepomukserverrc";
text =
''
[Basic Settings]
Start Nepomuk=false
[Service-nepomukstrigiservice]
autostart=false
'';
};
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.gst_all.gstreamer # needed?
];
vlc = [pkgs.phonon_backend_vlc];
};
phononBackendPackages = flip concatMap cfg.phononBackends
(name: attrByPath [name] (throw "unknown phonon backend `${name}'") phononBackends);
in
{
options = {
services.xserver.desktopManager.kde4_next = {
enable = mkOption {
type = types.bool;
default = false;
description = "Enable the KDE 4 desktop environment.";
};
phononBackends = mkOption {
type = types.listOf types.str;
default = ["gstreamer"];
example = ["gstreamer" "vlc"];
description = "Which phonon multimedia backend kde should use";
};
};
};
config = mkIf (xcfg.enable && cfg.enable) {
# If KDE 4 is enabled, make it the default desktop manager (unless
# overridden by the user's configuration).
# !!! doesn't work yet ("Multiple definitions. Only one is allowed
# for this option.")
# services.xserver.desktopManager.default = mkOverride 900 "kde4";
services.xserver.desktopManager.session = singleton
{ name = "kde4_next";
bgSupport = true;
start =
''
# The KDE icon cache is supposed to update itself
# automatically, but it uses the timestamp on the icon
# theme directory as a trigger. Since in Nix the
# timestamp is always the same, this doesn't work. So as
# a workaround, nuke the icon cache on login. This isn't
# perfect, since it may require logging out after
# installing new applications to update the cache.
# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html
rm -fv $HOME/.kde/cache-*/icon-cache.kcache
# Qt writes a weird libraryPath line to
# ~/.config/Trolltech.conf that causes the KDE plugin
# paths of previous KDE invocations to be searched.
# Obviously using mismatching KDE libraries is potentially
# disastrous, so here we nuke references to the Nix store
# in Trolltech.conf. A better solution would be to stop
# Qt from doing this wackiness in the first place.
if [ -e $HOME/.config/Trolltech.conf ]; then
sed -e '/nix\\store\|nix\/store/ d' -i $HOME/.config/Trolltech.conf
fi
# Start KDE.
exec ${kde.kdebase_workspace}/bin/startkde
'';
};
security.setuidOwners = singleton
{ program = "kcheckpass";
source = "${kde.kdebase_workspace}/lib/kde4/libexec/kcheckpass";
owner = "root";
group = "root";
setuid = true;
};
environment.systemPackages =
[ kde.kdelibs
kde.kde_baseapps # Splitted kdebase
kde.kde_workspace
kde.kde_runtime
kde.konsole
kde.kate
kde.kde_wallpapers # contains kdm's default background
kde.oxygen_icons
pkgs.virtuoso # to enable Nepomuk to find Virtuoso
# Starts KDE's Polkit authentication agent.
kde.polkit_kde_agent
# Miscellaneous runtime dependencies.
kde.qt4 # needed for qdbus
pkgs.shared_mime_info
xorg.xmessage # so that startkde can show error messages
xorg.xset # used by startkde, non-essential
xorg.xauth # used by kdesu
pkgs.shared_desktop_ontologies # used by nepomuk
pkgs.strigi # used by nepomuk
pkgs.mysql # used by akonadi
]
++ lib.optional config.hardware.pulseaudio.enable kde.kmix # Perhaps this should always be enabled
++ lib.optional config.hardware.bluetooth.enable kde.bluedevil
++ lib.optional config.networking.networkmanager.enable kde.networkmanagement
++ [ nepomukConfig ] ++ phononBackendPackages;
environment.pathsToLink = [ "/share" ];
environment.etc = singleton
{ source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
target = "X11/xkb";
};
# Enable helpful DBus services.
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
security.pam.services.kde = { allowNullPassword = true; };
};
}

View File

@ -10,15 +10,19 @@ let
systemd = cfg.package; systemd = cfg.package;
makeUnit = name: unit: makeUnit = name: unit:
let
pathSafeName = lib.replaceChars ["@" "\\"] ["-" "-"] name;
in
if unit.enable then if unit.enable then
pkgs.runCommand "unit" { preferLocalBuild = true; inherit (unit) text; } pkgs.runCommand "unit-${pathSafeName}" { preferLocalBuild = true; inherit (unit) text; }
'' ''
mkdir -p $out mkdir -p $out
echo -n "$text" > $out/${shellEscape name} echo -n "$text" > $out/${shellEscape name}
'' ''
else else
pkgs.runCommand "unit" { preferLocalBuild = true; } pkgs.runCommand "unit-${pathSafeName}-disabled" { preferLocalBuild = true; }
'' ''
mkdir -p $out mkdir -p $out
ln -s /dev/null $out/${shellEscape name} ln -s /dev/null $out/${shellEscape name}

View File

@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
with lib;
let
inInitrd = any (fs: fs == "jfs") config.boot.initrd.supportedFilesystems;
in
{
config = mkIf (any (fs: fs == "jfs") config.boot.supportedFilesystems) {
system.fsPackages = [ pkgs.jfsutils ];
boot.initrd.kernelModules = mkIf inInitrd [ "jfs" ];
boot.initrd.extraUtilsCommands = mkIf inInitrd ''
cp -v ${pkgs.jfsutils}/sbin/fsck.jfs "$out/bin/"
'';
};
}

View File

@ -383,7 +383,7 @@ in
# When building a regular system configuration, override whatever # When building a regular system configuration, override whatever
# video driver the host uses. # video driver the host uses.
services.xserver.videoDrivers = mkVMOverride [ "vesa" ]; services.xserver.videoDrivers = mkVMOverride [ "modesetting" ];
services.xserver.defaultDepth = mkVMOverride 0; services.xserver.defaultDepth = mkVMOverride 0;
services.xserver.resolutions = mkVMOverride [ { x = 1024; y = 768; } ]; services.xserver.resolutions = mkVMOverride [ { x = 1024; y = 768; } ];
services.xserver.monitorSection = services.xserver.monitorSection =

View File

@ -65,6 +65,7 @@ in rec {
mysql51 mysql51
mysql55 mysql55
nginx nginx
openjdk
openssh openssh
php php
postgresql92 postgresql92

View File

@ -234,6 +234,7 @@ in rec {
# nix-build tests/login.nix -A result. # nix-build tests/login.nix -A result.
tests.avahi = callTest tests/avahi.nix {}; tests.avahi = callTest tests/avahi.nix {};
tests.bittorrent = callTest tests/bittorrent.nix {}; tests.bittorrent = callTest tests/bittorrent.nix {};
tests.blivet = callTest tests/blivet.nix {};
tests.containers = callTest tests/containers.nix {}; tests.containers = callTest tests/containers.nix {};
tests.firefox = callTest tests/firefox.nix {}; tests.firefox = callTest tests/firefox.nix {};
tests.firewall = callTest tests/firewall.nix {}; tests.firewall = callTest tests/firewall.nix {};

85
nixos/tests/blivet.nix Normal file
View File

@ -0,0 +1,85 @@
import ./make-test.nix ({ pkgs, ... }: with pkgs.pythonPackages; rec {
name = "blivet";
machine = {
environment.systemPackages = [ pkgs.python blivet mock ];
boot.supportedFilesystems = [ "btrfs" "jfs" "reiserfs" "xfs" ];
virtualisation.memorySize = 768;
};
debugBlivet = false;
debugProgramCalls = false;
pythonTestRunner = pkgs.writeText "run-blivet-tests.py" ''
import sys
import logging
from unittest import TestLoader
from unittest.runner import TextTestRunner
${pkgs.lib.optionalString debugProgramCalls ''
blivet_program_log = logging.getLogger("program")
blivet_program_log.setLevel(logging.DEBUG)
blivet_program_log.addHandler(logging.StreamHandler(sys.stderr))
''}
${pkgs.lib.optionalString debugBlivet ''
blivet_log = logging.getLogger("blivet")
blivet_log.setLevel(logging.DEBUG)
blivet_log.addHandler(logging.StreamHandler(sys.stderr))
''}
runner = TextTestRunner(verbosity=2, failfast=False, buffer=False)
result = runner.run(TestLoader().discover('tests/', pattern='*_test.py'))
sys.exit(not result.wasSuccessful())
'';
blivetTest = pkgs.writeScript "blivet-test.sh" ''
#!${pkgs.stdenv.shell} -e
# Use the hosts temporary directory, because we have a tmpfs within the VM
# and we don't want to increase the memory size of the VM for no reason.
mkdir -p /tmp/xchg/bigtmp
TMPDIR=/tmp/xchg/bigtmp
export TMPDIR
mkPythonPath() {
nix-store -qR "$@" \
| sed -e 's|$|/lib/${pkgs.python.libPrefix}/site-packages|'
}
cp -Rd "${blivet.src}/tests" .
# Skip SELinux tests
rm -f tests/formats_test/selinux_test.py
# Race conditions in growing/shrinking during resync
rm -f tests/devicelibs_test/mdraid_*
# Deactivate small BTRFS device test, because it fails with newer btrfsprogs
sed -i -e '/^class *BTRFSAsRootTestCase3(/,/^[^ ]/ {
/^class *BTRFSAsRootTestCase3(/d
/^$/d
/^ /d
}' tests/devicelibs_test/btrfs_test.py
# How on earth can these tests ever work even upstream? O_o
sed -i -e '/def testDiskChunk[12]/,/^ *[^ ]/{n; s/^ */&return # /}' \
tests/partitioning_test.py
# fix hardcoded temporary directory
sed -i \
-e '1i import tempfile' \
-e 's|_STORE_FILE_PATH = .*|_STORE_FILE_PATH = tempfile.gettempdir()|' \
tests/loopbackedtestcase.py
PYTHONPATH=".:$(mkPythonPath "${blivet}" "${mock}" | paste -sd :)" \
python "${pythonTestRunner}"
'';
testScript = ''
$machine->waitForUnit("multi-user.target");
$machine->succeed("${blivetTest}");
$machine->execute("rm -rf /tmp/xchg/bigtmp");
'';
})

View File

@ -67,7 +67,7 @@ in {
machine = { config, pkgs, ... }: { machine = { config, pkgs, ... }: {
environment.systemPackages = [ environment.systemPackages = [
pkgs.pythonPackages.nixpart pkgs.pythonPackages.nixpart0
pkgs.file pkgs.btrfsProgs pkgs.xfsprogs pkgs.lvm2 pkgs.file pkgs.btrfsProgs pkgs.xfsprogs pkgs.lvm2
]; ];
virtualisation.emptyDiskImages = [ 4096 4096 ]; virtualisation.emptyDiskImages = [ 4096 4096 ];
@ -209,7 +209,7 @@ in {
ensurePartition("swap", "swap"); ensurePartition("swap", "swap");
ensurePartition("boot", "f2fs"); ensurePartition("boot", "f2fs");
ensurePartition("root", "f2fs"); ensurePartition("root", "f2fs");
remoteAndCheck; remountAndCheck;
ensureMountPoint("/mnt/boot", "f2fs"); ensureMountPoint("/mnt/boot", "f2fs");
}; };

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl, ncurses, curl, taglib, fftw, mpd_clientlib, pkgconfig
, boost, readline, libiconvOrEmpty }:
stdenv.mkDerivation rec {
version = "0.6_beta5";
name = "ncmpcpp-${version}";
src = fetchurl {
url = "http://ncmpcpp.rybczak.net/stable/ncmpcpp-${version}.tar.bz2";
sha256 = "05h4mahnh39y9ab333whsgspj5mnbdkqfssgfi4r0zf1fvjwlwj6";
};
buildInputs = [ ncurses curl taglib fftw mpd_clientlib pkgconfig boost readline ]
++ libiconvOrEmpty;
configureFlags = [
"BOOST_LIB_SUFFIX="
];
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "Curses-based interface for MPD (music player daemon)";
homepage = http://unkart.ovh.org/ncmpcpp/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ fpletz ];
platforms = platforms.all;
};
}

View File

@ -1,18 +1,21 @@
{ stdenv, fetchurl, ncurses }: { stdenv, fetchurl, ncurses }:
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "bvi-1.3.2"; name = "bvi-${version}";
version = "1.4.0";
src = fetchurl { src = fetchurl {
url = mirror://sourceforge/bvi/bvi-1.3.2.src.tar.gz; url = "mirror://sourceforge/bvi/${name}.src.tar.gz";
sha256 = "110wxqnyianqamxq4y53drqqxb9vp4k2fcvic45qggvlqkqhlfgz"; sha256 = "00pq9rv7s8inqxq2m3xshxi58691i3pxw9smibcrgh6768l3qnh1";
}; };
buildInputs = [ ncurses ]; buildInputs = [ ncurses ];
meta = { meta = with stdenv.lib; {
description = "Hex editor with vim style keybindings"; description = "Hex editor with vim style keybindings";
homepage = http://bvi.sourceforge.net/download.html; homepage = http://bvi.sourceforge.net/download.html;
license = stdenv.lib.licenses.gpl2; license = licenses.gpl2;
maintainers = with maintainers; [ pSub ];
platforms = platforms.linux;
}; };
} }

View File

@ -9,13 +9,13 @@ assert (libXft != null) -> libpng != null; # probably a bug
assert stdenv.isDarwin -> libXaw != null; # fails to link otherwise assert stdenv.isDarwin -> libXaw != null; # fails to link otherwise
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "emacs-24.3"; name = "emacs-24.4";
builder = ./builder.sh; builder = ./builder.sh;
src = fetchurl { src = fetchurl {
url = "mirror://gnu/emacs/${name}.tar.xz"; url = "mirror://gnu/emacs/${name}.tar.xz";
sha256 = "1385qzs3bsa52s5rcncbrkxlydkw0ajzrvfxgv8rws5fx512kakh"; sha256 = "1zflm6ac34s6v166p58ilxrxbxjm0q2wfc25f8y0mjml1lbr3qs7";
}; };
patches = [ ./darwin-new-sections.patch ]; patches = [ ./darwin-new-sections.patch ];
@ -35,10 +35,7 @@ stdenv.mkDerivation rec {
[ "--with-x-toolkit=lucid" "--with-xft" ] [ "--with-x-toolkit=lucid" "--with-xft" ]
else else
[ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no" [ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no"
"--with-gif=no" "--with-tiff=no" ] ) ) "--with-gif=no" "--with-tiff=no" ] ) );
# On NixOS, help Emacs find `crt*.o'.
++ stdenv.lib.optional (stdenv ? glibc)
[ "--with-crt-dir=${stdenv.glibc}/lib" ];
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.isDarwin && withX) NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.isDarwin && withX)
"-I${cairo}/include/cairo"; "-I${cairo}/include/cairo";

View File

@ -2,19 +2,19 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
emacsName = "emacs-24.3"; emacsName = "emacs-24.4";
name = "${emacsName}-mac-4.8"; name = "${emacsName}-mac-5.0";
#builder = ./builder.sh; #builder = ./builder.sh;
src = fetchurl { src = fetchurl {
url = "mirror://gnu/emacs/${emacsName}.tar.xz"; url = "mirror://gnu/emacs/${emacsName}.tar.xz";
sha256 = "1385qzs3bsa52s5rcncbrkxlydkw0ajzrvfxgv8rws5fx512kakh"; sha256 = "1zflm6ac34s6v166p58ilxrxbxjm0q2wfc25f8y0mjml1lbr3qs7";
}; };
macportSrc = fetchurl { macportSrc = fetchurl {
url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${name}.tar.gz"; url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${name}.tar.gz";
sha256 = "194y341zrpjp75mc3099kjc0inr1d379wwsnav257bwsc967h8yx"; sha256 = "14ipkwmzv0b02sclhgp2xj0cvhl3gk40sc2l21s87621kk640dzv";
}; };
patches = [ ./darwin-new-sections.patch ]; patches = [ ./darwin-new-sections.patch ];

View File

@ -0,0 +1,29 @@
{ stdenv, fetchFromGitHub, emacs }:
let
version = "0.15.0-8-g4e10851";
in
stdenv.mkDerivation {
name = "git-modes-${version}";
src = fetchFromGitHub {
owner = "magit";
repo = "git-modes";
rev = "4e10851843145e0c05fc665683d3b487a57ad114";
sha256 = "13j794a2p4ql9dnw2z0c1m0ybclxsicbk8cmmfqcchs4ygiyc6ag";
};
buildInputs = [ emacs ];
installPhase = ''
mkdir -p $out/share/emacs/site-lisp
mv *.el *.elc $out/share/emacs/site-lisp/
'';
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,25 +1,35 @@
{ stdenv, fetchurl, emacs, texinfo }: { stdenv, fetchFromGitHub, emacs, texinfo, gitModes, git }:
let let
version = "1.2.0"; version = "90141016";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "magit-${version}"; name = "magit-${version}";
src = fetchurl { src = fetchFromGitHub {
url = "https://github.com/downloads/magit/magit/${name}.tar.gz"; owner = "magit";
sha256 = "1a8vvilhd5y5vmlpsh194qpl4qlg0a1brylfscxcacpfp0cmhlzg"; repo = "magit";
rev = version;
sha256 = "11d3gzj0hlb7wqsjzjb0vf9i0ik4xzwdyayjy4hfgx0gjmymkfx3";
}; };
buildInputs = [ emacs texinfo ]; buildInputs = [ emacs texinfo git ];
propagatedUserEnvPkgs = [ gitModes ];
configurePhase = "makeFlagsArray=( PREFIX=$out SYSCONFDIR=$out/etc )"; configurePhase = ''
makeFlagsArray=(
PREFIX="$out"
EFLAGS="-L ${gitModes}/share/emacs/site-lisp"
lispdir="$out/share/emacs/site-lisp"
)
'';
doCheck = true;
checkTarget = "test";
# Add (require 'magit-site-init) to your ~/.emacs file to set-up magit mode.
postInstall = '' postInstall = ''
mv $out/etc/emacs/site-start.d/50magit.el $out/share/emacs/site-lisp/magit-site-init.el mkdir -p $out/bin
sed -i -e 's|50magit|magit-site-init|' $out/share/emacs/site-lisp/magit-site-init.el mv "bin/"* $out/bin/
rmdir $out/etc/emacs/site-start.d $out/etc/emacs $out/etc
''; '';
meta = { meta = {
@ -39,7 +49,6 @@ stdenv.mkDerivation rec {
save you from learning Git itself. save you from learning Git itself.
''; '';
platforms = stdenv.lib.platforms.all;
maintainers = with stdenv.lib.maintainers; [ simons ]; maintainers = with stdenv.lib.maintainers; [ simons ];
}; };
} }

View File

@ -0,0 +1,24 @@
{ stdenv, fetchurl, intltool, pkgconfig, gtk }:
stdenv.mkDerivation rec {
version = "0.8.18.1";
name = "leafpad-${version}";
src = fetchurl {
url = "http://download.savannah.gnu.org/releases/leafpad/${name}.tar.gz";
sha256 = "0b0az2wvqgvam7w0ns1j8xp2llslm1rx6h7zcsy06a7j0yp257cm";
};
buildInputs = [ intltool pkgconfig gtk ];
configureFlags = [
"--enable-chooser"
];
meta = with stdenv.lib; {
description = "A notepad clone for GTK+ 2.0";
homepage = http://tarot.freeshell.org/leafpad;
platforms = platforms.linux;
maintainers = [ maintainers.flosse ];
license = licenses.gpl3;
};
}

View File

@ -1,17 +1,16 @@
{ stdenv, stdenvAdapters, gccApple, fetchFromGitHub, ncurses, gettext, { stdenv, fetchFromGitHub, ncurses, gettext,
pkgconfig, cscope, python, ruby, tcl, perl, luajit pkgconfig, cscope, python, ruby, tcl, perl, luajit
}: }:
let inherit (stdenvAdapters.overrideGCC stdenv gccApple) mkDerivation; stdenv.mkDerivation rec {
in mkDerivation rec {
name = "macvim-${version}"; name = "macvim-${version}";
version = "7.4.355"; version = "7.4.479";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "genoma"; owner = "genoma";
repo = "macvim"; repo = "macvim";
rev = "c18a61f9723565664ffc2eda9179e96c95860e25"; rev = "f9c084b97fa9d5cad2448dfd3eff3d9b7f0fac59";
sha256 = "190bngg8m4bwqcia7w24gn7mmqkhk0mavxy81ziwysam1f652ymf"; sha256 = "190bngg8m4bwqcia7w24gn7mmqkhk0mavxy81ziwysam1f652ymf";
}; };
@ -46,6 +45,7 @@ in mkDerivation rec {
"--enable-perlinterp=dynamic" "--enable-perlinterp=dynamic"
"--enable-rubyinterp=dynamic" "--enable-rubyinterp=dynamic"
"--enable-tclinterp=yes" "--enable-tclinterp=yes"
"--without-local-dir"
"--with-luajit" "--with-luajit"
"--with-lua-prefix=${luajit}" "--with-lua-prefix=${luajit}"
"--with-ruby-command=${ruby}/bin/ruby" "--with-ruby-command=${ruby}/bin/ruby"
@ -54,6 +54,8 @@ in mkDerivation rec {
"--with-compiledby=Nix" "--with-compiledby=Nix"
]; ];
makeFlags = ''PREFIX=$(out) CPPFLAGS="-Wno-error"'';
preConfigure = '' preConfigure = ''
DEV_DIR=$(/usr/bin/xcode-select -print-path)/Platforms/MacOSX.platform/Developer DEV_DIR=$(/usr/bin/xcode-select -print-path)/Platforms/MacOSX.platform/Developer
configureFlagsArray+=( configureFlagsArray+=(

View File

@ -187,3 +187,36 @@ index bc9f074..9b9125e 100755
# Use ||, not &&, to avoid exiting from the if with $? = 1, which # Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction. # would make configure fail if this is the last instruction.
$ac_cs_success || as_fn_exit 1 $ac_cs_success || as_fn_exit 1
diff --git a/src/Makefile b/src/Makefile
index 1c4d104..fff2015 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1298,7 +1298,7 @@ MACVIMGUI_SRC = gui.c gui_beval.c MacVim/gui_macvim.m MacVim/MMBackend.m \
MacVim/MacVim.m
MACVIMGUI_OBJ = objects/gui.o objects/gui_beval.o objects/pty.o \
objects/gui_macvim.o objects/MMBackend.o objects/MacVim.o
-MACVIMGUI_DEFS = -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe
+MACVIMGUI_DEFS = -DMACOS_X_UNIX -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe
MACVIMGUI_IPATH =
MACVIMGUI_LIBS_DIR =
MACVIMGUI_LIBS1 = -framework Cocoa -framework Carbon
diff --git a/src/if_python.c b/src/if_python.c
index b356bf7..b7bfa78 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -55,11 +55,7 @@
#define PY_SSIZE_T_CLEAN
-#ifdef FEAT_GUI_MACVIM
-# include <Python/Python.h>
-#else
-# include <Python.h>
-#endif
+#include <Python.h>
#if !defined(PY_VERSION_HEX) || PY_VERSION_HEX < 0x02050000
# undef PY_SSIZE_T_CLEAN
MACVIMGUI_LIBS1 = -framework Cocoa -framework Carbon

View File

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <http://unlicense.org>

View File

@ -0,0 +1,17 @@
name: yi-custom
version: 0.0.0.1
category: Yi
synopsis: Convenience wrapper for nix
description: Convenience wrapper for nix
license: PublicDomain
license-file: LICENSE
author: Mateusz Kowalczyk
maintainer: fuuzetsu@fuuzetsu.co.uk
Cabal-Version: >= 1.10
build-type: Simple
library
hs-source-dirs: .
default-language: Haskell2010
build-depends: base, yi
ghc-options: -threaded

View File

@ -0,0 +1,40 @@
# This is a manually-written expression over an in-tree cabal file.
# It's awkward but this way allows the package user to pass in
# extraPackages without much extra hassle on their end, similarly how
# the XMonad service handles it: the difference is that we don't have
# anything like XMONAD_GHC…
#
# The idea is that the user changes their configs using any libraries
# he likes and then builds it using this expression. Once that's done,
# reload and similar functions should all work as long as the user
# doesn't need new libraries at which point they should add them to
# extraPackages and rebuild from the expression.
{ cabal, yi, extraPackages, makeWrapper, ghcWithPackages }:
let
w = ghcWithPackages (self: [ yi ] ++ extraPackages self);
wrappedGhc = w.override { ignoreCollisions = true; };
in
cabal.mkDerivation (self: rec {
pname = "yi-custom";
version = "0.0.0.1";
src = ./yi-custom-cabal;
isLibrary = true;
buildDepends = [ yi ];
buildTools = [ makeWrapper ];
noHaddock = true;
doCheck = false;
postInstall = ''
makeWrapper ${yi}/bin/yi $out/bin/yi \
--set NIX_GHC ${wrappedGhc}/bin/ghc \
--set NIX_GHC_LIBDIR ${wrappedGhc}/lib/ghc-${self.ghc.version}
'';
meta = {
homepage = "http://haskell.org/haskellwiki/Yi";
description = "Wrapper over user-specified Haskell libraries for use in Yi config";
license = self.stdenv.lib.licenses.publicDomain;
platforms = self.ghc.meta.platforms;
maintainers = with self.stdenv.lib.maintainers; [ fuuzetsu ];
};
})

View File

@ -1,65 +1,39 @@
{ cabal, alex, binary, Cabal, cautiousFile, concreteTyperep # This file was auto-generated by cabal2nix. Please do NOT edit manually!
, dataDefault, derive, Diff, dlist, dyre, filepath, fingertree
, glib, gtk, hashable, hint, HUnit, lens, mtl, pango, parsec
, pointedlist, QuickCheck, random, regexBase, regexTdfa, safe
, split, tasty, tastyHunit, tastyQuickcheck, time, transformersBase
, uniplate, unixCompat, unorderedContainers, utf8String, vty
, xdgBasedir
, withPango ? true
# User may need extra dependencies for their configuration file so we { cabal, binary, Cabal, cautiousFile, dataDefault, derive, dlist
# want to specify it here to have them available when wrapping the , dynamicState, dyre, filepath, glib, gtk, hashable, hint, HUnit
# produced binary. , lens, mtl, ooPrototypes, pango, parsec, pointedlist, QuickCheck
, extraDepends ? [ ] , random, regexBase, regexTdfa, safe, semigroups, split, tagged
, tasty, tastyHunit, tastyQuickcheck, text, time, transformersBase
, unixCompat, unorderedContainers, utf8String, vty, wordTrie
, xdgBasedir, yiLanguage, yiRope
}: }:
cabal.mkDerivation (self: { cabal.mkDerivation (self: {
pname = "yi"; pname = "yi";
version = "0.8.2"; version = "0.10.1";
sha256 = "18rnyswsdzkh0jdcqfg8pr90mpm6xf11siv598svqkxg12d2qql9"; sha256 = "1vj4ndp43w7xlji4p2px79a8g90p64g54sr3hx4pzimwrlpmifk8";
isLibrary = true; isLibrary = true;
isExecutable = true; isExecutable = true;
buildDepends = [ buildDepends = [
binary Cabal cautiousFile concreteTyperep dataDefault derive Diff binary Cabal cautiousFile dataDefault derive dlist dynamicState
dlist dyre filepath fingertree hashable hint lens mtl dyre filepath glib gtk hashable hint lens mtl ooPrototypes pango
parsec pointedlist QuickCheck random regexBase regexTdfa safe parsec pointedlist QuickCheck random regexBase regexTdfa safe
split time transformersBase uniplate unixCompat unorderedContainers semigroups split tagged text time transformersBase unixCompat
utf8String vty xdgBasedir unorderedContainers utf8String vty wordTrie xdgBasedir yiLanguage
] ++ (if withPango then [ pango gtk glib ] else [ ]) ++ extraDepends; yiRope
testDepends = [
filepath HUnit QuickCheck tasty tastyHunit tastyQuickcheck
]; ];
buildTools = [ alex ]; testDepends = [
configureFlags = if withPango then "-fpango" else "-f-pango"; filepath HUnit lens QuickCheck semigroups tasty tastyHunit
doCheck = false; tastyQuickcheck text yiLanguage yiRope
];
# https://ghc.haskell.org/trac/ghc/ticket/9170 configureFlags = "-fpango -fvty";
noHaddock = self.ghc.version == "7.6.3"; noHaddock = self.stdenv.lib.versionOlder self.ghc.version "7.8";
# Allows Yi to find the libraries it needs at runtime.
postInstall = ''
mv $out/bin/yi $out/bin/.yi-wrapped
cat - > $out/bin/yi <<EOF
#! ${self.stdenv.shell}
# Trailing : is necessary for it to pick up Prelude &c.
export GHC_PACKAGE_PATH=$(${self.ghc.GHCGetPackages} ${self.ghc.version} \
| sed 's/-package-db\ //g' \
| sed 's/^\ //g' \
| sed 's/\ /:/g')\
:$out/lib/ghc-${self.ghc.version}/package.conf.d/yi-$version.installedconf:
eval exec $out/bin/.yi-wrapped "\$@"
EOF
chmod +x $out/bin/yi
'';
meta = { meta = {
homepage = "http://haskell.org/haskellwiki/Yi"; homepage = "http://haskell.org/haskellwiki/Yi";
description = "The Haskell-Scriptable Editor"; description = "The Haskell-Scriptable Editor";
license = self.stdenv.lib.licenses.gpl2; license = self.stdenv.lib.licenses.gpl2;
platforms = self.ghc.meta.platforms; platforms = self.ghc.meta.platforms;
hydraPlatforms = self.stdenv.lib.platforms.none; maintainers = with self.stdenv.lib.maintainers; [ fuuzetsu ];
maintainers = [ self.stdenv.lib.maintainers.fuuzetsu ];
broken = true;
}; };
}) })

View File

@ -18,14 +18,14 @@
}: }:
let let
version = "6.8.9-0"; version = "6.8.9-8";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "ImageMagick-${version}"; name = "ImageMagick-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://imagemagick/${name}.tar.xz"; url = "mirror://imagemagick/${name}.tar.xz";
sha256 = "1lapn2798fkc2wn81slpms5p21kq4dsyg45khsk7n8p69cvrmw2b"; sha256 = "1c792hbwi308lm9xkml319xaa4w3bz6hwy6i92jwrm7kqr4h8di7";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/muennich/sxiv"; homepage = "https://github.com/muennich/sxiv";
license = stdenv.lib.licenses.gpl2Plus; license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.linux; platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
}; };
} }

View File

@ -9,11 +9,11 @@
with lib; with lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "blender-2.72"; name = "blender-2.72b";
src = fetchurl { src = fetchurl {
url = "http://download.blender.org/source/${name}.tar.gz"; url = "http://download.blender.org/source/${name}.tar.gz";
sha256 = "0wydh5bs1pxnx3ya65lfy3val1s8wz027a5kb4va6wg3aqnwlvlv"; sha256 = "0ixz8h3c08p4f84x8r85nzddwvc0h5lw1ci8gdg2x3m2mw2cfdj4";
}; };
buildInputs = buildInputs =

View File

@ -5,11 +5,11 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "calibre-2.5.0"; name = "calibre-2.7.0";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/calibre/${name}.tar.xz"; url = "mirror://sourceforge/calibre/${name}.tar.xz";
sha256 = "0zl2rpwn5xdgwm4ffb5pizk3247wfghl8ilz0i80hyp36zzxgl8p"; sha256 = "0j8ypdcrxf961093pw3h5bxhd5kd1i6vjnf9cyi55j54j31zy021";
}; };
inherit python; inherit python;

View File

@ -0,0 +1,29 @@
{stdenv, fetchhg, libX11, libXinerama, libXft, zlib}:
with stdenv.lib;
stdenv.mkDerivation rec {
name = "dmenu2";
src = fetchhg {
url = "https://bitbucket.org/melek/dmenu2";
rev = "36cb94a16edf928bdaaa636123392517ed469be0";
sha256 = "1b17z5ypg6ij7zz3ncp3irc87raccna10y4w490c872a99lp23lv";
};
buildInputs = [ libX11 libXinerama zlib libXft ];
postPatch = ''
sed -ri -e 's!\<(dmenu|stest)\>!'"$out/bin"'/&!g' dmenu_run
'';
preConfigure = [ ''sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" config.mk'' ];
meta = {
description = "A patched fork of the original dmenu - an efficient dynamic menu for X";
homepage = https://bitbucket.org/melek/dmenu2;
license = stdenv.lib.licenses.mit;
maintainers = with maintainers; [ cstrahan ];
platforms = with platforms; all;
};
}

View File

@ -1,16 +1,19 @@
{ stdenv, fetchurl, pkgconfig, gtk, gettext }: { stdenv, fetchurl, pkgconfig, gtk, gettext, ncurses }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "girara-0.2.2"; name = "girara-0.2.3";
src = fetchurl { src = fetchurl {
url = "http://pwmt.org/projects/girara/download/${name}.tar.gz"; url = "http://pwmt.org/projects/girara/download/${name}.tar.gz";
sha256 = "0lv6wqhx2avdxj6yx111jfs4j32r0xzmmkhy7pgzxpf73kgxz0k3"; sha256 = "1phfmqp8y17zcy9yi6pm2f80x8ldbk60iswpm4bmjz5217jwqzxh";
}; };
buildInputs = [ pkgconfig gtk gettext ]; buildInputs = [ pkgconfig gtk gettext ];
makeFlags = "PREFIX=$(out)"; makeFlags = [
"PREFIX=$(out)"
"TPUT=${ncurses}/bin/tput"
];
meta = { meta = {
homepage = http://pwmt.org/projects/girara/; homepage = http://pwmt.org/projects/girara/;

View File

@ -0,0 +1,110 @@
# Build procedure lifted from https://aur.archlinux.org/packages/k2/k2pdfopt/PKGBUILD
{ stdenv, fetchzip, fetchurl, writeScript, libX11, libXext, autoconf, automake, libtool
, leptonica, libpng, libtiff, zlib, openjpeg, freetype, jbig2dec, djvulibre
, openssl }:
let
mupdf_src = fetchurl {
url = http://www.mupdf.com/downloads/archive/mupdf-1.5-source.tar.gz;
sha256 = "0sl47zqf4c9fhs4h5zg046vixjmwgy4vhljhr5g4md733nash7z4";
};
tess_src = fetchurl {
url = http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz;
sha256 = "0g81m9y4iydp7kgr56mlkvjdwpp3mb01q385yhdnyvra7z5kkk96";
};
gocr_src = fetchurl {
url = http://www-e.uni-magdeburg.de/jschulen/ocr/gocr-0.49.tar.gz;
sha256 = "06hpzp7rkkwfr1fvmc8kcfz9v490i9yir7f7imh13gmka0fr6afc";
};
in stdenv.mkDerivation rec {
name = "k2pdfopt";
src = fetchzip {
url = http://www.willus.com/k2pdfopt/src/k2pdfopt_v2.21_src.zip;
sha256 = "1vy0yw41z6p95gmivjk4r534zbg0kqap4lr9ps56kvjw51q8r54j";
};
buildInputs = [ libX11 libXext autoconf automake libtool leptonica libpng libtiff zlib
openjpeg freetype jbig2dec djvulibre openssl ];
NIX_LDFLAGS = "-lX11 -lXext";
k2_pa = ./k2pdfopt.patch;
tess_pa = ./tesseract.patch;
builder = writeScript "builder.sh" ''
. ${stdenv}/setup
set -e
plibs=`pwd`/patched_libraries
tar zxf ${mupdf_src}
cp $src/mupdf_mod/font.c $src/mupdf_mod/string.c mupdf-1.5-source/source/fitz/
cp $src/mupdf_mod/pdf-* mupdf-1.5-source/source/pdf
tar zxf ${tess_src}
cp $src/tesseract_mod/dawg.cpp tesseract-ocr/dict
cp $src/tesseract_mod/tessdatamanager.cpp tesseract-ocr/ccutil
cp $src/tesseract_mod/tessedit.cpp tesseract-ocr/ccmain
cp $src/tesseract_mod/tesscapi.cpp tesseract-ocr/api
cp $src/include_mod/tesseract.h $src/include_mod/leptonica.h tesseract-ocr/api
cp -a $src k2pdfopt_v2.21
chmod -R +w k2pdfopt_v2.21
patch -p0 -i $tess_pa
patch -p0 -i $k2_pa
cd tesseract-ocr
./autogen.sh
substituteInPlace "configure" \
--replace 'LIBLEPT_HEADERSDIR="/usr/local/include /usr/include"' \
'LIBLEPT_HEADERSDIR=${leptonica}/include'
./configure --prefix=$plibs --disable-shared
make install
cd ..
tar zxf ${gocr_src}
cd gocr-0.49
./configure
cp src/{gocr.h,pnm.h,unicode.h,list.h} $plibs/include
cp include/config.h $plibs/include
make libs
cp src/libPgm2asc.a $plibs/lib
cd ../mupdf-1.5-source
make prefix=$plibs install
install -Dm644 build/debug/libmujs.a $plibs/lib
cd ../k2pdfopt_v2.21/k2pdfoptlib
gcc -Ofast -Wall -c *.c -I ../include_mod/ -I $plibs/include \
-I . -I ../willuslib
ar rcs libk2pdfopt.a *.o
cd ../willuslib
gcc -Ofast -Wall -c *.c -I ../include_mod/ -I $plibs/include
ar rcs libwillus.a *.o
cd ..
gcc -Wall -Ofast -o k2pdfopt.o -c k2pdfopt.c -I k2pdfoptlib/ -I willuslib/ \
-I include_mod/ -I $plibs/include
g++ -Ofast k2pdfopt.o -o k2pdfopt -I willuslib/ -I k2pdfoptlib/ -I include_mod/ \
-I $plibs/include -L $plibs/lib/ \
-L willuslib/ -L k2pdfoptlib/ -lk2pdfopt -lwillus -ldjvulibre -lz -lmupdf \
-ljbig2dec -ljpeg -lopenjp2 -lpng -lfreetype -lpthread -lmujs \
-lPgm2asc -llept -ltesseract -lcrypto
mkdir -p $out/bin
cp k2pdfopt $out/bin
'';
meta = with stdenv.lib; {
description = "K2pdfopt optimizes PDF/DJVU files for mobile e-readers (e.g. the Kindle) and smartphones.";
homepage = http://www.willus.com/k2pdfopt;
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = [ maintainers.bosu ];
};
}

View File

@ -0,0 +1,95 @@
diff -aur k2pdfopt_v2.21/willuslib/array.c k2pdfopt_v2.21.new/willuslib/array.c
--- k2pdfopt_v2.21/willuslib/array.c 2014-05-23 16:29:58.000000000 -0300
+++ k2pdfopt_v2.21.new/willuslib/array.c 2014-07-26 11:35:49.829825567 -0300
@@ -1055,7 +1055,7 @@
void arrayf_sort(float *a,int n)
{
- sort(a,(long)n);
+ willus_sort(a,(long)n);
}
diff -aur k2pdfopt_v2.21/willuslib/math.c k2pdfopt_v2.21.new/willuslib/math.c
--- k2pdfopt_v2.21/willuslib/math.c 2013-08-15 21:33:50.000000000 -0300
+++ k2pdfopt_v2.21.new/willuslib/math.c 2014-07-26 11:36:02.853170659 -0300
@@ -532,7 +532,7 @@
-void sort(float *x,int n)
+void willus_sort(float *x,int n)
{
int top,n1;
diff -aur k2pdfopt_v2.21/willuslib/ocrjocr.c k2pdfopt_v2.21.new/willuslib/ocrjocr.c
--- k2pdfopt_v2.21/willuslib/ocrjocr.c 2012-11-12 13:09:42.000000000 -0300
+++ k2pdfopt_v2.21.new/willuslib/ocrjocr.c 2014-07-26 11:36:46.699837185 -0300
@@ -29,6 +29,8 @@
#ifdef HAVE_GOCR_LIB
#include <gocr.h>
+job_t *JOB;
+
/*
** bmp8 must be grayscale
** (x1,y1) and (x2,y2) from top left of bitmap
@@ -66,6 +68,7 @@
h=y2-y1+1;
dh=h+bw*2;
job=&_job;
+ JOB=job;
job_init(job);
job_init_image(job);
// willus_mem_alloc_warn((void **)&job->src.p.p,w*h,funcname,10);
diff -aur k2pdfopt_v2.21/willuslib/string.c k2pdfopt_v2.21.new/willuslib/string.c
--- k2pdfopt_v2.21/willuslib/string.c 2014-02-03 00:37:44.000000000 -0300
+++ k2pdfopt_v2.21.new/willuslib/string.c 2014-07-26 11:37:01.766506277 -0300
@@ -81,7 +81,7 @@
** Returns NULL if EOF, otherwise returns pointer to the string.
**
*/
-char *get_line(char *buf,int max,FILE *f)
+char *willus_get_line(char *buf,int max,FILE *f)
{
int i;
diff -aur k2pdfopt_v2.21/willuslib/willus.h k2pdfopt_v2.21.new/willuslib/willus.h
--- k2pdfopt_v2.21/willuslib/willus.h 2014-07-25 15:03:51.000000000 -0300
+++ k2pdfopt_v2.21.new/willuslib/willus.h 2014-07-26 11:37:56.316506038 -0300
@@ -214,9 +214,6 @@
** CMAKE handles the defines, not this source
** (Mod from Dirk Thierbach, 31-Dec-2013)
*/
-#ifdef USE_CMAKE
-#include "config.h"
-#else /* USE_CMAKE */
#ifndef HAVE_Z_LIB
#define HAVE_Z_LIB
@@ -268,7 +265,6 @@
#undef HAVE_GSL_LIB
#endif
-#endif /* USE_CMAKE */
/*
** Consistency check
*/
@@ -533,7 +529,7 @@
int *n,FILE *err);
int readxyz_ex (char *filename,double **x,double **y,double **z,
int *n,FILE *err,int ignore_after_semicolon);
-void sort (float *x,int n);
+void willus_sort (float *x,int n);
void sortd (double *x,int n);
void sorti (int *x,int n);
void sortxy (float *x,float *y,int n);
@@ -602,7 +598,7 @@
/* string.c */
void clean_line (char *buf);
void clean_line_end(char *buf);
-char *get_line (char *buf,int max,FILE *f);
+char *willus_get_line (char *buf,int max,FILE *f);
char *get_line_cf (char *buf,int max,FILE *f);
int mem_get_line_cf(char *buf,int maxlen,char *cptr,long *cindex,long csize);
int in_string (char *buffer,char *pattern);

View File

@ -0,0 +1,12 @@
diff -aur tesseract-ocr/api/Makefile.am tesseract-ocr.new/api/Makefile.am
--- tesseract-ocr/api/Makefile.am 2012-10-09 14:18:39.000000000 -0300
+++ tesseract-ocr.new/api/Makefile.am 2014-03-20 18:43:13.926030341 -0300
@@ -36,7 +36,7 @@
if VISIBILITY
libtesseract_api_la_CPPFLAGS += -DTESS_EXPORTS
endif
-libtesseract_api_la_SOURCES = baseapi.cpp capi.cpp
+libtesseract_api_la_SOURCES = baseapi.cpp capi.cpp tesscapi.cpp
lib_LTLIBRARIES += libtesseract.la
libtesseract_la_LDFLAGS =

View File

@ -0,0 +1,39 @@
{stdenv, fetchurl, qt4, pkgconfig, popplerQt4, djvulibre, libspectre, cups
, file, ghostscript
}:
let
s = # Generated upstream information
rec {
baseName="qpdfview";
version="0.4.12";
name="${baseName}-${version}";
url="https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-${version}.tar.gz";
sha256="1h6lrrh1vblqkxrd89nmid7d21anyn30iahj24z62yny35lidf0g";
};
buildInputs = [
qt4 popplerQt4 pkgconfig djvulibre libspectre cups file ghostscript
];
in
stdenv.mkDerivation {
inherit (s) name version;
inherit buildInputs;
src = fetchurl {
inherit (s) url sha256;
};
configurePhase = ''
qmake *.pro
for i in *.pro; do
qmake "$i" -o "Makefile.$(basename "$i" .pro)"
done
sed -e "s@/usr/@$out/@g" -i Makefile*
'';
meta = {
inherit (s) version;
description = "A tabbed document viewer";
license = stdenv.lib.licenses.gpl2;
maintainers = [stdenv.lib.maintainers.raskin];
platforms = stdenv.lib.platforms.linux;
homepage = "https://launchpad.net/qpdfview";
updateWalker = true;
};
}

View File

@ -29,7 +29,7 @@ in stdenv.mkDerivation rec {
"-I${dbus_libs}/lib/dbus-1.0/include" ]; "-I${dbus_libs}/lib/dbus-1.0/include" ];
# Fix up python path so the lockfile library is on it. # Fix up python path so the lockfile library is on it.
PYTHONPATH = stdenv.lib.makeSearchPath "lib/${pythonFull.python.libPrefix}/site-packages" [ PYTHONPATH = stdenv.lib.makeSearchPath "lib/${pythonFull.libPrefix}/site-packages" [
pythonPackages.curses pythonPackages.lockfile pythonPackages.curses pythonPackages.lockfile
]; ];

View File

@ -0,0 +1,26 @@
{ stdenv, fetchgit }:
stdenv.mkDerivation {
name = "urxvt-perls";
src = fetchgit {
url = "https://github.com/muennich/urxvt-perls";
rev = "4dec629b3631297d17855c35be1b723e2d9e7591";
sha256 = "c61bc8819b4e6655ed4a3ce3b347cb6dbebcb484d5d3973cbe9aa7f2c98d372f";
};
installPhase = ''
mkdir -p $out/lib/urxvt/perl
cp clipboard \
keyboard-select \
url-select \
$out/lib/urxvt/perl
'';
meta = with stdenv.lib; {
description = "Perl extensions for the rxvt-unicode terminal emulator";
homepage = "https://github.com/muennich/urxvt-perls";
license = licenses.gpl2;
maintainers = maintainers.abbradar;
};
}

View File

@ -0,0 +1,21 @@
{ stdenv, fetchgit }:
stdenv.mkDerivation {
name = "urxvt-tabbedex";
src = fetchgit {
url = "https://github.com/mina86/urxvt-tabbedex";
rev = "54c8d6beb4d65278ed6db24693ca56e1ee65bb42";
sha256 = "f8734ee289e1cfc517d0699627191c98d32ae3549e0f1935af2a5ccb86d4dc1e";
};
installPhase = ''
install -D tabbedex $out/lib/urxvt/perl/tabbedex
'';
meta = with stdenv.lib; {
description = "Tabbed plugin for rxvt-unicode with many enhancements (mina86's fork)";
homepage = "https://github.com/mina86/urxvt-tabbedex";
maintainers = maintainers.abbradar;
};
}

View File

@ -0,0 +1,26 @@
{ stdenv, buildEnv, rxvt_unicode, makeWrapper, plugins }:
let
rxvt = rxvt_unicode.override {
perlSupport = true;
};
drv = buildEnv {
name = "${rxvt.name}-with-plugins";
paths = [ rxvt ] ++ plugins;
postBuild = ''
# TODO: This could be avoided if buildEnv could be forced to create all directories
if [ -L $out/bin ]; then
rm $out/bin
mkdir $out/bin
for i in ${rxvt}/bin/*; do
ln -s $i $out/bin
done
fi
wrapProgram $out/bin/urxvt \
--suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl"
'';
};
in stdenv.lib.overrideDerivation drv (x : { buildInputs = x.buildInputs ++ [ makeWrapper ]; })

View File

@ -2,15 +2,15 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "termite-${version}"; name = "termite-${version}";
version = "v7"; version = "8";
src = fetchgit { src = fetchgit {
url = "https://github.com/thestinger/termite"; url = "https://github.com/thestinger/termite.git";
rev = "f0ff025c1bb6a1e3fd83072f00c2dc42a0701f46"; rev = "05f3bbf626245a344eb74859ef2aa49f715ebd55";
sha256 = "057yzlqvp84fkmhn4bz9071glj4rh4187xhg48cdppf2w6phcbxp"; sha256 = "01dfg4zg7sgw0cbh0j9sbwdvn43rw7xfcnijfh1dhd6n5yx00b18";
}; };
makeFlags = "VERSION=${version}"; makeFlags = "VERSION=v${version}";
buildInputs = [pkgconfig vte gtk ncurses]; buildInputs = [pkgconfig vte gtk ncurses];

View File

@ -1,17 +1,22 @@
{ stdenv, fetchurl, pkgconfig, gtk, girara, gettext, docutils, file, makeWrapper, zathura_icon }: { stdenv, fetchurl, pkgconfig, gtk, girara, ncurses, gettext, docutils, file, makeWrapper, zathura_icon }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.2.9"; version = "0.3.1";
name = "zathura-core-${version}"; name = "zathura-core-${version}";
src = fetchurl { src = fetchurl {
url = "http://pwmt.org/projects/zathura/download/zathura-${version}.tar.gz"; url = "http://pwmt.org/projects/zathura/download/zathura-${version}.tar.gz";
sha256 = "17z05skjk95115ajp6459k1djadza1w8kck7jn1qnd697r01s1rc"; sha256 = "1wwjj7vnzpkvn83674mapapvl2qsn7y44w17lq63283j1lic00mm";
}; };
buildInputs = [ pkgconfig file gtk girara gettext makeWrapper ]; buildInputs = [ pkgconfig file gtk girara gettext makeWrapper ];
makeFlags = [ "PREFIX=$(out)" "RSTTOMAN=${docutils}/bin/rst2man.py" "VERBOSE=1" ]; makeFlags = [
"PREFIX=$(out)"
"RSTTOMAN=${docutils}/bin/rst2man.py"
"VERBOSE=1"
"TPUT=${ncurses}/bin/tput"
];
postInstall = '' postInstall = ''
wrapProgram "$out/bin/zathura" \ wrapProgram "$out/bin/zathura" \

View File

@ -1,7 +1,7 @@
{ callPackage, pkgs, fetchurl, useMupdf }: { callPackage, pkgs, fetchurl, stdenv, useMupdf }:
rec { rec {
inherit (pkgs) stdenv; inherit stdenv;
icon = ./icon.xpm; icon = ./icon.xpm;

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, pkgconfig, gtk, zathura_core, girara, djvulibre, gettext }: { stdenv, fetchurl, pkgconfig, gtk, zathura_core, girara, djvulibre, gettext }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "zathura-djvu-0.2.3"; name = "zathura-djvu-0.2.4";
src = fetchurl { src = fetchurl {
url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz"; url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz";
sha256 = "12gd8kb0al5mknh4rlvxzgzwz3vhjggqjh8ws27phaq14paq4vn1"; sha256 = "1g1lafmrjbx0xv7fljdmyqxx0k334sq4q6jy4a0q5xfrgz0bh45c";
}; };
buildInputs = [ pkgconfig djvulibre gettext zathura_core gtk girara ]; buildInputs = [ pkgconfig djvulibre gettext zathura_core gtk girara ];

View File

@ -1,10 +1,10 @@
--- zathura-pdf-mupdf-0.2.6/config.mk --- zathura-pdf-mupdf-0.2.7/config.mk
+++ zathura-pdf-mupdf-0.2.6/config.mk +++ zathura-pdf-mupdf-0.2.7/config.mk
@@ -32,10 +32,11 @@ @@ -32,10 +32,11 @@
OPENSSL_INC ?= $(shell pkg-config --cflags libcrypto) OPENSSL_INC ?= $(shell pkg-config --cflags libcrypto)
OPENSSL_LIB ?= $(shell pkg-config --libs libcrypto) OPENSSL_LIB ?= $(shell pkg-config --libs libcrypto)
-MUPDF_LIB ?= -lmupdf -lmupdf-js-none -MUPDF_LIB ?= -lmupdf -lmujs
+MUPDF_INC ?= $(shell pkg-config --cflags mupdf) +MUPDF_INC ?= $(shell pkg-config --cflags mupdf)
+MUPDF_LIB ?= $(shell pkg-config --libs mupdf) +MUPDF_LIB ?= $(shell pkg-config --libs mupdf)

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, pkgconfig, zathura_core, gtk, girara, mupdf, openssl, openjpeg, libjpeg, jbig2dec }: { stdenv, fetchurl, pkgconfig, zathura_core, gtk, girara, mupdf, openssl, openjpeg, libjpeg, jbig2dec }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.2.6"; version = "0.2.7";
name = "zathura-pdf-mupdf-${version}"; name = "zathura-pdf-mupdf-${version}";
src = fetchurl { src = fetchurl {
url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz"; url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz";
sha256 = "5df94b6f906008b5f3bca770a552da6d2917d6b8d3e4b3049cb7001302041b20"; sha256 = "0gr5kkk75hn7sz9kmzynhhcdd9xb9sz5gdb8p1iz9g0fjhskyd5i";
}; };
buildInputs = [ pkgconfig zathura_core gtk girara openssl mupdf openjpeg libjpeg jbig2dec ]; buildInputs = [ pkgconfig zathura_core gtk girara openssl mupdf openjpeg libjpeg jbig2dec ];

View File

@ -1,12 +1,12 @@
{ stdenv, fetchgit, unzip, xulrunner, makeWrapper }: { stdenv, fetchgit, unzip, firefox, makeWrapper }:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "conkeror-1.0pre-20140616"; name = "conkeror-1.0pre-20140616";
src = fetchgit { src = fetchgit {
url = git://repo.or.cz/conkeror.git; url = git://repo.or.cz/conkeror.git;
rev = "8a26fff5896a3360549e2adfbf06b1d57e909266"; rev = "98e89c7e5ff3a1069a0984338da01273cdb189a2";
sha256 = "56f1c71ca1753a63d7599d3e8bf52277711b2693e7709ed7c146f34940441cb4"; sha256 = "284ba966efebfa0aaa768abc1a4f901e2ecf5db9d0391d904a49118b0b94fcd7";
}; };
buildInputs = [ unzip makeWrapper ]; buildInputs = [ unzip makeWrapper ];
@ -15,8 +15,8 @@ stdenv.mkDerivation {
mkdir -p $out/libexec/conkeror mkdir -p $out/libexec/conkeror
cp -r * $out/libexec/conkeror cp -r * $out/libexec/conkeror
makeWrapper ${xulrunner}/bin/xulrunner $out/bin/conkeror \ makeWrapper ${firefox}/bin/firefox $out/bin/conkeror \
--add-flags $out/libexec/conkeror/application.ini --add-flags "-app $out/libexec/conkeror/application.ini"
''; '';
meta = { meta = {

View File

@ -36,7 +36,7 @@
let let
# -> http://get.adobe.com/flashplayer/ # -> http://get.adobe.com/flashplayer/
version = "11.2.202.406"; version = "11.2.202.411";
src = src =
if stdenv.system == "x86_64-linux" then if stdenv.system == "x86_64-linux" then
@ -47,7 +47,7 @@ let
else rec { else rec {
inherit version; inherit version;
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz"; url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
sha256 = "05akcw89kz0cnhan6wp72banz2asmvqfhb2cw1krn66qgd7bl0x0"; sha256 = "1983rj824bhzk48yhgminsiil778vwq0217hfrhbmymhrq3p7gzd";
} }
else if stdenv.system == "i686-linux" then else if stdenv.system == "i686-linux" then
if debug then if debug then
@ -60,7 +60,7 @@ let
else rec { else rec {
inherit version; inherit version;
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz"; url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
sha256 = "10f3842vi80kszj42f4c8sw7plrmvsin5k860cqvlzgdhndz8i4b"; sha256 = "1bxp94s63i3136pjxgcm8106mqzaj4h096mkf7iq6ddkcvi0cxzn";
} }
else throw "Flash Player is not supported on this platform"; else throw "Flash Player is not supported on this platform";

View File

@ -0,0 +1,27 @@
{ stdenv, fetchurl, pythonPackages, pyqt4, cython, libvncserver, zlib, twisted, gnutls }:
pythonPackages.buildPythonPackage rec {
name = "blink-${version}";
version = "0.9.1";
src = fetchurl {
url = "http://download.ag-projects.com/BlinkQt/${name}.tar.gz";
sha256 = "f578e5186893c3488e7773fbb775028ae54540433a0c51aefa5af983ca2bfdae";
};
patches = [ ./pythonpath.patch ];
propagatedBuildInputs = [ pyqt4 pythonPackages.cjson pythonPackages.sipsimple twisted ];
buildInputs = [ cython zlib libvncserver ];
postInstall = ''
wrapProgram $out/bin/blink \
--prefix LD_LIBRARY_PATH : ${gnutls}/lib
'';
meta = {
homepage = http://icanblink.com/;
description = "A state of the art, easy to use SIP client";
};
}

View File

@ -0,0 +1,12 @@
diff --git a/blink/resources.py b/blink/resources.py
index 524d9e5..c271887 100644
--- a/blink/resources.py
+++ b/blink/resources.py
@@ -64,6 +64,7 @@ class Resources(object):
if script == '':
application_directory = os.path.realpath(script) # executed in interactive interpreter
else:
+ script = os.path.join(sys.path[0], script)
binary_directory = os.path.dirname(os.path.realpath(script))
if os.path.basename(binary_directory) == 'bin':
application_directory = os.path.dirname(binary_directory)

View File

@ -0,0 +1,20 @@
diff --git a/libpurple/plugin.c b/libpurple/plugin.c
index 4f2b402..fda9add 100644
--- a/libpurple/plugin.c
+++ b/libpurple/plugin.c
@@ -1181,8 +1181,15 @@ purple_plugins_get_handle(void) {
void
purple_plugins_init(void) {
void *handle = purple_plugins_get_handle();
+ gchar **paths, **p;
purple_plugins_add_search_path(LIBDIR);
+ paths = g_strsplit(g_getenv("PURPLE_PLUGIN_PATH"), ":", -1);
+ if (paths) {
+ for (p = paths; *p; ++p)
+ if (**p) purple_plugins_add_search_path(*p);
+ }
+ g_strfreev(paths);
purple_signal_register(handle, "plugin-load",
purple_marshal_VOID__POINTER,

View File

@ -20,11 +20,14 @@
, libgcrypt ? null , libgcrypt ? null
} : } :
# FIXME: clean the mess around choosing the SSL library (nss by default)
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "pidgin-2.10.9"; majorVersion = "2";
name = "pidgin-${majorVersion}.10.10";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/pidgin/${name}.tar.bz2"; url = "mirror://sourceforge/pidgin/${name}.tar.bz2";
sha256 = "06gka47myl9f5x0flkq74ml75akkf28rx9sl8pm3wqkzazc2wdnw"; sha256 = "0bc2bk2g3w90mpz9sn9j95c71z4i2i3wxaqa2zpmmixf5r8rasyw";
}; };
inherit nss ncurses; inherit nss ncurses;
@ -46,7 +49,7 @@ stdenv.mkDerivation rec {
pkgconfig gtk perl perlXMLParser gettext pkgconfig gtk perl perlXMLParser gettext
]; ];
patches = [./pidgin-makefile.patch ]; patches = [./pidgin-makefile.patch ./add-search-path.patch ];
configureFlags="--with-nspr-includes=${nspr}/include/nspr --with-nspr-libs=${nspr}/lib --with-nss-includes=${nss}/include/nss --with-nss-libs=${nss}/lib --with-ncurses-headers=${ncurses}/include --disable-meanwhile --disable-nm --disable-tcl" configureFlags="--with-nspr-includes=${nspr}/include/nspr --with-nspr-libs=${nspr}/lib --with-nss-includes=${nss}/include/nss --with-nss-libs=${nss}/lib --with-ncurses-headers=${ncurses}/include --disable-meanwhile --disable-nm --disable-tcl"
+ (lib.optionalString (gnutls != null) " --enable-gnutls=yes --enable-nss=no") + (lib.optionalString (gnutls != null) " --enable-gnutls=yes --enable-nss=no")

View File

@ -0,0 +1,21 @@
{ stdenv, buildEnv, pidgin, makeWrapper, plugins }:
let drv = buildEnv {
name = "${pidgin.name}-with-plugins";
paths = [ pidgin ] ++ plugins;
postBuild = ''
# TODO: This could be avoided if buildEnv could be forced to create all directories
if [ -L $out/bin ]; then
rm $out/bin
mkdir $out/bin
for i in ${pidgin}/bin/*; do
ln -s $i $out/bin
done
fi
wrapProgram $out/bin/pidgin \
--suffix-each PURPLE_PLUGIN_PATH ':' "$out/lib/purple-${pidgin.majorVersion} $out/lib/pidgin"
'';
};
in stdenv.lib.overrideDerivation drv (x : { buildInputs = x.buildInputs ++ [ makeWrapper ]; })

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, unzip, xulrunner, makeWrapper }: { stdenv, fetchurl, unzip, firefox, makeWrapper }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "chatzilla-0.9.90.1"; name = "chatzilla-0.9.91";
src = fetchurl { src = fetchurl {
# Obtained from http://chatzilla.rdmsoft.com/xulrunner/. # Obtained from http://chatzilla.rdmsoft.com/xulrunner/.
url = "http://chatzilla.rdmsoft.com/xulrunner/download/${name}.en-US.xulapp"; url = "http://chatzilla.rdmsoft.com/xulrunner/download/${name}.en-US.xulapp";
sha256 = "0z38jig91h10cb14rvs30rpg2pgn3v890nyxyy8lxzbv5ncxmngw"; sha256 = "1bmjw2wvp8gh7fdl8czkxc55iari6dy672446hps20xixrh8hl8r";
}; };
buildInputs = [ unzip makeWrapper ]; buildInputs = [ unzip makeWrapper ];
@ -15,8 +15,8 @@ stdenv.mkDerivation rec {
mkdir -p $out/libexec/chatzilla mkdir -p $out/libexec/chatzilla
unzip $src -d $out/libexec/chatzilla unzip $src -d $out/libexec/chatzilla
makeWrapper ${xulrunner}/bin/xulrunner $out/bin/chatzilla \ makeWrapper ${firefox}/bin/firefox $out/bin/chatzilla \
--add-flags $out/libexec/chatzilla/application.ini --add-flags "-app $out/libexec/chatzilla/application.ini"
sed -i $out/libexec/chatzilla/application.ini -e 's/.*MaxVersion.*/MaxVersion=99.*/' sed -i $out/libexec/chatzilla/application.ini -e 's/.*MaxVersion.*/MaxVersion=99.*/'
''; '';

View File

@ -12,12 +12,12 @@ let
in with stdenv; mkDerivation rec { in with stdenv; mkDerivation rec {
version = "0.10.0"; version = "0.10.1";
name = "quassel${tag}-${version}"; name = "quassel${tag}-${version}";
src = fetchurl { src = fetchurl {
url = "http://quassel-irc.org/pub/quassel-${version}.tar.bz2"; url = "http://quassel-irc.org/pub/quassel-${version}.tar.bz2";
sha256 = "08vwxkwnzlgnxn0wi6ga9fk8qgc6nklb236hsfnr5ad37bi8q8k8"; sha256 = "106zjn705vyh0msqwg3v4dhaahffhkn1bmfsljdz57jd539bf5qd";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -1,60 +1,24 @@
{ fetchurl, stdenv, bash, emacs, gdb, glib, gmime, gnupg, { fetchurl, stdenv, bash, emacs, fixDarwinDylibNames,
gdb, glib, gmime, gnupg,
pkgconfig, talloc, xapian pkgconfig, talloc, xapian
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "notmuch-0.18.1"; name = "notmuch-0.18.2";
src = fetchurl { src = fetchurl {
url = "http://notmuchmail.org/releases/${name}.tar.gz"; url = "http://notmuchmail.org/releases/${name}.tar.gz";
sha256 = "1pdp9l7yv71d3fjb30qyccva8h03hvg88q4a00yi50v2j70kvmgj"; sha256 = "175wzrw1mfpl4h72n9ims66zn5l34zn2dn857vraj2i5w7z7p7z9";
}; };
buildInputs = [ bash emacs gdb glib gmime gnupg pkgconfig talloc xapian ]; buildInputs = [ bash emacs gdb glib gmime gnupg pkgconfig talloc xapian ]
++ stdenv.lib.optionals stdenv.isDarwin [ fixDarwinDylibNames ];
patchPhase = '' patchPhase = ''
(cd test && for prg in \ find test -type f -exec \
aggregate-results.sh \ sed -i \
argument-parsing \ "1s_#!/usr/bin/env bash_#!${bash}/bin/bash_" \
atomicity \ "{}" ";"
author-order \
basic \
crypto \
count \
dump-restore \
emacs \
emacs-large-search-buffer \
encoding \
from-guessing \
help-test \
hooks \
json \
long-id \
maildir-sync \
multipart \
new \
notmuch-test \
python \
raw \
reply \
search \
search-by-folder \
search-insufficient-from-quoting \
search-folder-coherence \
search-limiting \
search-output \
search-position-overlap-bug \
symbol-hiding \
tagging \
test-lib.sh \
test-verbose \
thread-naming \
thread-order \
uuencode \
;do
substituteInPlace "$prg" \
--replace "#!/usr/bin/env bash" "#!${bash}/bin/bash"
done)
for src in \ for src in \
crypto.c \ crypto.c \
@ -65,6 +29,16 @@ stdenv.mkDerivation rec {
done done
''; '';
preFixup = if stdenv.isDarwin then
''
prg="$out/bin/notmuch"
target="libnotmuch.3.dylib"
echo "$prg: fixing link to $target"
install_name_tool -change "$target" "$out/lib/$target" "$prg"
''
else
"";
# XXX: emacs tests broken # XXX: emacs tests broken
doCheck = false; doCheck = false;
checkTarget = "test"; checkTarget = "test";

View File

@ -6,14 +6,14 @@
}: }:
let pname = "liferea"; let pname = "liferea";
version = "1.10.11"; version = "1.10.12";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${name}.tar.bz2"; url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${name}.tar.bz2";
sha256 = "0mf5mpdj60j8if4qi5656l4pzhgwzhshf31yp0h53l1j442v109a"; sha256 = "0c046r3cgf2adcjkgcny1gf2yj3hs0fhrc1zmcz2ja7grcbx46si";
}; };
buildInputs = with gst_all_1; [ buildInputs = with gst_all_1; [

View File

@ -1,77 +1,42 @@
{ stdenv { stdenv, fetchFromGitHub, cmake, pkgconfig, openssl, zlib, libX11, libXcursor
, fetchgit , libXdamage, libXext, glib, alsaLib, ffmpeg, libxkbfile, libXinerama, libXv
, cmake , pulseaudio ? null, cups ? null, pcsclite ? null
, openssl
, printerSupport ? true, cups
, pkgconfig
, zlib
, libX11
, libXcursor
, libXdamage
, libXext
, alsaLib
, ffmpeg
, libxkbfile
#, xmlto, docbook_xml_dtd_412, docbook_xml_xslt
, libXinerama
#, directfb
#, cunit
, libXv
, pulseaudioSupport ? true, pulseaudio
}: }:
assert printerSupport -> cups != null;
let rev = "ec6effcb1e7759551cf31f5b18d768afc67db97d"; in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "freerdp-1.1pre-${stdenv.lib.strings.substring 0 7 rev}"; name = "freerdp-1.2.0-beta1";
src = fetchgit { src = fetchFromGitHub {
url = git://github.com/FreeRDP/FreeRDP.git; owner = "FreeRDP";
inherit rev; repo = "FreeRDP";
sha256 = "4e5af9a6769c4b34c6b75dffe83a385d1d86068c523ea9f62fabc651a2958455"; rev = "1.2.0-beta1+android7";
sha256 = "08nn18jydblrif1qs92pakzd3ww7inr0i378ssn1bjp09lm1bkk0";
}; };
buildInputs = [ buildInputs = [
cmake cmake pkgconfig openssl zlib libX11 libXcursor libXdamage libXext glib
openssl alsaLib ffmpeg libxkbfile libXinerama libXv cups pulseaudio pcsclite
pkgconfig ];
zlib
libX11
libXcursor
libXdamage
libXext
# directfb
# cunit
alsaLib
ffmpeg
libxkbfile
# xmlto docbook_xml_dtd_412 docbook_xml_xslt
libXinerama
libXv
] ++ stdenv.lib.optional printerSupport cups;
doCheck = false; doCheck = false;
checkPhase = ''LD_LIBRARY_PATH="libfreerdp-cache:libfreerdp-chanman:libfreerdp-common:libfreerdp-core:libfreerdp-gdi:libfreerdp-kbd:libfreerdp-rail:libfreerdp-rfx:libfreerdp-utils" cunit/test_freerdp''; cmakeFlags = [
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DWITH_CUNIT=OFF"
] ++ stdenv.lib.optional (pulseaudio != null) "-DWITH_PULSE=ON"
++ stdenv.lib.optional (cups != null) "-DWITH_CUPS=ON"
++ stdenv.lib.optional (pcsclite != null) "-DWITH_PCSC=ON";
cmakeFlags = [ "-DWITH_DIRECTFB=OFF" "-DWITH_CUNIT=OFF" "-DWITH_MANPAGES=OFF" meta = with stdenv.lib; {
] ++ stdenv.lib.optional pulseaudioSupport "-DWITH_PULSEAUDIO=ON";
meta = {
description = "A Remote Desktop Protocol Client"; description = "A Remote Desktop Protocol Client";
longDescription = '' longDescription = ''
FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP)
following the Microsoft Open Specifications. following the Microsoft Open Specifications.
''; '';
homepage = http://www.freerdp.com/; homepage = http://www.freerdp.com/;
license = licenses.asl20;
license = "free-non-copyleft"; maintainers = with maintainers; [ wkennington ];
platforms = platforms.unix;
broken = true; # fails to build
}; };
} }

View File

@ -10,6 +10,8 @@ stdenv.mkDerivation (rec {
sha256 = "0y0s0qjfsflp4drcn75ykx6as7mn13092bcvlp2ibhilkpa27gzv"; sha256 = "0y0s0qjfsflp4drcn75ykx6as7mn13092bcvlp2ibhilkpa27gzv";
}; };
patches = [ ./enable_windows_key.patch ];
buildInputs = [openssl libX11]; buildInputs = [openssl libX11];
configureFlags = [ configureFlags = [

View File

@ -0,0 +1,29 @@
http://sourceforge.net/p/rdesktop/code/1816/
Fix constant naming and enabled windowskey by default.
Index: trunk/rdesktop.c
===================================================================
--- trunk/rdesktop.c (revision 1815)
+++ trunk/rdesktop.c (revision 1816)
@@ -554,7 +554,7 @@
act.sa_flags = 0;
sigaction(SIGPIPE, &act, NULL);
- flags = RDP_LOGON_NORMAL;
+ flags = RDP_LOGON_NORMAL | RDP_LOGON_ENABLEWINDOWSKEY;
prompt_password = False;
g_seamless_spawn_cmd[0] = domain[0] = g_password[0] = shell[0] = directory[0] = 0;
g_embed_wnd = 0;
Index: trunk/constants.h
===================================================================
--- trunk/constants.h (revision 1815)
+++ trunk/constants.h (revision 1816)
@@ -321,7 +321,7 @@
#define RDP_LOGON_AUTO 0x0008
#define RDP_LOGON_NORMAL 0x0033
#define RDP_LOGON_COMPRESSION 0x0080 /* mppc compression with 8kB histroy buffer */
-#define RDP_LOGON_BLOB 0x0100
+#define RDP_LOGON_ENABLEWINDOWSKEY 0x0100
#define RDP_LOGON_COMPRESSION2 0x0200 /* rdp5 mppc compression with 64kB history buffer */
#define RDP_LOGON_LEAVE_AUDIO 0x2000
#define RDP_LOGON_PASSWORD_IS_SC_PIN 0x40000

View File

@ -0,0 +1,47 @@
{ stdenv, fetchurl, libX11, libXtst, libXext, libXdamage, libXfixes, wineUnstable, makeWrapper, libXau
, bash, patchelf }:
let
topath = "${wineUnstable}/bin";
toldpath = stdenv.lib.concatStringsSep ":" (map (x: "${x}/lib")
[ stdenv.gcc.gcc libX11 libXtst libXext libXdamage libXfixes wineUnstable ]);
in
stdenv.mkDerivation {
name = "teamviewer-9.0.32150";
src = fetchurl {
url = "http://download.teamviewer.com/download/version_9x/teamviewer_linux_x64.deb";
sha256 = "0wpwbx0xzn3vlzavszxhfvfcaj3pijlpwvlz5m7w19mb6cky3q13";
};
buildInputs = [ makeWrapper patchelf ];
unpackPhase = ''
ar x $src
tar xf data.tar.gz
'';
installPhase = ''
mkdir -p $out/share/teamviewer9 $out/bin
cp -a opt/teamviewer9/* $out/share/teamviewer9
rm -R $out/share/teamviewer9/tv_bin/wine/{bin,lib,share}
cat > $out/bin/teamviewer << EOF
#!${bash}/bin/sh
export LD_LIBRARY_PATH=${toldpath}\''${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH}
export PATH=${topath}\''${PATH:+:\$PATH}
$out/share/teamviewer9/tv_bin/script/teamviewer "\$@"
EOF
chmod +x $out/bin/teamviewer
patchelf --set-rpath "${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib:${libX11}/lib:${libXext}/lib:${libXau}/lib:${libXdamage}/lib:${libXfixes}/lib" $out/share/teamviewer9/tv_bin/teamviewerd
patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" $out/share/teamviewer9/tv_bin/teamviewerd
ln -s $out/share/teamviewer9/tv_bin/teamviewerd $out/bin/
'';
meta = {
homepage = "http://www.teamviewer.com";
license = stdenv.lib.licenses.unfree;
description = "Desktop sharing application, providing remote support and online meetings";
};
}

View File

@ -3,7 +3,7 @@
assert (stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux"); assert (stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux");
let let
version = "4.0.22"; version = "4.0.23";
arch = if stdenv.system == "x86_64-linux" arch = if stdenv.system == "x86_64-linux"
then "linux-x86_64" then "linux-x86_64"
else "linux-i686"; else "linux-i686";
@ -14,8 +14,8 @@ stdenv.mkDerivation {
src = fetchurl { src = fetchurl {
url = "https://download.zotero.org/standalone/${version}/Zotero-${version}_${arch}.tar.bz2"; url = "https://download.zotero.org/standalone/${version}/Zotero-${version}_${arch}.tar.bz2";
sha256 = if stdenv.system == "x86_64-linux" sha256 = if stdenv.system == "x86_64-linux"
then "0dq4x1cc0lnhs7g6w85qjdlb7sajr13mr2zcf4yvrciwhwy3r1i1" then "1fz5xn69vapfw8d20207zr9p5r1h9x5kahh334pl2dn1h8il0sm8"
else "0s4j2karaq85fwnd1niz8hzx5k71cqs493g38pg337i3iwxad9hg"; else "1kmsvvg2lh881rzy3rxbigzivixjamyrwf5x7vmn1kzhvsvifrng";
}; };
# Strip the bundled xulrunner # Strip the bundled xulrunner

View File

@ -17,8 +17,8 @@
cabal.mkDerivation (self: { cabal.mkDerivation (self: {
pname = "git-annex"; pname = "git-annex";
version = "5.20140927"; version = "5.20141013";
sha256 = "02zmg8pcrdavfna2xy51n6chn6i5g0b8p20rba1vj29rlfj3cask"; sha256 = "1p2hvw2x0rm9nhk176mzwisl75xphqxv7mhd43mvwlb3q9f57lnc";
isLibrary = false; isLibrary = false;
isExecutable = true; isExecutable = true;
buildDepends = [ buildDepends = [
@ -48,6 +48,5 @@ cabal.mkDerivation (self: {
license = self.stdenv.lib.licenses.gpl3; license = self.stdenv.lib.licenses.gpl3;
platforms = self.ghc.meta.platforms; platforms = self.ghc.meta.platforms;
maintainers = with self.stdenv.lib.maintainers; [ simons ]; maintainers = with self.stdenv.lib.maintainers; [ simons ];
broken = true;
}; };
}) })

View File

@ -0,0 +1,12 @@
diff --git a/Makefile.am b/Makefile.am
index 6eedb51..7b54313 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,7 @@
SUBDIRS = macros data gifenc src po
+ACLOCAL_AMFLAGS = -I macros
+
EXTRA_DIST = \
MAINTAINERS \
depcomp \

View File

@ -0,0 +1,28 @@
{ stdenv, fetchgit, which, gnome3_12, glib, intltool, pkgconfig, libtool, cairo, gtk3, gst_all_1 }:
stdenv.mkDerivation rec {
version = "0.2.3.alpha";
name = "byzanz-${version}";
src = fetchgit {
url = git://github.com/GNOME/byzanz;
rev = "1875a7f6a3903b83f6b1d666965800f47db9286a";
sha256 = "1b7hyilwj9wf2ri5zq63889bvskagdnqjc91hvyjmx1aj7vdkzd4";
};
patches = [ ./add-amflags.patch ];
preBuild = ''
./autogen.sh --prefix=$out
'';
buildInputs = [ which gnome3_12.gnome_common glib intltool pkgconfig libtool cairo gtk3 gst_all_1.gstreamer gst_all_1.gst-plugins-base ];
meta = with stdenv.lib; {
description = "Tool to record a running X desktop to an animation suitable for presentation in a web browser";
homepage = https://github.com/GNOME/byzanz;
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = [ maintainers.DamienCassou ];
};
}

View File

@ -58,11 +58,11 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "mpv-${version}"; name = "mpv-${version}";
version = "0.5.4"; version = "0.6.1";
src = fetchurl { src = fetchurl {
url = "https://github.com/mpv-player/mpv/archive/v${version}.tar.gz"; url = "https://github.com/mpv-player/mpv/archive/v${version}.tar.gz";
sha256 = "1n992nvylnh27jc6425daasq0nsxjfc1mxhhlhvlwzxm724x94xp"; sha256 = "03vzsvvb1dvm4rn70m97fdbzhlqj9crk7zpvcp00bcl956xjfc9s";
}; };
buildInputs = with stdenv.lib; buildInputs = with stdenv.lib;

View File

@ -81,13 +81,13 @@ in
plugin = "svtplay"; plugin = "svtplay";
namespace = "plugin.video.svtplay"; namespace = "plugin.video.svtplay";
version = "4.0.6"; version = "4.0.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nilzen"; owner = "nilzen";
repo = "xbmc-" + plugin; repo = "xbmc-" + plugin;
rev = "4f27254edbd6dc48350152832833c5b164ca58de"; rev = "967dc429201200200dba0e755ede3a0e9cb1b137";
sha256 = "11r8vljpx9fxwdx20cvkb5szlaypfrn6c235jwcg61s4hmjy4kl8"; sha256 = "0kaxcci9zbblpkn1mrmdl49844r90agww41frz9vw6q2ajq1z16k";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -0,0 +1,41 @@
{ stdenv, fetchurl, unzip, jre }:
with stdenv;
mkDerivation rec {
version = "8";
name = "zdfmediathk";
src = fetchurl {
url = "http://downloads.sourceforge.net/project/zdfmediathk/Mediathek/Mediathek%208/MediathekView_${version}.zip";
sha256 = "1sglzk8zh6cyijyw82k49yqzjv0ywglp03w09s7wr4mzk48mfjj9";
};
buildInputs = [ unzip ];
unpackPhase = "unzip $src";
installPhase = ''
mkdir -p $out/{lib,bin,share/{doc,licenses}}
install -m644 MediathekView.jar $out/
install -m644 -t $out/lib lib/*
install -m755 bin/flv.sh $out/bin/
install -m644 -t $out/share/doc Anleitung/*.pdf
install -m644 -t $out/share/licenses Copyright/{*.*,_copyright}
bin="$out/bin/mediathek"
cat >> "$bin" << EOF
#!/bin/sh
exec ${jre}/bin/java -cp "$out/lib/*" -Xms128M -Xmx1G -jar "$out/MediathekView.jar" "\$@"
EOF
chmod +x "$bin"
'';
meta = with stdenv.lib; {
description = "Offers access to the Mediathek of different tv stations (ARD, ZDF, Arte, etc.)";
homepage = "http://zdfmediathk.sourceforge.net/";
license = licenses.gpl3;
maintainers = [ maintainers.flosse ];
platforms = platforms.all;
};
}

View File

@ -3,11 +3,11 @@ btrfsProgs, iptables, bash, e2fsprogs, xz}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "docker-${version}"; name = "docker-${version}";
version = "1.2.0"; version = "1.3.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/dotcloud/docker/archive/v${version}.tar.gz"; url = "https://github.com/dotcloud/docker/archive/v${version}.tar.gz";
sha256 = "1nk74p9k17bllgw4992ixx7z3w87icp2wabbpbgfyi20k2q9mayp"; sha256 = "09bn88i8acv7kw39js1p7mgf3sglq7d782xnafkp0i97svf0x4y9";
}; };
buildInputs = [ makeWrapper go sqlite lxc iproute bridge_utils devicemapper btrfsProgs iptables e2fsprogs]; buildInputs = [ makeWrapper go sqlite lxc iproute bridge_utils devicemapper btrfsProgs iptables e2fsprogs];
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
buildPhase = '' buildPhase = ''
patchShebangs ./hack patchShebangs ./hack
export AUTO_GOPATH=1 export AUTO_GOPATH=1
export DOCKER_GITCOMMIT="fa7b24f" export DOCKER_GITCOMMIT="c78088f"
./hack/make.sh dynbinary ./hack/make.sh dynbinary
''; '';

View File

@ -5,6 +5,7 @@
, javaBindings ? false, jdk ? null , javaBindings ? false, jdk ? null
, pythonBindings ? false, python ? null , pythonBindings ? false, python ? null
, enableExtensionPack ? false, requireFile ? null, patchelf ? null , enableExtensionPack ? false, requireFile ? null, patchelf ? null
, pulseSupport ? false, pulseaudio ? null
}: }:
with stdenv.lib; with stdenv.lib;
@ -64,7 +65,8 @@ in stdenv.mkDerivation {
libcap glib lvm2 python alsaLib curl libvpx pam xorriso makeself perl libcap glib lvm2 python alsaLib curl libvpx pam xorriso makeself perl
pkgconfig which libXmu ] pkgconfig which libXmu ]
++ optional javaBindings jdk ++ optional javaBindings jdk
++ optional pythonBindings python; ++ optional pythonBindings python
++ optional pulseSupport pulseaudio;
prePatch = '' prePatch = ''
set -x set -x
@ -86,7 +88,8 @@ in stdenv.mkDerivation {
./configure --with-qt4-dir=${qt4} \ ./configure --with-qt4-dir=${qt4} \
${optionalString (!javaBindings) "--disable-java"} \ ${optionalString (!javaBindings) "--disable-java"} \
${optionalString (!pythonBindings) "--disable-python"} \ ${optionalString (!pythonBindings) "--disable-python"} \
--disable-pulse --disable-hardening --disable-kmods \ ${optionalString (!pulseSupport) "--disable-pulse"} \
--disable-hardening --disable-kmods \
--with-mkisofs=${xorriso}/bin/xorrisofs --with-mkisofs=${xorriso}/bin/xorrisofs
sed -e 's@PKG_CONFIG_PATH=.*@PKG_CONFIG_PATH=${libIDL}/lib/pkgconfig:${glib}/lib/pkgconfig ${libIDL}/bin/libIDL-config-2@' \ sed -e 's@PKG_CONFIG_PATH=.*@PKG_CONFIG_PATH=${libIDL}/lib/pkgconfig:${glib}/lib/pkgconfig ${libIDL}/bin/libIDL-config-2@' \
-i AutoConfig.kmk -i AutoConfig.kmk

View File

@ -1,33 +1,44 @@
{ stdenv, fetchurl, pkgconfig, wayland, mesa, libxkbcommon { stdenv, fetchurl, pkgconfig, wayland, mesa, libxkbcommon, cairo, libxcb
, cairo, libxcb, libXcursor, x11, udev, libdrm, mtdev , libXcursor, x11, udev, libdrm, mtdev, libjpeg, pam, dbus, libinput
, libjpeg, pam, autoconf, automake, libtool, dbus }: , pango ? null, libunwind ? null, freerdp ? null, vaapi ? null, libva ? null
, libwebp ? null
}:
let version = "1.5.0"; in let version = "1.6.0"; in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "weston-${version}"; name = "weston-${version}";
src = fetchurl { src = fetchurl {
url = "http://wayland.freedesktop.org/releases/${name}.tar.xz"; url = "http://wayland.freedesktop.org/releases/${name}.tar.xz";
sha256 = "113nig2dmbgrjhi79k0zw77vicnx8vkaihawd0nsg6n79ah8nf06"; sha256 = "0kb1mb54l7adihmr2y77xgsdb00dvifnq886q2mmy0mz7g8sagnw";
}; };
#ToDo: libinput can be split away
buildInputs = [ buildInputs = [
pkgconfig wayland mesa libxkbcommon pkgconfig wayland mesa libxkbcommon cairo libxcb libXcursor x11 udev libdrm
cairo libxcb libXcursor x11 udev libdrm mtdev libjpeg pam dbus.libs mtdev libjpeg pam dbus.libs libinput pango libunwind freerdp vaapi libva
libwebp
]; ];
NIX_CFLAGS_COMPILE = "-I${libdrm}/include/libdrm";
configureFlags = [ configureFlags = [
"--enable-xwayland"
"--enable-x11-compositor"
"--enable-drm-compositor"
"--enable-wayland-compositor"
"--enable-headless-compositor"
"--enable-fbdev-compositor"
"--enable-screen-sharing"
"--enable-clients"
"--enable-weston-launch"
"--disable-setuid-install" # prevent install target to chown root weston-launch, which fails "--disable-setuid-install" # prevent install target to chown root weston-launch, which fails
]; ] ++ stdenv.lib.optional (freerdp != null) "--enable-rdp-compositor"
++ stdenv.lib.optional (vaapi != null) "--enabe-vaapi-recorder";
meta = { meta = with stdenv.lib; {
description = "Reference implementation of a Wayland compositor"; description = "Reference implementation of a Wayland compositor";
homepage = http://wayland.freedesktop.org/; homepage = http://wayland.freedesktop.org/;
license = stdenv.lib.licenses.mit; license = licenses.mit;
platforms = stdenv.lib.platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ wkennington ];
}; };
} }

View File

@ -23,4 +23,4 @@ mount --rbind /run $chrootenvDest/run
mount --bind /etc $chrootenvDest/host-etc mount --bind /etc $chrootenvDest/host-etc
# Bind mount /tmp # Bind mount /tmp
mount --bind /tmp/chrootenv-@name@ /run/chrootenv/steam/tmp mount --bind /tmp/chrootenv-@name@ $chrootenvDest/tmp

View File

@ -57,6 +57,13 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version;
propagatedUserEnvPkgs = filter (y : ! (y == null)) x.propagatedUserEnvPkgs; propagatedUserEnvPkgs = filter (y : ! (y == null)) x.propagatedUserEnvPkgs;
doCheck = enableCheckPhase && x.doCheck; doCheck = enableCheckPhase && x.doCheck;
hyperlinkSource = enableHyperlinkSource && x.hyperlinkSource; hyperlinkSource = enableHyperlinkSource && x.hyperlinkSource;
# Disable Darwin builds: <https://github.com/NixOS/nixpkgs/issues/2689>.
meta = let meta = x.meta or {};
hydraPlatforms = meta.hydraPlatforms or meta.platforms or [];
noElem = p: ps: !stdenv.lib.elem p ps;
noDarwin = p: noElem p stdenv.lib.platforms.darwin;
in
meta // { hydraPlatforms = filter noDarwin hydraPlatforms; };
}; };
defaults = defaults =
@ -210,9 +217,6 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version;
${optionalString (self.enableSharedExecutables && self.stdenv.isDarwin) '' ${optionalString (self.enableSharedExecutables && self.stdenv.isDarwin) ''
configureFlags+=" --ghc-option=-optl=-Wl,-headerpad_max_install_names" configureFlags+=" --ghc-option=-optl=-Wl,-headerpad_max_install_names"
''} ''}
${optionalString (versionOlder "7.8" ghc.version) ''
configureFlags+=" --ghc-option=-j$NIX_BUILD_CORES"
''}
echo "configure flags: $extraConfigureFlags $configureFlags" echo "configure flags: $extraConfigureFlags $configureFlags"
./Setup configure --verbose --prefix="$out" --libdir='$prefix/lib/$compiler' \ ./Setup configure --verbose --prefix="$out" --libdir='$prefix/lib/$compiler' \

View File

@ -385,4 +385,11 @@ rec {
http://hdiff.luite.com/packages/archive/package/ http://hdiff.luite.com/packages/archive/package/
]; ];
# Roy marples mirrors
roy = [
http://roy.marples.name/downloads/
http://roy.aydogan.net/
http://cflags.cc/roy/
];
} }

View File

@ -32,7 +32,7 @@ let
grKernel = if cfg.stable grKernel = if cfg.stable
then mkKernel pkgs.linux_3_14 stable-patch then mkKernel pkgs.linux_3_14 stable-patch
else mkKernel pkgs.linux_3_16 test-patch; else mkKernel pkgs.linux_3_17 test-patch;
## -- grsecurity configuration --------------------------------------------- ## -- grsecurity configuration ---------------------------------------------

View File

@ -0,0 +1,22 @@
{ stdenv }:
args:
stdenv.mkDerivation ({
name = if args ? name then args.name else baseNameOf (toString args.src);
builder = with stdenv.lib; builtins.toFile "builder.sh" ''
source $stdenv/setup
set -o pipefail
eval "$preInstall"
args=
cd "$src"
echo -ne "${concatStringsSep "\\0" args.files}" | xargs -0 -n1 -I {} -- find {} -type f -print0 | while read -d "" line; do
mkdir -p "$out/$(dirname "$line")"
substituteAll "$line" "$out/$line"
done
'';
preferLocalBuild = true;
} // args)

View File

@ -1586,7 +1586,7 @@ rec {
fullName = "Debian 7.6 Wheezy (i386)"; fullName = "Debian 7.6 Wheezy (i386)";
packagesList = fetchurl { packagesList = fetchurl {
url = mirror://debian/dists/wheezy/main/binary-i386/Packages.bz2; url = mirror://debian/dists/wheezy/main/binary-i386/Packages.bz2;
sha256 = "773ba601513cd7ef1d5192ad8baa795fa050573d82568c577cdf79adade698a3"; sha256 = "1j093d6dwixyrk87sdvaayh3ffcn5aqwik36blndiw5njw2qkzgj";
}; };
urlPrefix = mirror://debian; urlPrefix = mirror://debian;
packages = commonDebianPackages; packages = commonDebianPackages;
@ -1597,7 +1597,7 @@ rec {
fullName = "Debian 7.6 Wheezy (amd64)"; fullName = "Debian 7.6 Wheezy (amd64)";
packagesList = fetchurl { packagesList = fetchurl {
url = mirror://debian/dists/wheezy/main/binary-amd64/Packages.bz2; url = mirror://debian/dists/wheezy/main/binary-amd64/Packages.bz2;
sha256 = "11a8bd3648d51f51e56c9f5382168cc47267d67ef6a050826e1cd358ed46cc17"; sha256 = "1n46fxq8a2dm1i7ysc80s5lg10z5dh0hyd8k3h532n5wzs44xqcc";
}; };
urlPrefix = mirror://debian; urlPrefix = mirror://debian;
packages = commonDebianPackages; packages = commonDebianPackages;

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