Merge 'master' into staging and re-revert merge

... from staging to master, reverted temporarily in aa9a04883e.
This commit is contained in:
Vladimír Čunát 2016-06-23 12:07:57 +02:00
commit 6b27ceb006
526 changed files with 5888 additions and 4415 deletions

View File

@ -57,11 +57,11 @@ stdenv.mkDerivation {
outputFile = "./languages-frameworks/haskell.xml";
}
+ toDocbook {
inputFile = ./../pkgs/development/idris-modules/README.md;
inputFile = ../pkgs/development/idris-modules/README.md;
outputFile = "languages-frameworks/idris.xml";
}
+ toDocbook {
inputFile = ./../pkgs/development/r-modules/README.md;
inputFile = ../pkgs/development/r-modules/README.md;
outputFile = "languages-frameworks/r.xml";
}
+ ''

View File

@ -309,6 +309,7 @@
pxc = "Patrick Callahan <patrick.callahan@latitudeengineering.com>";
qknight = "Joachim Schiele <js@lastlog.de>";
ragge = "Ragnar Dahlen <r.dahlen@gmail.com>";
ralith = "Benjamin Saunders <ben.e.saunders@gmail.com>";
rardiol = "Ricardo Ardissone <ricardo.ardissone@gmail.com>";
rasendubi = "Alexey Shmalko <rasen.dubi@gmail.com>";
raskin = "Michael Raskin <7c6f434c@mail.ru>";

View File

@ -203,13 +203,21 @@ rec {
*/
escape = list: replaceChars list (map (c: "\\${c}") list);
/* Escape all characters that have special meaning in the Bourne shell.
/* Quote string to be used safely within the Bourne shell.
Example:
escapeShellArg "so([<>])me"
=> "so\\(\\[\\<\\>\\]\\)me"
escapeShellArg "esc'ape\nme"
=> "'esc'\\''ape\nme'"
*/
escapeShellArg = lib.escape (stringToCharacters "\\ ';$`()|<>\t*[]");
escapeShellArg = arg: "'${replaceStrings ["'"] ["'\\''"] (toString arg)}'";
/* Quote all arguments to be safely passed to the Bourne shell.
Example:
escapeShellArgs ["one" "two three" "four'five"]
=> "'one' 'two three' 'four'\\''five'"
*/
escapeShellArgs = concatMapStringsSep " " escapeShellArg;
/* Obsolete - use replaceStrings instead. */
replaceChars = builtins.replaceStrings or (

View File

@ -1,6 +1,6 @@
{ nixpkgs }:
with import ./../.. { };
with import ../.. { };
with lib;
stdenv.mkDerivation {

View File

@ -100,6 +100,10 @@ rec {
in if isDerivation res then res else toDerivation res;
};
shellPackage = package // {
check = x: (package.check x) && (hasAttr "shellPath" x);
};
path = mkOptionType {
name = "path";
# Hacky: there is no isPath primop.

View File

@ -8,4 +8,10 @@ rec {
replaceChars ["/" "-" " "] ["-" "\\x2d" "\\x20"]
(if hasPrefix "/" s then substring 1 (stringLength s) s else s);
# Returns a system path for a given shell package
toShellPath = shell:
if types.shellPackage.check shell then
"/run/current-system/sw${shell.shellPath}"
else
shell;
}

View File

@ -1,7 +1,7 @@
# This module defines a global environment configuration and
# a common configuration for all shells.
{ config, lib, pkgs, ... }:
{ config, lib, utils, pkgs, ... }:
with lib;
@ -135,13 +135,13 @@ in
environment.shells = mkOption {
default = [];
example = [ "/run/current-system/sw/bin/zsh" ];
example = literalExample "[ pkgs.bashInteractive pkgs.zsh ]";
description = ''
A list of permissible login shells for user accounts.
No need to mention <literal>/bin/sh</literal>
here, it is placed into this list implicitly.
'';
type = types.listOf types.path;
type = types.listOf (types.either types.shellPackage types.path);
};
};
@ -158,7 +158,7 @@ in
environment.etc."shells".text =
''
${concatStringsSep "\n" cfg.shells}
${concatStringsSep "\n" (map utils.toShellPath cfg.shells)}
/bin/sh
'';

View File

@ -1,9 +1,8 @@
{ config, lib, pkgs, ... }:
{ config, lib, utils, pkgs, ... }:
with lib;
let
ids = config.ids;
cfg = config.users;
@ -103,7 +102,7 @@ let
};
home = mkOption {
type = types.str;
type = types.path;
default = "/var/empty";
description = "The user's home directory.";
};
@ -118,8 +117,10 @@ let
};
shell = mkOption {
type = types.str;
default = "/run/current-system/sw/bin/nologin";
type = types.either types.shellPackage types.path;
default = pkgs.nologin;
defaultText = "pkgs.nologin";
example = literalExample "pkgs.bashInteractive";
description = "The path to the user's shell.";
};
@ -359,11 +360,12 @@ let
spec = pkgs.writeText "users-groups.json" (builtins.toJSON {
inherit (cfg) mutableUsers;
users = mapAttrsToList (n: u:
users = mapAttrsToList (_: u:
{ inherit (u)
name uid group description home shell createHome isSystemUser
name uid group description home createHome isSystemUser
password passwordFile hashedPassword
initialPassword initialHashedPassword;
shell = utils.toShellPath u.shell;
}) cfg.users;
groups = mapAttrsToList (n: g:
{ inherit (g) name gid;
@ -373,6 +375,12 @@ let
}) cfg.groups;
});
systemShells =
let
shells = mapAttrsToList (_: u: u.shell) cfg.users;
in
filter types.shellPackage.check shells;
in {
###### interface
@ -477,6 +485,9 @@ in {
};
};
# Install all the user shells
environment.systemPackages = systemShells;
users.groups = {
root.gid = ids.gids.root;
wheel.gid = ids.gids.wheel;

View File

@ -91,12 +91,10 @@ ln -s /run $mountPoint/var/run
rm -f $mountPoint/etc/{resolv.conf,hosts}
cp -Lf /etc/resolv.conf /etc/hosts $mountPoint/etc/
if [ -e "$SSL_CERT_FILE" ]; then
cp -Lf "$SSL_CERT_FILE" "$mountPoint/tmp/ca-cert.crt"
export SSL_CERT_FILE=/tmp/ca-cert.crt
# For Nix 1.7
export CURL_CA_BUNDLE=/tmp/ca-cert.crt
fi
cp -Lf "@cacert@" "$mountPoint/tmp/ca-cert.crt"
export SSL_CERT_FILE=/tmp/ca-cert.crt
# For Nix 1.7
export CURL_CA_BUNDLE=/tmp/ca-cert.crt
if [ -n "$runChroot" ]; then
if ! [ -L $mountPoint/nix/var/nix/profiles/system ]; then

View File

@ -23,6 +23,7 @@ let
inherit (pkgs) perl pathsFromGraph;
nix = config.nix.package.out;
cacert = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
nixClosure = pkgs.runCommand "closure"
{ exportReferencesGraph = ["refs" config.nix.package.out]; }

View File

@ -268,6 +268,8 @@
nzbget = 245;
mosquitto = 246;
toxvpn = 247;
squeezelite = 248;
turnserver = 249;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -506,6 +508,8 @@
nzbget = 245;
mosquitto = 246;
#toxvpn = 247; # unused
#squeezelite = 248; #unused
turnserver = 249;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View File

@ -110,6 +110,7 @@
./services/audio/liquidsoap.nix
./services/audio/mpd.nix
./services/audio/mopidy.nix
./services/audio/squeezelite.nix
./services/backup/almir.nix
./services/backup/bacula.nix
./services/backup/crashplan.nix
@ -316,6 +317,7 @@
./services/networking/cntlm.nix
./services/networking/connman.nix
./services/networking/consul.nix
./services/networking/coturn.nix
./services/networking/ddclient.nix
./services/networking/dhcpcd.nix
./services/networking/dhcpd.nix
@ -413,6 +415,7 @@
./services/networking/wicd.nix
./services/networking/wpa_supplicant.nix
./services/networking/xinetd.nix
./services/networking/xl2tpd.nix
./services/networking/zerobin.nix
./services/networking/zerotierone.nix
./services/networking/znc.nix
@ -459,6 +462,7 @@
./services/web-servers/lighttpd/cgit.nix
./services/web-servers/lighttpd/default.nix
./services/web-servers/lighttpd/gitweb.nix
./services/web-servers/lighttpd/inginious.nix
./services/web-servers/nginx/default.nix
./services/web-servers/phpfpm.nix
./services/web-servers/shellinabox.nix

View File

@ -200,7 +200,7 @@ in
# Configuration for readline in bash.
environment.etc."inputrc".source = ./inputrc;
users.defaultUserShell = mkDefault "/run/current-system/sw/bin/bash";
users.defaultUserShell = mkDefault pkgs.bashInteractive;
environment.pathsToLink = optionals cfg.enableCompletion [
"/etc/bash_completion.d"

View File

@ -1,6 +1,6 @@
# Configuration for the pwdutils suite of tools: passwd, useradd, etc.
{ config, lib, pkgs, ... }:
{ config, lib, utils, pkgs, ... }:
with lib;
@ -43,13 +43,13 @@ in
users.defaultUserShell = lib.mkOption {
description = ''
This option defines the default shell assigned to user
accounts. This must not be a store path, since the path is
accounts. This can be either a full system path or a shell package.
This must not be a store path, since the path is
used outside the store (in particular in /etc/passwd).
Rather, it should be the path of a symlink that points to the
actual shell in the Nix store.
'';
example = "/run/current-system/sw/bin/zsh";
type = types.path;
example = literalExample "pkgs.zsh";
type = types.either types.path types.shellPackage;
};
};
@ -60,7 +60,9 @@ in
config = {
environment.systemPackages =
lib.optional config.users.mutableUsers pkgs.shadow;
lib.optional config.users.mutableUsers pkgs.shadow ++
lib.optional (types.shellPackage.check config.users.defaultUserShell)
config.users.defaultUserShell;
environment.etc =
[ { # /etc/login.defs: global configuration for pwdutils. You
@ -74,7 +76,7 @@ in
''
GROUP=100
HOME=/home
SHELL=${config.users.defaultUserShell}
SHELL=${utils.toShellPath config.users.defaultUserShell}
'';
target = "default/useradd";
}

View File

@ -187,7 +187,7 @@ in
script = ''
cd '${cpath}'
set +e
simp_le ${concatMapStringsSep " " (arg: escapeShellArg (toString arg)) cmdline}
simp_le ${escapeShellArgs cmdline}
EXITCODE=$?
set -e
echo "$EXITCODE" > /tmp/lastExitCode

View File

@ -0,0 +1,67 @@
{ config, lib, pkgs, ... }:
with lib;
let
uid = config.ids.uids.squeezelite;
cfg = config.services.squeezelite;
in {
###### interface
options = {
services.squeezelite= {
enable = mkEnableOption "Squeezelite, a software Squeezebox emulator";
dataDir = mkOption {
default = "/var/lib/squeezelite";
type = types.str;
description = ''
The directory where Squeezelite stores its name file.
'';
};
extraArguments = mkOption {
default = "";
type = types.str;
description = ''
Additional command line arguments to pass to Squeezelite.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
systemd.services.squeezelite= {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "sound.target" ];
description = "Software Squeezebox emulator";
preStart = "mkdir -p ${cfg.dataDir} && chown -R squeezelite ${cfg.dataDir}";
serviceConfig = {
ExecStart = "${pkgs.squeezelite}/bin/squeezelite -N ${cfg.dataDir}/player-name ${cfg.extraArguments}";
User = "squeezelite";
PermissionsStartOnly = true;
};
};
users.extraUsers.squeezelite= {
inherit uid;
group = "nogroup";
extraGroups = [ "audio" ];
description = "Squeezelite user";
home = "${cfg.dataDir}";
};
};
}

View File

@ -101,7 +101,7 @@ in {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.opendkim}/bin/opendkim ${concatMapStringsSep " " escapeShellArg args}";
ExecStart = "${pkgs.opendkim}/bin/opendkim ${escapeShellArgs args}";
User = cfg.user;
Group = cfg.group;
RuntimeDirectory = optional (cfg.socket == defaultSock) "opendkim";

View File

@ -5,17 +5,31 @@ with lib;
let
cfg = config.services.matrix-synapse;
logConfigFile = pkgs.writeText "log_config.yaml" cfg.logConfig;
mkResource = r: ''{names: ${builtins.toJSON r.names}, compress: ${if r.compress then "true" else "false"}}'';
mkListener = l: ''{port: ${toString l.port}, bind_address: "${l.bind_address}", type: ${l.type}, tls: ${if l.tls then "true" else "false"}, x_forwarded: ${if l.x_forwarded then "true" else "false"}, resources: [${concatStringsSep "," (map mkResource l.resources)}]}'';
configFile = pkgs.writeText "homeserver.yaml" ''
tls_certificate_path: "${cfg.tls_certificate_path}"
${optionalString (cfg.tls_private_key_path != null) ''
tls_private_key_path: "${cfg.tls_private_key_path}"
''}
tls_dh_params_path: "${cfg.tls_dh_params_path}"
no_tls: ${if cfg.no_tls then "true" else "false"}
${optionalString (cfg.bind_port != null) ''
bind_port: ${toString cfg.bind_port}
''}
${optionalString (cfg.unsecure_port != null) ''
unsecure_port: ${toString cfg.unsecure_port}
''}
${optionalString (cfg.bind_host != null) ''
bind_host: "${cfg.bind_host}"
''}
server_name: "${cfg.server_name}"
pid_file: "/var/run/matrix-synapse.pid"
web_client: ${if cfg.web_client then "true" else "false"}
${optionalString (cfg.public_baseurl != null) ''
public_baseurl: "${cfg.public_baseurl}"
''}
listeners: [${concatStringsSep "," (map mkListener cfg.listeners)}]
database: {
name: "${cfg.database_type}",
args: {
@ -24,21 +38,41 @@ database: {
)}
}
}
event_cache_size: "${cfg.event_cache_size}"
verbose: ${cfg.verbose}
log_file: "/var/log/matrix-synapse/homeserver.log"
log_config: "${logConfigFile}"
rc_messages_per_second: ${cfg.rc_messages_per_second}
rc_message_burst_count: ${cfg.rc_message_burst_count}
federation_rc_window_size: ${cfg.federation_rc_window_size}
federation_rc_sleep_limit: ${cfg.federation_rc_sleep_limit}
federation_rc_sleep_delay: ${cfg.federation_rc_sleep_delay}
federation_rc_reject_limit: ${cfg.federation_rc_reject_limit}
federation_rc_concurrent: ${cfg.federation_rc_concurrent}
media_store_path: "/var/lib/matrix-synapse/media"
uploads_path: "/var/lib/matrix-synapse/uploads"
max_upload_size: "${cfg.max_upload_size}"
max_image_pixels: "${cfg.max_image_pixels}"
dynamic_thumbnails: ${if cfg.dynamic_thumbnails then "true" else "false"}
url_preview_enabled: False
recaptcha_private_key: "${cfg.recaptcha_private_key}"
recaptcha_public_key: "${cfg.recaptcha_public_key}"
enable_registration_captcha: ${if cfg.enable_registration_captcha then "true" else "false"}
turn_uris: ${if (length cfg.turn_uris) == 0 then "[]" else ("\n" + (concatStringsSep "\n" (map (s: "- " + s) cfg.turn_uris)))}
turn_uris: ${builtins.toJSON cfg.turn_uris}
turn_shared_secret: "${cfg.turn_shared_secret}"
enable_registration: ${if cfg.enable_registration then "true" else "false"}
${optionalString (cfg.registration_shared_secret != "") ''
${optionalString (cfg.registration_shared_secret != null) ''
registration_shared_secret: "${cfg.registration_shared_secret}"
''}
recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify"
turn_user_lifetime: "${cfg.turn_user_lifetime}"
user_creation_max_duration: ${cfg.user_creation_max_duration}
bcrypt_rounds: ${cfg.bcrypt_rounds}
allow_guest_access: {if cfg.allow_guest_access then "true" else "false"}
enable_metrics: ${if cfg.enable_metrics then "true" else "false"}
report_stats: ${if cfg.report_stats then "true" else "false"}
signing_key_path: "/var/lib/matrix-synapse/homeserver.signing.key"
key_refresh_interval: "${cfg.key_refresh_interval}"
perspectives:
servers: {
${concatStringsSep "},\n" (mapAttrsToList (n: v: ''
@ -52,6 +86,8 @@ perspectives:
'') cfg.servers)}
}
}
app_service_config_files: ${builtins.toJSON cfg.app_service_config_files}
${cfg.extraConfig}
'';
in {
@ -73,53 +109,65 @@ in {
Don't bind to the https port
'';
};
tls_certificate_path = mkOption {
type = types.path;
default = "/var/lib/matrix-synapse/homeserver.tls.crt";
description = ''
PEM encoded X509 certificate for TLS
'';
};
tls_private_key_path = mkOption {
type = types.path;
default = "/var/lib/matrix-synapse/homeserver.tls.key";
description = ''
PEM encoded private key for TLS
'';
};
tls_dh_params_path = mkOption {
type = types.path;
default = "/var/lib/matrix-synapse/homeserver.tls.dh";
description = ''
PEM dh parameters for ephemeral keys
'';
};
bind_port = mkOption {
type = types.int;
default = 8448;
type = types.nullOr types.int;
default = null;
example = 8448;
description = ''
DEPRECATED: Use listeners instead.
The port to listen for HTTPS requests on.
For when matrix traffic is sent directly to synapse.
'';
};
unsecure_port = mkOption {
type = types.int;
default = 8008;
type = types.nullOr types.int;
default = null;
example = 8008;
description = ''
DEPRECATED: Use listeners instead.
The port to listen for HTTP requests on.
For when matrix traffic passes through loadbalancer that unwraps TLS.
'';
};
bind_host = mkOption {
type = types.str;
default = "";
type = types.nullOr types.str;
default = null;
description = ''
DEPRECATED: Use listeners instead.
Local interface to listen on.
The empty string will cause synapse to listen on all interfaces.
'';
};
tls_certificate_path = mkOption {
type = types.str;
default = "/var/lib/matrix-synapse/homeserver.tls.crt";
description = ''
PEM encoded X509 certificate for TLS.
You can replace the self-signed certificate that synapse
autogenerates on launch with your own SSL certificate + key pair
if you like. Any required intermediary certificates can be
appended after the primary certificate in hierarchical order.
'';
};
tls_private_key_path = mkOption {
type = types.nullOr types.str;
default = "/var/lib/matrix-synapse/homeserver.tls.key";
example = null;
description = ''
PEM encoded private key for TLS. Specify null if synapse is not
speaking TLS directly.
'';
};
tls_dh_params_path = mkOption {
type = types.str;
default = "/var/lib/matrix-synapse/homeserver.tls.dh";
description = ''
PEM dh parameters for ephemeral keys
'';
};
server_name = mkOption {
type = types.str;
example = "example.com";
description = ''
The domain name of the server, with optional explicit port.
This is used by remote servers to connect to this server,
@ -134,6 +182,145 @@ in {
Whether to serve a web client from the HTTP/HTTPS root resource.
'';
};
public_baseurl = mkOption {
type = types.nullOr types.str;
default = null;
example = "https://example.com:8448/";
description = ''
The public-facing base URL for the client API (not including _matrix/...)
'';
};
listeners = mkOption {
type = types.listOf (types.submodule {
options = {
port = mkOption {
type = types.int;
example = 8448;
description = ''
The port to listen for HTTP(S) requests on.
'';
};
bind_address = mkOption {
type = types.str;
default = "";
example = "203.0.113.42";
description = ''
Local interface to listen on.
The empty string will cause synapse to listen on all interfaces.
'';
};
type = mkOption {
type = types.str;
default = "http";
description = ''
Type of listener.
'';
};
tls = mkOption {
type = types.bool;
default = true;
description = ''
Whether to listen for HTTPS connections rather than HTTP.
'';
};
x_forwarded = mkOption {
type = types.bool;
default = false;
description = ''
Use the X-Forwarded-For (XFF) header as the client IP and not the
actual client IP.
'';
};
resources = mkOption {
type = types.listOf (types.submodule {
options = {
names = mkOption {
type = types.listOf types.str;
description = ''
List of resources to host on this listener.
'';
example = ["client" "webclient" "federation"];
};
compress = mkOption {
type = types.bool;
description = ''
Should synapse compress HTTP responses to clients that support it?
This should be disabled if running synapse behind a load balancer
that can do automatic compression.
'';
};
};
});
description = ''
List of HTTP resources to serve on this listener.
'';
};
};
});
default = [{
port = 8448;
bind_address = "";
type = "http";
tls = true;
x_forwarded = false;
resources = [
{ names = ["client" "webclient"]; compress = true; }
{ names = ["federation"]; compress = false; }
];
}];
description = ''
List of ports that Synapse should listen on, their purpose and their configuration.
'';
};
verbose = mkOption {
type = types.str;
default = "0";
description = "Logging verbosity level.";
};
rc_messages_per_second = mkOption {
type = types.str;
default = "0.2";
description = "Number of messages a client can send per second";
};
rc_message_burst_count = mkOption {
type = types.str;
default = "10.0";
description = "Number of message a client can send before being throttled";
};
federation_rc_window_size = mkOption {
type = types.str;
default = "1000";
description = "The federation window size in milliseconds";
};
federation_rc_sleep_limit = mkOption {
type = types.str;
default = "10";
description = ''
The number of federation requests from a single server in a window
before the server will delay processing the request.
'';
};
federation_rc_sleep_delay = mkOption {
type = types.str;
default = "500";
description = ''
The duration in milliseconds to delay processing events from
remote servers by if they go over the sleep limit.
'';
};
federation_rc_reject_limit = mkOption {
type = types.str;
default = "50";
description = ''
The maximum number of concurrent federation requests allowed
from a single server
'';
};
federation_rc_concurrent = mkOption {
type = types.str;
default = "3";
description = "The number of federation requests to concurrently process from a single server";
};
database_type = mkOption {
type = types.enum [ "sqlite3" "psycopg2" ];
default = "sqlite3";
@ -150,6 +337,11 @@ in {
Arguments to pass to the engine.
'';
};
event_cache_size = mkOption {
type = types.str;
default = "10K";
description = "Number of events to cache in memory.";
};
recaptcha_private_key = mkOption {
type = types.str;
default = "";
@ -187,6 +379,11 @@ in {
The shared secret used to compute passwords for the TURN server
'';
};
turn_user_lifetime = mkOption {
type = types.str;
default = "1h";
description = "How long generated TURN credentials last";
};
enable_registration = mkOption {
type = types.bool;
default = false;
@ -195,8 +392,8 @@ in {
'';
};
registration_shared_secret = mkOption {
type = types.str;
default = "";
type = types.nullOr types.str;
default = null;
description = ''
If set, allows registration by anyone who also has the shared
secret, even if registration is otherwise disabled.
@ -216,7 +413,7 @@ in {
'';
};
servers = mkOption {
type = types.attrs;
type = types.attrsOf (types.attrsOf types.str);
default = {
"matrix.org" = {
"ed25519:auto" = "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw";
@ -226,6 +423,69 @@ in {
The trusted servers to download signing keys from.
'';
};
max_upload_size = mkOption {
type = types.str;
default = "10M";
description = "The largest allowed upload size in bytes";
};
max_image_pixels = mkOption {
type = types.str;
default = "32M";
description = "Maximum number of pixels that will be thumbnailed";
};
dynamic_thumbnails = mkOption {
type = types.bool;
default = false;
description = ''
Whether to generate new thumbnails on the fly to precisely match
the resolution requested by the client. If true then whenever
a new resolution is requested by the client the server will
generate a new thumbnail. If false the server will pick a thumbnail
from a precalculated list.
'';
};
user_creation_max_duration = mkOption {
type = types.str;
default = "1209600000";
description = ''
Sets the expiry for the short term user creation in
milliseconds. The default value is two weeks.
'';
};
bcrypt_rounds = mkOption {
type = types.str;
default = "12";
description = ''
Set the number of bcrypt rounds used to generate password hash.
Larger numbers increase the work factor needed to generate the hash.
'';
};
allow_guest_access = mkOption {
type = types.bool;
default = false;
description = ''
Allows users to register as guests without a password/email/etc, and
participate in rooms hosted on this server which have been made
accessible to anonymous users.
'';
};
key_refresh_interval = mkOption {
type = types.str;
default = "1d";
description = ''
How long key response published by this server is valid for.
Used to set the valid_until_ts in /key/v2 APIs.
Determines how quickly servers will query to check which keys
are still valid.
'';
};
app_service_config_files = mkOption {
type = types.listOf types.path;
default = [ ];
description = ''
A list of application service config file to use
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
@ -265,7 +525,7 @@ in {
mkdir -p /var/lib/matrix-synapse
chmod 700 /var/lib/matrix-synapse
chown -R matrix-synapse:matrix-synapse /var/lib/matrix-synapse
${cfg.package}/bin/homeserver --config-path ${configFile} --generate-keys
${cfg.package}/bin/homeserver --config-path ${configFile} --keys-directory /var/lib/matrix-synapse/ --generate-keys
'';
serviceConfig = {
Type = "simple";

View File

@ -152,8 +152,6 @@ let
};
};
mkShellStr = val: "'${replaceStrings ["'"] ["'\\''"] val}'";
certtool = "${pkgs.gnutls.bin}/bin/certtool";
nixos-taskserver = pkgs.buildPythonPackage {

View File

@ -0,0 +1,327 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.coturn;
pidfile = "/run/turnserver/turnserver.pid";
configFile = pkgs.writeText "turnserver.conf" ''
listening-port=${toString cfg.listening-port}
tls-listening-port=${toString cfg.tls-listening-port}
alt-listening-port=${toString cfg.alt-listening-port}
alt-tls-listening-port=${toString cfg.alt-tls-listening-port}
${concatStringsSep "\n" (map (x: "listening-ip=${x}") cfg.listening-ips)}
${concatStringsSep "\n" (map (x: "relay-ip=${x}") cfg.relay-ips)}
min-port=${toString cfg.min-port}
max-port=${toString cfg.max-port}
${lib.optionalString cfg.lt-cred-mech "lt-cred-mech"}
${lib.optionalString cfg.no-auth "no-auth"}
${lib.optionalString cfg.use-auth-secret "use-auth-secret"}
${lib.optionalString (cfg.static-auth-secret != null) ("static-auth-secret=${cfg.static-auth-secret}")}
realm=${cfg.realm}
${lib.optionalString cfg.no-udp "no-udp"}
${lib.optionalString cfg.no-tcp "no-tcp"}
${lib.optionalString cfg.no-tls "no-tls"}
${lib.optionalString cfg.no-dtls "no-dtls"}
${lib.optionalString cfg.no-udp-relay "no-udp-relay"}
${lib.optionalString cfg.no-tcp-relay "no-tcp-relay"}
${lib.optionalString (cfg.cert != null) "cert=${cfg.cert}"}
${lib.optionalString (cfg.pkey != null) "pkey=${cfg.pkey}"}
${lib.optionalString (cfg.dh-file != null) ("dh-file=${cfg.dh-file}")}
no-stdout-log
syslog
pidfile=${pidfile}
${lib.optionalString cfg.secure-stun "secure-stun"}
${lib.optionalString cfg.no-cli "no-cli"}
cli-ip=${cfg.cli-ip}
cli-port=${toString cfg.cli-port}
${lib.optionalString (cfg.cli-password != null) ("cli-password=${cfg.cli-password}")}
${cfg.extraConfig}
'';
in {
options = {
services.coturn = {
enable = mkEnableOption "coturn TURN server";
listening-port = mkOption {
type = types.int;
default = 3478;
description = ''
TURN listener port for UDP and TCP.
Note: actually, TLS and DTLS sessions can connect to the
"plain" TCP and UDP port(s), too - if allowed by configuration.
'';
};
tls-listening-port = mkOption {
type = types.int;
default = 5349;
description = ''
TURN listener port for TLS.
Note: actually, "plain" TCP and UDP sessions can connect to the TLS and
DTLS port(s), too - if allowed by configuration. The TURN server
"automatically" recognizes the type of traffic. Actually, two listening
endpoints (the "plain" one and the "tls" one) are equivalent in terms of
functionality; but we keep both endpoints to satisfy the RFC 5766 specs.
For secure TCP connections, we currently support SSL version 3 and
TLS version 1.0, 1.1 and 1.2.
For secure UDP connections, we support DTLS version 1.
'';
};
alt-listening-port = mkOption {
type = types.int;
default = cfg.listening-port + 1;
defaultText = "listening-port + 1";
description = ''
Alternative listening port for UDP and TCP listeners;
default (or zero) value means "listening port plus one".
This is needed for RFC 5780 support
(STUN extension specs, NAT behavior discovery). The TURN Server
supports RFC 5780 only if it is started with more than one
listening IP address of the same family (IPv4 or IPv6).
RFC 5780 is supported only by UDP protocol, other protocols
are listening to that endpoint only for "symmetry".
'';
};
alt-tls-listening-port = mkOption {
type = types.int;
default = cfg.tls-listening-port + 1;
defaultText = "tls-listening-port + 1";
description = ''
Alternative listening port for TLS and DTLS protocols.
'';
};
listening-ips = mkOption {
type = types.listOf types.str;
default = [];
example = [ "203.0.113.42" "2001:DB8::42" ];
description = ''
Listener IP addresses of relay server.
If no IP(s) specified in the config file or in the command line options,
then all IPv4 and IPv6 system IPs will be used for listening.
'';
};
relay-ips = mkOption {
type = types.listOf types.str;
default = [];
example = [ "203.0.113.42" "2001:DB8::42" ];
description = ''
Relay address (the local IP address that will be used to relay the
packets to the peer).
Multiple relay addresses may be used.
The same IP(s) can be used as both listening IP(s) and relay IP(s).
If no relay IP(s) specified, then the turnserver will apply the default
policy: it will decide itself which relay addresses to be used, and it
will always be using the client socket IP address as the relay IP address
of the TURN session (if the requested relay address family is the same
as the family of the client socket).
'';
};
min-port = mkOption {
type = types.int;
default = 49152;
description = ''
Lower bound of UDP relay endpoints
'';
};
max-port = mkOption {
type = types.int;
default = 65535;
description = ''
Upper bound of UDP relay endpoints
'';
};
lt-cred-mech = mkOption {
type = types.bool;
default = false;
description = ''
Use long-term credential mechanism.
'';
};
no-auth = mkOption {
type = types.bool;
default = false;
description = ''
This option is opposite to lt-cred-mech.
(TURN Server with no-auth option allows anonymous access).
If neither option is defined, and no users are defined,
then no-auth is default. If at least one user is defined,
in this file or in command line or in usersdb file, then
lt-cred-mech is default.
'';
};
use-auth-secret = mkOption {
type = types.bool;
default = false;
description = ''
TURN REST API flag.
Flag that sets a special authorization option that is based upon authentication secret.
This feature can be used with the long-term authentication mechanism, only.
This feature purpose is to support "TURN Server REST API", see
"TURN REST API" link in the project's page
https://github.com/coturn/coturn/
This option is used with timestamp:
usercombo -> "timestamp:userid"
turn user -> usercombo
turn password -> base64(hmac(secret key, usercombo))
This allows TURN credentials to be accounted for a specific user id.
If you don't have a suitable id, the timestamp alone can be used.
This option is just turning on secret-based authentication.
The actual value of the secret is defined either by option static-auth-secret,
or can be found in the turn_secret table in the database.
'';
};
static-auth-secret = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
'Static' authentication secret value (a string) for TURN REST API only.
If not set, then the turn server
will try to use the 'dynamic' value in turn_secret table
in user database (if present). The database-stored value can be changed on-the-fly
by a separate program, so this is why that other mode is 'dynamic'.
'';
};
realm = mkOption {
type = types.str;
default = config.networking.hostName;
example = "example.com";
description = ''
The default realm to be used for the users when no explicit
origin/realm relationship was found in the database, or if the TURN
server is not using any database (just the commands-line settings
and the userdb file). Must be used with long-term credentials
mechanism or with TURN REST API.
'';
};
cert = mkOption {
type = types.nullOr types.str;
default = null;
example = "/var/lib/acme/example.com/fullchain.pem";
description = ''
Certificate file in PEM format.
'';
};
pkey = mkOption {
type = types.nullOr types.str;
default = null;
example = "/var/lib/acme/example.com/key.pem";
description = ''
Private key file in PEM format.
'';
};
dh-file = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Use custom DH TLS key, stored in PEM format in the file.
'';
};
secure-stun = mkOption {
type = types.bool;
default = false;
description = ''
Require authentication of the STUN Binding request.
By default, the clients are allowed anonymous access to the STUN Binding functionality.
'';
};
no-cli = mkOption {
type = types.bool;
default = false;
description = ''
Turn OFF the CLI support.
'';
};
cli-ip = mkOption {
type = types.str;
default = "127.0.0.1";
description = ''
Local system IP address to be used for CLI server endpoint.
'';
};
cli-port = mkOption {
type = types.int;
default = 5766;
description = ''
CLI server port.
'';
};
cli-password = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
CLI access password.
For the security reasons, it is recommended to use the encrypted
for of the password (see the -P command in the turnadmin utility).
'';
};
no-udp = mkOption {
type = types.bool;
default = false;
description = "Disable UDP client listener";
};
no-tcp = mkOption {
type = types.bool;
default = false;
description = "Disable TCP client listener";
};
no-tls = mkOption {
type = types.bool;
default = false;
description = "Disable TLS client listener";
};
no-dtls = mkOption {
type = types.bool;
default = false;
description = "Disable DTLS client listener";
};
no-udp-relay = mkOption {
type = types.bool;
default = false;
description = "Disable UDP relay endpoints";
};
no-tcp-relay = mkOption {
type = types.bool;
default = false;
description = "Disable TCP relay endpoints";
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = "Additional configuration options";
};
};
};
config = mkIf cfg.enable {
users.extraUsers = [
{ name = "turnserver";
uid = config.ids.uids.turnserver;
description = "coturn TURN server user";
} ];
users.extraGroups = [
{ name = "turnserver";
gid = config.ids.gids.turnserver;
members = [ "turnserver" ];
} ];
systemd.services.coturn = {
description = "coturn TURN server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
unitConfig = {
Documentation = "man:coturn(1) man:turnadmin(1) man:turnserver(1)";
};
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.coturn}/bin/turnserver -c ${configFile}";
RuntimeDirectory = "turnserver";
User = "turnserver";
Group = "turnserver";
Restart = "on-abort";
};
};
};
}

View File

@ -13,7 +13,7 @@ let
ectl = ''${cfg.package}/bin/ejabberdctl ${if cfg.configFile == null then "" else "--config ${cfg.configFile}"} --ctl-config "${ctlcfg}" --spool "${cfg.spoolDir}" --logs "${cfg.logsDir}"'';
dumps = lib.concatMapStringsSep " " lib.escapeShellArg cfg.loadDumps;
dumps = lib.escapeShellArgs cfg.loadDumps;
in {

View File

@ -16,7 +16,7 @@ with lib;
clientIpRange = mkOption {
type = types.string;
description = "The range from which client IPs are drawn.";
default = "10.124.142.2-11";
default = "10.124.124.2-11";
};
maxClients = mkOption {

View File

@ -0,0 +1,143 @@
{ config, stdenv, pkgs, lib, ... }:
with lib;
{
options = {
services.xl2tpd = {
enable = mkEnableOption "Whether xl2tpd should be run on startup.";
serverIp = mkOption {
type = types.string;
description = "The server-side IP address.";
default = "10.125.125.1";
};
clientIpRange = mkOption {
type = types.string;
description = "The range from which client IPs are drawn.";
default = "10.125.125.2-11";
};
extraXl2tpOptions = mkOption {
type = types.lines;
description = "Adds extra lines to the xl2tpd configuration file.";
default = "";
};
extraPppdOptions = mkOption {
type = types.lines;
description = "Adds extra lines to the pppd options file.";
default = "";
example = ''
ms-dns 8.8.8.8
ms-dns 8.8.4.4
'';
};
};
};
config = mkIf config.services.xl2tpd.enable {
systemd.services.xl2tpd = let
cfg = config.services.xl2tpd;
# Config files from https://help.ubuntu.com/community/L2TPServer
xl2tpd-conf = pkgs.writeText "xl2tpd.conf" ''
[global]
ipsec saref = no
[lns default]
local ip = ${cfg.serverIp}
ip range = ${cfg.clientIpRange}
pppoptfile = ${pppd-options}
length bit = yes
; Extra
${cfg.extraXl2tpOptions}
'';
pppd-options = pkgs.writeText "ppp-options-xl2tpd.conf" ''
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
# require-mppe-128
asyncmap 0
auth
crtscts
idle 1800
mtu 1200
mru 1200
lock
hide-password
local
# debug
name xl2tpd
# proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
# Extra:
${cfg.extraPppdOptions}
'';
xl2tpd-ppp-wrapped = pkgs.stdenv.mkDerivation {
name = "xl2tpd-ppp-wrapped";
phases = [ "installPhase" ];
buildInputs = with pkgs; [ makeWrapper ];
installPhase = ''
mkdir -p $out/bin
makeWrapper ${pkgs.ppp}/sbin/pppd $out/bin/pppd \
--set LD_PRELOAD "${pkgs.libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS "/etc/ppp=/etc/xl2tpd/ppp"
makeWrapper ${pkgs.xl2tpd}/bin/xl2tpd $out/bin/xl2tpd \
--set LD_PRELOAD "${pkgs.libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS "${pkgs.ppp}/sbin/pppd=$out/bin/pppd"
'';
};
in {
description = "xl2tpd server";
requires = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
preStart = ''
mkdir -p -m 700 /etc/xl2tpd
pushd /etc/xl2tpd > /dev/null
mkdir -p -m 700 ppp
[ -f ppp/chap-secrets ] || cat > ppp/chap-secrets << EOF
# Secrets for authentication using CHAP
# client server secret IP addresses
#username xl2tpd password *
EOF
chown root.root ppp/chap-secrets
chmod 600 ppp/chap-secrets
# The documentation says this file should be present but doesn't explain why and things work even if not there:
[ -f l2tp-secrets ] || (echo -n "* * "; ${pkgs.apg}/bin/apg -n 1 -m 32 -x 32 -a 1 -M LCN) > l2tp-secrets
chown root.root l2tp-secrets
chmod 600 l2tp-secrets
popd > /dev/null
mkdir -p /run/xl2tpd
chown root.root /run/xl2tpd
chmod 700 /run/xl2tpd
'';
serviceConfig = {
ExecStart = "${xl2tpd-ppp-wrapped}/bin/xl2tpd -D -c ${xl2tpd-conf} -s /etc/xl2tpd/l2tp-secrets -p /run/xl2tpd/pid -C /run/xl2tpd/control";
KillMode = "process";
Restart = "on-success";
Type = "simple";
PIDFile = "/run/xl2tpd/pid";
};
};
};
}

View File

@ -0,0 +1,262 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.lighttpd.inginious;
inginious = pkgs.inginious;
execName = "inginious-${if cfg.useLTI then "lti" else "webapp"}";
inginiousConfigFile = if cfg.configFile != null then cfg.configFile else pkgs.writeText "inginious.yaml" ''
# Backend; can be:
# - "local" (run containers on the same machine)
# - "remote" (connect to distant docker daemon and auto start agents) (choose this if you use boot2docker)
# - "remote_manual" (connect to distant and manually installed agents)
backend: "${cfg.backendType}"
## TODO (maybe): Add an option for the "remote" backend in this NixOS module.
# List of remote docker daemon to which the backend will try
# to connect (backend: remote only)
#docker_daemons:
# - # Host of the docker daemon *from the webapp*
# remote_host: "some.remote.server"
# # Port of the distant docker daemon *from the webapp*
# remote_docker_port: "2375"
# # A mandatory port used by the backend and the agent that will be automatically started.
# # Needs to be available on the remote host, and to be open in the firewall.
# remote_agent_port: "63456"
# # Does the remote docker requires tls? Defaults to false.
# # Parameter can be set to true or path to the certificates
# #use_tls: false
# # Link to the docker daemon *from the host that runs the docker daemon*. Defaults to:
# #local_location: "unix:///var/run/docker.sock"
# # Path to the cgroups "mount" *from the host that runs the docker daemon*. Defaults to:
# #cgroups_location: "/sys/fs/cgroup"
# # Name that will be used to reference the agent
# #"agent_name": "inginious-agent"
# List of remote agents to which the backend will try
# to connect (backend: remote_manual only)
# Example:
#agents:
# - host: "192.168.59.103"
# port: 5001
agents:
${lib.concatMapStrings (agent:
" - host: \"${agent.host}\"\n" +
" port: ${agent.port}\n"
) cfg.remoteAgents}
# Location of the task directory
tasks_directory: "${cfg.tasksDirectory}"
# Super admins: list of user names that can do everything in the backend
superadmins:
${lib.concatMapStrings (x: " - \"${x}\"\n") cfg.superadmins}
# Aliases for containers
# Only containers listed here can be used by tasks
containers:
${lib.concatStrings (lib.mapAttrsToList (name: fullname:
" ${name}: \"${fullname}\"\n"
) cfg.containers)}
# Use single minified javascript file (production) or multiple files (dev) ?
use_minified_js: true
## TODO (maybe): Add NixOS options for these parameters.
# MongoDB options
#mongo_opt:
# host: localhost
# database: INGInious
# Disable INGInious?
#maintenance: false
#smtp:
# sendername: 'INGInious <no-reply@inginious.org>'
# host: 'smtp.gmail.com'
# port: 587
# username: 'configme@gmail.com'
# password: 'secret'
# starttls: True
## NixOS extra config
${cfg.extraConfig}
'';
in
{
options.services.lighttpd.inginious = {
enable = mkEnableOption "INGInious, an automated code testing and grading system.";
configFile = mkOption {
type = types.nullOr types.path;
default = null;
example = literalExample ''pkgs.writeText "configuration.yaml" "# custom config options ...";'';
description = ''The path to an INGInious configuration file.'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
example = ''
# Load the dummy auth plugin.
plugins:
- plugin_module: inginious.frontend.webapp.plugins.auth.demo_auth
users:
# register the user "test" with the password "someverycomplexpassword"
test: someverycomplexpassword
'';
description = ''Extra option in YaML format, to be appended to the config file.'';
};
tasksDirectory = mkOption {
type = types.path;
default = "${inginious}/lib/python2.7/site-packages/inginious/tasks";
example = "/var/lib/INGInious/tasks";
description = ''
Path to the tasks folder.
Defaults to the provided test tasks folder (readonly).
'';
};
useLTI = mkOption {
type = types.bool;
default = false;
description = ''Whether to start the LTI frontend in place of the webapp.'';
};
superadmins = mkOption {
type = types.uniq (types.listOf types.str);
default = [ "admin" ];
example = [ "john" "pepe" "emilia" ];
description = ''List of user logins allowed to administrate the whole server.'';
};
containers = mkOption {
type = types.attrsOf types.str;
default = {
default = "ingi/inginious-c-default";
};
example = {
default = "ingi/inginious-c-default";
sekexe = "ingi/inginious-c-sekexe";
java = "ingi/inginious-c-java";
oz = "ingi/inginious-c-oz";
pythia1compat = "ingi/inginious-c-pythia1compat";
};
description = ''
An attrset describing the required containers
These containers will be available in INGInious using their short name (key)
and will be automatically downloaded before INGInious starts.
'';
};
hostPattern = mkOption {
type = types.str;
default = "^inginious.";
example = "^inginious.mydomain.xyz$";
description = ''
The domain that serves INGInious.
INGInious uses absolute paths which makes it difficult to relocate in its own subdir.
The default configuration will serve INGInious when the server is accessed with a hostname starting with "inginious.".
If left blank, INGInious will take the precedence over all the other lighttpd sites, which is probably not what you want.
'';
};
backendType = mkOption {
type = types.enum [ "local" "remote_manual" ]; # TODO: support backend "remote"
default = "local";
description = ''
Select how INGINious accesses to grading containers.
The default "local" option ensures that Docker is started and provisioned.
Fore more information, see http://inginious.readthedocs.io/en/latest/install_doc/config_reference.html
Not all backends are supported. Use services.inginious.configFile for full flexibility.
'';
};
remoteAgents = mkOption {
type = types.listOf (types.attrsOf types.str);
default = [];
example = [ { host = "192.0.2.25"; port = "1345"; } ];
description = ''A list of remote agents, used only when services.inginious.backendType is "remote_manual".'';
};
};
config = mkIf cfg.enable (
mkMerge [
# For a local install, we need docker.
(mkIf (cfg.backendType == "local") {
virtualisation.docker = {
enable = true;
# We need docker to listen on port 2375.
extraOptions = "-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock";
storageDriver = mkDefault "overlay";
socketActivation = false;
};
users.extraUsers."lighttpd".extraGroups = [ "docker" ];
# Ensure that docker has pulled the required images.
systemd.services.inginious-prefetch = {
script = let
images = lib.unique (
[ "centos" "ingi/inginious-agent" ]
++ lib.mapAttrsToList (_: image: image) cfg.containers
);
in lib.concatMapStrings (image: ''
${pkgs.docker}/bin/docker pull ${image}
'') images;
serviceConfig.Type = "oneshot";
wants = [ "docker.service" ];
after = [ "docker.service" ];
wantedBy = [ "lighttpd.service" ];
before = [ "lighttpd.service" ];
};
})
# Common
{
# To access inginous tools (like inginious-test-task)
environment.systemPackages = [ inginious ];
services.mongodb.enable = true;
services.lighttpd.enable = true;
services.lighttpd.enableModules = [ "mod_access" "mod_alias" "mod_fastcgi" "mod_redirect" "mod_rewrite" ];
services.lighttpd.extraConfig = ''
$HTTP["host"] =~ "${cfg.hostPattern}" {
fastcgi.server = ( "/${execName}" =>
((
"socket" => "/run/lighttpd/inginious-fastcgi.socket",
"bin-path" => "${inginious}/bin/${execName} --config=${inginiousConfigFile}",
"max-procs" => 1,
"bin-environment" => ( "REAL_SCRIPT_NAME" => "" ),
"check-local" => "disable"
))
)
url.rewrite-once = (
"^/.well-known/.*" => "$0",
"^/static/.*" => "$0",
"^/.*$" => "/${execName}$0",
"^/favicon.ico$" => "/static/common/favicon.ico",
)
alias.url += (
"/static/webapp/" => "${inginious}/lib/python2.7/site-packages/inginious/frontend/webapp/static/",
"/static/common/" => "${inginious}/lib/python2.7/site-packages/inginious/frontend/common/static/"
)
}
'';
systemd.services.lighttpd.preStart = ''
mkdir -p /run/lighttpd
chown lighttpd.lighttpd /run/lighttpd
'';
systemd.services.lighttpd.wants = [ "mongodb.service" "docker.service" ];
systemd.services.lighttpd.after = [ "mongodb.service" "docker.service" ];
}
]);
}

View File

@ -119,6 +119,7 @@ in {
services.telepathy.enable = mkDefault true;
networking.networkmanager.enable = mkDefault true;
services.upower.enable = config.powerManagement.enable;
services.dbus.packages = mkIf config.services.printing.enable [ pkgs.system-config-printer ];
hardware.bluetooth.enable = mkDefault true;
fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell_fonts ];

View File

@ -33,6 +33,14 @@ in
default = false;
description = "Don't install XFCE desktop components (xfdesktop, panel and notification daemon).";
};
extraSessionCommands = mkOption {
default = "";
type = types.lines;
description = ''
Shell commands executed just before XFCE is started.
'';
};
};
};
@ -45,6 +53,8 @@ in
bgSupport = true;
start =
''
${cfg.extraSessionCommands}
# Set GTK_PATH so that GTK+ can find the theme engines.
export GTK_PATH="${config.system.path}/lib/gtk-2.0:${config.system.path}/lib/gtk-3.0"

View File

@ -15,12 +15,21 @@ let
If left at the default value, $HOME/.i3/config will be used.
'';
};
extraSessionCommands = mkOption {
default = "";
type = types.lines;
description = ''
Shell commands executed just before i3 is started.
'';
};
};
i3config = name: pkg: cfg: {
services.xserver.windowManager.session = [{
inherit name;
start = ''
${cfg.extraSessionCommands}
${pkg}/bin/i3 ${optionalString (cfg.configFile != null)
"-c \"${cfg.configFile}\""
} &

View File

@ -669,6 +669,7 @@ in
"systemd/logind.conf".text = ''
[Login]
KillUserProcesses=no
${config.services.logind.extraConfig}
'';

View File

@ -111,15 +111,17 @@ in
fileSystems = mkOption {
default = {};
example = {
"/".device = "/dev/hda1";
"/data" = {
device = "/dev/hda2";
fsType = "ext3";
options = [ "data=journal" ];
};
"/bigdisk".label = "bigdisk";
};
example = literalExample ''
{
"/".device = "/dev/hda1";
"/data" = {
device = "/dev/hda2";
fsType = "ext3";
options = [ "data=journal" ];
};
"/bigdisk".label = "bigdisk";
}
'';
type = types.loaOf types.optionSet;
options = [ fileSystemOpts ];
description = ''

View File

@ -47,7 +47,7 @@ in
# TODO(wkennington): Add lvm2 and thin-provisioning-tools
path = with pkgs; [ acl rsync gnutar xz btrfs-progs ];
serviceConfig.ExecStart = "@${pkgs.lxd}/bin/lxd lxd --syslog --group lxd";
serviceConfig.ExecStart = "@${pkgs.lxd.bin}/bin/lxd lxd --syslog --group lxd";
serviceConfig.Type = "simple";
serviceConfig.KillMode = "process"; # when stopping, leave the containers alone
};

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
license = licenses.gpl2Plus;
maintainers = [ maintainers.rycee ];
platforms = platforms.unix;
description = "command-line utility to get CDDB discid information from a CD-ROM disc";
description = "Command-line utility to get CDDB discid information from a CD-ROM disc";
longDescription = ''
cd-discid is a backend utility to get CDDB discid information

View File

@ -93,13 +93,13 @@ in
stdenv.mkDerivation rec {
name = "cmus-${version}";
version = "2.7.0";
version = "2.7.1";
src = fetchFromGitHub {
owner = "cmus";
repo = "cmus";
rev = "0306cc74c5073a85cf8619c61da5b94a3f863eaa";
sha256 = "18w9mznb843nzkrcqvshfha51mlpdl92zlvb5wfc5dpgrbf37728";
rev = "v${version}";
sha256 = "0xd96py21bl869qlv1353zw7xsgq6v5s8szr0ldr63zj5fgc2ps5";
};
patches = [ ./option-debugging.patch ];

View File

@ -24,7 +24,7 @@ stdenv.mkDerivation {
buildInputs = [ cmake libsndfile flex bison alsaLib libpulseaudio tcltk ];
meta = {
description = "sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms";
description = "Sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms";
homepage = http://www.csounds.com/;
license = stdenv.lib.licenses.gpl2;
maintainers = [stdenv.lib.maintainers.marcweber];

View File

@ -1,11 +1,11 @@
{ fetchurl, stdenv, pkgconfig, libao, readline, json_c, libgcrypt, libav, curl }:
stdenv.mkDerivation rec {
name = "pianobar-2015.11.22";
name = "pianobar-2016.06.02";
src = fetchurl {
url = "http://6xq.net/projects/pianobar/${name}.tar.bz2";
sha256 = "0arjvs31d108l1mn2k2hxbpg3mxs47vqzxm0lzdpfcjvypkckyr3";
sha256 = "0n9544bfsdp04xqcjm4nhfvp357dx0c3gpys0rjkq09nzv8b1vy6";
};
buildInputs = [

View File

@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
homepage = http://www.linuxsampler.org;
description = "graphical frontend to LinuxSampler";
description = "Graphical frontend to LinuxSampler";
license = licenses.gpl2;
maintainers = [ maintainers.goibhniu ];
platforms = platforms.linux;

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
libpng libsamplerate libsndfile zlib ];
meta = with stdenv.lib; {
description = "multi-effects processor emulating a guitar effects pedalboard";
description = "Multi-effects processor emulating a guitar effects pedalboard";
homepage = http://rakarrack.sourceforge.net;
license = licenses.gpl2;
platforms = platforms.linux;

View File

@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
'';
meta = {
description = "modern tracker-based DAW";
description = "Modern tracker-based DAW";
homepage = http://www.renoise.com/;
license = stdenv.lib.licenses.unfree;
};

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkgconfig ];
meta = with stdenv.lib; {
description = "minimal loop based midi sequencer";
description = "Minimal loop based midi sequencer";
homepage = "http://www.filter24.org/seq24";
license = licenses.gpl2;
platforms = platforms.linux;

View File

@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
buildInputs = [ flac ];
meta = {
description = "multi-purpose WAVE data processing and reporting utility";
description = "Multi-purpose WAVE data processing and reporting utility";
homepage = http://www.etree.org/shnutils/shntool/;
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.all;

View File

@ -5,7 +5,7 @@
assert stdenv.system == "x86_64-linux";
let
version = "1.0.28.89.gf959d4ce-37";
version = "1.0.32.94.g8a839395-32";
deps = [
alsaLib
@ -50,7 +50,7 @@ stdenv.mkDerivation {
src =
fetchurl {
url = "http://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb";
sha256 = "06v6fmjn0zi1riqhbmwkrq4m1q1vs95p348i8c12hqvsrp0g2qy5";
sha256 = "1341v1j9xwj8pwmhl3q7znj3c27x1v4l61khczrgxbrfb56kina1";
};
buildInputs = [ dpkg makeWrapper ];

View File

@ -0,0 +1,26 @@
{ stdenv, fetchFromGitHub, alsaLib, faad2, flac, libmad, libvorbis, mpg123 }:
stdenv.mkDerivation {
name = "squeezelite-git-2016-05-27";
src = fetchFromGitHub {
owner = "ralph-irving";
repo = "squeezelite";
rev = "e37ed17fed9e11a7346cbe9f1e1deeccc051f42e";
sha256 = "15ihx2dbp4kr6k6r50g9q5npqad5zyv8nqf5cr37bhg964syvbdm";
};
buildInputs = [ alsaLib faad2 flac libmad libvorbis mpg123 ];
installPhase = ''
mkdir -p $out/bin
cp squeezelite $out/bin
'';
meta = with stdenv.lib; {
description = "Lightweight headless squeezebox client emulator";
homepage = https://github.com/ralph-irving/squeezelite;
license = licenses.gpl3;
platforms = platforms.linux;
};
}

View File

@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
'';
meta = with stdenv.lib; {
description = "classic-analog (VCOs-VCF-VCA) style software synthesizer";
description = "Classic-analog (VCOs-VCF-VCA) style software synthesizer";
longDescription = ''
Xsynth-DSSI is a classic-analog (VCOs-VCF-VCA) style software
synthesizer which operates as a plugin for the DSSI Soft Synth

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
cmakeFlags = [ "-DFLTK_MATH_LIBRARY=${stdenv.glibc.out}/lib/libm.so -DCMAKE_INSTALL_DATAROOTDIR=$out" ];
meta = with stdenv.lib; {
description = "high quality software synthesizer based on ZynAddSubFX";
description = "High quality software synthesizer based on ZynAddSubFX";
longDescription = ''
Yoshimi delivers the same synthesizer capabilities as
ZynAddSubFX along with very good Jack and Alsa midi/audio

View File

@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
'';
meta = {
description = "tiny logging framework for Emacs";
description = "Tiny logging framework for Emacs";
homepage = https://github.com/sigma/logito;
license = stdenv.lib.licenses.gpl2Plus;

View File

@ -28303,12 +28303,12 @@
helm-projectile = callPackage ({ cl-lib ? null, dash, fetchFromGitHub, fetchurl, helm, lib, melpaBuild, projectile }:
melpaBuild {
pname = "helm-projectile";
version = "20160603.611";
version = "20160614.832";
src = fetchFromGitHub {
owner = "bbatsov";
repo = "helm-projectile";
rev = "3db706c9147a54a618bdb6e5de827d931d8ae9a6";
sha256 = "0b9nd668p5lya214hyc0lv9pbmxjfy4ls1yhljr6j71qsfl0mjva";
rev = "f41141a93aa6c03ffb9fdb294b3caa19803b1d72";
sha256 = "0z7vhidjb3fzy28kjg6v73sxd7fgdhxcmqx5qypv3czdjcl5911x";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/4976446a8ae40980d502186615902fc05c15ec7c/recipes/helm-projectile";

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
'';
meta = {
description = "an emacs library to access metaweblog based weblogs";
description = "An emacs library to access metaweblog based weblogs";
homepage = https://github.com/punchagan/metaweblog;
license = stdenv.lib.licenses.gpl3Plus;

View File

@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
*/
description = "small session management for emacs";
description = "Small session management for emacs";
homepage = http://emacs-session.sourceforge.net/;
license = "GPL";
};

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, makeDesktopItem, makeWrapper, patchelf, p7zip
, coreutils, gnugrep, which, git, python, unzip, jdk }:
, coreutils, gnugrep, which, git, python, unzip }:
{ name, product, version, build, src, wmClass, meta } @ attrs:
{ name, product, version, build, src, wmClass, jdk, meta } @ attrs:
with stdenv.lib;

View File

@ -12,7 +12,7 @@ let
buildAndroidStudio = { name, version, build, src, license, description, wmClass }:
let drv = (mkIdeaProduct rec {
inherit name version build src wmClass;
inherit name version build src wmClass jdk;
product = "Studio";
meta = with stdenv.lib; {
homepage = https://developer.android.com/sdk/installing/studio.html;
@ -31,13 +31,14 @@ let
buildInputs = x.buildInputs ++ [ makeWrapper ];
installPhase = x.installPhase + ''
wrapProgram "$out/bin/android-studio" \
--set ANDROID_HOME "${androidsdk}/libexec/android-sdk-linux/"
--set ANDROID_HOME "${androidsdk}/libexec/android-sdk-linux/" \
--set LD_LIBRARY_PATH "${stdenv.cc.cc.lib}/lib" # Gradle installs libnative-platform.so in ~/.gradle, that requires libstdc++.so.6
'';
});
buildClion = { name, version, build, src, license, description, wmClass }:
(mkIdeaProduct rec {
inherit name version build src wmClass;
inherit name version build src wmClass jdk;
product = "CLion";
meta = with stdenv.lib; {
homepage = "https://www.jetbrains.com/clion/";
@ -53,7 +54,7 @@ let
buildIdea = { name, version, build, src, license, description, wmClass }:
(mkIdeaProduct rec {
inherit name version build src wmClass;
inherit name version build src wmClass jdk;
product = "IDEA";
meta = with stdenv.lib; {
homepage = "https://www.jetbrains.com/idea/";
@ -70,7 +71,7 @@ let
buildRubyMine = { name, version, build, src, license, description, wmClass }:
(mkIdeaProduct rec {
inherit name version build src wmClass;
inherit name version build src wmClass jdk;
product = "RubyMine";
meta = with stdenv.lib; {
homepage = "https://www.jetbrains.com/ruby/";
@ -83,7 +84,7 @@ let
buildPhpStorm = { name, version, build, src, license, description, wmClass }:
(mkIdeaProduct {
inherit name version build src wmClass;
inherit name version build src wmClass jdk;
product = "PhpStorm";
meta = with stdenv.lib; {
homepage = "https://www.jetbrains.com/phpstorm/";
@ -100,7 +101,7 @@ let
buildWebStorm = { name, version, build, src, license, description, wmClass }:
(mkIdeaProduct {
inherit name version build src wmClass;
inherit name version build src wmClass jdk;
product = "WebStorm";
meta = with stdenv.lib; {
homepage = "https://www.jetbrains.com/webstorm/";
@ -117,7 +118,7 @@ let
buildPycharm = { name, version, build, src, license, description, wmClass }:
(mkIdeaProduct rec {
inherit name version build src wmClass;
inherit name version build src wmClass jdk;
product = "PyCharm";
meta = with stdenv.lib; {
homepage = "https://www.jetbrains.com/pycharm/";
@ -146,16 +147,16 @@ in
{
android-studio = let buildNumber = "143.2821654"; in buildAndroidStudio rec {
android-studio = let buildNumber = "143.2915827"; in buildAndroidStudio rec {
name = "android-studio-${version}";
version = "2.1.1.0";
version = "2.1.2.0";
build = "AI-${buildNumber}";
description = "Android development environment based on IntelliJ IDEA";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}" +
"/android-studio-ide-${buildNumber}-linux.zip";
sha256 = "1zxxzyhny7j4vzlydrhwz3g8l8zcml84mhkcf5ckx8xr50j3m101";
sha256 = "0q61m8yln77valg7y6lyxlml53z387zh6fyfgc22sm3br5ahbams";
};
wmClass = "jetbrains-studio";
};

View File

@ -56,7 +56,7 @@ stdenv.mkDerivation rec {
'';
meta = with stdenv.lib; {
description = "the next generation code editor";
description = "The next generation code editor";
homepage = http://www.lighttable.com/;
license = licenses.gpl3;
maintainers = [ maintainers.matejc ];

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
'';
meta = {
description = "the nice editor";
description = "The nice editor";
homepage = https://github.com/vigna/ne;
longDescription = ''
ne is a free (GPL'd) text editor based on the POSIX standard that runs (we hope) on almost any

View File

@ -2,12 +2,12 @@
stdenv.mkDerivation rec {
pname = "texmaker";
version = "4.4.1";
version = "4.5";
name = "${pname}-${version}";
src = fetchurl {
url = "http://www.xm1math.net/texmaker/${name}.tar.bz2";
sha256 = "1d5lb4sibdhvzgfr0zi48j92b4acvvvdy2biqi3jzjdnzy9r94w0";
sha256 = "056njk6j8wma23mlp7xa3rgfaxx0q8ynwx8wkmj7iy0b85p9ds9c";
};
buildInputs = [ qt4 poppler_qt4 zlib ];

View File

@ -1,69 +1,158 @@
{stdenv, fetchhg, fetchurl, fetchzip, gtk, glib, pkgconfig, unzip, ncurses, zip}:
{ stdenv, fetchhg, fetchurl, fetchzip, gtk, glib, pkgconfig, unzip, ncurses, zip }:
let
buildInputs = [
gtk glib pkgconfig unzip ncurses zip
];
# Textadept requires a whole bunch of external dependencies.
# The build system expects to be able to download them with wget.
# This expression gets Nix to fetch them instead.
cached_url = url: sha256: fetchurl {
inherit sha256 url;
};
get_url = url: sha256: ''
cp ${(cached_url url sha256)} $(basename ${(cached_url url sha256)} | sed -e 's@^[0-9a-z]\+-@@')
touch $(basename ${(cached_url url sha256)} | sed -e 's@^[0-9a-z]\+-@@')
get_url = url: sha256: let
store_path = cached_url url sha256;
in ''
local_path=$(basename ${store_path} | sed -e 's@^[0-9a-z]\+-@@')
# Copy the file from the Nix store and remove the hash part.
cp ${store_path} $local_path
# Update its access and modified times.
touch $local_path
'';
cached_url_zip = url: sha256: fetchzip {
inherit sha256 url;
};
get_url_zip = url: sha256: let zipdir = (cached_url_zip url sha256); in ''
( d=$PWD; cd $TMPDIR; name=$(basename ${zipdir} .zip | sed -e 's/^[a-z0-9]*-//');
cp -r ${zipdir} $name; chmod u+rwX -R $name; zip -r $d/$name.zip $name )
touch $name
get_url_zip = url: sha256: let
store_path = cached_url_zip url sha256;
in ''
(
build_dir=$PWD
cd $TMPDIR
local_path=$(basename ${store_path} .zip | sed -e 's/^[a-z0-9]*-//')
cp -r ${store_path} $local_path
chmod u+rwX -R $local_path
zip -r $build_dir/$local_path.zip $local_path
touch $local_path
)
'';
# These lists are taken from the Makefile.
scintilla_tgz = "scintilla365.tgz";
scinterm_zip = "scinterm_1.8.zip";
scintillua_zip = "scintillua_3.6.5-1.zip";
lua_tgz = "lua-5.3.2.tar.gz";
lpeg_tgz = "lpeg-1.0.0.tar.gz";
lfs_zip = "v_1_6_3.zip";
luautf8_zip = "0.1.1.zip";
lspawn_zip = "lspawn_1.5.zip";
luajit_tgz = "LuaJIT-2.0.3.tar.gz";
libluajit_tgz = "libluajit_2.0.3.x86_64.tgz";
gtdialog_zip = "gtdialog_1.2.zip";
cdk_tgz = "cdk-5.0-20150928.tgz";
termkey_tgz = "libtermkey-0.17.tar.gz";
bombay_zip = "bombay.zip";
scinterm_url = "http://foicica.com/scinterm/download/" + scinterm_zip;
scintillua_url = "http://foicica.com/scintillua/download/" + scintillua_zip;
gtdialog_url = "http://foicica.com/gtdialog/download/" + gtdialog_zip;
lspawn_url = "http://foicica.com/lspawn/download/" + lspawn_zip;
scintilla_url = "http://prdownloads.sourceforge.net/scintilla/" + scintilla_tgz;
lua_url = "http://www.lua.org/ftp/" + lua_tgz;
lpeg_url = "http://www.inf.puc-rio.br/~roberto/lpeg/" + lpeg_tgz;
lfs_url = "https://github.com/keplerproject/luafilesystem/archive/" + lfs_zip;
luautf8_url = "https://github.com/starwing/luautf8/archive/" + luautf8_zip;
luajit_url = "http://luajit.org/download/" + luajit_tgz;
libluajit_url = "http://foicica.com/textadept/download/" + libluajit_tgz;
cdk_url = "http://invisible-mirror.net/archives/cdk/" + cdk_tgz;
bombay_url = "http://foicica.com/hg/bombay/archive/tip.zip";
termkey_url = "http://www.leonerd.org.uk/code/libtermkey/" + termkey_tgz;
get_scintilla = get_url scintilla_url "1s5zbkn5f3vs8gbnjlkfzw4b137y12m3c89lyc4pmvqvrvxgyalj";
get_scinterm = get_url scinterm_url "02ax6cjpxylfz7iqp1cjmsl323in066a38yklmsyzdl3w7761nxi";
get_scintillua = get_url scintillua_url "0s4q7a9mgvxh0msi18llkczhcgafaiizw9qm1p9w18r2a7wjq9wc";
get_lua = get_url lua_url "13x6knpv5xsli0n2bib7g1nrga2iacy7qfy63i798dm94fxwfh67";
get_lpeg = get_url lpeg_url "13mz18s359wlkwm9d9iqlyyrrwjc6iqfpa99ai0icam2b3khl68h";
get_lfs = get_url_zip lfs_url "1hxcnqj53540ysyw8fzax7f09pl98b8f55s712gsglcdxp2g2pri";
get_luautf8_zip = get_url_zip luautf8_url "1dgmxdk88njpic4d4sn2wzlni4b6sfqcsmh2hrraxivpqf9ps7f7";
get_lspawn = get_url lspawn_url "09c6v9irblay2kv1n7i59pyj9g4xb43c6rfa7ba5m353lymcwwqi";
get_luajit = get_url luajit_url "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm";
get_libluajit = get_url libluajit_url "1nhvcdjpqrhd5qbihdm3bxpw84irfvnw2vmfqnsy253ay3dxzrgy";
get_gtdialog = get_url gtdialog_url "0nvcldyhj8abr8jny9pbyfjwg8qfp9f2h508vjmrvr5c5fqdbbm0";
get_cdk = get_url cdk_url "0j74l874y33i26y5kjg3pf1vswyjif8k93pqhi0iqykpbxfsg382";
get_bombay = get_url_zip bombay_url "05fnh1imxdb4sb076fzqywqszp31whdbkzmpkqxc8q2r1m5vj3hg"
+ "mv tip.zip bombay.zip\n";
get_termkey = get_url termkey_url "12gkrv1ldwk945qbpprnyawh0jz7rmqh18fyndbxiajyxmj97538";
get_deps = get_scintilla
+ get_scinterm
+ get_scintillua
+ get_lua
+ get_lpeg
+ get_lfs
+ get_luautf8_zip
+ get_lspawn
+ get_luajit
+ get_libluajit
+ get_gtdialog
+ get_cdk
+ get_bombay
+ get_termkey;
in
stdenv.mkDerivation rec{
version = "8.2";
scintillua_version = "3.6.0-1";
stdenv.mkDerivation rec {
version = "8.7";
name = "textadept-${version}";
inherit buildInputs;
buildInputs = [
gtk glib pkgconfig unzip ncurses zip
];
src = fetchhg {
url = http://foicica.com/hg/textadept;
rev = "textadept_${version}";
sha256 = "1vb6a15fyk7ixcv5fy0g400lxbj6dp5ndbmyx53d28idbdkz9ap1";
sha256 = "1gi73wk11w3rbkxqqdp8z9g83qiyhx6gxry221vxjxpqsl9pvhlf";
};
preConfigure = ''
cd src
# Make a dummy wget.
mkdir wget
echo '#! ${stdenv.shell}' > wget/wget
chmod a+x wget/wget
export PATH="$PATH:$PWD/wget"
${get_url http://prdownloads.sourceforge.net/scintilla/scintilla360.tgz "07ib4w3n9kqfaia2yngj2q7ab5r55zn0hccfzph6vas9hl8vk9zf"}
${get_url http://foicica.com/scinterm/download/scinterm_1.6.zip "0ixwj9il6ri1xl4nvb6f108z4qhrahysza6frbbaqmbdz21hnmcl"}
${get_url http://foicica.com/scintillua/download/scintillua_3.6.0-1.zip "0zk1ciyyi0d3dz4dzzq5fa74505pvqf0w5yszl7l29c1l4hkk561"}
${get_url http://www.lua.org/ftp/lua-5.3.1.tar.gz "05xczy5ws6d7ic3f9h9djwg983bpa4pmds3698264bncssm6f9q7"}
${get_url http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-0.12.2.tar.gz "01002avq90yc8rgxa5z9a1768jm054iid3pnfpywdcfij45jgbba"}
${get_url_zip http://github.com/keplerproject/luafilesystem/archive/v_1_6_3.zip "1hxcnqj53540ysyw8fzax7f09pl98b8f55s712gsglcdxp2g2pri"}
${get_url http://foicica.com/lspawn/download/lspawn_1.2.zip "1fhfi274bxlsdvva5q5j0wv8hx68cmf3vnv9spllzad4jdvz82xv"}
${get_url http://luajit.org/download/LuaJIT-2.0.3.tar.gz "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm"}
${get_url http://foicica.com/gtdialog/download/gtdialog_1.2.zip "0nvcldyhj8abr8jny9pbyfjwg8qfp9f2h508vjmrvr5c5fqdbbm0"}
${get_url ftp://invisible-island.net/cdk/cdk-5.0-20150928.tgz "028da75d5f777a1c4184f88e34918bd273bd83bbe3c959bc11710c4f0ea2e448"}
mv cdk-*.tgz cdk.tar.gz
${get_url_zip http://foicica.com/hg/bombay/archive/d704272c3629.zip "19dg3ky87rfy0a3319vmv18hgn9spplpznvlqnk3djh239ddpplw"}
mv d704*.zip bombay.zip
${get_url http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.17.tar.gz "12gkrv1ldwk945qbpprnyawh0jz7rmqh18fyndbxiajyxmj97538"}
${get_deps}
# Let the build system do whatever setup it needs to do with these files.
make deps
'';
postBuild = ''
make curses
'';
postInstall = ''
make curses install PREFIX=$out MAKECMDGOALS=curses
'';
makeFlags = ["PREFIX=$(out)"];
meta = {
inherit version;
makeFlags = [
"PREFIX=$(out)"
];
meta = with stdenv.lib; {
description = "An extensible text editor based on Scintilla with Lua scripting";
license = stdenv.lib.licenses.mit ;
maintainers = [stdenv.lib.maintainers.raskin];
platforms = stdenv.lib.platforms.linux;
homepage = "http://foicica.com/textadept";
homepage = http://foicica.com/textadept;
license = licenses.mit;
maintainers = with maintainers; [ raskin mirrexagon ];
platforms = platforms.linux;
};
}

View File

@ -174,7 +174,7 @@ rec {
installPhase = "installPlugins gmic_gimp";
meta = {
description = "script language for image processing which comes with its open-source interpreter";
description = "Script language for image processing which comes with its open-source interpreter";
homepage = http://gmic.eu/gimp.shtml;
license = stdenv.lib.licenses.cecill20;
/*

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec {
name = "viewnior-${version}";
version = "1.5";
version = "1.6";
src = fetchFromGitHub {
owner = "xsisqox";
repo = "Viewnior";
rev = name;
sha256 = "0y352hkkwmzb13a87vqgj1dpdn81qk94acby1a93xkqr1qs626lw";
sha256 = "06ppv3r85l3id4ij6h4y5fgm3nib2587fdrdv9fccyi75zk7fs0p";
};
nativeBuildInputs = [ autoreconfHook ];

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
meta = {
homepage = http://xournal.sourceforge.net/;
description = "note-taking application (supposes stylus)";
description = "Note-taking application (supposes stylus)";
maintainers = [ stdenv.lib.maintainers.guibert ];
license = stdenv.lib.licenses.gpl2;
};

View File

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
];
meta = {
description = "a generic, highly customizable, and efficient menu for the X Window System";
description = "A generic, highly customizable, and efficient menu for the X Window System";
homepage = http://tools.suckless.org/dmenu;
license = stdenv.lib.licenses.mit;
maintainers = with stdenv.lib.maintainers; [ ];

View File

@ -17,7 +17,7 @@ stdenv.mkDerivation {
meta = {
homepage = "http://www.fetchmail.info/";
description = "a full-featured remote-mail retrieval and forwarding utility";
description = "A full-featured remote-mail retrieval and forwarding utility";
longDescription = ''
A full-featured, robust, well-documented remote-mail retrieval and
forwarding utility intended to be used over on-demand TCP/IP links

View File

@ -0,0 +1,56 @@
{ stdenv, fetchzip, makeDesktopItem, makeWrapper
, jre }:
stdenv.mkDerivation rec {
name = "ganttproject-bin-${version}";
version = "2.7.2";
src = let build = "r1954"; in fetchzip {
sha256 = "0l655w6n88j7klz56af8xkpiv1pwlkfl5x1d33sqv9dnyisyw2hc";
url = "https://dl.ganttproject.biz/ganttproject-${version}/"
+ "ganttproject-${version}-${build}.zip";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ jre ];
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
installPhase = let
desktopItem = makeDesktopItem {
name = "ganttproject";
exec = "ganttproject";
icon = "ganttproject";
desktopName = "GanttProject";
genericName = "Shedule and manage projects";
comment = meta.description;
categories = "Office;Application;";
};
in ''
mkdir -pv "$out/share/ganttproject"
cp -rv * "$out/share/ganttproject"
mkdir -pv "$out/bin"
wrapProgram "$out/share/ganttproject/ganttproject" \
--set JAVA_HOME "${jre}"
mv -v "$out/share/ganttproject/ganttproject" "$out/bin"
install -v -Dm644 \
plugins/net.sourceforge.ganttproject/data/resources/icons/ganttproject.png \
"$out/share/pixmaps/ganttproject.png"
cp -rv "${desktopItem}/share/applications" "$out/share"
'';
meta = with stdenv.lib; {
description = "Project scheduling and management";
homepage = https://www.ganttproject.biz/;
downloadPage = https://www.ganttproject.biz/download;
# GanttProject itself is GPL3+. All bundled libraries are declared
# GPL3-compatible. See ${downloadPage} for detailed information.
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ nckx ];
};
}

View File

@ -1,24 +1,23 @@
{ stdenv, fetchFromGitHub, pkgconfig, qt4, qmake4Hook, libXtst, libvorbis, hunspell
, libao, ffmpeg, libeb, lzo, xz, libtiff }:
{ stdenv, fetchurl, pkgconfig, libXtst, libvorbis, hunspell
, libao, ffmpeg, libeb, lzo, xz, libtiff
, qtbase, qtsvg, qtwebkit, qtx11extras, qttools, qmakeHook }:
stdenv.mkDerivation rec {
name = "goldendict-1.5.0.ec86515";
src = fetchFromGitHub {
owner = "goldendict";
repo = "goldendict";
rev = "ec865158f5b7116f629e4d451a39ee59093eefa5";
sha256 = "070majwxbn15cy7sbgz7ljl8rkn7vcgkm10884v97csln7bfzwhr";
name = "goldendict-1.5.0.rc2";
src = fetchurl {
url = "https://github.com/goldendict/goldendict/archive/1.5.0-RC2.tar.gz";
sha256 = "1pizz39l61rbps0wby75fkvzyrah805257j33siqybwhsfiy1kmw";
};
buildInputs = [
pkgconfig qt4 libXtst libvorbis hunspell libao ffmpeg libeb
lzo xz libtiff qmake4Hook
pkgconfig qtbase qtsvg qtwebkit qtx11extras qttools libXtst libvorbis hunspell libao ffmpeg libeb
lzo xz libtiff qmakeHook
];
qmakeFlags = [ "CONFIG+=zim_support" ];
meta = {
homepage = http://goldendict.org/;
description = "a feature-rich dictionary lookup program";
description = "A feature-rich dictionary lookup program";
platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.astsmtl ];

View File

@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
buildInputs = [ libgphoto2 libexif popt libjpeg readline libtool ];
meta = {
description = "a ready to use set of digital camera software applications";
description = "A ready to use set of digital camera software applications";
longDescription = ''
A set of command line utilities for manipulating over 1400 different

View File

@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
buildInputs = [ intltool gnome3.gtk pkgconfig texinfo ];
meta = {
description = "a GTK enabled dropin replacement for xmessage";
description = "A GTK enabled dropin replacement for xmessage";
homepage = "http://homepages.ihug.co.nz/~trmusson/programs.html#gxmessage";
license = stdenv.lib.licenses.gpl3;
maintainers = with stdenv.lib.maintainers; [jfb];

View File

@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
meta = {
homepage = "http://www.jbidwatcher.com/";
description = "monitor and snipe Ebay auctions";
description = "Monitor and snipe Ebay auctions";
license = "LGPL";
longDescription = ''

View File

@ -17,7 +17,7 @@ stdenv.mkDerivation {
preConfigure = "./autogen.sh"; # install.sh is not contained in the tar
meta = {
description = "modular program to synchronize calendars, addressbooks and other PIM data between pcs, mobile devices etc";
description = "Modular program to synchronize calendars, addressbooks and other PIM data between pcs, mobile devices etc";
};
}

View File

@ -0,0 +1,78 @@
{ stdenv, fetchurl, pkgconfig, libpng, openssl, curl, gtk2, check
, libxml2, libidn, perl, nettools, perlPackages
, libXcursor, libXrandr, makeWrapper
, buildsystem
, nsgenbind
, libnsfb
, libwapcaplet
, libparserutils
, libcss
, libhubbub
, libdom
, libnsbmp
, libnsgif
, libnsutils
, libutf8proc
}:
stdenv.mkDerivation rec {
name = "netsurf-${version}";
version = "3.5";
# UIS incldue Framebuffer, and gtk, but
# Framebuffer is buggy. To enable, make sure
# to also build netsurf-libnsfb with ui=framebuffer
# and switch the ui here to framebuffer
ui = "gtk";
src = fetchurl {
url = "http://download.netsurf-browser.org/netsurf/releases/source/netsurf-${version}-src.tar.gz";
sha256 = "1k0x8mzgavfy7q9kywl6kzsc084g1xlymcnsxi5v6jp279nsdwwq";
};
buildInputs = [ pkgconfig libpng openssl curl gtk2 check libxml2 libidn perl
nettools perlPackages.HTMLParser libXcursor libXrandr makeWrapper
buildsystem
nsgenbind
libnsfb
libwapcaplet
libparserutils
libcss
libhubbub
libdom
libnsbmp
libnsgif
libnsutils
libutf8proc
];
preConfigure = ''
cat <<EOF > Makefile.conf
override NETSURF_GTK_RESOURCES := $out/share/Netsurf/${ui}/res
override NETSURF_USE_GRESOURCE := YES
EOF
'';
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
"TARGET=${ui}"
];
installPhase = ''
mkdir -p $out/bin $out/share/Netsurf/${ui}
cmd=$(case "${ui}" in framebuffer) echo nsfb;; gtk) echo nsgtk;; esac)
cp $cmd $out/bin/netsurf
wrapProgram $out/bin/netsurf --set NETSURFRES $out/share/Netsurf/${ui}/res
tar -hcf - ${ui}/res | (cd $out/share/Netsurf/ && tar -xvpf -)
'';
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "Free opensource web browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,24 @@
{ stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "netsurf-buildsystem-${version}";
version = "1.5";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/buildsystem-${version}.tar.gz";
sha256 = "0wdgvasrjik1dgvvpqbppbpyfzkqd1v45x3g9rq7p67n773azinv";
};
makeFlags = [
"PREFIX=$(out)"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "Build system for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,36 @@
{ stdenv, fetchurl, pkgconfig, perl
, buildsystem
, libwapcaplet
, libparserutils
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libcss";
version = "0.6.0";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "0qp4p1q1dwgdra4pkrzd081zjzisxkgwx650ijx323j8bj725daf";
};
buildInputs = [ pkgconfig perl
buildsystem
libwapcaplet
libparserutils
];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "Cascading Style Sheets library for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,38 @@
{ stdenv, fetchurl, pkgconfig, expat
, buildsystem
, libparserutils
, libwapcaplet
, libhubbub
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libdom";
version = "0.3.0";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "1kk6qbqagx5ypiy9kf0059iqdzyz8fqaw336vzhb5gnrzjw3wv4a";
};
buildInputs = [ pkgconfig expat
buildsystem
libparserutils
libwapcaplet
libhubbub
];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "Document Object Model library for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,34 @@
{ stdenv, fetchurl, pkgconfig, perl
, buildsystem
, libparserutils
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libhubbub";
version = "0.3.3";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "101781iw32p47386fxqr01nrkywi12w17ajh02k2vlga4z8zyv86";
};
buildInputs = [ pkgconfig perl
buildsystem
libparserutils
];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "HTML5 parser library for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,32 @@
{ stdenv, fetchurl, pkgconfig
, buildsystem
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libnsbmp";
version = "0.1.3";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "0gmvzw1whh7553d6s98vr4ri2whjwrgggcq1z5b160gwjw20mzyy";
};
buildInputs = [ pkgconfig
buildsystem
];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "BMP Decoder for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,31 @@
{ stdenv, fetchurl, pkgconfig, ui? "gtk"
, buildsystem
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libnsfb";
version = "0.1.4";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "176f8why9gzbaca9nnxjqasl02qzc6g507z5w3dzkcjifnkz4mzl";
};
buildInputs = [ pkgconfig buildsystem ];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
"TARGET=${ui}"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "CSS parser and selection library for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl, pkgconfig
, buildsystem
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libnsgif";
version = "0.1.3";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "1a4z45gh0fw4iybf34fig725av25h31ffk0azi0snzh4130cklnk";
};
buildInputs = [ buildsystem pkgconfig];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "GIF Decoder for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl, pkgconfig
, buildsystem
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libnsutils";
version = "0.0.2";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "03p4xmd08yhj70nyj7acjccmmshs59lv4n4zsqpsn5lgkwa23lzy";
};
buildInputs = [ buildsystem pkgconfig];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "Generalised utility library for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl, perl
, buildsystem
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libparserutils";
version = "0.2.3";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "01gzlsabgl6x0icd8758d9jqs8rrf9574bdkjainn04w3fs3znf5";
};
buildInputs = [ buildsystem perl ];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "Parser building library for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl, pkgconfig
, buildsystem
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libutf8proc";
version = "1.3.1";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "0xf659y3c6ikjnip47r30wv796a34d71p6qhc4xjs64iqszm1sbq";
};
buildInputs = [ buildsystem pkgconfig];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "UTF8 Processing library for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl
, buildsystem
}:
stdenv.mkDerivation rec {
name = "netsurf-${libname}-${version}";
libname = "libwapcaplet";
version = "0.3.0";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
sha256 = "0cs1dd2afjgc3wf5gqg434hv6jdabrp9qvlpl4dp53nhkyfywna3";
};
buildInputs = [ buildsystem ];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "String internment library for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl
, flex, bison
, buildsystem
}:
stdenv.mkDerivation rec {
name = "netsurf-nsgenbind-${version}";
version = "0.3";
src = fetchurl {
url = "http://download.netsurf-browser.org/libs/releases/nsgenbind-${version}-src.tar.gz";
sha256 = "16xsazly7gxwywmlkf2xix9b924sj3skhgdak7218l0nc62a08gg";
};
buildInputs = [ buildsystem flex bison ];
makeFlags = [
"PREFIX=$(out)"
"NSSHARED=${buildsystem}/share/netsurf-buildsystem"
];
meta = with stdenv.lib; {
homepage = "http://www.netsurf-browser.org/";
description = "Generator for JavaScript bindings for netsurf browser";
license = licenses.gpl2;
maintainers = [ maintainers.vrthra ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,37 @@
{ stdenv, fetchgit, electron } :
stdenv.mkDerivation rec {
name = "nix-tour";
buildInputs = [ electron ];
version = "v0.0.1";
src = fetchgit {
url = "https://github.com/nixcloud/tour_of_nix";
rev = "refs/tags/${version}";
sha256 = "09b1vxli4zv1nhqnj6c0vrrl51gaira94i8l7ww96fixqxjgdwvb";
};
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
mkdir -p $out/bin
mkdir -p $out/share
cp -R * $out/share
chmod 0755 $out/share/ -R
echo "#!${stdenv.shell}" > $out/bin/nix-tour
echo "cd $out/share/" >> $out/bin/nix-tour
echo "${electron}/bin/electron $out/share/electron-main.js" >> $out/bin/nix-tour
chmod 0755 $out/bin/nix-tour
'';
meta = with stdenv.lib; {
description = "'the tour of nix' from nixcloud.io/tour as offline version";
homepage = "https://nixcloud.io/tour";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = with maintainers; [ qknight ];
};
}

View File

@ -30,7 +30,7 @@ stdenv.mkDerivation {
buildInputs = [unzip];
meta = {
description = "open source Geographic Information System (GIS) written in the Java programming language";
description = "Open source Geographic Information System (GIS) written in the Java programming language";
homepage = http://www.openjump.org/index.html;
license = stdenv.lib.licenses.gpl2;
maintainers = [stdenv.lib.maintainers.marcweber];

View File

@ -1,15 +1,15 @@
{ stdenv, fetchurl, autoreconfHook, pkgconfig, libX11, libxkbcommon, pango
, cairo, glib, libxcb, xcbutil, xcbutilwm, which, git, libstartup_notification
, cairo, glib, libxcb, xcbutil, xcbutilwm, libstartup_notification
, i3Support ? false, i3
}:
stdenv.mkDerivation rec {
version = "1.0.1";
version = "1.1.0";
name = "rofi-${version}";
src = fetchurl {
url = "https://github.com/DaveDavenport/rofi/releases/download/${version}/${name}.tar.xz";
sha256 = "01jxml9vk4cw7pngpan7dipmb98s6ibh6f0023lw3hbgxy650637";
sha256 = "1l8vl0mh7i0b1ycifqpg6392f5i4qxlv003m126skfk6fnlfq8hn";
};
preConfigure = ''
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
'';
buildInputs = [ autoreconfHook pkgconfig libX11 libxkbcommon pango
cairo libstartup_notification libxcb xcbutil xcbutilwm which git
cairo libstartup_notification libxcb xcbutil xcbutilwm
] ++ stdenv.lib.optional i3Support i3;
meta = with stdenv.lib; {

View File

@ -0,0 +1,25 @@
{ stdenv, fetchurl, undmg }:
stdenv.mkDerivation rec {
name = "sequel-pro-${version}";
version = "1.1.2";
src = fetchurl {
url = "https://github.com/sequelpro/sequelpro/releases/download/release-1.1.2/sequel-pro-1.1.2.dmg";
sha256 = "1il7yc3f0yzxkra27bslnmka5ycxzx0q4m3xz2j9r7iyq5izsd3v";
};
buildInputs = [ undmg ];
installPhase = ''
mkdir -p "$out/Applications/Sequel Pro.app"
cp -R . "$out/Applications/Sequel Pro.app"
chmod +x "$out/Applications/Sequel Pro.app/Contents/MacOS/Sequel Pro"
'';
meta = {
description = "MySQL database management for Mac OS X";
homepage = http://www.sequelpro.com/;
license = stdenv.lib.licenses.mit;
platforms = stdenv.lib.platforms.darwin;
};
}

View File

@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
meta = {
homepage = "https://github.com/mjheagle8/tasknc";
description = "a ncurses wrapper around taskwarrior";
description = "A ncurses wrapper around taskwarrior";
maintainers = [ stdenv.lib.maintainers.matthiasbeyer ];
platforms = stdenv.lib.platforms.linux; # Cannot test others
};

View File

@ -35,7 +35,7 @@ stdenv.mkDerivation {
meta = {
homepage = "http://www.foolabs.com/xpdf/";
description = "viewer for Portable Document Format (PDF) files";
description = "Viewer for Portable Document Format (PDF) files";
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.peti ];

View File

@ -57,7 +57,7 @@ let
use_system_libevent = true;
use_system_libexpat = true;
# XXX: System libjpeg fails to link for version 52.0.2743.10
use_system_libjpeg = upstream-info.version != "52.0.2743.10";
use_system_libjpeg = versionOlder upstream-info.version "52.0.2743.10";
use_system_libpng = false;
use_system_libwebp = true;
use_system_libxml = true;

View File

@ -1,18 +1,18 @@
# This file is autogenerated from update.sh in the same directory.
{
beta = {
sha256 = "1sgfwh2b0aw6l5v4ggk7frcy306x3ygxk81p3h6zdy5s1rpf8hxj";
sha256bin64 = "14qj8l5dapha87ndyzcs3spaxp3s9sapcjcplkisbivis09a29cb";
version = "51.0.2704.63";
sha256 = "00dll63b3z1ijj60m0h8y2ydmkf91hyr6h98rqp21w11c2xbwzis";
sha256bin64 = "1cdfvi5af18mlhn2ax3shsdm4p4jkhs29v3d2gmkyldfvvixh3zc";
version = "52.0.2743.41";
};
dev = {
sha256 = "1bbwbn0svgr2pfkza8pdq61bjzlj50axdm5bqqxi51hab51fc9ww";
sha256bin64 = "1s02q72b84g9p5i7y1hh1c67qjb92934dqqwd7w6j0jz8ix71nzc";
version = "52.0.2743.10";
sha256 = "1pzcabdk7d9p4sc8wdpwvji9xvblsihpimnjh6n2jz5al9sm1q8j";
sha256bin64 = "0k84hy4sj03h5bjciigagr83qf7yss22vj21fivgkvgasdmd12m8";
version = "53.0.2767.4";
};
stable = {
sha256 = "1sgfwh2b0aw6l5v4ggk7frcy306x3ygxk81p3h6zdy5s1rpf8hxj";
sha256bin64 = "1kjnxxf2ak8v1akzxz46r7a7r6bhxjb2y9fhr1fqvks3m4jc5zqw";
version = "51.0.2704.63";
sha256 = "0aypf5lhi2l7cn41xhq2ck6bjblapwv26nygvg2883hhqinmnwvn";
sha256bin64 = "1c1796sd82l480xjdw7w46867w2phw3ng2dvdb6njsvpg299chi8";
version = "51.0.2704.103";
};
}

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pkgname = "conkeror";
version = "1.0pre-20160130";
version = "1.0.3";
name = "${pkgname}-${version}";
src = fetchgit {
url = git://repo.or.cz/conkeror.git;
rev = "3e4732cd0d15aa70121fe0a0403103b777c964bf";
sha256 = "1299b1kdfd2vip3w02jzvj2i8scjpsvpx19d2c8ms2pizz7xxmp4";
rev = "refs/tags/${version}";
sha256 = "06fhfk8km3gd1lc19543zn0c71zfbn8wsalinvm1dbgi724f52pd";
};
buildInputs = [ unzip makeWrapper ];

View File

@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
platforms = platforms.linux;
maintainers = [ maintainers.phreedom ];
description = "a WebKit KPart for Konqueror, Akregator and other KDE applications";
description = "A WebKit KPart for Konqueror, Akregator and other KDE applications";
homepage = https://projects.kde.org/projects/extragear/base/kwebkitpart;
};
}

View File

@ -48,8 +48,8 @@ stdenv.mkDerivation {
--prefix GIO_EXTRA_MODULES : "${glib_networking.out}/lib/gio/modules" \
--prefix XDG_DATA_DIRS : "${gsettings_desktop_schemas}/share:$out/usr/share/:$out/share/:$GSETTINGS_SCHEMAS_PATH" \
--prefix XDG_CONFIG_DIRS : "$out/etc/xdg" \
--set LUA_PATH '"${luaKitPath};${luaPath};"' \
--set LUA_CPATH '"${luaCPath};"'
--set LUA_PATH '${luaKitPath};${luaPath};' \
--set LUA_CPATH '${luaCPath};'
'';
}

View File

@ -1,8 +1,8 @@
{ stdenv, fetchurl, python, buildPythonApplication, qtmultimedia, pyqt5
, jinja2, pygments, pyyaml, pypeg2, gst-plugins-base, gst-plugins-good
, gst-plugins-bad, gst-libav, wrapGAppsHook, glib_networking }:
, gst-plugins-bad, gst-libav, wrapGAppsHook, glib_networking, makeQtWrapper }:
let version = "0.6.2"; in
let version = "0.7.0"; in
buildPythonApplication rec {
name = "qutebrowser-${version}";
@ -10,13 +10,14 @@ buildPythonApplication rec {
src = fetchurl {
url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz";
sha256 = "16g7vlpvzkj94xk6fzl0jav2izfpvqn3zx9gydsk064cdxb02hrs";
sha256 = "17xvv4h86frcn7zmi0y9gjsz2cazlb59v3dqi9mdc11w00b1cqbn";
};
# Needs tox
doCheck = false;
buildInputs = [ wrapGAppsHook
buildInputs = [ wrapGAppsHook makeQtWrapper
qtmultimedia
gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav
glib_networking ];
@ -24,8 +25,9 @@ buildPythonApplication rec {
python pyyaml pyqt5 jinja2 pygments pypeg2
];
makeWrapperArgs = ''
--prefix QT_PLUGIN_PATH : "${qtmultimedia}/lib/qt5/plugins"
postInstall = ''
mv $out/bin/qutebrowser $out/bin/.qutebrowser-noqtpath
makeQtWrapper $out/bin/.qutebrowser-noqtpath $out/bin/qutebrowser
'';
meta = {

View File

@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
meta = {
homepage = "http://hadoop.apache.org/";
description = "framework for distributed processing of large data sets across clusters of computers";
description = "Framework for distributed processing of large data sets across clusters of computers";
license = stdenv.lib.licenses.asl20;
longDescription = ''

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
let version = "3.17.0.1"; in
let version = "3.18.0"; in
stdenv.mkDerivation {
name = "filezilla-${version}";
src = fetchurl {
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
sha256 = "0ai3a0nys3yjmlvlv57nli77x6x0a2r409b4f5w4kr9mi6f4z4a7";
sha256 = "1qnpbx2684r529ldih6fi5anjlcgqn2xfcls0q38iadrk1qnqr1p";
};
configureFlags = [

View File

@ -24,7 +24,7 @@ stdenv.mkDerivation {
meta = with stdenv.lib; {
homepage = "http://gale.org/";
description = "chat/messaging system (server and client)";
description = "Chat/messaging system (server and client)";
platforms = platforms.all;
license = licenses.gpl2Plus;
};

View File

@ -51,7 +51,7 @@ in mkTkabber (main // {
for prog in $out/bin/*; do
wrapProgram "$prog" \
--prefix PATH : "${tk}/bin" \
--set TCLLIBPATH '"${tclLibPaths}"' \
--set TCLLIBPATH '${tclLibPaths}' \
${optionalString withSitePlugins ''
--set TKABBER_SITE_PLUGINS '${mkTkabber plugins}/share/tkabber-plugins'
''}

View File

@ -29,7 +29,7 @@ puts(<<"EOH")
# This file is generated from generate_sources.rb. DO NOT EDIT.
# Execute the following command to update the file.
#
# ruby generate_sources.rb 45.1.0 > sources.nix
# ruby generate_sources.rb 45.1.1 > sources.nix
{
version = "#{version}";

View File

@ -1,7 +1,7 @@
# This file is generated from generate_sources.rb. DO NOT EDIT.
# Execute the following command to update the file.
#
# ruby generate_sources.rb 45.1.0 > sources.nix
# ruby generate_sources.rb 45.1.1 > sources.nix
{
version = "45.1.1";

View File

@ -13,7 +13,7 @@
enableOfficialBranding ? false
}:
let version = "45.1.0"; in
let version = "45.1.1"; in
let verName = "${version}"; in
stdenv.mkDerivation rec {
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "mirror://mozilla/thunderbird/releases/${verName}/source/thunderbird-${verName}.source.tar.xz";
sha256 = "0293cwnqj4ys629ra87577c7snv4p8x2nbs1kzcnjpc96vjypsca";
sha256 = "13kiida7smgl3bz1hx88hdvi2mj4z5b726gcw7nndxml60y10z8h";
};
buildInputs = # from firefox30Pkgs.xulrunner, without gstreamer and libvpx

View File

@ -0,0 +1,41 @@
{ stdenv
, lib
, fetchgit
, cmake
, qtbase
, qtwebkit
, makeQtWrapper
}:
stdenv.mkDerivation rec {
name = "trojita-${version}";
version = "0.7";
src = fetchgit {
url = "https://anongit.kde.org/trojita.git";
rev = "065d527c63e8e4a3ca0df73994f848b52e14ed58";
sha256 = "1zlwhir33hha2p3l08wnb4njnfdg69j88ycf1fa4q3x86qm3r7hw";
};
buildInputs = [
cmake
qtbase
qtwebkit
];
nativeBuildInputs = [
makeQtWrapper
];
postInstall = ''
wrapQtProgram "$out/bin/trojita"
'';
meta = {
description = "A Qt IMAP e-mail client";
homepage = http://trojita.flaska.net/;
license = with lib.licenses; [ gpl2 gpl3 ];
};
}

View File

@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
};
meta = {
description = "benchmark to measure the performance of many different types of networking";
description = "Benchmark to measure the performance of many different types of networking";
homepage = "http://www.netperf.org/netperf/";
license = "Hewlett-Packard BSD-like license";

View File

@ -32,7 +32,7 @@ pythonPackages.buildPythonApplication rec {
meta = {
homepage = http://furius.ca/beancount/;
description = "double-entry bookkeeping computer language";
description = "Double-entry bookkeeping computer language";
longDescription = ''
A double-entry bookkeeping computer language that lets you define
financial transaction records in a text file, read them in memory,

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, makeWrapper, makeDesktopItem, ant, jdk, jre }:
stdenv.mkDerivation rec {
version = "3.3";
version = "3.4";
name = "jabref-${version}";
src = fetchurl {
url = "https://github.com/JabRef/jabref/releases/download/v${version}/JabRef-${version}.jar";
sha256 = "19ms68d74xg8jg9n52gh2j7a89dl5pnib3vjsnih1j45hlmfg0ac";
sha256 = "1pimjx1452z159hvi199n52j5vkdj5c59mns9mi5mqvwhgm9dghd";
};
desktopItem = makeDesktopItem {

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