Merge branch 'master' into staging.

Conflicts:
      pkgs/development/libraries/gtk+/2.x.nix
      pkgs/tools/security/gnupg/21.nix
      pkgs/top-level/all-packages.nix
This commit is contained in:
Peter Simons 2015-03-10 12:09:43 +01:00
commit 6694ef42a9
155 changed files with 4594 additions and 4186 deletions

View File

@ -131,6 +131,7 @@
notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>"; notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>";
np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>"; np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>";
nslqqq = "Nikita Mikhailov <nslqqq@gmail.com>"; nslqqq = "Nikita Mikhailov <nslqqq@gmail.com>";
obadz = "obadz <dav-nixos@odav.org>";
ocharles = "Oliver Charles <ollie@ocharles.org.uk>"; ocharles = "Oliver Charles <ollie@ocharles.org.uk>";
offline = "Jaka Hudoklin <jakahudoklin@gmail.com>"; offline = "Jaka Hudoklin <jakahudoklin@gmail.com>";
olcai = "Erik Timan <dev@timan.info>"; olcai = "Erik Timan <dev@timan.info>";
@ -138,6 +139,7 @@
page = "Carles Pagès <page@cubata.homelinux.net>"; page = "Carles Pagès <page@cubata.homelinux.net>";
paholg = "Paho Lurie-Gregg <paho@paholg.com>"; paholg = "Paho Lurie-Gregg <paho@paholg.com>";
pashev = "Igor Pashev <pashev.igor@gmail.com>"; pashev = "Igor Pashev <pashev.igor@gmail.com>";
phausmann = "Philipp Hausmann <nix@314.ch>";
phreedom = "Evgeny Egorochkin <phreedom@yandex.ru>"; phreedom = "Evgeny Egorochkin <phreedom@yandex.ru>";
pierron = "Nicolas B. Pierron <nixos@nbp.name>"; pierron = "Nicolas B. Pierron <nixos@nbp.name>";
piotr = "Piotr Pietraszkiewicz <ppietrasa@gmail.com>"; piotr = "Piotr Pietraszkiewicz <ppietrasa@gmail.com>";
@ -170,6 +172,7 @@
shell = "Shell Turner <cam.turn@gmail.com>"; shell = "Shell Turner <cam.turn@gmail.com>";
shlevy = "Shea Levy <shea@shealevy.com>"; shlevy = "Shea Levy <shea@shealevy.com>";
simons = "Peter Simons <simons@cryp.to>"; simons = "Peter Simons <simons@cryp.to>";
sjagoe = "Simon Jagoe <simon@simonjagoe.com>";
sjmackenzie = "Stewart Mackenzie <setori88@gmail.com>"; sjmackenzie = "Stewart Mackenzie <setori88@gmail.com>";
skeidel = "Sven Keidel <svenkeidel@gmail.com>"; skeidel = "Sven Keidel <svenkeidel@gmail.com>";
smironov = "Sergey Mironov <ierton@gmail.com>"; smironov = "Sergey Mironov <ierton@gmail.com>";

View File

@ -208,4 +208,15 @@ rec {
# standard GNU Autoconf scripts. # standard GNU Autoconf scripts.
enableFeature = enable: feat: "--${if enable then "enable" else "disable"}-${feat}"; enableFeature = enable: feat: "--${if enable then "enable" else "disable"}-${feat}";
# Create a fixed width string with additional prefix to match required width
fixedWidthString = width: filler: str:
let
strw = lib.stringLength str;
reqWidth = width - (lib.stringLength filler);
in
assert strw <= width;
if strw == width then str else filler + fixedWidthString reqWidth filler str;
# Format a number adding leading zeroes up to fixed width
fixedWidthNumber = width: n: fixedWidthString width "0" (toString n);
} }

View File

@ -68,7 +68,7 @@ instance, if you try to define an option that doesnt exist (that is,
doesnt have a corresponding <emphasis>option declaration</emphasis>), doesnt have a corresponding <emphasis>option declaration</emphasis>),
<command>nixos-rebuild</command> will give an error like: <command>nixos-rebuild</command> will give an error like:
<screen> <screen>
The option `services.httpd.enabl' defined in `/etc/nixos/configuration.nix' does not exist. The option `services.httpd.enable' defined in `/etc/nixos/configuration.nix' does not exist.
</screen> </screen>
Likewise, values in option definitions must have a correct type. For Likewise, values in option definitions must have a correct type. For
instance, <option>services.httpd.enable</option> must be a Boolean instance, <option>services.httpd.enable</option> must be a Boolean

View File

@ -22,7 +22,8 @@
<arg choice='plain'><option>boot</option></arg> <arg choice='plain'><option>boot</option></arg>
<arg choice='plain'><option>test</option></arg> <arg choice='plain'><option>test</option></arg>
<arg choice='plain'><option>build</option></arg> <arg choice='plain'><option>build</option></arg>
<arg choice='plain'><option>dry-run</option></arg> <arg choice='plain'><option>dry-build</option></arg>
<arg choice='plain'><option>dry-activate</option></arg>
<arg choice='plain'><option>build-vm</option></arg> <arg choice='plain'><option>build-vm</option></arg>
<arg choice='plain'><option>build-vm-with-bootloader</option></arg> <arg choice='plain'><option>build-vm-with-bootloader</option></arg>
</group> </group>
@ -114,10 +115,22 @@ $ nix-build /path/to/nixpkgs/nixos -A system
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>dry-run</option></term> <term><option>dry-build</option></term>
<listitem> <listitem>
<para>Simply show what store paths would be built or downloaded <para>Show what store paths would be built or downloaded by any
by any of the operations above.</para> of the operations above, but otherwise do nothing.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>dry-activate</option></term>
<listitem>
<para>Build the new configuration, but instead of activating it,
show what changes would be performed by the activation (i.e. by
<command>nixos-rebuild test</command>). For
instance, this command will print which systemd units would be
restarted. The list of changes is not guaranteed to be
complete.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -26,7 +26,8 @@ while [ "$#" -gt 0 ]; do
--help) --help)
showSyntax showSyntax
;; ;;
switch|boot|test|build|dry-run|build-vm|build-vm-with-bootloader) switch|boot|test|build|dry-build|dry-run|dry-activate|build-vm|build-vm-with-bootloader)
if [ "$i" = dry-run ]; then i=dry-build; fi
action="$i" action="$i"
;; ;;
--install-grub) --install-grub)
@ -137,7 +138,7 @@ fi
# First build Nix, since NixOS may require a newer version than the # First build Nix, since NixOS may require a newer version than the
# current one. # current one.
if [ -n "$rollback" -o "$action" = dry-run ]; then if [ -n "$rollback" -o "$action" = dry-build ]; then
buildNix= buildNix=
fi fi
@ -180,7 +181,7 @@ if [ -n "$canRun" ]; then
fi fi
if [ "$action" = dry-run ]; then if [ "$action" = dry-build ]; then
extraBuildFlags+=(--dry-run) extraBuildFlags+=(--dry-run)
fi fi
@ -193,7 +194,7 @@ if [ -z "$rollback" ]; then
if [ "$action" = switch -o "$action" = boot ]; then if [ "$action" = switch -o "$action" = boot ]; then
nix-env "${extraBuildFlags[@]}" -p "$profile" -f '<nixpkgs/nixos>' --set -A system nix-env "${extraBuildFlags[@]}" -p "$profile" -f '<nixpkgs/nixos>' --set -A system
pathToConfig="$profile" pathToConfig="$profile"
elif [ "$action" = test -o "$action" = build -o "$action" = dry-run ]; then elif [ "$action" = test -o "$action" = build -o "$action" = dry-build -o "$action" = dry-activate ]; then
nix-build '<nixpkgs/nixos>' -A system -k "${extraBuildFlags[@]}" > /dev/null nix-build '<nixpkgs/nixos>' -A system -k "${extraBuildFlags[@]}" > /dev/null
pathToConfig=./result pathToConfig=./result
elif [ "$action" = build-vm ]; then elif [ "$action" = build-vm ]; then
@ -224,7 +225,7 @@ fi
# If we're not just building, then make the new configuration the boot # If we're not just building, then make the new configuration the boot
# default and/or activate it now. # default and/or activate it now.
if [ "$action" = switch -o "$action" = boot -o "$action" = test ]; then if [ "$action" = switch -o "$action" = boot -o "$action" = test -o "$action" = dry-activate ]; then
if ! $pathToConfig/bin/switch-to-configuration "$action"; then if ! $pathToConfig/bin/switch-to-configuration "$action"; then
echo "warning: error(s) occured while switching to the new configuration" >&2 echo "warning: error(s) occured while switching to the new configuration" >&2
exit 1 exit 1

View File

@ -211,7 +211,9 @@ let
${optionalString cfg.usbAuth ${optionalString cfg.usbAuth
"auth sufficient ${pkgs.pam_usb}/lib/security/pam_usb.so"} "auth sufficient ${pkgs.pam_usb}/lib/security/pam_usb.so"}
${optionalString cfg.unixAuth ${optionalString cfg.unixAuth
"auth sufficient pam_unix.so ${optionalString cfg.allowNullPassword "nullok"} likeauth"} "auth ${if config.security.pam.enableEcryptfs then "required" else "sufficient"} pam_unix.so ${optionalString cfg.allowNullPassword "nullok"} likeauth"}
${optionalString config.security.pam.enableEcryptfs
"auth required ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so unwrap"}
${optionalString cfg.otpwAuth ${optionalString cfg.otpwAuth
"auth sufficient ${pkgs.otpw}/lib/security/pam_otpw.so"} "auth sufficient ${pkgs.otpw}/lib/security/pam_otpw.so"}
${optionalString cfg.oathAuth ${optionalString cfg.oathAuth
@ -223,9 +225,11 @@ let
auth [default=die success=done] ${pam_ccreds}/lib/security/pam_ccreds.so action=validate use_first_pass auth [default=die success=done] ${pam_ccreds}/lib/security/pam_ccreds.so action=validate use_first_pass
auth sufficient ${pam_ccreds}/lib/security/pam_ccreds.so action=store use_first_pass auth sufficient ${pam_ccreds}/lib/security/pam_ccreds.so action=store use_first_pass
''} ''}
auth required pam_deny.so ${optionalString (! config.security.pam.enableEcryptfs) "auth required pam_deny.so"}
# Password management. # Password management.
${optionalString config.security.pam.enableEcryptfs
"password optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so"}
password requisite pam_unix.so nullok sha512 password requisite pam_unix.so nullok sha512
${optionalString config.users.ldap.enable ${optionalString config.users.ldap.enable
"password sufficient ${pam_ldap}/lib/security/pam_ldap.so"} "password sufficient ${pam_ldap}/lib/security/pam_ldap.so"}
@ -245,6 +249,8 @@ let
"session required ${pkgs.pam}/lib/security/pam_mkhomedir.so silent skel=/etc/skel umask=0022"} "session required ${pkgs.pam}/lib/security/pam_mkhomedir.so silent skel=/etc/skel umask=0022"}
${optionalString cfg.updateWtmp ${optionalString cfg.updateWtmp
"session required ${pkgs.pam}/lib/security/pam_lastlog.so silent"} "session required ${pkgs.pam}/lib/security/pam_lastlog.so silent"}
${optionalString config.security.pam.enableEcryptfs
"session optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so"}
${optionalString config.users.ldap.enable ${optionalString config.users.ldap.enable
"session optional ${pam_ldap}/lib/security/pam_ldap.so"} "session optional ${pam_ldap}/lib/security/pam_ldap.so"}
${optionalString config.krb5.enable ${optionalString config.krb5.enable
@ -357,6 +363,13 @@ in
''; '';
}; };
security.pam.enableEcryptfs = mkOption {
default = false;
description = ''
Enable eCryptfs PAM module (mounting ecryptfs home directory on login).
'';
};
users.motd = mkOption { users.motd = mkOption {
default = null; default = null;
example = "Today is Sweetmorn, the 4th day of The Aftermath in the YOLD 3178."; example = "Today is Sweetmorn, the 4th day of The Aftermath in the YOLD 3178.";
@ -377,7 +390,11 @@ in
++ optional config.users.ldap.enable pam_ldap ++ optional config.users.ldap.enable pam_ldap
++ optionals config.krb5.enable [pam_krb5 pam_ccreds] ++ optionals config.krb5.enable [pam_krb5 pam_ccreds]
++ optionals config.security.pam.enableOTPW [ pkgs.otpw ] ++ optionals config.security.pam.enableOTPW [ pkgs.otpw ]
++ optionals config.security.pam.enableOATH [ pkgs.oathToolkit ]; ++ optionals config.security.pam.enableOATH [ pkgs.oathToolkit ]
++ optionals config.security.pam.enableEcryptfs [ pkgs.ecryptfs ];
security.setuidPrograms =
optionals config.security.pam.enableEcryptfs [ "mount.ecryptfs_private" "umount.ecryptfs_private" ];
environment.etc = environment.etc =
mapAttrsToList (n: v: makePAMService v) config.security.pam.services; mapAttrsToList (n: v: makePAMService v) config.security.pam.services;

View File

@ -15,6 +15,8 @@ let
state_file "${cfg.dataDir}/state" state_file "${cfg.dataDir}/state"
sticker_file "${cfg.dataDir}/sticker.sql" sticker_file "${cfg.dataDir}/sticker.sql"
log_file "syslog" log_file "syslog"
user "${cfg.user}"
group "${cfg.group}"
${if cfg.network.host != "any" then ${if cfg.network.host != "any" then
"bind_to_address ${cfg.network.host}" else ""} "bind_to_address ${cfg.network.host}" else ""}
${if cfg.network.port != 6600 then ${if cfg.network.port != 6600 then
@ -40,8 +42,7 @@ in {
musicDirectory = mkOption { musicDirectory = mkOption {
default = "${cfg.dataDir}/music"; default = "${cfg.dataDir}/music";
description = '' description = ''
Extra configuration added to the end of MPD's The directory where mpd reads music from.
configuration file, mpd.conf.
''; '';
}; };
@ -62,6 +63,16 @@ in {
''; '';
}; };
user = mkOption {
default = "mpd";
description = "User account under which MPD runs.";
};
group = mkOption {
default = "mpd";
description = "Group account under which MPD runs.";
};
network = { network = {
host = mkOption { host = mkOption {
@ -96,7 +107,7 @@ in {
description = "Music Player Daemon"; description = "Music Player Daemon";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ pkgs.mpd ]; path = [ pkgs.mpd ];
preStart = "mkdir -p ${cfg.dataDir} && chown -R mpd:mpd ${cfg.dataDir}"; preStart = "mkdir -p ${cfg.dataDir} && chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}";
script = "exec mpd --no-daemon ${mpdConf}"; script = "exec mpd --no-daemon ${mpdConf}";
serviceConfig = { serviceConfig = {
User = "mpd"; User = "mpd";
@ -104,16 +115,18 @@ in {
}; };
}; };
users.extraUsers.mpd = { users.extraUsers = optionalAttrs (cfg.user == "mpd") (singleton {
inherit uid; inherit uid;
group = "mpd"; name = "mpd";
group = cfg.group;
extraGroups = [ "audio" ]; extraGroups = [ "audio" ];
description = "Music Player Daemon user"; description = "Music Player Daemon user";
home = "${cfg.dataDir}"; home = "${cfg.dataDir}";
}; });
users.extraGroups.mpd.gid = gid;
users.extraGroups = optionalAttrs (cfg.group == "mpd") (singleton {
gid = gid;
});
}; };
} }

View File

@ -20,6 +20,8 @@ let
extraGroups = [ "nixbld" ]; extraGroups = [ "nixbld" ];
}; };
nixbldUsers = map makeNixBuildUser (range 1 cfg.nrBuildUsers);
nixConf = nixConf =
let let
# If we're using a chroot for builds, then provide /bin/sh in # If we're using a chroot for builds, then provide /bin/sh in
@ -357,7 +359,9 @@ in
nix.nrBuildUsers = mkDefault (lib.max 10 cfg.maxJobs); nix.nrBuildUsers = mkDefault (lib.max 10 cfg.maxJobs);
users.extraUsers = map makeNixBuildUser (range 1 cfg.nrBuildUsers); users.extraUsers = nixbldUsers;
services.xserver.displayManager.hiddenUsers = map ({ name, ... }: name) nixbldUsers;
system.activationScripts.nix = stringAfter [ "etc" "users" ] system.activationScripts.nix = stringAfter [ "etc" "users" ]
'' ''

View File

@ -27,7 +27,7 @@ let
[ global ] [ global ]
security = ${cfg.securityType} security = ${cfg.securityType}
passwd program = /var/setuid-wrappers/passwd %u passwd program = /var/setuid-wrappers/passwd %u
pam password change = ${toString cfg.syncPasswordsByPam} pam password change = ${if cfg.syncPasswordsByPam then "yes" else "no"}
invalid users = ${toString cfg.invalidUsers} invalid users = ${toString cfg.invalidUsers}
${cfg.extraConfig} ${cfg.extraConfig}

View File

@ -71,6 +71,13 @@ let
${coreutils}/bin/rm -f $tmp $tmp.ns ${coreutils}/bin/rm -f $tmp $tmp.ns
''; '';
# pre-up and pre-down hooks were added in NM 0.9.10, but we still use 0.9.0
dispatcherTypesSubdirMap = {
"basic" = "";
/*"pre-up" = "pre-up.d/";
"pre-down" = "pre-down.d/";*/
};
in { in {
###### interface ###### interface
@ -118,6 +125,30 @@ in {
''; '';
}; };
dispatcherScripts = mkOption {
type = types.listOf (types.submodule {
options = {
source = mkOption {
type = types.str;
description = ''
A script source.
'';
};
type = mkOption {
type = types.enum (attrNames dispatcherTypesSubdirMap);
default = "basic";
description = ''
Dispatcher hook type. Only basic hooks are currently available.
'';
};
};
});
default = [];
description = ''
A list of scripts which will be executed in response to network events.
'';
};
}; };
}; };
@ -155,7 +186,11 @@ in {
] ++ optional (cfg.appendNameservers == [] || cfg.insertNameservers == []) ] ++ optional (cfg.appendNameservers == [] || cfg.insertNameservers == [])
{ source = overrideNameserversScript; { source = overrideNameserversScript;
target = "NetworkManager/dispatcher.d/02overridedns"; target = "NetworkManager/dispatcher.d/02overridedns";
}; }
++ lib.imap (i: s: {
text = s.source;
target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
}) cfg.dispatcherScripts;
environment.systemPackages = cfg.packages ++ [ environment.systemPackages = cfg.packages ++ [
networkmanager_openvpn networkmanager_openvpn

View File

@ -381,6 +381,8 @@ in
UsePAM yes UsePAM yes
UsePrivilegeSeparation sandbox
AddressFamily ${if config.networking.enableIPv6 then "any" else "inet"} AddressFamily ${if config.networking.enableIPv6 then "any" else "inet"}
${concatMapStrings (port: '' ${concatMapStrings (port: ''
Port ${toString port} Port ${toString port}

View File

@ -171,6 +171,9 @@ let
SSLRandomSeed startup builtin SSLRandomSeed startup builtin
SSLRandomSeed connect builtin SSLRandomSeed connect builtin
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!EXP
''; '';

View File

@ -208,6 +208,14 @@ in
description = "Shell commands executed just before the window or desktop manager is started."; description = "Shell commands executed just before the window or desktop manager is started.";
}; };
hiddenUsers = mkOption {
type = types.listOf types.str;
default = [ "nobody" ];
description = ''
A list of users which will not be shown in the display manager.
'';
};
desktopManagerHandlesLidAndPower = mkOption { desktopManagerHandlesLidAndPower = mkOption {
type = types.bool; type = types.bool;
default = true; default = true;

View File

@ -95,15 +95,23 @@ in
auth required pam_succeed_if.so uid >= 1000 quiet auth required pam_succeed_if.so uid >= 1000 quiet
auth optional ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so auth optional ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so
auth sufficient pam_unix.so nullok likeauth auth ${if config.security.pam.enableEcryptfs then "required" else "sufficient"} pam_unix.so nullok likeauth
auth required pam_deny.so ${optionalString config.security.pam.enableEcryptfs
"auth required ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so unwrap"}
${optionalString (! config.security.pam.enableEcryptfs)
"auth required pam_deny.so"}
account sufficient pam_unix.so account sufficient pam_unix.so
password requisite pam_unix.so nullok sha512 password requisite pam_unix.so nullok sha512
${optionalString config.security.pam.enableEcryptfs
"password optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so"}
session required pam_env.so envfile=${config.system.build.pamEnvironment} session required pam_env.so envfile=${config.system.build.pamEnvironment}
session required pam_unix.so session required pam_unix.so
${optionalString config.security.pam.enableEcryptfs
"session optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so"}
session required pam_loginuid.so session required pam_loginuid.so
session optional ${pkgs.systemd}/lib/security/pam_systemd.so session optional ${pkgs.systemd}/lib/security/pam_systemd.so
session optional ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so auto_start session optional ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so auto_start
@ -115,15 +123,22 @@ in
auth required pam_succeed_if.so uid >= 1000 quiet auth required pam_succeed_if.so uid >= 1000 quiet
auth optional ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so auth optional ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so
auth sufficient pam_unix.so nullok likeauth auth ${if config.security.pam.enableEcryptfs then "required" else "sufficient"} pam_unix.so nullok likeauth
auth required pam_deny.so ${optionalString config.security.pam.enableEcryptfs
"auth required ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so unwrap"}
${optionalString (! config.security.pam.enableEcryptfs)
"auth required pam_deny.so"}
account sufficient pam_unix.so account sufficient pam_unix.so
password requisite pam_unix.so nullok sha512 password requisite pam_unix.so nullok sha512
${optionalString config.security.pam.enableEcryptfs
"password optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so"}
session required pam_env.so envfile=${config.system.build.pamEnvironment} session required pam_env.so envfile=${config.system.build.pamEnvironment}
session required pam_unix.so session required pam_unix.so
${optionalString config.security.pam.enableEcryptfs
"session optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so"}
session required pam_loginuid.so session required pam_loginuid.so
session optional ${pkgs.systemd}/lib/security/pam_systemd.so session optional ${pkgs.systemd}/lib/security/pam_systemd.so
session optional ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so auto_start session optional ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so auto_start

View File

@ -38,7 +38,7 @@ let
''} ''}
[X-*-Greeter] [X-*-Greeter]
HiddenUsers=root,nixbld1,nixbld2,nixbld3,nixbld4,nixbld5,nixbld6,nixbld7,nixbld8,nixbld9,nixbld10 HiddenUsers=root,${concatStringsSep "," dmcfg.hiddenUsers}
PluginsLogin=${kdebase_workspace}/lib/kde4/kgreet_classic.so PluginsLogin=${kdebase_workspace}/lib/kde4/kgreet_classic.so
${optionalString (cfg.themeDirectory != null) ${optionalString (cfg.themeDirectory != null)
'' ''

View File

@ -50,6 +50,16 @@ let
''; '';
}; };
hiddenUsers = config.services.xserver.displayManager.hiddenUsers;
usersConf = writeText "users.conf"
''
[UserList]
minimum-uid=500
hidden-users=${concatStringsSep " " hiddenUsers}
hidden-shells=/run/current-system/sw/sbin/nologin
'';
lightdmConf = writeText "lightdm.conf" lightdmConf = writeText "lightdm.conf"
'' ''
[LightDM] [LightDM]
@ -84,6 +94,7 @@ in
package = wrappedGtkGreeter; package = wrappedGtkGreeter;
}; };
}; };
}; };
}; };
@ -97,10 +108,13 @@ in
# lightdm relaunches itself via just `lightdm`, so needs to be on the PATH # lightdm relaunches itself via just `lightdm`, so needs to be on the PATH
execCmd = '' execCmd = ''
export PATH=${lightdm}/sbin:$PATH export PATH=${lightdm}/sbin:$PATH
exec ${lightdm}/sbin/lightdm --log-dir=/var/log --run-dir=/run --config=${lightdmConf} exec ${lightdm}/sbin/lightdm --log-dir=/var/log --run-dir=/run
''; '';
}; };
environment.etc."lightdm/lightdm.conf".source = lightdmConf;
environment.etc."lightdm/users.conf".source = usersConf;
services.dbus.enable = true; services.dbus.enable = true;
services.dbus.packages = [ lightdm ]; services.dbus.packages = [ lightdm ];

View File

@ -9,19 +9,21 @@ use Cwd 'abs_path';
my $out = "@out@"; my $out = "@out@";
# To be robust against interruption, record what units need to be started etc.
my $startListFile = "/run/systemd/start-list"; my $startListFile = "/run/systemd/start-list";
my $restartListFile = "/run/systemd/restart-list"; my $restartListFile = "/run/systemd/restart-list";
my $reloadListFile = "/run/systemd/reload-list"; my $reloadListFile = "/run/systemd/reload-list";
my $action = shift @ARGV; my $action = shift @ARGV;
if (!defined $action || ($action ne "switch" && $action ne "boot" && $action ne "test")) { if (!defined $action || ($action ne "switch" && $action ne "boot" && $action ne "test" && $action ne "dry-activate")) {
print STDERR <<EOF; print STDERR <<EOF;
Usage: $0 [switch|boot|test] Usage: $0 [switch|boot|test]
switch: make the configuration the boot default and activate now switch: make the configuration the boot default and activate now
boot: make the configuration the boot default boot: make the configuration the boot default
test: activate the configuration, but don\'t make it the boot default test: activate the configuration, but don\'t make it the boot default
dry-activate: show what would be done if this configuration were activated
EOF EOF
exit 1; exit 1;
} }
@ -56,8 +58,6 @@ EOF
exit 100; exit 100;
} }
syslog(LOG_NOTICE, "switching to system configuration $out");
# Ignore SIGHUP so that we're not killed if we're running on (say) # Ignore SIGHUP so that we're not killed if we're running on (say)
# virtual console 1 and we restart the "tty1" unit. # virtual console 1 and we restart the "tty1" unit.
$SIG{PIPE} = "IGNORE"; $SIG{PIPE} = "IGNORE";
@ -116,6 +116,11 @@ sub boolIsTrue {
return $s eq "yes" || $s eq "true"; return $s eq "yes" || $s eq "true";
} }
sub recordUnit {
my ($fn, $unit) = @_;
write_file($fn, { append => 1 }, "$unit\n") if $action ne "dry-activate";
}
# As a fingerprint for determining whether a unit has changed, we use # As a fingerprint for determining whether a unit has changed, we use
# its absolute path. If it has an override file, we append *its* # its absolute path. If it has an override file, we append *its*
# absolute path as well. # absolute path as well.
@ -124,9 +129,20 @@ sub fingerprintUnit {
return abs_path($s) . (-f "${s}.d/overrides.conf" ? " " . abs_path "${s}.d/overrides.conf" : ""); return abs_path($s) . (-f "${s}.d/overrides.conf" ? " " . abs_path "${s}.d/overrides.conf" : "");
} }
# Stop all services that no longer exist or have changed in the new # Figure out what units need to be stopped, started, restarted or reloaded.
# configuration. my (%unitsToStop, %unitsToSkip, %unitsToStart, %unitsToRestart, %unitsToReload);
my (@unitsToStop, @unitsToSkip);
my %unitsToFilter; # units not shown
$unitsToStart{$_} = 1 foreach
split('\n', read_file($startListFile, err_mode => 'quiet') // "");
$unitsToRestart{$_} = 1 foreach
split('\n', read_file($restartListFile, err_mode => 'quiet') // "");
$unitsToReload{$_} = 1 foreach
split '\n', read_file($reloadListFile, err_mode => 'quiet') // "";
my $activePrev = getActiveUnits; my $activePrev = getActiveUnits;
while (my ($unit, $state) = each %{$activePrev}) { while (my ($unit, $state) = each %{$activePrev}) {
my $baseUnit = $unit; my $baseUnit = $unit;
@ -141,7 +157,7 @@ while (my ($unit, $state) = each %{$activePrev}) {
if (-e $prevUnitFile && ($state->{state} eq "active" || $state->{state} eq "activating")) { if (-e $prevUnitFile && ($state->{state} eq "active" || $state->{state} eq "activating")) {
if (! -e $newUnitFile || abs_path($newUnitFile) eq "/dev/null") { if (! -e $newUnitFile || abs_path($newUnitFile) eq "/dev/null") {
push @unitsToStop, $unit; $unitsToStop{$unit} = 1;
} }
elsif ($unit =~ /\.target$/) { elsif ($unit =~ /\.target$/) {
@ -155,7 +171,10 @@ while (my ($unit, $state) = each %{$activePrev}) {
# should not be the case. Just ignore it. # should not be the case. Just ignore it.
if ($unit ne "suspend.target" && $unit ne "hibernate.target" && $unit ne "hybrid-sleep.target") { if ($unit ne "suspend.target" && $unit ne "hibernate.target" && $unit ne "hybrid-sleep.target") {
unless (boolIsTrue($unitInfo->{'RefuseManualStart'} // "no")) { unless (boolIsTrue($unitInfo->{'RefuseManualStart'} // "no")) {
write_file($startListFile, { append => 1 }, "$unit\n"); $unitsToStart{$unit} = 1;
recordUnit($startListFile, $unit);
# Don't spam the user with target units that always get started.
$unitsToFilter{$unit} = 1;
} }
} }
@ -171,7 +190,7 @@ while (my ($unit, $state) = each %{$activePrev}) {
# (unless there is a PartOf dependency), so this is just a # (unless there is a PartOf dependency), so this is just a
# bookkeeping thing to get systemd to do the right thing. # bookkeeping thing to get systemd to do the right thing.
if (boolIsTrue($unitInfo->{'X-StopOnReconfiguration'} // "no")) { if (boolIsTrue($unitInfo->{'X-StopOnReconfiguration'} // "no")) {
push @unitsToStop, $unit; $unitsToStop{$unit} = 1;
} }
} }
@ -180,16 +199,18 @@ while (my ($unit, $state) = each %{$activePrev}) {
# Do nothing. These cannot be restarted directly. # Do nothing. These cannot be restarted directly.
} elsif ($unit =~ /\.mount$/) { } elsif ($unit =~ /\.mount$/) {
# Reload the changed mount unit to force a remount. # Reload the changed mount unit to force a remount.
write_file($reloadListFile, { append => 1 }, "$unit\n"); $unitsToReload{$unit} = 1;
recordUnit($reloadListFile, $unit);
} elsif ($unit =~ /\.socket$/ || $unit =~ /\.path$/ || $unit =~ /\.slice$/) { } elsif ($unit =~ /\.socket$/ || $unit =~ /\.path$/ || $unit =~ /\.slice$/) {
# FIXME: do something? # FIXME: do something?
} else { } else {
my $unitInfo = parseUnit($newUnitFile); my $unitInfo = parseUnit($newUnitFile);
if (boolIsTrue($unitInfo->{'X-ReloadIfChanged'} // "no")) { if (boolIsTrue($unitInfo->{'X-ReloadIfChanged'} // "no")) {
write_file($reloadListFile, { append => 1 }, "$unit\n"); $unitsToReload{$unit} = 1;
recordUnit($reloadListFile, $unit);
} }
elsif (!boolIsTrue($unitInfo->{'X-RestartIfChanged'} // "yes") || boolIsTrue($unitInfo->{'RefuseManualStop'} // "no") ) { elsif (!boolIsTrue($unitInfo->{'X-RestartIfChanged'} // "yes") || boolIsTrue($unitInfo->{'RefuseManualStop'} // "no") ) {
push @unitsToSkip, $unit; $unitsToSkip{$unit} = 1;
} else { } else {
# If this unit is socket-activated, then stop the # If this unit is socket-activated, then stop the
# socket unit(s) as well, and restart the # socket unit(s) as well, and restart the
@ -202,8 +223,9 @@ while (my ($unit, $state) = each %{$activePrev}) {
} }
foreach my $socket (@sockets) { foreach my $socket (@sockets) {
if (defined $activePrev->{$socket}) { if (defined $activePrev->{$socket}) {
push @unitsToStop, $socket; $unitsToStop{$unit} = 1;
write_file($startListFile, { append => 1 }, "$socket\n"); $unitsToStart{$unit} = 1;
recordUnit($startListFile, $socket);
$socketActivated = 1; $socketActivated = 1;
} }
} }
@ -213,7 +235,8 @@ while (my ($unit, $state) = each %{$activePrev}) {
# This unit should be restarted instead of # This unit should be restarted instead of
# stopped and started. # stopped and started.
write_file($restartListFile, { append => 1 }, "$unit\n"); $unitsToRestart{$unit} = 1;
recordUnit($restartListFile, $unit);
} else { } else {
@ -222,10 +245,11 @@ while (my ($unit, $state) = each %{$activePrev}) {
# We write this to a file to ensure that the # We write this to a file to ensure that the
# service gets restarted if we're interrupted. # service gets restarted if we're interrupted.
if (!$socketActivated) { if (!$socketActivated) {
write_file($startListFile, { append => 1 }, "$unit\n"); $unitsToStart{$unit} = 1;
recordUnit($startListFile, $unit);
} }
push @unitsToStop, $unit; $unitsToStop{$unit} = 1;
} }
} }
@ -268,14 +292,16 @@ foreach my $mountPoint (keys %$prevFss) {
my $unit = pathToUnitName($mountPoint) . ".mount"; my $unit = pathToUnitName($mountPoint) . ".mount";
if (!defined $new) { if (!defined $new) {
# Filesystem entry disappeared, so unmount it. # Filesystem entry disappeared, so unmount it.
push @unitsToStop, $unit; $unitsToStop{$unit} = 1;
} elsif ($prev->{fsType} ne $new->{fsType} || $prev->{device} ne $new->{device}) { } elsif ($prev->{fsType} ne $new->{fsType} || $prev->{device} ne $new->{device}) {
# Filesystem type or device changed, so unmount and mount it. # Filesystem type or device changed, so unmount and mount it.
write_file($startListFile, { append => 1 }, "$unit\n"); $unitsToStop{$unit} = 1;
push @unitsToStop, $unit; $unitsToStart{$unit} = 1;
recordUnit($startListFile, $unit);
} elsif ($prev->{options} ne $new->{options}) { } elsif ($prev->{options} ne $new->{options}) {
# Mount options changes, so remount it. # Mount options changes, so remount it.
write_file($reloadListFile, { append => 1 }, "$unit\n"); $unitsToReload{$unit} = 1;
recordUnit($reloadListFile, $unit);
} }
} }
@ -294,14 +320,51 @@ foreach my $device (keys %$prevSwaps) {
# FIXME: update swap options (i.e. its priority). # FIXME: update swap options (i.e. its priority).
} }
if (scalar @unitsToStop > 0) {
@unitsToStop = unique(@unitsToStop); # Should we have systemd re-exec itself?
print STDERR "stopping the following units: ", join(", ", sort(@unitsToStop)), "\n"; my $restartSystemd = abs_path("/proc/1/exe") ne abs_path("@systemd@/lib/systemd/systemd");
system("systemctl", "stop", "--", @unitsToStop); # FIXME: ignore errors?
sub filterUnits {
my ($units) = @_;
my @res;
foreach my $unit (sort(keys %{$units})) {
push @res, $unit if !defined $unitsToFilter{$unit};
}
return @res;
} }
print STDERR "NOT restarting the following units: ", join(", ", sort(@unitsToSkip)), "\n" my @unitsToStopFiltered = filterUnits(\%unitsToStop);
if scalar @unitsToSkip > 0; my @unitsToStartFiltered = filterUnits(\%unitsToStart);
# Show dry-run actions.
if ($action eq "dry-activate") {
print STDERR "would stop the following units: ", join(", ", @unitsToStopFiltered), "\n"
if scalar @unitsToStopFiltered > 0;
print STDERR "would NOT stop the following changed units: ", join(", ", sort(keys %unitsToSkip)), "\n"
if scalar(keys %unitsToSkip) > 0;
print STDERR "would restart systemd\n" if $restartSystemd;
print STDERR "would restart the following units: ", join(", ", sort(keys %unitsToRestart)), "\n"
if scalar(keys %unitsToRestart) > 0;
print STDERR "would start the following units: ", join(", ", @unitsToStartFiltered), "\n"
if scalar @unitsToStartFiltered;
print STDERR "would reload the following units: ", join(", ", sort(keys %unitsToReload)), "\n"
if scalar(keys %unitsToReload) > 0;
exit 0;
}
syslog(LOG_NOTICE, "switching to system configuration $out");
if (scalar (keys %unitsToStop) > 0) {
print STDERR "stopping the following units: ", join(", ", @unitsToStopFiltered), "\n"
if scalar @unitsToStopFiltered;
system("systemctl", "stop", "--", sort(keys %unitsToStop)); # FIXME: ignore errors?
}
print STDERR "NOT restarting the following changed units: ", join(", ", sort(keys %unitsToSkip)), "\n"
if scalar(keys %unitsToSkip) > 0;
# Activate the new configuration (i.e., update /etc, make accounts, # Activate the new configuration (i.e., update /etc, make accounts,
# and so on). # and so on).
@ -310,7 +373,7 @@ print STDERR "activating the configuration...\n";
system("$out/activate", "$out") == 0 or $res = 2; system("$out/activate", "$out") == 0 or $res = 2;
# Restart systemd if necessary. # Restart systemd if necessary.
if (abs_path("/proc/1/exe") ne abs_path("@systemd@/lib/systemd/systemd")) { if ($restartSystemd) {
print STDERR "restarting systemd...\n"; print STDERR "restarting systemd...\n";
system("@systemd@/bin/systemctl", "daemon-reexec") == 0 or $res = 2; system("@systemd@/bin/systemctl", "daemon-reexec") == 0 or $res = 2;
} }
@ -327,10 +390,9 @@ system("@systemd@/bin/systemctl", "reload-or-restart", "dbus.service");
# Restart changed services (those that have to be restarted rather # Restart changed services (those that have to be restarted rather
# than stopped and started). # than stopped and started).
my @restart = unique(split('\n', read_file($restartListFile, err_mode => 'quiet') // "")); if (scalar(keys %unitsToRestart) > 0) {
if (scalar @restart > 0) { print STDERR "restarting the following units: ", join(", ", sort(keys %unitsToRestart)), "\n";
print STDERR "restarting the following units: ", join(", ", sort(@restart)), "\n"; system("@systemd@/bin/systemctl", "restart", "--", sort(keys %unitsToRestart)) == 0 or $res = 4;
system("@systemd@/bin/systemctl", "restart", "--", @restart) == 0 or $res = 4;
unlink($restartListFile); unlink($restartListFile);
} }
@ -340,17 +402,16 @@ if (scalar @restart > 0) {
# that are symlinks to other units. We shouldn't start both at the # that are symlinks to other units. We shouldn't start both at the
# same time because we'll get a "Failed to add path to set" error from # same time because we'll get a "Failed to add path to set" error from
# systemd. # systemd.
my @start = unique("default.target", "timers.target", "sockets.target", split('\n', read_file($startListFile, err_mode => 'quiet') // "")); print STDERR "starting the following units: ", join(", ", @unitsToStartFiltered), "\n"
print STDERR "starting the following units: ", join(", ", sort(@start)), "\n"; if scalar @unitsToStartFiltered;
system("@systemd@/bin/systemctl", "start", "--", @start) == 0 or $res = 4; system("@systemd@/bin/systemctl", "start", "--", sort(keys %unitsToStart)) == 0 or $res = 4;
unlink($startListFile); unlink($startListFile);
# Reload units that need it. This includes remounting changed mount # Reload units that need it. This includes remounting changed mount
# units. # units.
my @reload = unique(split '\n', read_file($reloadListFile, err_mode => 'quiet') // ""); if (scalar(keys %unitsToReload) > 0) {
if (scalar @reload > 0) { print STDERR "reloading the following units: ", join(", ", sort(keys %unitsToReload)), "\n";
print STDERR "reloading the following units: ", join(", ", sort(@reload)), "\n"; system("@systemd@/bin/systemctl", "reload", "--", sort(keys %unitsToReload)) == 0 or $res = 4;
system("@systemd@/bin/systemctl", "reload", "--", @reload) == 0 or $res = 4;
unlink($reloadListFile); unlink($reloadListFile);
} }

View File

@ -177,20 +177,24 @@ fi
if test -e /sys/power/resume -a -e /sys/power/disk; then if test -e /sys/power/resume -a -e /sys/power/disk; then
if test -n "@resumeDevice@"; then if test -n "@resumeDevice@"; then
resumeDev="@resumeDevice@" resumeDev="@resumeDevice@"
resumeInfo="$(udevadm info -q property "$resumeDev" )"
else else
for sd in @resumeDevices@; do for sd in @resumeDevices@; do
# Try to detect resume device. According to Ubuntu bug: # Try to detect resume device. According to Ubuntu bug:
# https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/923326/comments/1 # https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/923326/comments/1
# When there are multiple swap devices, we can't know where will hibernate # When there are multiple swap devices, we can't know where will hibernate
# image reside. We can check all of them for swsuspend blkid. # image reside. We can check all of them for swsuspend blkid.
if [ "$(udevadm info -q property "$sd" | sed -n 's/^ID_FS_TYPE=//p')" = "swsuspend" ]; then resumeInfo="$(udevadm info -q property "$sd" )"
if [ "$(echo "$resumeInfo" | sed -n 's/^ID_FS_TYPE=//p')" = "swsuspend" ]; then
resumeDev="$sd" resumeDev="$sd"
break break
fi fi
done done
fi fi
if test -n "$resumeDev"; then if test -e "$resumeDev"; then
readlink -f "$resumeDev" > /sys/power/resume 2> /dev/null || echo "failed to resume..." resumeMajor="$(echo "$resumeInfo" | sed -n 's/^MAJOR=//p')"
resumeMinor="$(echo "$resumeInfo" | sed -n 's/^MINOR=//p')"
echo "$resumeMajor:$resumeMinor" > /sys/power/resume 2> /dev/null || echo "failed to resume..."
fi fi
fi fi

View File

@ -6,11 +6,11 @@ assert stdenv ? glibc;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "yoshimi-${version}"; name = "yoshimi-${version}";
version = "1.3.2"; version = "1.3.3";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/yoshimi/${name}.tar.bz2"; url = "mirror://sourceforge/yoshimi/${name}.tar.bz2";
sha256 = "0f4cwcmszvpga1gsfhhjcz7yb0h08v35wsv4ssmijh8gfp3mhjml"; sha256 = "0f37xjkay3800fbx0iwjca005b1hrjbhszrzn0xg662vf8mj44nv";
}; };
buildInputs = [ buildInputs = [

View File

@ -9,42 +9,44 @@
#ToDo: Failed to open sessions directory: Error opening directory '${lightdm}/share/lightdm/remote-sessions': No such file or directory #ToDo: Failed to open sessions directory: Error opening directory '${lightdm}/share/lightdm/remote-sessions': No such file or directory
let let
ver_branch = "1.6"; ver_branch = "2.0";
version = "1.6.1"; version = "2.0.0";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "lightdm-gtk-greeter-${version}"; name = "lightdm-gtk-greeter-${version}";
src = fetchurl { src = fetchurl {
url = "${meta.homepage}/${ver_branch}/${version}/+download/${name}.tar.gz"; url = "${meta.homepage}/${ver_branch}/${version}/+download/${name}.tar.gz";
sha256 = "1nb8ljrbrp1zga083g3b633xi3izxxm4jipw1qgial1x16mqc0hz"; sha256 = "1134q8qd7gr34jkivqxckdnwbpa8pl7dhjpdi9fci0pcs4hh22jc";
}; };
patches = [ buildInputs = [ pkgconfig lightdm intltool makeWrapper ]
./lightdm-gtk-greeter.patch ++ (if useGTK2 then [ gtk2 ] else [ gtk3 ]);
(fetchurl { # CVE-2014-0979, https://bugs.launchpad.net/lightdm-gtk-greeter/+bug/1266449
url = "https://launchpadlibrarian.net/161796033/07_fix-NULL-username.patch";
sha256 = "1sqkhsz1z10k6vlmlrqrfx452lznv30885fmnzc73p2zxdlw9q1a";
})
];
patchFlags = "-p1";
buildInputs = [ pkgconfig lightdm intltool ] configureFlags = [
++ (if useGTK2 then [ gtk2 makeWrapper ] else [ gtk3 ]); "--localstatedir=/var"
"--sysconfdir=/etc"
] ++ stdenv.lib.optional useGTK2 "--with-gtk2";
configureFlags = stdenv.lib.optional useGTK2 "--with-gtk2"; installFlags = [ "DESTDIR=\${out}" ];
postInstall = '' postInstall = ''
mv $out/$out/* $out
DIR=$out/$out
while rmdir $DIR 2>/dev/null; do
DIR="$(dirname "$DIR")"
done
substituteInPlace "$out/share/xgreeters/lightdm-gtk-greeter.desktop" \ substituteInPlace "$out/share/xgreeters/lightdm-gtk-greeter.desktop" \
--replace "Exec=lightdm-gtk-greeter" "Exec=$out/sbin/lightdm-gtk-greeter" --replace "Exec=lightdm-gtk-greeter" "Exec=$out/sbin/lightdm-gtk-greeter"
'' + stdenv.lib.optionalString useGTK2 ''
wrapProgram "$out/sbin/lightdm-gtk-greeter" \ wrapProgram "$out/sbin/lightdm-gtk-greeter" \
--prefix XDG_DATA_DIRS ":" "${hicolor_icon_theme}/share" --prefix XDG_DATA_DIRS ":" "${hicolor_icon_theme}/share"
''; '';
meta = { meta = with stdenv.lib; {
homepage = http://launchpad.net/lightdm-gtk-greeter; homepage = http://launchpad.net/lightdm-gtk-greeter;
platforms = stdenv.lib.platforms.linux; platforms = platforms.linux;
maintainers = [ stdenv.lib.maintainers.ocharles ]; license = licenses.gpl3;
maintainers = with maintainers; [ ocharles wkennington ];
}; };
} }

View File

@ -1,13 +0,0 @@
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c
index cc5f9e1..d615dc1 100644
--- a/src/lightdm-gtk-greeter.c
+++ b/src/lightdm-gtk-greeter.c
@@ -1716,7 +1716,7 @@ main (int argc, char **argv)
gtk_container_add (GTK_CONTAINER (menuitem), image);
gtk_widget_show (GTK_WIDGET (menuitem));
- items = lightdm_get_sessions ();
+ items = lightdm_get_sessions (greeter);
GSList *sessions = NULL;
for (item = items; item; item = item->next)
{

View File

@ -1,32 +1,47 @@
{ stdenv, fetchurl, pam, pkgconfig, libxcb, glib, libXdmcp, itstool, libxml2 { stdenv, fetchurl, pam, pkgconfig, libxcb, glib, libXdmcp, itstool, libxml2
, intltool, x11, libxklavier, libgcrypt, dbus/*for tests*/ }: , intltool, x11, libxklavier, libgcrypt
, qt4 ? null, qt5 ? null
}:
let let
ver_branch = "1.8"; ver_branch = "1.13";
version = "1.8.6"; version = "1.13.1";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "lightdm-${version}"; name = "lightdm-${version}";
src = fetchurl { src = fetchurl {
url = "${meta.homepage}/${ver_branch}/${version}/+download/${name}.tar.xz"; url = "${meta.homepage}/${ver_branch}/${version}/+download/${name}.tar.xz";
sha256 = "17ivc0c4dbnc0fzd581j53cn6hdav34zz2hswjzy8aczbpk605qi"; sha256 = "0xa23maq6phkfil8xx26viig2m99sbzcf1w7s56hns2qw6pycn79";
}; };
patches = [ ./lightdm.patch ];
patchFlags = "-p1";
buildInputs = [ buildInputs = [
pkgconfig pam libxcb glib libXdmcp itstool libxml2 intltool libxklavier libgcrypt pkgconfig pam libxcb glib libXdmcp itstool libxml2 intltool libxklavier libgcrypt
] ++ stdenv.lib.optional doCheck dbus.daemon; qt4 qt5
];
configureFlags = [ "--enable-liblightdm-gobject" "--localstatedir=/var" ]; configureFlags = [
"--enable-liblightdm-gobject"
"--localstatedir=/var"
"--sysconfdir=/etc"
] ++ stdenv.lib.optional (qt4 != null) "--enable-liblightdm-qt"
++ stdenv.lib.optional (qt5 != null) "--enable-liblightdm-qt5";
doCheck = false; # some tests fail, don't know why installFlags = [ "DESTDIR=\${out}" ];
meta = { # Correct for the nested nix folder tree
postInstall = ''
mv $out/$out/* $out
DIR=$out/$out
while rmdir $DIR 2>/dev/null; do
DIR="$(dirname "$DIR")"
done
'';
meta = with stdenv.lib; {
homepage = http://launchpad.net/lightdm; homepage = http://launchpad.net/lightdm;
platforms = stdenv.lib.platforms.linux; platforms = platforms.linux;
maintainers = [ stdenv.lib.maintainers.ocharles ]; license = licenses.gpl3;
maintainers = with maintainers; [ ocharles wkennington ];
}; };
} }

View File

@ -1,144 +0,0 @@
diff --git a/liblightdm-gobject/greeter.c b/liblightdm-gobject/greeter.c
index 9387118..635cea0 100644
--- a/liblightdm-gobject/greeter.c
+++ b/liblightdm-gobject/greeter.c
@@ -567,6 +567,21 @@ lightdm_greeter_get_default_session_hint (LightDMGreeter *greeter)
}
/**
+ * lightdm_greeter_get_config_path
+ * @greeter: A #LightDMGreeter
+ *
+ * Get the config path to LightDM.
+ *
+ * Return value: The path to the current LightDM configuration file.
+ **/
+const gchar *
+lightdm_greeter_get_config_path (LightDMGreeter *greeter)
+{
+ g_return_val_if_fail (LIGHTDM_IS_GREETER (greeter), NULL);
+ return lightdm_greeter_get_hint (greeter, "config-path");
+}
+
+/**
* lightdm_greeter_get_hide_users_hint:
* @greeter: A #LightDMGreeter
*
diff --git a/liblightdm-gobject/lightdm/greeter.h b/liblightdm-gobject/lightdm/greeter.h
index 7d8988f..2b54909 100644
--- a/liblightdm-gobject/lightdm/greeter.h
+++ b/liblightdm-gobject/lightdm/greeter.h
@@ -93,6 +93,8 @@ gboolean lightdm_greeter_get_select_guest_hint (LightDMGreeter *greeter);
const gchar *lightdm_greeter_get_autologin_user_hint (LightDMGreeter *greeter);
+const gchar *lightdm_greeter_get_config_path (LightDMGreeter *greeter);
+
gboolean lightdm_greeter_get_autologin_guest_hint (LightDMGreeter *greeter);
gint lightdm_greeter_get_autologin_timeout_hint (LightDMGreeter *greeter);
diff --git a/liblightdm-gobject/lightdm/session.h b/liblightdm-gobject/lightdm/session.h
index 13ddcd9..cdb2fd6 100644
--- a/liblightdm-gobject/lightdm/session.h
+++ b/liblightdm-gobject/lightdm/session.h
@@ -12,6 +12,7 @@
#define LIGHTDM_SESSION_H_
#include <glib-object.h>
+#include "greeter.h"
G_BEGIN_DECLS
@@ -42,9 +43,9 @@ typedef struct
GType lightdm_session_get_type (void);
-GList *lightdm_get_sessions (void);
+GList *lightdm_get_sessions (LightDMGreeter *greeter);
-GList *lightdm_get_remote_sessions (void);
+GList *lightdm_get_remote_sessions (LightDMGreeter *greeter);
const gchar *lightdm_session_get_key (LightDMSession *session);
diff --git a/liblightdm-gobject/session.c b/liblightdm-gobject/session.c
index 949778f..db5e18a 100644
--- a/liblightdm-gobject/session.c
+++ b/liblightdm-gobject/session.c
@@ -11,6 +11,7 @@
#include <string.h>
#include <gio/gdesktopappinfo.h>
+#include "lightdm/greeter.h"
#include "lightdm/session.h"
enum {
@@ -189,7 +190,7 @@ load_sessions (const gchar *sessions_dir)
}
static void
-update_sessions (void)
+update_sessions (LightDMGreeter *greeter)
{
GKeyFile *config_key_file = NULL;
gchar *config_path = NULL;
@@ -205,8 +206,7 @@ update_sessions (void)
remote_sessions_dir = g_strdup (REMOTE_SESSIONS_DIR);
/* Use session directory from configuration */
- /* FIXME: This should be sent in the greeter connection */
- config_path = g_build_filename (CONFIG_DIR, "lightdm.conf", NULL);
+ config_path = g_strdup (lightdm_greeter_get_config_path (greeter));
config_key_file = g_key_file_new ();
result = g_key_file_load_from_file (config_key_file, config_path, G_KEY_FILE_NONE, &error);
if (error && !g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
@@ -250,9 +250,9 @@ update_sessions (void)
* Return value: (element-type LightDMSession) (transfer none): A list of #LightDMSession
**/
GList *
-lightdm_get_sessions (void)
+lightdm_get_sessions (LightDMGreeter *greeter)
{
- update_sessions ();
+ update_sessions (greeter);
return local_sessions;
}
@@ -264,9 +264,9 @@ lightdm_get_sessions (void)
* Return value: (element-type LightDMSession) (transfer none): A list of #LightDMSession
**/
GList *
-lightdm_get_remote_sessions (void)
+lightdm_get_remote_sessions (LightDMGreeter *greeter)
{
- update_sessions ();
+ update_sessions (greeter);
return remote_sessions;
}
diff --git a/src/lightdm.c b/src/lightdm.c
index 7d35034..910164c 100644
--- a/src/lightdm.c
+++ b/src/lightdm.c
@@ -1142,6 +1142,9 @@ main (int argc, char **argv)
}
}
g_clear_error (&error);
+
+ config_set_string (config_get_instance (), "SeatDefaults", "config-path", config_path);
+
g_free (config_path);
/* Set default values */
diff --git a/src/seat.c b/src/seat.c
index e2b9c2c..a950ea2 100644
--- a/src/seat.c
+++ b/src/seat.c
@@ -1137,6 +1137,7 @@ create_greeter_session (Seat *seat)
greeter_set_hint (greeter_session, "show-manual-login", seat_get_boolean_property (seat, "greeter-show-manual-login") ? "true" : "false");
greeter_set_hint (greeter_session, "show-remote-login", seat_get_boolean_property (seat, "greeter-show-remote-login") ? "true" : "false");
greeter_set_hint (greeter_session, "has-guest-account", seat_get_allow_guest (seat) && seat_get_boolean_property (seat, "greeter-allow-guest") ? "true" : "false");
+ greeter_set_hint (greeter_session, "config-path", seat_get_string_property (seat, "config-path"));
g_object_unref (session_config);

View File

@ -44,16 +44,8 @@ stdenv.mkDerivation rec {
"-I${cairo}/include/cairo"; "-I${cairo}/include/cairo";
postInstall = '' postInstall = ''
cat >$out/share/emacs/site-lisp/site-start.el <<EOF mkdir -p $out/share/emacs/site-lisp/
;; nixos specific load-path cp ${./site-start.el} $out/share/emacs/site-lisp/site-start.el
(when (getenv "NIX_PROFILES") (setq load-path
(append (reverse (mapcar (lambda (x) (concat x "/share/emacs/site-lisp/"))
(split-string (getenv "NIX_PROFILES"))))
load-path)))
;; make tramp work for NixOS machines
(eval-after-load 'tramp '(add-to-list 'tramp-remote-path "/run/current-system/sw/bin"))
EOF
''; '';
doCheck = true; doCheck = true;

View File

@ -0,0 +1,17 @@
;; NixOS specific load-path
(setq load-path
(append (reverse (mapcar (lambda (x) (concat x "/share/emacs/site-lisp/"))
(split-string (or (getenv "NIX_PROFILES") ""))))
load-path))
;;; Make `woman' find the man pages
(eval-after-load 'woman
'(setq woman-manpath
(append (reverse (mapcar (lambda (x) (concat x "/share/man/"))
(split-string (or (getenv "NIX_PROFILES") ""))))
woman-manpath)))
;; Make tramp work for remote NixOS machines
;;; NOTE: You might want to add
(eval-after-load 'tramp
'(add-to-list 'tramp-remote-path "/run/current-system/sw/bin"))

View File

@ -0,0 +1,44 @@
{ stdenv, fetchurl, swt, jdk, makeWrapper, alsaLib }:
let metadata = if stdenv.system == "i686-linux"
then { arch = "x86"; sha256 = "1qmb51k0538pn7gv4nsvhfv33xik4l4af0qmpllkzrikmj8wvzlb"; }
else if stdenv.system == "x86_64-linux"
then { arch = "x86_64"; sha256 = "12af47jhlrh9aq5b3d13l7cdhlndgnfpy61gz002hajbq7i00ixh"; }
else { };
in stdenv.mkDerivation rec {
version = "1.2";
name = "tuxguitar-${version}";
src = fetchurl {
url = "mirror://sourceforge/tuxguitar/${name}-linux-${metadata.arch}.tar.gz";
sha256 = metadata.sha256;
};
buildInputs = [ makeWrapper ];
installPhase = ''
mkdir -p $out/bin
cp -r lib share $out/
cp tuxguitar $out/bin/tuxguitar
cp tuxguitar.jar $out/lib
ln -s $out/share $out/bin/share
wrapProgram $out/bin/tuxguitar \
--set JAVA "${jdk}/bin/java" \
--prefix LD_LIBRARY_PATH : "$out/lib/:${swt}/lib:${alsaLib}/lib" \
--prefix CLASSPATH : "${swt}/jars/swt.jar:$out/lib/tuxguitar.jar:$out/lib/itext.jar"
'';
meta = with stdenv.lib; {
description = "A multitrack guitar tablature editor";
longDescription = ''
TuxGuitar is a multitrack guitar tablature editor and player written
in Java-SWT. It can open GuitarPro, PowerTab and TablEdit files.
'';
homepage = http://www.tuxguitar.com.ar/;
license = licenses.lgpl2;
maintainers = [ maintainers.ardumont ];
platforms = platforms.linux;
};
}

View File

@ -9,12 +9,12 @@
assert stdenv ? glibc; assert stdenv ? glibc;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.6.2"; version = "1.6.3";
name = "darktable-${version}"; name = "darktable-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/darktable-org/darktable/releases/download/release-${version}/darktable-${version}.tar.xz"; url = "https://github.com/darktable-org/darktable/releases/download/release-${version}/darktable-${version}.tar.xz";
sha256 = "1gf5pl4fhak1aqx3dgg0491zgsl6qr6kgyl034hnk4fzwn65zvk6"; sha256 = "13gj5z9dz1847wlbn2cqpkvr64ds8yrn5hacs5wvbqmh0z9v6aw5";
}; };
buildInputs = buildInputs =

View File

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

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl }: { stdenv, fetchurl }:
let let
version = "14.12.1"; version = "15.02.1";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "curaengine-${version}"; name = "curaengine-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/Ultimaker/CuraEngine/archive/${version}.tar.gz"; url = "https://github.com/Ultimaker/CuraEngine/archive/${version}.tar.gz";
sha256 = "1cfns71mjndy2dlmccmjx8ldd0p5v88sqg0jg6ak5c864cvgbjdr"; sha256 = "18fxh910b66s45757zqh8bm5kdxjgvxispjqknqkwl1nrllzmx53";
}; };
installPhase = '' installPhase = ''

View File

@ -0,0 +1,25 @@
{ stdenv, fetchurl, readline, ncurses }:
let
version = "1.16";
in
stdenv.mkDerivation rec {
name = "hstr-${version}";
src = fetchurl {
url = "https://github.com/dvorka/hstr/releases/download/${version}/hh-${version}-src.tgz";
sha256 = "1hl3fn6kravx5gsdsr0l824vnkj5aiz0dybhd3ak932v95b5knyg";
};
buildInputs = [ readline ncurses ];
meta = {
homepage = "https://github.com/dvorka/hstr";
description = "Shell history suggest box - easily view, navigate, search and use your command history";
license = stdenv.lib.licenses.asl20;
maintainers = [ stdenv.lib.maintainers.matthiasbeyer ];
platforms = with stdenv.lib.platforms; linux; # Cannot test others
};
}

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, kdelibs, gettext, xf86_input_wacom }: { stdenv, fetchurl, kdelibs, gettext, xf86_input_wacom }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "wacomtablet-2.0.2"; name = "wacomtablet-2.1.0";
src = fetchurl { src = fetchurl {
url = "http://kde-apps.org/CONTENT/content-files/114856-wacomtablet-2.0.2.tar.xz"; url = "http://kde-apps.org/CONTENT/content-files/114856-wacomtablet-2.1.0.tar.xz";
sha256 = "13k5f5xpka5cbgl24a3j9khqcmp96x1vhynn9v558ag6dg9ch2hw"; sha256 = "17n1p5v2yx517hkqd13pyl3wnrdnh6pfzwf2y2csrfckyndhwk8w";
}; };
buildInputs = [ kdelibs xf86_input_wacom ]; buildInputs = [ kdelibs xf86_input_wacom ];

View File

@ -11,11 +11,11 @@ let
in nodePackages.buildNodePackage rec { in nodePackages.buildNodePackage rec {
name = "keybase-node-client-${version}"; name = "keybase-node-client-${version}";
version = "0.7.0"; version = "0.7.7";
src = [(fetchurl { src = [(fetchurl {
url = "https://github.com/keybase/node-client/archive/v${version}.tar.gz"; url = "https://github.com/keybase/node-client/archive/v${version}.tar.gz";
sha256 = "0n73v4f61rq2dvy2yd3s4l8qvvjzp3ncqj70llm4i6cvbp9kym1v"; sha256 = "1p2plxz4lf5pbrvl5sql00lk459lnxcz7cxc4cdhfzc6h4ql425f";
})]; })];
deps = (filter (v: nixType v == "derivation") (attrValues nodePackages)); deps = (filter (v: nixType v == "derivation") (attrValues nodePackages));

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,34 @@
{ stdenv, fetchurl, pkgs, pythonPackages }:
pythonPackages.buildPythonPackage rec {
version = "0.4.0";
name = "khal-${version}";
src = fetchurl {
url = "https://github.com/geier/khal/archive/v${version}.tar.gz";
sha256 = "0d32miq55cly4q3raxkw3xpq4d5y3hvzaqvy066nv35bdlpafxi1";
};
propagatedBuildInputs = with pythonPackages; [
atomicwrites
click
configobj
dateutil
icalendar
lxml
pkgs.vdirsyncer
pytz
pyxdg
requests_toolbelt
tzlocal
urwid
];
meta = {
homepage = http://lostpackets.de/khal/;
description = "CLI calendar application";
license = stdenv.lib.licenses.mit;
maintainers = with stdenv.lib.maintainers; [ matthiasbeyer ];
};
}

View File

@ -5,10 +5,10 @@ let
s = # Generated upstream information s = # Generated upstream information
rec { rec {
baseName="qpdfview"; baseName="qpdfview";
version = "0.4.14beta1"; version = "0.4.14";
name="${baseName}-${version}"; name="${baseName}-${version}";
url="https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-${version}.tar.gz"; url="https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-${version}.tar.gz";
sha256 = "0ly0xqpgmd1ccsyqs6z0i3w1g4y3ichmibd809bjy344h6fb0m3b"; sha256 = "15d88xzqvrcp9szmz8d1lj65yrdx90j6fp78gia5c8kra2z8bik9";
}; };
buildInputs = [ buildInputs = [
qt4 popplerQt4 pkgconfig djvulibre libspectre cups file ghostscript qt4 popplerQt4 pkgconfig djvulibre libspectre cups file ghostscript

View File

@ -4,185 +4,185 @@
# ruby generate_source.rb > source.nix # ruby generate_source.rb > source.nix
{ {
version = "36.0"; version = "36.0.1";
sources = [ sources = [
{ locale = "ach"; arch = "linux-i686"; sha1 = "089dff0a3623feee0379832ccde522f86fdc448c"; } { locale = "ach"; arch = "linux-i686"; sha1 = "c707c75b403d7e8f93fd1a362e65032a97d000a4"; }
{ locale = "ach"; arch = "linux-x86_64"; sha1 = "ac2ed6ffa8d27ecd978950220288e14c500aefbe"; } { locale = "ach"; arch = "linux-x86_64"; sha1 = "dd11e37acea4ee400b80fbdcfa98f4acbc7d73f6"; }
{ locale = "af"; arch = "linux-i686"; sha1 = "e8d44633f01dffe46e8b1278ddb274eefee556a4"; } { locale = "af"; arch = "linux-i686"; sha1 = "f3df56046427ebee3f2510e6b0b1d5214f9e8682"; }
{ locale = "af"; arch = "linux-x86_64"; sha1 = "f7d364cf00f0058e55e193cc907fd4996f96043b"; } { locale = "af"; arch = "linux-x86_64"; sha1 = "0c064022ffe3fda103e69b03f06a50bab8a496d8"; }
{ locale = "an"; arch = "linux-i686"; sha1 = "85c2b67d8d963d9421559807b8dfb36baa976029"; } { locale = "an"; arch = "linux-i686"; sha1 = "d165d0545866ce3326df5b6246e3e7817025050e"; }
{ locale = "an"; arch = "linux-x86_64"; sha1 = "182b4feeb5c24921c4074ee560e1d2619bc28a25"; } { locale = "an"; arch = "linux-x86_64"; sha1 = "8ed6d2374b44037e8efe1252025303987f5a5b8c"; }
{ locale = "ar"; arch = "linux-i686"; sha1 = "a18be34551fa3352a30cc927746806ea3d0401ed"; } { locale = "ar"; arch = "linux-i686"; sha1 = "ebd74e1c924e935a68e18bc1de78a8525b7a4fe0"; }
{ locale = "ar"; arch = "linux-x86_64"; sha1 = "be45f1db3b2f6128a35313aac0738eb6f3ed53f2"; } { locale = "ar"; arch = "linux-x86_64"; sha1 = "a72295a576621e6305aa4bfecf444a114c2e6955"; }
{ locale = "as"; arch = "linux-i686"; sha1 = "44e5cf86e6318d2c25fa4f9dd9c0bfaf273f6749"; } { locale = "as"; arch = "linux-i686"; sha1 = "1bfea721c70265683682fa004522e1518094313f"; }
{ locale = "as"; arch = "linux-x86_64"; sha1 = "da9d1e7e3e8ed4dbc935ece517e55ae456930e52"; } { locale = "as"; arch = "linux-x86_64"; sha1 = "42144c126408a5450b80e7e5be4aca96b2a88149"; }
{ locale = "ast"; arch = "linux-i686"; sha1 = "c23f59e3452f7393554491a930626495e9855855"; } { locale = "ast"; arch = "linux-i686"; sha1 = "1bb9a1dbd4acffed0e2b31a81062b466f929a498"; }
{ locale = "ast"; arch = "linux-x86_64"; sha1 = "fd2f6ce7d12a7c53fe9d9c11336b88c405859206"; } { locale = "ast"; arch = "linux-x86_64"; sha1 = "ec53f1640289f5866f9c2c136610725a5524ff1e"; }
{ locale = "az"; arch = "linux-i686"; sha1 = "5b92332c155a95b8638506ac1c3dd78e19e277e4"; } { locale = "az"; arch = "linux-i686"; sha1 = "c1396f03ba25ca4a9acf8b6998ce94d422984c68"; }
{ locale = "az"; arch = "linux-x86_64"; sha1 = "5d148d13421bacb3d430e317a41253a0999ed55f"; } { locale = "az"; arch = "linux-x86_64"; sha1 = "ec7368e145b3f7d5e8dc2659fd97bb1008619a42"; }
{ locale = "be"; arch = "linux-i686"; sha1 = "36cfbc4b84a374535cde94643bbdacea3e141c60"; } { locale = "be"; arch = "linux-i686"; sha1 = "3ecc92fdbd51bd5b2a4d4e3744a9e4b6b1bd119f"; }
{ locale = "be"; arch = "linux-x86_64"; sha1 = "0c0ea9dec82efd7baf2c2b382c0ab67d22f7b252"; } { locale = "be"; arch = "linux-x86_64"; sha1 = "e8dc491a4d045a9fb3ad251a59acaffa12b8aac4"; }
{ locale = "bg"; arch = "linux-i686"; sha1 = "80e0068890e6b422f392924f4e317c6d2058695e"; } { locale = "bg"; arch = "linux-i686"; sha1 = "3fab78887d35fac20483c168b05a45cd646d16ab"; }
{ locale = "bg"; arch = "linux-x86_64"; sha1 = "b4f3fa93b7d793560627ec4d51c138d013dd6c00"; } { locale = "bg"; arch = "linux-x86_64"; sha1 = "03035db9fc8f6439d29ac396ae91888dfa2e127d"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha1 = "14f5d14a135fc929ee670078e50567b5461ece8a"; } { locale = "bn-BD"; arch = "linux-i686"; sha1 = "20eb295ef81b17f5427014b1234b6bca5ba34605"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "95f561f92166d9db64ba5e36edaa14d7b4f989a3"; } { locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "85b1af82364dbfbd5c614f2d524f455ab45e3681"; }
{ locale = "bn-IN"; arch = "linux-i686"; sha1 = "07b00a5d4b83d8d0e451ba08325fb44c784453f6"; } { locale = "bn-IN"; arch = "linux-i686"; sha1 = "e9745b0f3d7392a10706c8668faf598b0f9daec4"; }
{ locale = "bn-IN"; arch = "linux-x86_64"; sha1 = "a96e0bafbf811c5bd57fb3e8164e38365386e460"; } { locale = "bn-IN"; arch = "linux-x86_64"; sha1 = "0f54e8f852a4af3fc8567f3b3b383e1dff3c23bd"; }
{ locale = "br"; arch = "linux-i686"; sha1 = "ee51d5b01c4489e5802c130748ee16b0a803dcb9"; } { locale = "br"; arch = "linux-i686"; sha1 = "5ae670b00b932f1732fddde8d8c804501ddd27d3"; }
{ locale = "br"; arch = "linux-x86_64"; sha1 = "0cff437fe8c29705ec9d800d95329309eed540f4"; } { locale = "br"; arch = "linux-x86_64"; sha1 = "2569214acecc2fed7c087b27d047b82ccf42e3be"; }
{ locale = "bs"; arch = "linux-i686"; sha1 = "0d7aef80272ca1de27560b7fe4f8ec892d386b6d"; } { locale = "bs"; arch = "linux-i686"; sha1 = "76fe2cc09da9f87f2178b686787cf55794ec233e"; }
{ locale = "bs"; arch = "linux-x86_64"; sha1 = "b62a905e9e992e3765cf196a18d50f533e2dd69f"; } { locale = "bs"; arch = "linux-x86_64"; sha1 = "d2f70787cc36fceda857fad3c9552d1c4fa1b812"; }
{ locale = "ca"; arch = "linux-i686"; sha1 = "82316407a9745d4dc56d961f5f2282c702950fe2"; } { locale = "ca"; arch = "linux-i686"; sha1 = "ca2f3dc2369c2c2757ef8d8e6258f0b2b192e00d"; }
{ locale = "ca"; arch = "linux-x86_64"; sha1 = "69ae06e06a90a28eb66db4d0df2fdbb5397abc24"; } { locale = "ca"; arch = "linux-x86_64"; sha1 = "771d59990ef2c7199a6a1a7e4a83448df03fc665"; }
{ locale = "cs"; arch = "linux-i686"; sha1 = "c55e80b3d74f6dd494fe1c327053f59bef1c626a"; } { locale = "cs"; arch = "linux-i686"; sha1 = "4acce7f304ff6ac5b07389fbe91e97cf7599b821"; }
{ locale = "cs"; arch = "linux-x86_64"; sha1 = "932f6a15f1445d180df01195c19677cbe63fd18f"; } { locale = "cs"; arch = "linux-x86_64"; sha1 = "a764135d7f7301d1f08b767f7f51a99348d5b2f0"; }
{ locale = "cy"; arch = "linux-i686"; sha1 = "abe63dfde0487c77fa9b3b9c77fcffe0f977b25b"; } { locale = "cy"; arch = "linux-i686"; sha1 = "731b053f99eef029580eec90730a8b2b20624f47"; }
{ locale = "cy"; arch = "linux-x86_64"; sha1 = "89eeb72232affbd54eff30f4c9844f802c0cf243"; } { locale = "cy"; arch = "linux-x86_64"; sha1 = "636b964015a4a2ac2e45092e726c0e64d404582c"; }
{ locale = "da"; arch = "linux-i686"; sha1 = "57232745fa920525721ec6e9b3c3177862b5e096"; } { locale = "da"; arch = "linux-i686"; sha1 = "611b1290d147af331aa193380758cc3dfa3cafdf"; }
{ locale = "da"; arch = "linux-x86_64"; sha1 = "2ba7156b5728f17ab1e55b27ee771722a9171cf1"; } { locale = "da"; arch = "linux-x86_64"; sha1 = "ea7d77e511b4165c7b889113b46389d4998dd50d"; }
{ locale = "de"; arch = "linux-i686"; sha1 = "17fd4dd5e4b2ea39ed20a6d890ea5927532abd38"; } { locale = "de"; arch = "linux-i686"; sha1 = "ca3425c8264c4d9db53a2cbce52519912de7ecf9"; }
{ locale = "de"; arch = "linux-x86_64"; sha1 = "58c72ef01098523392f63209057373b9e793ebb8"; } { locale = "de"; arch = "linux-x86_64"; sha1 = "2d9b99842a185c4063166de5926db46182b258e5"; }
{ locale = "dsb"; arch = "linux-i686"; sha1 = "a3296dd541362c4ca3ce8734faa33512a0fff4fc"; } { locale = "dsb"; arch = "linux-i686"; sha1 = "1ee0b0d3e599b98e5b190f8c7cd5d04a1141203a"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha1 = "c5c7bf61d4923ec9937afa6d261c7f0af64e468f"; } { locale = "dsb"; arch = "linux-x86_64"; sha1 = "24f840a1ff2d00a74c617af81584f6d2907f7b7e"; }
{ locale = "el"; arch = "linux-i686"; sha1 = "be04c1f884f3f0d68fa5c421eb2c8b850bef2a44"; } { locale = "el"; arch = "linux-i686"; sha1 = "5ecb3ea1cdc9211270239b6ec4a9d29bc1b68409"; }
{ locale = "el"; arch = "linux-x86_64"; sha1 = "33ffdffb657a379f2bdb3b39bacc60d59ae9b945"; } { locale = "el"; arch = "linux-x86_64"; sha1 = "fa81057327b718264e82cf6aad2c0e756ab709dc"; }
{ locale = "en-GB"; arch = "linux-i686"; sha1 = "16e2c1cda685b132b0d9378fd5ac22b0e07da320"; } { locale = "en-GB"; arch = "linux-i686"; sha1 = "8f2d51fd2f4fc43c766fa4d8db4180f8129d1a89"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha1 = "89e552187c98fccc6b2270080c530bf7edf3471f"; } { locale = "en-GB"; arch = "linux-x86_64"; sha1 = "4395202bd676e8b6ff41ca946c885f1898fac1cc"; }
{ locale = "en-US"; arch = "linux-i686"; sha1 = "42be4a279ef164a43908a0896cacec6a96b2c23e"; } { locale = "en-US"; arch = "linux-i686"; sha1 = "7f54347e1929c20c1ccbcf3fa9e07749b2fbf0d3"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha1 = "2a9aab1149b2bf59c2b687cb80a6fa550aa263be"; } { locale = "en-US"; arch = "linux-x86_64"; sha1 = "3906fdb4f0fdb0e4e1f21e577099f106e90f02a5"; }
{ locale = "en-ZA"; arch = "linux-i686"; sha1 = "92f42855948bd262266f6239a7f989848703a85f"; } { locale = "en-ZA"; arch = "linux-i686"; sha1 = "5dd5a1e54e72962714dc443677069cd65d5f4f85"; }
{ locale = "en-ZA"; arch = "linux-x86_64"; sha1 = "95250cced67fb3a8eab40bc8db6d70b4efa610c9"; } { locale = "en-ZA"; arch = "linux-x86_64"; sha1 = "2d1c15b66760419f33e67450c51785567d33a1b7"; }
{ locale = "eo"; arch = "linux-i686"; sha1 = "6564b701a3face85aa53ab80024145b58d653ec5"; } { locale = "eo"; arch = "linux-i686"; sha1 = "ab2c3c65b723795c9e5335c3efda8406dd660ff5"; }
{ locale = "eo"; arch = "linux-x86_64"; sha1 = "eaa3337fbca2b182981cae1423357c537a5cc33f"; } { locale = "eo"; arch = "linux-x86_64"; sha1 = "fc35c1ddb53482cdb147a4b8ef5d18b1533f859a"; }
{ locale = "es-AR"; arch = "linux-i686"; sha1 = "05cebf2df8c58c03934340b9d56a1a09e0af9ffc"; } { locale = "es-AR"; arch = "linux-i686"; sha1 = "b2e4991dff339369d07d6e1b7c9c57807010f1e6"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha1 = "d8660257e51bf94c864b27cbbfa2e3ef98ef66f8"; } { locale = "es-AR"; arch = "linux-x86_64"; sha1 = "08358b68d518478ab3e177dc25e44bcc22d6a10b"; }
{ locale = "es-CL"; arch = "linux-i686"; sha1 = "827deacb3439086c263e8a3f168700e510e0158c"; } { locale = "es-CL"; arch = "linux-i686"; sha1 = "dbadd2dd873009d49015d9ba73ff8399c3c923b3"; }
{ locale = "es-CL"; arch = "linux-x86_64"; sha1 = "b905a1b57ccacb8aec34f47126c26ce435edd2d9"; } { locale = "es-CL"; arch = "linux-x86_64"; sha1 = "22d995b08052750addcb06801b5ea46757de48c8"; }
{ locale = "es-ES"; arch = "linux-i686"; sha1 = "189f5230874080d982a23725cafba889db016194"; } { locale = "es-ES"; arch = "linux-i686"; sha1 = "705524e182679992eb6cf943ac6768b7732ae4fb"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha1 = "66f416faac68c156d0c2773a47cc2014ab51b0d1"; } { locale = "es-ES"; arch = "linux-x86_64"; sha1 = "24f1558fe278c92abf89d046dc2ca8b947d878fb"; }
{ locale = "es-MX"; arch = "linux-i686"; sha1 = "1bd21f64057f4ad4e74a2f6ef7c054f0662f95bb"; } { locale = "es-MX"; arch = "linux-i686"; sha1 = "69333c9937dd4430facc52f05e35059433b0c78d"; }
{ locale = "es-MX"; arch = "linux-x86_64"; sha1 = "0bdedcd03eae8fbde6fec2f35a7c1c0d2140f0ff"; } { locale = "es-MX"; arch = "linux-x86_64"; sha1 = "2e28497f7e6aeacf54a4b88ce91338260d5191b0"; }
{ locale = "et"; arch = "linux-i686"; sha1 = "d4a96b30b8f084a6b2d8e58db8e7398db0738606"; } { locale = "et"; arch = "linux-i686"; sha1 = "fb262e3020715e921b9408b8e661e14e8de226b1"; }
{ locale = "et"; arch = "linux-x86_64"; sha1 = "30de382a9941c4f8857938c37e491ec1a2ebfc27"; } { locale = "et"; arch = "linux-x86_64"; sha1 = "d49430fa7328566369046efb6d92da24445b00af"; }
{ locale = "eu"; arch = "linux-i686"; sha1 = "f43ef29288e5129b8335601ea2f45ee9b94c1b82"; } { locale = "eu"; arch = "linux-i686"; sha1 = "56de1040fda96ccd59b010578c91303c57bf7a53"; }
{ locale = "eu"; arch = "linux-x86_64"; sha1 = "cfd741f43b86a1f0a62df2c44898289cd86c2936"; } { locale = "eu"; arch = "linux-x86_64"; sha1 = "04c6e7f3430da79450eb3a96238c11c997feb2fb"; }
{ locale = "fa"; arch = "linux-i686"; sha1 = "02f264a1e2c6dff8d1c1dc70f9af305fa9156c01"; } { locale = "fa"; arch = "linux-i686"; sha1 = "6ab145b3e85c6b001d49004b99c53fd71444646a"; }
{ locale = "fa"; arch = "linux-x86_64"; sha1 = "290d8a53538fe75d1e1d36407c7efa5f56569787"; } { locale = "fa"; arch = "linux-x86_64"; sha1 = "fbe27589194dae4d63c7b9f8a45f3abffba42449"; }
{ locale = "ff"; arch = "linux-i686"; sha1 = "bcfd312781f308de7550a8f12609230c48c353b2"; } { locale = "ff"; arch = "linux-i686"; sha1 = "adaed8878d757ed6b74bd334b138a1c46c438de7"; }
{ locale = "ff"; arch = "linux-x86_64"; sha1 = "eddd9175de24bc429c04be01e4af6af6f7003065"; } { locale = "ff"; arch = "linux-x86_64"; sha1 = "91a9fecbcb65067c420b0338dbcbf37d4bc4ed20"; }
{ locale = "fi"; arch = "linux-i686"; sha1 = "3cf088f03c3003f1888645b06311e7f46007df83"; } { locale = "fi"; arch = "linux-i686"; sha1 = "3e31d26155648b3148f8e0340db84e5725435b58"; }
{ locale = "fi"; arch = "linux-x86_64"; sha1 = "a01a6fd604471cbd69c5046ec5e13f01ca63457a"; } { locale = "fi"; arch = "linux-x86_64"; sha1 = "17a8e273c9dbf82d4f86b81426f07af62a49ee6a"; }
{ locale = "fr"; arch = "linux-i686"; sha1 = "e8e3caf2ceef2ae8a645806731bf99572244fb24"; } { locale = "fr"; arch = "linux-i686"; sha1 = "8fa301bb3c7f8bd713c2bfa6768b73bd02a38de4"; }
{ locale = "fr"; arch = "linux-x86_64"; sha1 = "753a4bab9ce3016e773d4afa7ad9d14f7746cf4e"; } { locale = "fr"; arch = "linux-x86_64"; sha1 = "ddd0bf1ce6a6fc70eb48e9bd72a52b20b78f2256"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha1 = "d0b3719b07b2c3fbe9c05ba30012331641c09d2b"; } { locale = "fy-NL"; arch = "linux-i686"; sha1 = "264d6237f00cbacbdfc3d47385c349422394cdd7"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "9e8ccf90e0687aa112d48f0faeffdee58f41ea95"; } { locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "7f9dfde56e776f16d30df9e3fc6853f8001d9837"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha1 = "a3fbc0aaf36e444ea10c4b0593ad3ec07e100147"; } { locale = "ga-IE"; arch = "linux-i686"; sha1 = "c032daf124507e56be02d15df8b651c814ec105b"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "ed1e7b3c62dbb97bfef8b6512b8032b7bd8d2c9e"; } { locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "2032c9e8c23fcf3ecc1db6eccfff921f6a49d734"; }
{ locale = "gd"; arch = "linux-i686"; sha1 = "49fc536511bdaa096086408385ae70cace64fb0b"; } { locale = "gd"; arch = "linux-i686"; sha1 = "4ba7388a13dedc7ad7d1d83742d9f7f8c211aa76"; }
{ locale = "gd"; arch = "linux-x86_64"; sha1 = "67de65f4ae8accda417cd8fc9082160a4a46cc06"; } { locale = "gd"; arch = "linux-x86_64"; sha1 = "96ff03ffc0495ae4042dd6d37cd7aa2c9748b7c2"; }
{ locale = "gl"; arch = "linux-i686"; sha1 = "dd239f26f4d758294ce21dc1ffebe9e02584e05d"; } { locale = "gl"; arch = "linux-i686"; sha1 = "43c4c6e2dcc364711f5368ad1efe223df5fda4d5"; }
{ locale = "gl"; arch = "linux-x86_64"; sha1 = "1b9d06b047de0c66485f2c7b642b6edddd7dacc3"; } { locale = "gl"; arch = "linux-x86_64"; sha1 = "bbd0443d6ed8598ae78a71b834c3b4c4e2d599cc"; }
{ locale = "gu-IN"; arch = "linux-i686"; sha1 = "a191408d96e73da4ecda1faa2510dec307a3442b"; } { locale = "gu-IN"; arch = "linux-i686"; sha1 = "6ee1707123bb560fe7b1dc39165c4a4250565cc4"; }
{ locale = "gu-IN"; arch = "linux-x86_64"; sha1 = "5bf621a4fe1a625b70df63b53930a3a5ee922405"; } { locale = "gu-IN"; arch = "linux-x86_64"; sha1 = "6254300eddc173e888cfb70db612ef7fa41aa2e7"; }
{ locale = "he"; arch = "linux-i686"; sha1 = "95b84a18316a74e8fcd7d16fd6e9c1fea6778510"; } { locale = "he"; arch = "linux-i686"; sha1 = "de203188d6b68e8a7c24bf0bea40342535897a9b"; }
{ locale = "he"; arch = "linux-x86_64"; sha1 = "548545c4d46c296aa9d922ee5a14312a9677822c"; } { locale = "he"; arch = "linux-x86_64"; sha1 = "598d0d0d1eb22ed7378c8aaced43ebe91f0ab305"; }
{ locale = "hi-IN"; arch = "linux-i686"; sha1 = "5a5e53167fe9050bc9482d61d17f6808cc655407"; } { locale = "hi-IN"; arch = "linux-i686"; sha1 = "809126d150b1fbd42e7bcdd14c032bfb11797f46"; }
{ locale = "hi-IN"; arch = "linux-x86_64"; sha1 = "36e3df183cf2b5b645cb2d89b90b640b7f3697f2"; } { locale = "hi-IN"; arch = "linux-x86_64"; sha1 = "c940ec3a10d61d47a891fc538c9076af90cda65b"; }
{ locale = "hr"; arch = "linux-i686"; sha1 = "fa1a4482857b788c49d04f6a5c3eeada25c2ac52"; } { locale = "hr"; arch = "linux-i686"; sha1 = "a85b937eac26926f8f69d5181d27504b06284b63"; }
{ locale = "hr"; arch = "linux-x86_64"; sha1 = "e641cf2b562c6b391e24601d4f3ceefb7117d02a"; } { locale = "hr"; arch = "linux-x86_64"; sha1 = "288262d030c80308e725de8ad39914509a538526"; }
{ locale = "hsb"; arch = "linux-i686"; sha1 = "b1fc4cad22c66824297aec7c82053d1f7611f108"; } { locale = "hsb"; arch = "linux-i686"; sha1 = "9b084622ae514854bf01c6977c31d77f5d83de59"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha1 = "1c2db6cf0a14002ad4c473ab1ff1fcd7f4543ca4"; } { locale = "hsb"; arch = "linux-x86_64"; sha1 = "249f387302c44f79eef12d336af81eab07ea6463"; }
{ locale = "hu"; arch = "linux-i686"; sha1 = "4c5a90ed0cb4d6930a3eab0a2ec216805d680895"; } { locale = "hu"; arch = "linux-i686"; sha1 = "c646b79ba6c74823caad11aca9ddc2ca8051117e"; }
{ locale = "hu"; arch = "linux-x86_64"; sha1 = "c71c7e68c493bd9ecb407f32c8896b41ecfe95d5"; } { locale = "hu"; arch = "linux-x86_64"; sha1 = "f1436bd0c5ca9ba23eb50caef9a6cc4c5dad74d8"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha1 = "01536fa2739a9dd68e713f4e4e41dac5f2b58422"; } { locale = "hy-AM"; arch = "linux-i686"; sha1 = "9523c995e785efda19bf0cfd08fa7399b37138b3"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "b19d7fab445ed314ca8076d0b837c0e15407649d"; } { locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "2992ebd3a86bbca04e443d1f55d73a876a8b4505"; }
{ locale = "id"; arch = "linux-i686"; sha1 = "163e7a14d274a10780a18201afa7dfae27bf5967"; } { locale = "id"; arch = "linux-i686"; sha1 = "0bd17d152d738ba6a57da12f333fa9d942fbd274"; }
{ locale = "id"; arch = "linux-x86_64"; sha1 = "d1108b006c607f470543915d8956394a1b767c27"; } { locale = "id"; arch = "linux-x86_64"; sha1 = "1bbed6d2d3ffc2ed91c6f4badd5243af17fe63ca"; }
{ locale = "is"; arch = "linux-i686"; sha1 = "5460b7445462f786f138a755615f3970fbdc7274"; } { locale = "is"; arch = "linux-i686"; sha1 = "90c33bf3896565df30b104d271cf4aa1d09d67d1"; }
{ locale = "is"; arch = "linux-x86_64"; sha1 = "e5ec0cff0f1c88f0b2a4444ef9d71bbeb3541772"; } { locale = "is"; arch = "linux-x86_64"; sha1 = "05e1f66bc84dd2ce1b142ee64b420eae3321f172"; }
{ locale = "it"; arch = "linux-i686"; sha1 = "39cab2de100e4a1a2783659cab5c7247e230aa11"; } { locale = "it"; arch = "linux-i686"; sha1 = "b11e6172e8040fe0c6749a684e0073fdb5a19402"; }
{ locale = "it"; arch = "linux-x86_64"; sha1 = "b21a1d214bddd8f074d0d0a06d64c4aa35580c68"; } { locale = "it"; arch = "linux-x86_64"; sha1 = "5c47ffa4b944c71576017c684ab8ebd78fc52d08"; }
{ locale = "ja"; arch = "linux-i686"; sha1 = "b78dd34339c68348de753c66d6e12a78748aa261"; } { locale = "ja"; arch = "linux-i686"; sha1 = "acae3c28497f4ae7937f4bd38174e5a30b009475"; }
{ locale = "ja"; arch = "linux-x86_64"; sha1 = "e4a1720278debf305c3f353bbafe35384b72bd61"; } { locale = "ja"; arch = "linux-x86_64"; sha1 = "d3610648b5a7f1bc223fb36ca94ee4d8f25060f7"; }
{ locale = "kk"; arch = "linux-i686"; sha1 = "371dc2118f8917d2fb904d07e23214728db13118"; } { locale = "kk"; arch = "linux-i686"; sha1 = "0d4185c11d9a4ed7f2c554fd322b6a5a0fdacf53"; }
{ locale = "kk"; arch = "linux-x86_64"; sha1 = "e4a4742b0f2efbb2491b501147bb1115f64b081d"; } { locale = "kk"; arch = "linux-x86_64"; sha1 = "189ee9cb3c88809dc9dc4c7dbde2ccafa333a432"; }
{ locale = "km"; arch = "linux-i686"; sha1 = "4ad8c7a8821043a635e78f41f6da4ab6ffb334c2"; } { locale = "km"; arch = "linux-i686"; sha1 = "8e39eb920380bcb87aaf48a69ea53bbf6abba2c7"; }
{ locale = "km"; arch = "linux-x86_64"; sha1 = "0f4685c194054dccaac5aec9fd27f6c74ed82148"; } { locale = "km"; arch = "linux-x86_64"; sha1 = "8770649702e38783e3e2841ce0ce66f068a4b23d"; }
{ locale = "kn"; arch = "linux-i686"; sha1 = "427b395693c8ce5d1f970f2c3a47d097785dcdea"; } { locale = "kn"; arch = "linux-i686"; sha1 = "e0407f7df92240aa866ba981c9054760cdc07cd9"; }
{ locale = "kn"; arch = "linux-x86_64"; sha1 = "15e28abebde39ebafe916523b658463087be73db"; } { locale = "kn"; arch = "linux-x86_64"; sha1 = "f4558f7edab4f85612d8280cf8ab131492854ba8"; }
{ locale = "ko"; arch = "linux-i686"; sha1 = "919862720789c005e1773b4da3427fa56c3d0528"; } { locale = "ko"; arch = "linux-i686"; sha1 = "373b7ef465500dcc7bbe9a48e113f26bc4a6a27b"; }
{ locale = "ko"; arch = "linux-x86_64"; sha1 = "aa38b625f9bab73669919c0ad36221f7c887186e"; } { locale = "ko"; arch = "linux-x86_64"; sha1 = "8c8b0fe42a644c29ebafd1aa7b82733b7c5d6bb4"; }
{ locale = "lij"; arch = "linux-i686"; sha1 = "abc21985aa1de2fa256283f03fd3b98e147ccd3a"; } { locale = "lij"; arch = "linux-i686"; sha1 = "a22f113cde99557fa8973776e19f6bf4cfff1114"; }
{ locale = "lij"; arch = "linux-x86_64"; sha1 = "8b811ce3fe2528d33a0f00a7c3292b9cb37eb1b1"; } { locale = "lij"; arch = "linux-x86_64"; sha1 = "dd7917fb9c1e8bbd1db503829c8bdf1d5a935769"; }
{ locale = "lt"; arch = "linux-i686"; sha1 = "601dd265370ee7514a2cdf6739bfbd3d59d450d6"; } { locale = "lt"; arch = "linux-i686"; sha1 = "8887a493a938d10ee63630cda8ef9b3a03f01a1e"; }
{ locale = "lt"; arch = "linux-x86_64"; sha1 = "c13736cb853a35f1b6583d89b9ded90302acb637"; } { locale = "lt"; arch = "linux-x86_64"; sha1 = "8fca22b9076082e859f0dff2afe7ccb245ee0fad"; }
{ locale = "lv"; arch = "linux-i686"; sha1 = "09910ed1364063efc07e24a78224d1fc93b2196b"; } { locale = "lv"; arch = "linux-i686"; sha1 = "a5e4a7c95f336ca6664fee8b16e002a44561effb"; }
{ locale = "lv"; arch = "linux-x86_64"; sha1 = "0a6132a1080e084c9e4a691bce7e12459cec817b"; } { locale = "lv"; arch = "linux-x86_64"; sha1 = "e69bdda0ae0b3782a10e64ed3fd85ab19c7630a2"; }
{ locale = "mai"; arch = "linux-i686"; sha1 = "262c75582645c2ee1c92552263aab7fe35483bc3"; } { locale = "mai"; arch = "linux-i686"; sha1 = "1efb4b5f649f219cf66f148297b5f669fb4dc16f"; }
{ locale = "mai"; arch = "linux-x86_64"; sha1 = "d76755153a0656c2fd17db53c40f493a0f0dcab6"; } { locale = "mai"; arch = "linux-x86_64"; sha1 = "7ad1e9472c812e71e358e67021aa0a07a0d97062"; }
{ locale = "mk"; arch = "linux-i686"; sha1 = "787ec5a7ccf9b9bd116917de752e9b411e37fe5f"; } { locale = "mk"; arch = "linux-i686"; sha1 = "bb96c1a1d5f371ecbed4b9c6e3ae1d244e582f6f"; }
{ locale = "mk"; arch = "linux-x86_64"; sha1 = "2de12f1514a47f8c0ee8a166c7c6d68d8c966824"; } { locale = "mk"; arch = "linux-x86_64"; sha1 = "a4d18deaa48a23f588b7d8db4973a37764e97449"; }
{ locale = "ml"; arch = "linux-i686"; sha1 = "807bea1339fa44c2f1d9af264539d1f550235e62"; } { locale = "ml"; arch = "linux-i686"; sha1 = "961f1ca920469c5f95ec875fbc33a913ae2a1986"; }
{ locale = "ml"; arch = "linux-x86_64"; sha1 = "aeca07821afbfc0ec1763fd30da7098e27f11b19"; } { locale = "ml"; arch = "linux-x86_64"; sha1 = "c662ac25845f9f83cee846a3b02f41186ed7c83e"; }
{ locale = "mr"; arch = "linux-i686"; sha1 = "d431e48ecec721b996ab6f63b99ada14ac8bbbe5"; } { locale = "mr"; arch = "linux-i686"; sha1 = "7b01dc5ce1dd97f5b2c3b39783eaa06556dd03da"; }
{ locale = "mr"; arch = "linux-x86_64"; sha1 = "fb60740faf4aa2d98821c77b28be29f456707d37"; } { locale = "mr"; arch = "linux-x86_64"; sha1 = "2940bacdbc3f021ad421097e94017627cf59d655"; }
{ locale = "ms"; arch = "linux-i686"; sha1 = "5ef013dd820a0c945cea2f131573ffbac5693391"; } { locale = "ms"; arch = "linux-i686"; sha1 = "624edc402de71fec31b63e01a9a1f2b79b3c5db3"; }
{ locale = "ms"; arch = "linux-x86_64"; sha1 = "c6d211c224711eb33b8ce55605e140cc09492bd1"; } { locale = "ms"; arch = "linux-x86_64"; sha1 = "30dceab395c15909d55ede343071a1fcea21af7b"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha1 = "6678b16af728fe90c7b58d9e5e0a3aa01ca40ca1"; } { locale = "nb-NO"; arch = "linux-i686"; sha1 = "958f0e5ffa8911eee58883b22fbf6db18d1fe1a0"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "2c77fe81d3723a9be4926bbfcfb904edc928649a"; } { locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "b0bc728560beb154ca2b9bd8e5c607458afa88f2"; }
{ locale = "nl"; arch = "linux-i686"; sha1 = "45ee40efa93fc973e8c8d5f70f5155132f5a073b"; } { locale = "nl"; arch = "linux-i686"; sha1 = "77976787dfa2464cd859bb3c3245fddd6cfd5c02"; }
{ locale = "nl"; arch = "linux-x86_64"; sha1 = "29f74d404f90711974187120f8589c18125dba1e"; } { locale = "nl"; arch = "linux-x86_64"; sha1 = "ba47a63624bd64597dde61dfbf04c94eaada4900"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha1 = "162d5e2270488d40a60cb3c1e07aded76a82ba1d"; } { locale = "nn-NO"; arch = "linux-i686"; sha1 = "d35fdb72fd1afee6310ab4e8a764e75804822226"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "40af304764aa36609e3969bde13ace2745bf43d8"; } { locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "848c8d69a53ad6841ecb38d7ea93b37a70b182d8"; }
{ locale = "or"; arch = "linux-i686"; sha1 = "721e06a231398af851bbaef046b69349b9c42e9f"; } { locale = "or"; arch = "linux-i686"; sha1 = "f7b83449922833f438acd3ee9b3bdbd1ceb8d578"; }
{ locale = "or"; arch = "linux-x86_64"; sha1 = "925cb0a0bf1544b4a95abd3bf1e6bf14017b7c89"; } { locale = "or"; arch = "linux-x86_64"; sha1 = "a9f255e2fdcdd8b5d95026af2dfc6b90da7eed64"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha1 = "37f8b5ac56fcbda135b2ec5fd9ca7bfdb70d496e"; } { locale = "pa-IN"; arch = "linux-i686"; sha1 = "1a1552f9ae38db0314550831711a674c50a3c9d1"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "fabd53bf219b5c4e8b7f70e7ce82ab85609fcc01"; } { locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "eea36a9355b0d0e3477a51d7ea8cbe46745fbbf2"; }
{ locale = "pl"; arch = "linux-i686"; sha1 = "773977cbd1146de1699b7c25b7a382bec8d0f55c"; } { locale = "pl"; arch = "linux-i686"; sha1 = "6f7c3ea9d43bae1d9177c41a60b6e568081c33f2"; }
{ locale = "pl"; arch = "linux-x86_64"; sha1 = "b3e5db98279b7425e5a1027bdfbddf8b2ba316ae"; } { locale = "pl"; arch = "linux-x86_64"; sha1 = "b6b7b6ae8391ff342bcc0f3fd3b14e7189f9ea02"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha1 = "fea58817e88b9e1709f1661a6465ff60e4463793"; } { locale = "pt-BR"; arch = "linux-i686"; sha1 = "d474f48517529dbeb5bc12ad57b28cc1bdd3cf28"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "4e05bcc1f9dc58b6fa02aaafbfab67d185d12521"; } { locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "a8906806231ecb44c6368eb22dfa01a21c05bf89"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha1 = "1fd067546d5d203ef201691205244ce7bd0dd96c"; } { locale = "pt-PT"; arch = "linux-i686"; sha1 = "4910bd75b9566ba8fb1392c69610c6db527cc87c"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "b53ae8e66d220c5a66cbd32c8762eb6a13634297"; } { locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "9205b1556359844144275f2a768f7ab74edc5519"; }
{ locale = "rm"; arch = "linux-i686"; sha1 = "edc6d8dc42d7d7ee6ea6e781bcfb346ae8d7f006"; } { locale = "rm"; arch = "linux-i686"; sha1 = "27b825a7eae976a53579cf1fed1509cd4f817023"; }
{ locale = "rm"; arch = "linux-x86_64"; sha1 = "12fd2cb3ac781490c433003b743055a67348ef04"; } { locale = "rm"; arch = "linux-x86_64"; sha1 = "03362ade5b3b5a030611cbb03767421bae1a2fe4"; }
{ locale = "ro"; arch = "linux-i686"; sha1 = "87b92ed3e53f7fbed86ff1e4c6143de3c52b2f87"; } { locale = "ro"; arch = "linux-i686"; sha1 = "75be442bb19172111ad2189bad0232839db53dfa"; }
{ locale = "ro"; arch = "linux-x86_64"; sha1 = "be0daa8a275ca40a8be609d24290a35a74b3ee36"; } { locale = "ro"; arch = "linux-x86_64"; sha1 = "4879b5f99852b7bf8f36237e121c6f3f58db395c"; }
{ locale = "ru"; arch = "linux-i686"; sha1 = "827b057a99f1c56f4a66f1f9e8e5de2a45f68471"; } { locale = "ru"; arch = "linux-i686"; sha1 = "2d447694af3e95669be993235eb239ff74c75aef"; }
{ locale = "ru"; arch = "linux-x86_64"; sha1 = "3f390efc29e49aae39d0030880a3b26cf8cd6318"; } { locale = "ru"; arch = "linux-x86_64"; sha1 = "227e369a35018d43d1ae6eb1b7859d289df15362"; }
{ locale = "si"; arch = "linux-i686"; sha1 = "7094d0d07dceae2e5a164d585e04799fd9a86a8b"; } { locale = "si"; arch = "linux-i686"; sha1 = "5c8ac234d851c0860b5f79f33b07c80f710776a2"; }
{ locale = "si"; arch = "linux-x86_64"; sha1 = "7a852dc124c1f207610aaf884119ae8804caaa41"; } { locale = "si"; arch = "linux-x86_64"; sha1 = "703b7a9557e43d196b34a498e5d08a0d582edf9b"; }
{ locale = "sk"; arch = "linux-i686"; sha1 = "2439f765924307b9d2d00ce32c13384839e39d5c"; } { locale = "sk"; arch = "linux-i686"; sha1 = "5b8ac9ead4f2886b21af1512b6942fb5e1acefa1"; }
{ locale = "sk"; arch = "linux-x86_64"; sha1 = "6017d51322d4d838449d6edf969803c1281e9229"; } { locale = "sk"; arch = "linux-x86_64"; sha1 = "ffee2ee4d0e47dfe252868f602a0d4c991cc890f"; }
{ locale = "sl"; arch = "linux-i686"; sha1 = "cfb6d7bdfd5abf6815381997d8f19710711017b9"; } { locale = "sl"; arch = "linux-i686"; sha1 = "836295228c78541efe1a21e5b64671dd8b9ec00c"; }
{ locale = "sl"; arch = "linux-x86_64"; sha1 = "e7cf289bd59a6499f018d403a5ad661fd117073b"; } { locale = "sl"; arch = "linux-x86_64"; sha1 = "4109e25e578d7af567f37062a753bdfcee394092"; }
{ locale = "son"; arch = "linux-i686"; sha1 = "e49233842e845f67d090b84caa86d9209bc5e79e"; } { locale = "son"; arch = "linux-i686"; sha1 = "34427023f9eeaa0c9924672fc59a58890b35635d"; }
{ locale = "son"; arch = "linux-x86_64"; sha1 = "dfaaa438d97fa3e0839b75144ba921898114f593"; } { locale = "son"; arch = "linux-x86_64"; sha1 = "12cda45700a294b72f94560e421c88dbf04ceb4b"; }
{ locale = "sq"; arch = "linux-i686"; sha1 = "d80a35017d041e2e4bd3a8f0925bb11d696b2ad7"; } { locale = "sq"; arch = "linux-i686"; sha1 = "1d3970aaa293e06b6a430cb73ccfafaf043a2364"; }
{ locale = "sq"; arch = "linux-x86_64"; sha1 = "f1f940683602b808962317e0da9adc82d2e81c03"; } { locale = "sq"; arch = "linux-x86_64"; sha1 = "0a49d2f6fed69ef22698e1ba98b8cbb008debc84"; }
{ locale = "sr"; arch = "linux-i686"; sha1 = "2a82cd867d939131b1985dcfeaf0d9d2a8682edf"; } { locale = "sr"; arch = "linux-i686"; sha1 = "ed6796f73a3e34db680414a5f7b17c4d326be884"; }
{ locale = "sr"; arch = "linux-x86_64"; sha1 = "ce4e49019bf1065610b862aaaec900d509561a5c"; } { locale = "sr"; arch = "linux-x86_64"; sha1 = "f22376834d160c165534f2e8ecbdad3273f46334"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha1 = "c3a9e5d86fe94ff9f22a3f891b604379ab1374ea"; } { locale = "sv-SE"; arch = "linux-i686"; sha1 = "24140ca9e8acbc64ad553a528acb057c67240c00"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "cc397d3ce95ccb4c957f05f90ac6eec28cbc383e"; } { locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "875c60949b97edf2a951f470139153eafad03c9d"; }
{ locale = "ta"; arch = "linux-i686"; sha1 = "9ed781079e459942141597671a7ba13eef65bdf1"; } { locale = "ta"; arch = "linux-i686"; sha1 = "4adc26d74d6a0ec3fc80e5979750ed19ac93e290"; }
{ locale = "ta"; arch = "linux-x86_64"; sha1 = "fbd5dc0126e6df1ebebcc270f58d16344a46ee49"; } { locale = "ta"; arch = "linux-x86_64"; sha1 = "24b6a6f4a16b5a19b340949d326203e1d1cdd2cc"; }
{ locale = "te"; arch = "linux-i686"; sha1 = "7c29cc8335b9d4d3d9210c77caac74d25d477cdc"; } { locale = "te"; arch = "linux-i686"; sha1 = "4584c8b93624af4f630c759178d8857103ce6fca"; }
{ locale = "te"; arch = "linux-x86_64"; sha1 = "be02910dd1abc92d3754332e56274cc977773f64"; } { locale = "te"; arch = "linux-x86_64"; sha1 = "4b810afe09e317593e3fe269c5d686336cd3524f"; }
{ locale = "th"; arch = "linux-i686"; sha1 = "259edc8e888fdc32c714a45cf9599d15111f14e3"; } { locale = "th"; arch = "linux-i686"; sha1 = "c7b00a159fee121e5ff8f9e2248d6ae1a511647f"; }
{ locale = "th"; arch = "linux-x86_64"; sha1 = "934b28f0936b8ac9a395c906f9ca04150c9f79db"; } { locale = "th"; arch = "linux-x86_64"; sha1 = "4c0e26054226ccea1093a809a272cfd12d8af2ed"; }
{ locale = "tr"; arch = "linux-i686"; sha1 = "be173ce377a1a3ece05fb708316d79a880708137"; } { locale = "tr"; arch = "linux-i686"; sha1 = "b0844d25d0c9307675559a52e7c6a097615c403d"; }
{ locale = "tr"; arch = "linux-x86_64"; sha1 = "52a94b0a3fb58c256b66019d9b8c8f5ab420f3e6"; } { locale = "tr"; arch = "linux-x86_64"; sha1 = "67dfc61732853e99be82054344f59768b831d6d0"; }
{ locale = "uk"; arch = "linux-i686"; sha1 = "fc8e6574ef667c6a2de19cb82bec4bc47b85f907"; } { locale = "uk"; arch = "linux-i686"; sha1 = "d9a640765b27e192948e8b485ef4a7005513de29"; }
{ locale = "uk"; arch = "linux-x86_64"; sha1 = "bace7c6ffd9f02b0d6e24046f42c64b96db1a84a"; } { locale = "uk"; arch = "linux-x86_64"; sha1 = "c619fd93d8e9650482e3e1d639310b470f1c914b"; }
{ locale = "uz"; arch = "linux-i686"; sha1 = "1df792bf6b364632a0882ac055d9fee3b537e5c2"; } { locale = "uz"; arch = "linux-i686"; sha1 = "561a2c6d943908d4b3bcd2c80895d43b141d1a2b"; }
{ locale = "uz"; arch = "linux-x86_64"; sha1 = "f77c0bd068b1c44d20027793a826714262d38351"; } { locale = "uz"; arch = "linux-x86_64"; sha1 = "c287e06e19fb45f265d314fb5199af5c449464a0"; }
{ locale = "vi"; arch = "linux-i686"; sha1 = "8b367c6fee817dbb12e4c54b35df8a6d09900f33"; } { locale = "vi"; arch = "linux-i686"; sha1 = "469cb11ded0712ad3fe9c3cc01df74e6b566c845"; }
{ locale = "vi"; arch = "linux-x86_64"; sha1 = "307dee3afe576025524dee35904e70351cf03432"; } { locale = "vi"; arch = "linux-x86_64"; sha1 = "4d9e3f2ea7ab3ee76bf7d41fc6936915b18d45db"; }
{ locale = "xh"; arch = "linux-i686"; sha1 = "b04a6593e912a40d20be3c90cca3c7cdcd893e92"; } { locale = "xh"; arch = "linux-i686"; sha1 = "f48a638f685a7754ae23626a4d2e8209d5272b9c"; }
{ locale = "xh"; arch = "linux-x86_64"; sha1 = "6abfc8532600cdd20ce53923913d50b7eeb52ac8"; } { locale = "xh"; arch = "linux-x86_64"; sha1 = "a1bbf7e645291eaa7ccece17b13461d7f239f334"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha1 = "5d57176765f3be64230f36aa292992adf4a3c48c"; } { locale = "zh-CN"; arch = "linux-i686"; sha1 = "ca839f0034807715d7bccb0f97e4ffd7dbcf8e17"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "df6d9a163dddacbd58591bd9572b16c7364eda2c"; } { locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "6dd09c5d50ce206931d1e1f6310fe4a55d8eddd4"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha1 = "92fa3a666d858427f2a0102d85320b567c43ee40"; } { locale = "zh-TW"; arch = "linux-i686"; sha1 = "1265d89ca47aa9f9f4f3a7825cef622a9ac2b18a"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "b11d2d33c335bd471b6762e39c646303b3345ba4"; } { locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "2464e2c81407987ff9bb2b682b71f3b8f94aa455"; }
]; ];
} }

View File

@ -22,11 +22,11 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gajim-${version}"; name = "gajim-${version}";
version = "0.16"; version = "0.16.1";
src = fetchurl { src = fetchurl {
url = "http://www.gajim.org/downloads/0.16/gajim-${version}.tar.bz2"; url = "http://www.gajim.org/downloads/0.16/gajim-${version}.tar.bz2";
sha256 = "14x15jwgl0c6vwj02ccpzmxr3fczp632mnj50cpklbaj4bxqvgbs"; sha256 = "1gp8mdn6sz2pks5irsf563zbz98ldqksfky84ga9fzqndmq35bi6";
}; };
patches = [ patches = [

View File

@ -4,12 +4,12 @@ with goPackages;
buildGoPackage rec { buildGoPackage rec {
name = "syncthing-${version}"; name = "syncthing-${version}";
version = "0.10.24"; version = "0.10.25";
goPackagePath = "github.com/syncthing/syncthing"; goPackagePath = "github.com/syncthing/syncthing";
src = fetchgit { src = fetchgit {
url = "git://github.com/syncthing/syncthing.git"; url = "git://github.com/syncthing/syncthing.git";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
sha256 = "9c79f62a10c88fe5d3452f16b0f8ed9cde5a70ec82aaec1e7b99cc1fb41a3dda"; sha256 = "fcb6fbcd37bdcf07d2960d143209b7697ee705286754ead4cc5e6bd95cd0acb8";
}; };
subPackages = [ "cmd/syncthing" ]; subPackages = [ "cmd/syncthing" ];

View File

@ -0,0 +1,18 @@
Description: Add check for buffer overflow with malformed input files
Author: <eriks@debian.org>
Bug-Debian: http://bugs.debian.org/407015
Last-Update: 2009-06-03
--- antiword-0.37~/wordole.c 2005-08-26 21:49:57.000000000 +0200
+++ antiword-0.37/wordole.c 2009-06-03 22:31:15.948014682 +0200
@@ -259,6 +259,10 @@
}
tNameSize = (size_t)usGetWord(0x40, aucBytes);
tNameSize = (tNameSize + 1) / 2;
+ if ( tNameSize > sizeof(atPPSlist[iIndex].szName)) {
+ werr(0, "Name Size of PPS %d is too large", iIndex);
+ tNameSize = sizeof(atPPSlist[iIndex].szName);
+ }
vName2String(atPPSlist[iIndex].szName, aucBytes, tNameSize);
atPPSlist[iIndex].ucType = ucGetByte(0x42, aucBytes);
if (atPPSlist[iIndex].ucType == 5) {

View File

@ -11,10 +11,12 @@ stdenv.mkDerivation {
sha256 = "1b7mi1l20jhj09kyh0bq14qzz8vdhhyf35gzwsq43mn6rc7h0b4f"; sha256 = "1b7mi1l20jhj09kyh0bq14qzz8vdhhyf35gzwsq43mn6rc7h0b4f";
}; };
patchPhase = '' preInstall = ''
sed -i -e "s|/usr/local/bin|$out/bin|g" -e "s|/usr/share|$out/share|g" Makefile antiword.h sed -i -e "s|/usr/local/bin|$out/bin|g" -e "s|/usr/share|$out/share|g" Makefile antiword.h
''; '';
patches = [ ./10_fix_buffer_overflow_wordole_c.patch ];
installTargets = "global_install"; installTargets = "global_install";
meta = { meta = {

View File

@ -24,8 +24,8 @@ let
langsSpaces = stdenv.lib.concatStringsSep " " langs; langsSpaces = stdenv.lib.concatStringsSep " " langs;
major = "4"; major = "4";
minor = "4"; minor = "4";
patch = "0"; patch = "1";
tweak = "3"; tweak = "2";
subdir = "${major}.${minor}.${patch}"; subdir = "${major}.${minor}.${patch}";
version = "${subdir}${if tweak == "" then "" else "."}${tweak}"; version = "${subdir}${if tweak == "" then "" else "."}${tweak}";
@ -80,14 +80,14 @@ let
translations = fetchSrc { translations = fetchSrc {
name = "translations"; name = "translations";
sha256 = "0y94sry2cghc82628smka7qb1xqlgrgvy98bxd2fpqfkd1llcqfg"; sha256 = "0a1p9jd9lgb1mxnj4c55yrlc7q2dsm5s9cyax6cwaya2q5m5xhnk";
}; };
# TODO: dictionaries # TODO: dictionaries
help = fetchSrc { help = fetchSrc {
name = "help"; name = "help";
sha256 = "05al25vcz2z6fhm8vx77wa47nyi3r0hwll6mg2aclx7yp0s5k01d"; sha256 = "042xp6xz3gb75k332xclwfjyik63zgcw5135967nclim1sl8rgh7";
}; };
}; };
@ -97,7 +97,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz"; url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
sha256 = "1xqc60ckay6xpljipcbm4915qqwk81dm2fbpxwfqc2l4gv9g6s6i"; sha256 = "0pa7gf29sgsl6kxs7j1x1zl4ycv682wrj1dg22qc0kb7aijhpm2f";
}; };
# Openoffice will open libcups dynamically, so we link it directly # Openoffice will open libcups dynamically, so we link it directly

View File

@ -74,10 +74,13 @@ buildPythonPackage rec {
# path to the executable in argv[0] therefore the wrapper is # path to the executable in argv[0] therefore the wrapper is
# modified accordingly. # modified accordingly.
postFixup = '' postFixup = ''
wrapProgram "$out/bin/zim" \
--prefix XDG_DATA_DIRS : "$out/share"
wrapPythonPrograms wrapPythonPrograms
sed -i "s#sys\.argv\[0\] = 'zim'#sys.argv[0] = '$out/bin/zim'#g" \ sed -i "s#sys\.argv\[0\] = '.zim-wrapped'#sys.argv[0] = '$out/bin/zim'#g" \
$out/bin/.zim-wrapped $out/bin/..zim-wrapped-wrapped
if test -e $out/nix-support/propagated-build-inputs; then if test -e $out/nix-support/propagated-build-inputs; then
ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages

View File

@ -6,11 +6,11 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "R-3.1.2"; name = "R-3.1.3";
src = fetchurl { src = fetchurl {
url = "http://cran.r-project.org/src/base/R-3/${name}.tar.gz"; url = "http://cran.r-project.org/src/base/R-3/${name}.tar.gz";
sha256 = "0ypsm11c7n49pgh2ricyhhpfhas3famscdazzdp2zq70rapm1ldw"; sha256 = "04kk6wd55bi0f0qsp98ckjxh95q2990vkgq4j83kiajvjciq7s87";
}; };
buildInputs = [ blas bzip2 gfortran liblapack libX11 libXmu libXt buildInputs = [ blas bzip2 gfortran liblapack libX11 libXmu libXt
@ -54,8 +54,7 @@ stdenv.mkDerivation rec {
installTargets = [ "install" "install-info" "install-pdf" ]; installTargets = [ "install" "install-info" "install-pdf" ];
# The test suite fails when building without the recommended packages. doCheck = true;
doCheck = withRecommendedPackages;
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, gmp, readline }: { stdenv, fetchurl, gmp, readline }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.7.2"; version = "2.7.3";
name = "pari-${version}"; name = "pari-${version}";
src = fetchurl { src = fetchurl {
url = "http://pari.math.u-bordeaux.fr/pub/pari/unix/${name}.tar.gz"; url = "http://pari.math.u-bordeaux.fr/pub/pari/unix/${name}.tar.gz";
sha256 = "1b0hzyhafpxhmiljyhnsh6c27ydsvb2599fshwq2fjfm96awjxmc"; sha256 = "02k54m7p47r54lgxqanxvf7pdrss17n8if1qwk5wx0j1px22j0rq";
}; };
buildInputs = [gmp readline]; buildInputs = [gmp readline];

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, luaPackages, cairo, cmake, imagemagick, pkgconfig, gdk_pixbuf { stdenv, fetchurl, luaPackages, cairo, cmake, imagemagick, pkgconfig, gdk_pixbuf
, xlibs, libstartup_notification, libxdg_basedir, libpthreadstubs , xlibs, libstartup_notification, libxdg_basedir, libpthreadstubs
, xcb-util-cursor, makeWrapper, pango, gobjectIntrospection, unclutter , xcb-util-cursor, makeWrapper, pango, gobjectIntrospection, unclutter
, compton, procps, iproute, coreutils, curl, alsaUtils, findutils, rxvt_unicode , compton, procps, iproute, coreutils, curl, alsaUtils, findutils, xterm
, which, dbus, nettools, git, asciidoc, doxygen, xmlto, docbook_xml_dtd_45 , which, dbus, nettools, git, asciidoc, doxygen, xmlto, docbook_xml_dtd_45
, docbook_xsl }: , docbook_xsl }:
let let
version = "3.5.5"; version = "3.5.6";
in with luaPackages; in with luaPackages;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "http://awesome.naquadah.org/download/awesome-${version}.tar.xz"; url = "http://awesome.naquadah.org/download/awesome-${version}.tar.xz";
sha256 = "0iwd4pjvq0akm9dbipbl4m4fm24m017l06arasr445v2qkbxnc5z"; sha256 = "1ms6a3l1i2jdhzrd1zr25cqckznmb44qgz4n635jam42hzhrvx1p";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {
@ -70,7 +70,7 @@ stdenv.mkDerivation rec {
--prefix LUA_PATH ";" '"${lgi}/share/lua/${lua.luaversion}/?.lua;${lgi}/share/lua/${lua.luaversion}/lgi/?.lua"' \ --prefix LUA_PATH ";" '"${lgi}/share/lua/${lua.luaversion}/?.lua;${lgi}/share/lua/${lua.luaversion}/lgi/?.lua"' \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--prefix LD_LIBRARY_PATH : "${cairo}/lib:${pango}/lib:${gobjectIntrospection}/lib" \ --prefix LD_LIBRARY_PATH : "${cairo}/lib:${pango}/lib:${gobjectIntrospection}/lib" \
--prefix PATH : "${compton}/bin:${unclutter}/bin:${procps}/bin:${iproute}/sbin:${coreutils}/bin:${curl}/bin:${alsaUtils}/bin:${findutils}/bin:${rxvt_unicode}/bin" --prefix PATH : "${compton}/bin:${unclutter}/bin:${procps}/bin:${iproute}/sbin:${coreutils}/bin:${curl}/bin:${alsaUtils}/bin:${findutils}/bin:${xterm}/bin"
wrapProgram $out/bin/awesome-client \ wrapProgram $out/bin/awesome-client \
--prefix PATH : "${which}/bin" --prefix PATH : "${which}/bin"

View File

@ -15,11 +15,11 @@ let
s = # Generated upstream information s = # Generated upstream information
rec { rec {
baseName="compiz"; baseName="compiz";
version="0.9.12.0"; version="0.9.12.1";
name="${baseName}-${version}"; name="${baseName}-${version}";
hash="1n7y413bkykcby9imgmj5f1nbjfjc0hnbwmdkq2n77d4kv1rilxr"; hash="0kl5im3zq0rjlxbgz5cyk38qzssahrljc67z1n16pjc1qmr6m7cb";
url="https://launchpad.net/compiz/0.9.12/0.9.12.0/+download/compiz-0.9.12.0.tar.bz2"; url="https://launchpad.net/compiz/0.9.12/0.9.12.1/+download/compiz-0.9.12.1.tar.bz2";
sha256="1n7y413bkykcby9imgmj5f1nbjfjc0hnbwmdkq2n77d4kv1rilxr"; sha256="0kl5im3zq0rjlxbgz5cyk38qzssahrljc67z1n16pjc1qmr6m7cb";
}; };
buildInputs = [cmake pkgconfig buildInputs = [cmake pkgconfig
libXrender renderproto gtk libwnck pango cairo libXrender renderproto gtk libwnck pango cairo

View File

@ -1,22 +1,16 @@
{ stdenv, buildEnv, ghcWithPackages, xmessage, makeWrapper, packages }: { stdenv, ghcWithPackages, xmessage, makeWrapper, packages }:
let let
xmonadEnv = ghcWithPackages (self: [ self.xmonad ] ++ packages self); xmonadEnv = ghcWithPackages (self: [ self.xmonad ] ++ packages self);
drv = buildEnv { in stdenv.mkDerivation {
name = "xmonad-with-packages"; name = "xmonad-with-packages";
paths = [ xmonadEnv ]; nativeBuildInputs = [ makeWrapper ];
postBuild = '' buildCommand = ''
# TODO: This could be avoided if buildEnv could be forced to create all directories mkdir -p $out/bin
rm $out/bin makeWrapper ${xmonadEnv}/bin/xmonad $out/bin/xmonad \
mkdir $out/bin --set NIX_GHC "${xmonadEnv}/bin/ghc" \
for i in ${xmonadEnv}/bin/*; do
ln -s $i $out/bin
done
wrapProgram $out/bin/xmonad \
--set XMONAD_GHC "${xmonadEnv}/bin/ghc" \
--set XMONAD_XMESSAGE "${xmessage}/bin/xmessage" --set XMONAD_XMESSAGE "${xmessage}/bin/xmessage"
''; '';
}; }
in stdenv.lib.overrideDerivation drv (x : { buildInputs = x.buildInputs ++ [ makeWrapper ]; })

View File

@ -146,7 +146,11 @@ let
mkDerivation = drv: stdenv.mkDerivation (drv // { src = fetchurl drv.src; }); mkDerivation = drv: stdenv.mkDerivation (drv // { src = fetchurl drv.src; });
resolveDeps = scope: map (dep: scope."${dep}" or null); resolveDeps = scope:
let resolveDeps_go = dep:
let res = scope."${dep}" or [];
in if isList res then res else [res];
in concatMap resolveDeps_go;
userEnvPkg = dep: userEnvPkg = dep:
mapAttrs mapAttrs

View File

@ -62,7 +62,7 @@ let
chosenGcc chosenGcc
bashInteractive coreutils less shadow su bashInteractive coreutils less shadow su
gawk diffutils findutils gnused gnugrep gawk diffutils findutils gnused gnugrep
gnutar gzip bzip2 xz gnutar gzip bzip2 xz glibcLocales
]; ];
# Compose a global profile for the chroot environment # Compose a global profile for the chroot environment
@ -72,6 +72,9 @@ let
mkdir -p $out/etc mkdir -p $out/etc
cat >> $out/etc/profile << "EOF" cat >> $out/etc/profile << "EOF"
export PS1='${name}-chrootenv:\u@\h:\w\$ ' export PS1='${name}-chrootenv:\u@\h:\w\$ '
export LOCALE_ARCHIVE='/usr/lib${if is64Bit then "64" else ""}/locale/locale-archive'
export LD_LIBRARY_PATH=/run/opengl-driver/lib:/run/opengl-driver-32/lib:/lib:/lib32:/lib64
export PATH='/bin:/sbin'
${profile} ${profile}
EOF EOF
''; '';
@ -81,15 +84,17 @@ let
staticUsrProfileTarget = nixpkgs.buildEnv { staticUsrProfileTarget = nixpkgs.buildEnv {
name = "system-profile-target"; name = "system-profile-target";
paths = basePkgs ++ [ profilePkg ] ++ targetPaths; paths = basePkgs ++ [ profilePkg ] ++ targetPaths;
ignoreCollisions = true;
}; };
staticUsrProfileMulti = nixpkgs.buildEnv { staticUsrProfileMulti = nixpkgs.buildEnv {
name = "system-profile-multi"; name = "system-profile-multi";
paths = multiPaths; paths = multiPaths;
ignoreCollisions = true;
}; };
linkProfile = profile: '' linkProfile = profile: ''
for i in ${profile}/{etc,bin,sbin,share,var}; do for i in ${profile}/{bin,sbin,share,var}; do
if [ -x "$i" ] if [ -x "$i" ]
then then
ln -s "$i" ln -s "$i"
@ -129,7 +134,7 @@ let
mkdir -m0755 lib mkdir -m0755 lib
# copy content of targetPaths # copy content of targetPaths
cp -rsf ${staticUsrProfileTarget}/lib/* lib/ cp -rsf ${staticUsrProfileTarget}/lib/* lib/ && chmod u+w -R lib/
''; '';
# setup /lib, /lib32 and /lib64 # setup /lib, /lib32 and /lib64
@ -142,22 +147,56 @@ let
cp -rsf ${staticUsrProfileTarget}/lib/32/* lib/ cp -rsf ${staticUsrProfileTarget}/lib/32/* lib/
# copy content of multiPaths (32bit libs) # copy content of multiPaths (32bit libs)
[ -d ${staticUsrProfileMulti}/lib ] && cp -rsf ${staticUsrProfileMulti}/lib/* lib/ [ -d ${staticUsrProfileMulti}/lib ] && cp -rsf ${staticUsrProfileMulti}/lib/* lib/ && chmod u+w -R lib/
# copy content of targetPaths (64bit libs) # copy content of targetPaths (64bit libs)
cp -rsf ${staticUsrProfileTarget}/lib/* lib64/ cp -rsf ${staticUsrProfileTarget}/lib/* lib64/ && chmod u+w -R lib64/
# most 64bit only libs put their stuff into /lib # most 64bit only libs put their stuff into /lib
# some pkgs (like gcc_multi) put 32bit libs into and /lib 64bit libs into /lib64 # some pkgs (like gcc_multi) put 32bit libs into and /lib 64bit libs into /lib64
# by overwriting these we will hopefully catch all these cases # by overwriting these we will hopefully catch all these cases
# in the end /lib should only contain 32bit and /lib64 only 64bit libs # in the end /lib should only contain 32bit and /lib64 only 64bit libs
cp -rsf ${staticUsrProfileTarget}/lib64/* lib64/ cp -rsf ${staticUsrProfileTarget}/lib64/* lib64/ && chmod u+w -R lib64/
# copy gcc libs (and may overwrite exitsting wrongly placed libs) # copy gcc libs (and may overwrite exitsting wrongly placed libs)
cp -rsf ${chosenGcc.cc}/lib/* lib/ cp -rsf ${chosenGcc.cc}/lib/* lib/
cp -rsf ${chosenGcc.cc}/lib64/* lib64/ cp -rsf ${chosenGcc.cc}/lib64/* lib64/
''; '';
setupEtc = ''
mkdir -m0755 etc
# copy profile content
cp -rsf ${staticUsrProfileTarget}/etc/* etc/ && chmod u+w -R etc/
[ -d ${staticUsrProfileMulti}/etc ] && cp -rsf ${staticUsrProfileMulti}/etc/* etc/ && chmod u+w -R etc/
# compatibility with NixOS
ln -s /host-etc/static etc/static
# symlink some NSS stuff
ln -s /host-etc/passwd etc/passwd
ln -s /host-etc/group etc/group
ln -s /host-etc/shadow etc/shadow
ln -s /host-etc/hosts etc/hosts
ln -s /host-etc/resolv.conf etc/resolv.conf
ln -s /host-etc/nsswitch.conf etc/nsswitch.conf
# symlink other core stuff
ln -s /host-etc/localtime etc/localtime
ln -s /host-etc/machine-id etc/machine-id
# symlink PAM stuff
rm -rf etc/pam.d
ln -s /host-etc/pam.d etc/pam.d
# symlink fonts stuff
rm -rf etc/fonts
ln -s /host-etc/fonts etc/fonts
# symlink ALSA stuff
ln -s /host-etc/asound.conf etc/asound.conf
'';
in nixpkgs.stdenv.mkDerivation { in nixpkgs.stdenv.mkDerivation {
name = "${name}-fhs"; name = "${name}-fhs";
buildCommand = '' buildCommand = ''
@ -165,6 +204,7 @@ in nixpkgs.stdenv.mkDerivation {
cd $out cd $out
${setupTargetProfile} ${setupTargetProfile}
${setupMultiProfile} ${setupMultiProfile}
${setupEtc}
cd $out cd $out
${extraBuildCommands} ${extraBuildCommands}
cd $out cd $out

View File

@ -8,39 +8,12 @@ mkdir -p $chrootenvDest/{nix/store,dev,proc,sys,host-etc,home,var,run}
# Symlink the software that should be part of the chroot system profile # Symlink the software that should be part of the chroot system profile
for i in @chrootEnv@/* for i in @chrootEnv@/*
do do
if [ "$i" != "@chrootEnv@/etc" ] && [ "$i" != "@chrootEnv@/var" ] if [ "$i" != "@chrootEnv@/var" ]
then then
ln -s "$i" "$chrootenvDest" ln -s "$i" "$chrootenvDest"
fi fi
done done
# Symlink the contents of the chroot software's /etc
mkdir $chrootenvDest/etc
for i in @chrootEnv@/etc/*
do
ln -s "$i" $chrootenvDest/etc
done
# Symlink some NSS stuff
ln -s ../host-etc/passwd $chrootenvDest/etc/passwd
ln -s ../host-etc/group $chrootenvDest/etc/group
ln -s ../host-etc/shadow $chrootenvDest/etc/shadow
ln -s ../host-etc/hosts $chrootenvDest/etc/hosts
ln -s ../host-etc/resolv.conf $chrootenvDest/etc/resolv.conf
ln -s ../host-etc/nsswitch.conf $chrootenvDest/etc/nsswitch.conf
# Symlink PAM stuff
rm $chrootenvDest/etc/pam.d
ln -s ../host-etc/static/pam.d $chrootenvDest/etc/pam.d
# Symlink Font stuff
mkdir -p $chrootenvDest/etc/fonts
ln -s ../../host-etc/static/fonts/fonts.conf $chrootenvDest/etc/fonts
mkdir -p $chrootenvDest/etc/fonts/conf.d
ln -s ../../../host-etc/static/fonts/conf.d/00-nixos.conf $chrootenvDest/etc/fonts/conf.d
# Create root folder # Create root folder
mkdir $chrootenvDest/root mkdir $chrootenvDest/root

View File

@ -3,4 +3,10 @@
chrootenvDest=/run/chrootenv/@name@ chrootenvDest=/run/chrootenv/@name@
# Enter the LFS chroot environment # Enter the LFS chroot environment
sudo chroot --userspec "$USER:${GROUPS[0]}" --groups "${GROUPS[0]}" $chrootenvDest /usr/bin/env -i PS1="$PS1" TERM="$TERM" DISPLAY="$DISPLAY" HOME="$HOME" PATH="/bin:/sbin" XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" /bin/bash --login sudo chroot --userspec "$USER:${GROUPS[0]}" --groups "${GROUPS[0]}" $chrootenvDest /usr/bin/env -i \
TERM="$TERM" \
DISPLAY="$DISPLAY" \
HOME="$HOME" \
XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" \
LANG="$LANG" \
/bin/bash --login

View File

@ -17,20 +17,6 @@ mounts = [ ['/nix/store', nil],
mkdirs = ['tmp', mkdirs = ['tmp',
] ]
# Symlinks: [from, to (dir)]
symlinks =
# /etc symlinks: [file name, prefix in host-etc]
[ ['passwd', ''],
['group', ''],
['shadow', ''],
['hosts', ''],
['resolv.conf', ''],
['nsswitch.conf', ''],
['pam.d', 'static'],
['fonts/fonts.conf', 'static'],
['fonts/conf.d/00-nixos.conf', 'static'],
].map! { |x| [ "host-etc/#{x[1]}/#{x[0]}", "etc/#{File.dirname x[0]}" ] }
require 'tmpdir' require 'tmpdir'
require 'fileutils' require 'fileutils'
require 'pathname' require 'pathname'
@ -111,12 +97,6 @@ if $cpid == 0
Dir.chroot root Dir.chroot root
Dir.chdir '/' Dir.chdir '/'
# Do symlinks
symlinks.each do |x|
FileUtils.mkdir_p x[1]
FileUtils.ln_s x[0], x[1]
end
# Symlink swdir hierarchy # Symlink swdir hierarchy
mount_dirs = Set.new mounts.map { |x| Pathname.new x[1] } mount_dirs = Set.new mounts.map { |x| Pathname.new x[1] }
link_swdir = lambda do |swdir, prefix| link_swdir = lambda do |swdir, prefix|
@ -136,13 +116,11 @@ if $cpid == 0
link_swdir.call swdir, Pathname.new('') link_swdir.call swdir, Pathname.new('')
# New environment # New environment
oldenv = ENV.to_h ENV.replace({ 'TERM' => ENV['TERM'],
ENV.replace({ 'PS1' => oldenv['PS1'], 'DISPLAY' => ENV['DISPLAY'],
'TERM' => oldenv['TERM'], 'HOME' => ENV['HOME'],
'DISPLAY' => oldenv['DISPLAY'], 'XDG_RUNTIME_DIR' => ENV['XDG_RUNTIME_DIR'],
'HOME' => oldenv['HOME'], 'LANG' => ENV['LANG'],
'PATH' => '/bin:/sbin',
'XDG_RUNTIME_DIR' => oldenv['XDG_RUNTIME_DIR'],
}) })
# Finally, exec! # Finally, exec!

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl }: { stdenv, fetchurl }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "hicolor-icon-theme-0.13"; name = "hicolor-icon-theme-0.14";
src = fetchurl { src = fetchurl {
url = "http://icon-theme.freedesktop.org/releases/${name}.tar.gz"; url = "http://icon-theme.freedesktop.org/releases/${name}.tar.xz";
sha256 = "01ilkizzal3wq2naaj84rqmd850aari1ahiw9vfis3a82n4h72x3"; sha256 = "1k9fj0lb9b44inb5q5m04910x5nfkzrxl3ys9ckihqrixzk0dvbv";
}; };
setupHook = ./setup-hook.sh; setupHook = ./setup-hook.sh;

View File

@ -6,11 +6,11 @@ let
s = # Generated upstream information s = # Generated upstream information
rec { rec {
baseName="ecl"; baseName="ecl";
version="13.5.1"; version="15.3.7";
name="${baseName}-${version}"; name="${baseName}-${version}";
hash="18ic8w9sdl0dh3kmyc9lsrafikrd9cg1jkhhr25p9saz0v75f77r"; hash="13wlxkd5prm93gcm2dhm7v52fl803yx93aa97lrb39z0y6xzziid";
url="mirror://sourceforge/project/ecls/ecls/13.5/ecl-13.5.1.tgz"; url="mirror://sourceforge/project/ecls/ecls/15.3/ecl-15.3.7.tgz";
sha256="18ic8w9sdl0dh3kmyc9lsrafikrd9cg1jkhhr25p9saz0v75f77r"; sha256="13wlxkd5prm93gcm2dhm7v52fl803yx93aa97lrb39z0y6xzziid";
}; };
buildInputs = [ buildInputs = [
libffi libffi

View File

@ -40,5 +40,6 @@ stdenv.mkDerivation {
license = stdenv.lib.licenses.bsd3; license = stdenv.lib.licenses.bsd3;
maintainers = [ stdenv.lib.maintainers.shlevy ]; maintainers = [ stdenv.lib.maintainers.shlevy ];
platforms = stdenv.lib.platforms.all; platforms = stdenv.lib.platforms.all;
broken = true;
}; };
} }

View File

@ -1,9 +1,9 @@
import ./jdk-linux-base.nix { import ./jdk-linux-base.nix {
productVersion = "8"; productVersion = "8";
patchVersion = "31"; patchVersion = "40";
downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html; downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
sha256_i686 = "1sr3q9y0cd42cqpf98gsv3hvip0r1vw3d0jh6yml6krzdm96zp8s"; sha256_i686 = "1bfabnmbar0kfx3i37wnxh97j7whkib8m6wqxrb1d9zf6k13bw50";
sha256_x86_64 = "0dz4k3xds1ydqr77hmrjc1w0niqq3jm3h18nk3ibqr1083l1bq7g"; sha256_x86_64 = "0nfm4xqd57s8dmkgd0jsrhys8dhfw0fx5d57mq70ramq9dl2jq66";
jceName = "jce_policy-8.zip"; jceName = "jce_policy-8.zip";
jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html; jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
sha256JCE = "f3020a3922efd6626c2fff45695d527f34a8020e938a49292561f18ad1320b59"; sha256JCE = "f3020a3922efd6626c2fff45695d527f34a8020e938a49292561f18ad1320b59";

View File

@ -2,15 +2,15 @@
callPackage ./makeRustcDerivation.nix { callPackage ./makeRustcDerivation.nix {
shortVersion = "1.0.0-dev"; shortVersion = "1.0.0-dev";
isRelease = false; isRelease = false;
# src rev for master on 2015/03/01 # src rev for master on 2015/03/09
srcRev = "157614249594f187f421cd97f928e64c5ab5c1fa"; srcRev = "91bdf23f504f79ed59617cde3dfebd3d5e39a476";
srcSha = "06d6fwl1dg6wfnwa002ak89hnjplpf2sjhg78yjg4ki0ca7b0b74"; srcSha = "1s1v1q630d88idz331n4m0c3ninzipmvfzmkvdaqqm28wsn69xx7";
snapshotHashLinux686 = "3278ebbce8cb269acc0614dac5ddac07eab6a99c"; snapshotHashLinux686 = "50a47ef247610fb089d2c4f24e4b641eb0ba4afb";
snapshotHashLinux64 = "72287d0d88de3e5a53bae78ac0d958e1a7637d73"; snapshotHashLinux64 = "ccb20709b3c984f960ddde996451be8ce2268d7c";
snapshotHashDarwin686 = "33b366b5287427a340a0aa6ed886d5ff4edf6a76"; snapshotHashDarwin686 = "ad263bdeadcf9bf1889426e0c1391a7cf277364e";
snapshotHashDarwin64 = "914bf9baa32081a9d5633f1d06f4d382cd71504e"; snapshotHashDarwin64 = "01c8275828042264206b7acd8e86dc719a2f27aa";
snapshotDate = "2015-02-25"; snapshotDate = "2015-03-07";
snapshotRev = "880fb89"; snapshotRev = "270a677";
patches = [ patches = [
./patches/head.patch ./patches/head.patch
] ++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch; ] ++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;

View File

@ -80,6 +80,5 @@ stdenv.mkDerivation rec {
maintainers = [stdenv.lib.maintainers.raskin]; maintainers = [stdenv.lib.maintainers.raskin];
platforms = stdenv.lib.platforms.all; platforms = stdenv.lib.platforms.all;
inherit version; inherit version;
updateWalker = true;
}; };
} }

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "sbcl-${version}"; name = "sbcl-${version}";
version = "1.2.8"; version = "1.2.9";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2"; url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2";
sha256 = "0ab9lw056yf6y0rjmx3iirn5n59pmssqxf00fbmpyl6qsnpaja1d"; sha256 = "0pws10ylnsxj17dagqcdv0l36k3ax5k3hkc6c91n9yxh2nziagk0";
}; };
buildInputs = [ which ] buildInputs = [ which ]

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, makeWrapper, jre }: { stdenv, fetchurl, makeWrapper, jre }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "scala-2.10.4"; name = "scala-2.10.5";
src = fetchurl { src = fetchurl {
url = "http://www.scala-lang.org/files/archive/${name}.tgz"; url = "http://www.scala-lang.org/files/archive/${name}.tgz";
sha256 = "1hqhm1xvd7g78jspvl30zgdzw79xq5zl837h47p6w1n6qlwbcvdl"; sha256 = "1ckyz31gmf2pgdl51h1raa669mkl7sqfdl3vqkrmyc46w5ysz3ci";
}; };
buildInputs = [ jre makeWrapper ] ; buildInputs = [ jre makeWrapper ] ;

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, makeWrapper, jre }: { stdenv, fetchurl, makeWrapper, jre }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "scala-2.11.5"; name = "scala-2.11.6";
src = fetchurl { src = fetchurl {
url = "http://www.scala-lang.org/files/archive/${name}.tgz"; url = "http://www.scala-lang.org/files/archive/${name}.tgz";
sha256 = "0ip2nb4n68q8gqbc15dq55xfpvr0yi8fwsn8ycz4marl6qb0rhyv"; sha256 = "10v58jm0wbb4v71sfi03gskd6n84jqn6nvd62x166104c3j4bfj1";
}; };
buildInputs = [ jre makeWrapper ] ; buildInputs = [ jre makeWrapper ] ;

View File

@ -0,0 +1,46 @@
{ stdenv, coreutils, fetchgit, m4, libtool, clang, ghcWithPackages,
shuffle,
hashable, mtl, network, uhc-util, uulib
}:
let wrappedGhc = ghcWithPackages ( self: [hashable mtl network uhc-util uulib] );
in stdenv.mkDerivation rec {
version = "1.1.8.7";
name = "uhc-${version}";
src = fetchgit {
url = "https://github.com/UU-ComputerScience/uhc.git";
rev = "0dec07e9cb60e78bbca63fc101f8fec6e249269f";
sha256 = "0isz3qz23ihbn0rg54x8ddzwpsqlmmpkvaa66b7srfly7nciv8gl";
};
postUnpack = "sourceRoot=\${sourceRoot}/EHC";
buildInputs = [ m4 wrappedGhc clang libtool shuffle ];
configureFlags = [ "--with-gcc=${clang}/bin/clang" ];
# UHC builds packages during compilation; these are by default
# installed in the user-specific package config file. We do not
# want that, and hack the build process to use a temporary package
# configuration file instead.
preConfigure = ''
p=`pwd`/uhc-local-packages
echo '[]' > $p
sed -i "s|--user|--package-db=$p|g" mk/shared.mk.in
sed -i "s|-fglasgow-exts|-fglasgow-exts -package-conf=$p|g" mk/shared.mk.in
sed -i "s|/bin/date|${coreutils}/bin/date|g" mk/dist.mk
sed -i "s|/bin/date|${coreutils}/bin/date|g" mk/config.mk.in
sed -i "s|--make|--make -package-db=$p|g" src/ehc/files2.mk
sed -i "s|--make|--make -package-db=$p|g" src/gen/files.mk
'';
inherit clang;
meta = with stdenv.lib; {
homepage = "http://www.cs.uu.nl/wiki/UHC";
description = "Utrecht Haskell Compiler";
maintainers = [ maintainers.phausmann ];
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -220,6 +220,7 @@ self: super: {
# These packages try to execute non-existent external programs. # These packages try to execute non-existent external programs.
cmaes = dontCheck super.cmaes; # http://hydra.cryp.to/build/498725/log/raw cmaes = dontCheck super.cmaes; # http://hydra.cryp.to/build/498725/log/raw
dbmigrations = dontCheck super.dbmigrations; dbmigrations = dontCheck super.dbmigrations;
euler = dontCheck super.euler; # https://github.com/decomputed/euler/issues/1
filestore = dontCheck super.filestore; filestore = dontCheck super.filestore;
graceful = dontCheck super.graceful; graceful = dontCheck super.graceful;
hakyll = dontCheck super.hakyll; hakyll = dontCheck super.hakyll;
@ -232,6 +233,7 @@ self: super: {
postgrest = dontCheck super.postgrest; postgrest = dontCheck super.postgrest;
snowball = dontCheck super.snowball; snowball = dontCheck super.snowball;
test-sandbox = dontCheck super.test-sandbox; test-sandbox = dontCheck super.test-sandbox;
users-postgresql-simple = dontCheck super.users-postgresql-simple;
wai-middleware-hmac = dontCheck super.wai-middleware-hmac; wai-middleware-hmac = dontCheck super.wai-middleware-hmac;
wai-middleware-throttle = dontCheck super.wai-middleware-throttle; # https://github.com/creichert/wai-middleware-throttle/issues/1 wai-middleware-throttle = dontCheck super.wai-middleware-throttle; # https://github.com/creichert/wai-middleware-throttle/issues/1
xmlgen = dontCheck super.xmlgen; xmlgen = dontCheck super.xmlgen;
@ -343,6 +345,7 @@ self: super: {
http-client-openssl = dontCheck super.http-client-openssl; http-client-openssl = dontCheck super.http-client-openssl;
http-client-tls = dontCheck super.http-client-tls; http-client-tls = dontCheck super.http-client-tls;
ihaskell = dontCheck super.ihaskell; ihaskell = dontCheck super.ihaskell;
influxdb = dontCheck super.influxdb;
itanium-abi = dontCheck super.itanium-abi; itanium-abi = dontCheck super.itanium-abi;
katt = dontCheck super.katt; katt = dontCheck super.katt;
language-slice = dontCheck super.language-slice; language-slice = dontCheck super.language-slice;
@ -393,7 +396,6 @@ self: super: {
WebBits = dontCheck super.WebBits; # http://hydra.cryp.to/build/499604/log/raw WebBits = dontCheck super.WebBits; # http://hydra.cryp.to/build/499604/log/raw
webdriver-angular = dontCheck super.webdriver-angular; webdriver-angular = dontCheck super.webdriver-angular;
webdriver = dontCheck super.webdriver; webdriver = dontCheck super.webdriver;
xcffib = dontCheck super.xcffib;
xsd = dontCheck super.xsd; xsd = dontCheck super.xsd;
# https://bitbucket.org/wuzzeb/webdriver-utils/issue/1/hspec-webdriver-101-cant-compile-its-test # https://bitbucket.org/wuzzeb/webdriver-utils/issue/1/hspec-webdriver-101-cant-compile-its-test
@ -433,9 +435,6 @@ self: super: {
# https://github.com/vincenthz/hs-crypto-pubkey/issues/20 # https://github.com/vincenthz/hs-crypto-pubkey/issues/20
crypto-pubkey = dontCheck super.crypto-pubkey; crypto-pubkey = dontCheck super.crypto-pubkey;
# https://github.com/rrnewton/haskell-lockfree/issues/44
chaselev-deque = markBrokenVersion "0.5.0.3" super.chaselev-deque;
# https://github.com/zouppen/stratum-tool/issues/14 # https://github.com/zouppen/stratum-tool/issues/14
stratum-tool = markBrokenVersion "0.0.4" super.stratum-tool; stratum-tool = markBrokenVersion "0.0.4" super.stratum-tool;
@ -521,6 +520,7 @@ self: super: {
# Depends on broken lmdb package. # Depends on broken lmdb package.
vcache = markBroken super.vcache; vcache = markBroken super.vcache;
vcache-trie = markBroken super.vcache-trie;
# https://github.com/afcowie/http-streams/issues/80 # https://github.com/afcowie/http-streams/issues/80
http-streams = dontCheck super.http-streams; http-streams = dontCheck super.http-streams;
@ -537,7 +537,6 @@ self: super: {
wxcore = super.wxcore.override { wxGTK = pkgs.wxGTK29; }; wxcore = super.wxcore.override { wxGTK = pkgs.wxGTK29; };
# Depends on QuickCheck 1.x. # Depends on QuickCheck 1.x.
ersatz = dontCheck (super.ersatz.override { QuickCheck = self.QuickCheck_1_2_0_1; }); # https://github.com/ekmett/ersatz/issues/8
HaVSA = super.HaVSA.override { QuickCheck = self.QuickCheck_1_2_0_1; }; HaVSA = super.HaVSA.override { QuickCheck = self.QuickCheck_1_2_0_1; };
test-framework-quickcheck = super.test-framework-quickcheck.override { QuickCheck = self.QuickCheck_1_2_0_1; }; test-framework-quickcheck = super.test-framework-quickcheck.override { QuickCheck = self.QuickCheck_1_2_0_1; };
@ -568,7 +567,6 @@ self: super: {
karakuri = markBroken super.karakuri; karakuri = markBroken super.karakuri;
# Upstream notified by e-mail. # Upstream notified by e-mail.
snowglobe = markBroken super.snowglobe;
gearbox = markBroken super.gearbox; gearbox = markBroken super.gearbox;
# https://github.com/deech/fltkhs/issues/7 # https://github.com/deech/fltkhs/issues/7
@ -608,10 +606,6 @@ self: super: {
# Broken by GLUT update. # Broken by GLUT update.
Monadius = markBroken super.Monadius; Monadius = markBroken super.Monadius;
# https://github.com/maoe/influxdb-haskell/issues/24
influxdb = markBroken super.influxdb;
snaplet-influxdb = markBroken super.snaplet-influxdb;
# We don't have the groonga package these libraries bind to. # We don't have the groonga package these libraries bind to.
haroonga = markBroken super.haroonga; haroonga = markBroken super.haroonga;
haroonga-httpd = markBroken super.haroonga-httpd; haroonga-httpd = markBroken super.haroonga-httpd;
@ -620,15 +614,21 @@ self: super: {
webkit = markBroken super.webkit; webkit = markBroken super.webkit;
websnap = markBroken super.websnap; websnap = markBroken super.websnap;
# https://github.com/victoredwardocallaghan/hlibBladeRF/issues/4
hlibBladeRF = dontCheck super.hlibBladeRF;
# https://github.com/frasertweedale/hs-persona-idp/issues/1
persona-idp = markBroken super.persona-idp;
# Build is broken and no contact info available. # Build is broken and no contact info available.
hopenpgp-tools = markBroken super.hopenpgp-tools; hopenpgp-tools = markBroken super.hopenpgp-tools;
# https://github.com/hunt-framework/hunt/issues/99
hunt-server = markBrokenVersion "0.3.0.2" super.hunt-server;
# https://github.com/bjpop/blip/issues/16
blip = markBroken super.blip;
# https://github.com/tych0/xcffib/issues/37
xcffib = markBroken super.xcffib;
# https://github.com/snapframework/snap/issues/141
# snap = overrideCabal super.snap (drv: { preConfigure = "sed -i -e 's|lens .*<4.8|lens|' snap.cabal"; });
} // { } // {
# Not on Hackage. # Not on Hackage.

View File

@ -45,7 +45,7 @@ self: super: {
deepseq = self.deepseq_1_3_0_1; deepseq = self.deepseq_1_3_0_1;
# transformers is not a core library for this compiler. # transformers is not a core library for this compiler.
transformers = self.transformers_0_4_2_0; transformers = self.transformers_0_4_3_0;
mtl = self.mtl_2_2_1; mtl = self.mtl_2_2_1;
transformers-compat = disableCabalFlag super.transformers-compat "three"; transformers-compat = disableCabalFlag super.transformers-compat "three";

View File

@ -38,7 +38,7 @@ self: super: {
deepseq = self.deepseq_1_4_0_0; deepseq = self.deepseq_1_4_0_0;
# transformers is not a core library for this compiler. # transformers is not a core library for this compiler.
transformers = self.transformers_0_4_2_0; transformers = self.transformers_0_4_3_0;
mtl = self.mtl_2_2_1; mtl = self.mtl_2_2_1;
transformers-compat = disableCabalFlag super.transformers-compat "three"; transformers-compat = disableCabalFlag super.transformers-compat "three";

View File

@ -35,7 +35,7 @@ self: super: {
deepseq = self.deepseq_1_4_0_0; deepseq = self.deepseq_1_4_0_0;
# transformers is not a core library for this compiler. # transformers is not a core library for this compiler.
transformers = self.transformers_0_4_2_0; transformers = self.transformers_0_4_3_0;
mtl = self.mtl_2_2_1; mtl = self.mtl_2_2_1;
transformers-compat = disableCabalFlag super.transformers-compat "three"; transformers-compat = disableCabalFlag super.transformers-compat "three";

View File

@ -32,7 +32,7 @@ self: super: {
unix = null; unix = null;
# transformers is not a core library for this compiler. # transformers is not a core library for this compiler.
transformers = self.transformers_0_4_2_0; transformers = self.transformers_0_4_3_0;
mtl = self.mtl_2_2_1; mtl = self.mtl_2_2_1;
transformers-compat = disableCabalFlag super.transformers-compat "three"; transformers-compat = disableCabalFlag super.transformers-compat "three";

View File

@ -31,7 +31,7 @@ self: super: {
unix = null; unix = null;
# transformers is not a core library for this compiler. # transformers is not a core library for this compiler.
transformers = self.transformers_0_4_2_0; transformers = self.transformers_0_4_3_0;
mtl = self.mtl_2_2_1; mtl = self.mtl_2_2_1;
transformers-compat = disableCabalFlag super.transformers-compat "three"; transformers-compat = disableCabalFlag super.transformers-compat "three";

View File

@ -35,7 +35,7 @@ self: super: {
xhtml = null; xhtml = null;
# mtl 2.2.x needs the latest transformers. # mtl 2.2.x needs the latest transformers.
mtl_2_2_1 = super.mtl_2_2_1.override { transformers = self.transformers_0_4_2_0; }; mtl_2_2_1 = super.mtl_2_2_1.override { transformers = self.transformers_0_4_3_0; };
# Configure build for mtl 2.1.x. # Configure build for mtl 2.1.x.
mtl-compat = addBuildDepend (enableCabalFlag super.mtl-compat "two-point-one") self.transformers-compat; mtl-compat = addBuildDepend (enableCabalFlag super.mtl-compat "two-point-one") self.transformers-compat;
@ -43,7 +43,7 @@ self: super: {
# Idris requires mtl 2.2.x. # Idris requires mtl 2.2.x.
idris = overrideCabal (super.idris.overrideScope (self: super: { idris = overrideCabal (super.idris.overrideScope (self: super: {
mkDerivation = drv: super.mkDerivation (drv // { doCheck = false; }); mkDerivation = drv: super.mkDerivation (drv // { doCheck = false; });
transformers = super.transformers_0_4_2_0; transformers = super.transformers_0_4_3_0;
transformers-compat = disableCabalFlag super.transformers-compat "three"; transformers-compat = disableCabalFlag super.transformers-compat "three";
haskeline = self.haskeline_0_7_1_3; haskeline = self.haskeline_0_7_1_3;
mtl = super.mtl_2_2_1; mtl = super.mtl_2_2_1;
@ -88,7 +88,6 @@ self: super: {
xhb-atom-cache = markBroken super.xhb-atom-cache; xhb-atom-cache = markBroken super.xhb-atom-cache;
xhb-ewmh = markBroken super.xhb-ewmh; xhb-ewmh = markBroken super.xhb-ewmh;
yesod-purescript = markBroken super.yesod-purescript; yesod-purescript = markBroken super.yesod-purescript;
yabi-muno = markBroken super.yabi-muno;
yet-another-logger = markBroken super.yet-another-logger; yet-another-logger = markBroken super.yet-another-logger;
# https://github.com/frosch03/arrowVHDL/issues/2 # https://github.com/frosch03/arrowVHDL/issues/2
@ -120,7 +119,7 @@ self: super: {
) ]; ) ];
}); });
mtl = self.mtl_2_2_1; mtl = self.mtl_2_2_1;
transformers = self.transformers_0_4_2_0; transformers = self.transformers_0_4_3_0;
transformers-compat = disableCabalFlag super.transformers-compat "three"; transformers-compat = disableCabalFlag super.transformers-compat "three";
hscolour = super.hscolour; hscolour = super.hscolour;
time = self.time_1_5_0_1; time = self.time_1_5_0_1;

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@
err = base ++ ".errors" err = base ++ ".errors"
src = base ++ ".hs" src = base ++ ".hs"
lib = dir </> "lib" lib = dir </> "lib"
+ ghc <- fromMaybe "ghc" <$> liftIO (lookupEnv "XMONAD_GHC") + ghc <- fromMaybe "ghc" <$> liftIO (lookupEnv "NIX_GHC")
libTs <- mapM getModTime . Prelude.filter isSource =<< allFiles lib libTs <- mapM getModTime . Prelude.filter isSource =<< allFiles lib
srcT <- getModTime src srcT <- getModTime src
binT <- getModTime bin binT <- getModTime bin

View File

@ -1,63 +1,38 @@
x@{builderDefsPackage {stdenv, fetchurl, unzip}:
, unzip
, ...}:
builderDefsPackage
(a :
let let
helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ s = # Generated upstream information
[]; rec {
buildInputs = map (n: builtins.getAttr n x)
(builtins.attrNames (builtins.removeAttrs x helperArgNames));
sourceInfo = rec {
baseName="angelscript"; baseName="angelscript";
version = "2.29.2"; version = "2.30.0";
name="${baseName}-${version}"; name="${baseName}-${version}";
url="http://www.angelcode.com/angelscript/sdk/files/angelscript_${version}.zip"; url="http://www.angelcode.com/angelscript/sdk/files/angelscript_${version}.zip";
sha256 = "12ws4vp9iyxbgzxxdq7g9729vg1ld92f38gfznyhsknhsay4kmf5"; sha256 = "00w7h2g6g1lkq9ahsvzyk78nbdzhn1adsrns9mrqb2fbxv2wbz5d";
}; };
in buildInputs = [
rec { unzip
src = a.fetchurl {
url = sourceInfo.url;
sha256 = sourceInfo.sha256;
};
inherit (sourceInfo) name version;
inherit buildInputs;
/* doConfigure should be removed if not needed */
phaseNames = ["prepareBuild" "doMake" "cleanLib" "doMakeInstall" "installDocs"];
prepareBuild = a.fullDepEntry ''
cd angelscript/projects/gnuc
sed -i makefile -e "s@LOCAL [?]= .*@LOCAL = $out@"
mkdir -p "$out/lib" "$out/bin" "$out/share" "$out/include"
export SHARED=1
export VERSION="${version}"
'' ["minInit" "addInputs" "doUnpack" "defEnsureDir"];
cleanLib = a.fullDepEntry ''
rm ../../lib/*
'' ["minInit"];
installDocs = a.fullDepEntry ''
mkdir -p "$out/share/angelscript"
cp -r ../../../docs "$out/share/angelscript"
'' ["defEnsureDir" "prepareBuild"];
meta = {
description = "Light-weight scripting library";
maintainers = with a.lib.maintainers;
[
raskin
]; ];
platforms = with a.lib.platforms; in
linux; stdenv.mkDerivation {
license = a.lib.licenses.zlib; inherit (s) name version;
homepage="http://www.angelcode.com/angelscript/"; inherit buildInputs;
downloadPage = "http://www.angelcode.com/angelscript/downloads.html"; src = fetchurl {
inherit version; inherit (s) url sha256;
}; };
}) x preConfigure = ''
cd angelscript/projects/gnuc
export makeFlags="$makeFlags PREFIX=$out"
'';
postInstall = ''
mkdir -p "$out/share/docs/angelscript"
cp -r ../../../docs/* "$out/share/docs/angelscript"
'';
meta = {
inherit (s) version;
description = "Light-weight scripting library";
license = stdenv.lib.licenses.zlib ;
maintainers = [stdenv.lib.maintainers.raskin];
platforms = stdenv.lib.platforms.linux;
downloadPage = "http://www.angelcode.com/angelscript/downloads.html";
homepage="http://www.angelcode.com/angelscript/";
};
}

View File

@ -9,7 +9,7 @@ in
composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in { composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in {
version = "5.4.37"; version = "5.4.38";
name = "php-${version}"; name = "php-${version}";
@ -253,7 +253,7 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed)
src = fetchurl { src = fetchurl {
url = "http://www.php.net/distributions/php-${version}.tar.bz2"; url = "http://www.php.net/distributions/php-${version}.tar.bz2";
sha256 = "1bd8yciy13v3aw4aiw57zpf8kgxpm6rcv73grp1yj2pbbrkzcyw5"; sha256 = "121ybn55c9f65r1mwiy4yks67bb6m5m5zwwx9y0vpjddryq7vwxb";
}; };
meta = { meta = {

View File

@ -0,0 +1,18 @@
{ stdenv, fetchurl, SDL2, freetype }:
stdenv.mkDerivation rec {
name = "SDL2_ttf-2.0.12";
src = fetchurl {
url = "https://www.libsdl.org/projects/SDL_ttf/release/${name}.tar.gz";
sha256 = "0vkg6lyj278mdpd52map3rfi65fbq16w67ahmmfcl77a8da60a47";
};
buildInputs = [SDL2 freetype];
postInstall = "ln -s $out/include/SDL2/SDL_ttf.h $out/include/";
meta = {
description = "SDL TrueType library";
};
}

View File

@ -4,4 +4,5 @@ callPackage ./generic.nix (args // {
baseVersion = "1.10"; baseVersion = "1.10";
revision = "9"; revision = "9";
sha256 = "1wldp9py3qcdgswgxya83c03y6345a6cf3vwz0y41bl1l39jfza8"; sha256 = "1wldp9py3qcdgswgxya83c03y6345a6cf3vwz0y41bl1l39jfza8";
extraConfigureFlags = "--with-gnump";
}) })

View File

@ -1,6 +1,7 @@
{ stdenv, fetchurl, python, bzip2, zlib, gmp, openssl, boost { stdenv, fetchurl, python, bzip2, zlib, gmp, openssl, boost
# Passed by version specific builders # Passed by version specific builders
, baseVersion, revision, sha256 , baseVersion, revision, sha256
, extraConfigureFlags ? ""
, ... , ...
}: }:
@ -17,7 +18,7 @@ stdenv.mkDerivation rec {
buildInputs = [ python bzip2 zlib gmp openssl boost ]; buildInputs = [ python bzip2 zlib gmp openssl boost ];
configurePhase = '' configurePhase = ''
python configure.py --prefix=$out --with-gnump --with-bzip2 --with-zlib ${if openssl != null then "--with-openssl" else ""} python configure.py --prefix=$out --with-bzip2 --with-zlib ${if openssl != null then "--with-openssl" else ""} ${extraConfigureFlags}
''; '';
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -2,7 +2,7 @@
callPackage ./generic.nix (args // { callPackage ./generic.nix (args // {
baseVersion = "1.11"; baseVersion = "1.11";
revision = "10"; revision = "14";
sha256 = "06d5p0bs953r2pqfc635x2w78m3xv28gr6fmvd8whbk9qp8r91yb"; sha256 = "1laa6d8w9v39a2pfmilj62jwc67r0jbq5f3xdlffd3kvkdnwcysb";
openssl = null; openssl = null;
}) })

View File

@ -4,9 +4,9 @@
let s = let s =
rec { rec {
version = "1.7.6"; version = "1.7.7";
name="directfb-${version}"; name="directfb-${version}";
sha256 = "1qf94vgsbcwfa00x2aqd6795n6z43x4ghclmb4sa4bl4zfn2pws4"; sha256 = "18r7h0pwbyyk8z3pgdv77nmma8lvr1si9gl1ghxgxf1ivhwcd1dp";
url="http://directfb.org/downloads/Core/DirectFB-1.7/DirectFB-${version}.tar.gz"; url="http://directfb.org/downloads/Core/DirectFB-1.7/DirectFB-${version}.tar.gz";
} }
; in ; in

View File

@ -1,88 +1,7 @@
{ stdenv, fetchurl, pkgconfig, yasm, zlib, bzip2 { callPackage, ... } @ args:
, mp3Support ? true, lame ? null
, speexSupport ? true, speex ? null
, theoraSupport ? true, libtheora ? null
, vorbisSupport ? true, libvorbis ? null
, vpxSupport ? false, libvpx ? null
, x264Support ? true, x264 ? null
, xvidSupport ? true, xvidcore ? null
, vdpauSupport ? true, libvdpau ? null
, faacSupport ? false, faac ? null
, dc1394Support ? false, libdc1394 ? null
}:
assert speexSupport -> speex != null; callPackage ./generic.nix (args // rec {
assert theoraSupport -> libtheora != null; version = "${branch}.15";
assert vorbisSupport -> libvorbis != null;
assert vpxSupport -> libvpx != null;
assert x264Support -> x264 != null;
assert xvidSupport -> xvidcore != null;
assert vdpauSupport -> libvdpau != null;
assert faacSupport -> faac != null;
stdenv.mkDerivation rec {
name = "ffmpeg-0.10.15";
src = fetchurl {
url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
sha256 = "0p9x559fpj4zxll7rn3kwdig6y66c3ahv3pddmz23lljq5rvyvcb";
};
# `--enable-gpl' (as well as the `postproc' and `swscale') mean that
# the resulting library is GPL'ed, so it can only be used in GPL'ed
# applications.
configureFlags = [
"--enable-gpl"
"--enable-postproc"
"--enable-swscale"
"--disable-ffplay"
"--enable-shared"
"--enable-runtime-cpudetect"
]
++ stdenv.lib.optional mp3Support "--enable-libmp3lame"
++ stdenv.lib.optional speexSupport "--enable-libspeex"
++ stdenv.lib.optional theoraSupport "--enable-libtheora"
++ stdenv.lib.optional vorbisSupport "--enable-libvorbis"
++ stdenv.lib.optional vpxSupport "--enable-libvpx"
++ stdenv.lib.optional x264Support "--enable-libx264"
++ stdenv.lib.optional xvidSupport "--enable-libxvid"
++ stdenv.lib.optional vdpauSupport "--enable-vdpau"
++ stdenv.lib.optional faacSupport "--enable-libfaac --enable-nonfree"
++ stdenv.lib.optional dc1394Support "--enable-libdc1394";
buildInputs = [ pkgconfig lame yasm zlib bzip2 ]
++ stdenv.lib.optional mp3Support lame
++ stdenv.lib.optional speexSupport speex
++ stdenv.lib.optional theoraSupport libtheora
++ stdenv.lib.optional vorbisSupport libvorbis
++ stdenv.lib.optional vpxSupport libvpx
++ stdenv.lib.optional x264Support x264
++ stdenv.lib.optional xvidSupport xvidcore
++ stdenv.lib.optional vdpauSupport libvdpau
++ stdenv.lib.optional faacSupport faac
++ stdenv.lib.optional dc1394Support libdc1394;
enableParallelBuilding = true;
crossAttrs = {
dontSetConfigureCross = true;
configureFlags = configureFlags ++ [
"--cross-prefix=${stdenv.cross.config}-"
"--enable-cross-compile"
"--target_os=linux"
"--arch=${stdenv.cross.arch}"
];
};
passthru = {
inherit vdpauSupport;
};
meta = with stdenv.lib; {
homepage = http://www.ffmpeg.org/;
description = "A complete, cross-platform solution to record, convert and stream audio and video";
maintainers = with maintainers; [ lovek323 ];
platforms = platforms.unix;
branch = "0.10"; branch = "0.10";
}; sha256 = "0p9x559fpj4zxll7rn3kwdig6y66c3ahv3pddmz23lljq5rvyvcb";
} })

View File

@ -0,0 +1,7 @@
{ callPackage, ... } @ args:
callPackage ./generic.nix (args // rec {
version = "${branch}.5";
branch = "0.11";
sha256 = "1h5qwn4h7sppqw36hri5p6zlv2387vwaxh2pyj070xfn8hgrk4ll";
})

View File

@ -0,0 +1,7 @@
{ callPackage, ... } @ args:
callPackage ./generic.nix (args // rec {
version = "${branch}.15";
branch = "0.5";
sha256 = "1rcy15dv5bnpnncb78kgki9xl279bh99b76nzqdd87b61r04z74z";
})

View File

@ -1,78 +0,0 @@
{ stdenv, fetchurl, pkgconfig, yasm
, mp3Support ? true, lame ? null
, speexSupport ? true, speex ? null
, theoraSupport ? true, libtheora ? null
, vorbisSupport ? true, libvorbis ? null
, vpxSupport ? false, libvpx ? null
, x264Support ? true, x264 ? null
, xvidSupport ? true, xvidcore ? null
, vdpauSupport ? true, libvdpau ? null
, faacSupport ? false, faac ? null
}:
assert speexSupport -> speex != null;
assert theoraSupport -> libtheora != null;
assert vorbisSupport -> libvorbis != null;
assert vpxSupport -> libvpx != null;
assert x264Support -> x264 != null;
assert xvidSupport -> xvidcore != null;
assert vdpauSupport -> libvdpau != null;
assert faacSupport -> faac != null;
stdenv.mkDerivation rec {
name = "ffmpeg-0.6.90-rc0";
src = fetchurl {
url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
sha256 = "1xn9fmpq2cbf1bx1gxbxnas8fq02gb8bmvvg5vjjxyw9lz5zw49f";
};
# `--enable-gpl' (as well as the `postproc' and `swscale') mean that
# the resulting library is GPL'ed, so it can only be used in GPL'ed
# applications.
configureFlags = [
"--enable-gpl"
"--enable-postproc"
"--enable-swscale"
"--disable-ffserver"
"--disable-ffplay"
"--enable-shared"
"--enable-runtime-cpudetect"
]
++ stdenv.lib.optional mp3Support "--enable-libmp3lame"
++ stdenv.lib.optional speexSupport "--enable-libspeex"
++ stdenv.lib.optional theoraSupport "--enable-libtheora"
++ stdenv.lib.optional vorbisSupport "--enable-libvorbis"
++ stdenv.lib.optional vpxSupport "--enable-libvpx"
++ stdenv.lib.optional x264Support "--enable-libx264"
++ stdenv.lib.optional xvidSupport "--enable-libxvid"
++ stdenv.lib.optional vdpauSupport "--enable-vdpau"
++ stdenv.lib.optional faacSupport "--enable-libfaac --enable-nonfree";
buildInputs = [ pkgconfig lame yasm ]
++ stdenv.lib.optional mp3Support lame
++ stdenv.lib.optional speexSupport speex
++ stdenv.lib.optional theoraSupport libtheora
++ stdenv.lib.optional vorbisSupport libvorbis
++ stdenv.lib.optional vpxSupport libvpx
++ stdenv.lib.optional x264Support x264
++ stdenv.lib.optional xvidSupport xvidcore
++ stdenv.lib.optional vdpauSupport libvdpau
++ stdenv.lib.optional faacSupport faac;
crossAttrs = {
dontSetConfigureCross = true;
configureFlags = configureFlags ++ [
"--cross-prefix=${stdenv.cross.config}-"
"--enable-cross-compile"
"--target_os=linux"
"--arch=${stdenv.cross.arch}"
];
};
meta = {
homepage = http://www.ffmpeg.org/;
description = "A complete, cross-platform solution to record, convert and stream audio and video";
broken = true;
};
}

View File

@ -1,78 +0,0 @@
{ stdenv, fetchurl, pkgconfig, yasm
, mp3Support ? true, lame ? null
, speexSupport ? true, speex ? null
, theoraSupport ? true, libtheora ? null
, vorbisSupport ? true, libvorbis ? null
, vpxSupport ? false, libvpx ? null
, x264Support ? true, x264 ? null
, xvidSupport ? true, xvidcore ? null
, vdpauSupport ? true, libvdpau ? null
, faacSupport ? false, faac ? null
}:
assert speexSupport -> speex != null;
assert theoraSupport -> libtheora != null;
assert vorbisSupport -> libvorbis != null;
assert vpxSupport -> libvpx != null;
assert x264Support -> x264 != null;
assert xvidSupport -> xvidcore != null;
assert vdpauSupport -> libvdpau != null;
assert faacSupport -> faac != null;
stdenv.mkDerivation rec {
name = "ffmpeg-0.6.7";
src = fetchurl {
url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
sha256 = "13l78gv2qhyw05bl9s6wkmykzsn4p04bb69a849a5c4hiffwz837";
};
# `--enable-gpl' (as well as the `postproc' and `swscale') mean that
# the resulting library is GPL'ed, so it can only be used in GPL'ed
# applications.
configureFlags = [
"--enable-gpl"
"--enable-postproc"
"--enable-swscale"
"--disable-ffserver"
"--disable-ffplay"
"--enable-shared"
"--enable-runtime-cpudetect"
]
++ stdenv.lib.optional mp3Support "--enable-libmp3lame"
++ stdenv.lib.optional speexSupport "--enable-libspeex"
++ stdenv.lib.optional theoraSupport "--enable-libtheora"
++ stdenv.lib.optional vorbisSupport "--enable-libvorbis"
++ stdenv.lib.optional vpxSupport "--enable-libvpx"
++ stdenv.lib.optional x264Support "--enable-libx264"
++ stdenv.lib.optional xvidSupport "--enable-libxvid"
++ stdenv.lib.optional vdpauSupport "--enable-vdpau"
++ stdenv.lib.optional faacSupport "--enable-libfaac --enable-nonfree";
buildInputs = [ pkgconfig lame yasm ]
++ stdenv.lib.optional mp3Support lame
++ stdenv.lib.optional speexSupport speex
++ stdenv.lib.optional theoraSupport libtheora
++ stdenv.lib.optional vorbisSupport libvorbis
++ stdenv.lib.optional vpxSupport libvpx
++ stdenv.lib.optional x264Support x264
++ stdenv.lib.optional xvidSupport xvidcore
++ stdenv.lib.optional vdpauSupport libvdpau
++ stdenv.lib.optional faacSupport faac;
crossAttrs = {
dontSetConfigureCross = true;
configureFlags = configureFlags ++ [
"--cross-prefix=${stdenv.cross.config}-"
"--enable-cross-compile"
"--target_os=linux"
"--arch=${stdenv.cross.arch}"
];
};
meta = {
homepage = http://www.ffmpeg.org/;
description = "A complete, cross-platform solution to record, convert and stream audio and video";
branch = "0.6";
};
}

View File

@ -0,0 +1,7 @@
{ callPackage, ... } @ args:
callPackage ./generic.nix (args // rec {
version = "${branch}.12";
branch = "1.2";
sha256 = "0za9w87rk4x6wkjc6iaxqx2ihlsgj181ilfgxfjc54mdgxfcjfli";
})

View File

@ -1,109 +0,0 @@
{ stdenv, fetchurl, pkgconfig, yasm, zlib, bzip2, alsaLib, texinfo, perl
, mp3Support ? true, lame ? null
, speexSupport ? true, speex ? null
, theoraSupport ? true, libtheora ? null
, vorbisSupport ? true, libvorbis ? null
, vpxSupport ? false, libvpx ? null
, x264Support ? true, x264 ? null
, xvidSupport ? true, xvidcore ? null
, opusSupport ? true, libopus ? null
, vdpauSupport ? true, libvdpau ? null
, vaapiSupport ? true, libva ? null
, faacSupport ? false, faac ? null
, dc1394Support ? false, libdc1394 ? null
, x11grabSupport ? false, libXext ? null, libXfixes ? null
, playSupport ? true, SDL ? null
, freetypeSupport ? true, freetype ? null, fontconfig ? null
}:
assert speexSupport -> speex != null;
assert theoraSupport -> libtheora != null;
assert vorbisSupport -> libvorbis != null;
assert vpxSupport -> libvpx != null;
assert x264Support -> x264 != null;
assert xvidSupport -> xvidcore != null;
assert opusSupport -> libopus != null;
assert vdpauSupport -> libvdpau != null;
assert vaapiSupport -> libva != null;
assert faacSupport -> faac != null;
assert x11grabSupport -> libXext != null && libXfixes != null;
assert playSupport -> SDL != null;
assert freetypeSupport -> freetype != null;
stdenv.mkDerivation rec {
version = "1.2.10";
name = "ffmpeg-${version}";
src = fetchurl {
url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
sha256 = "02wdxr55a68rjxbyrsxczp55z2qmspw8cfa0yd55x3dv82657hnj";
};
# `--enable-gpl' (as well as the `postproc' and `swscale') mean that
# the resulting library is GPL'ed, so it can only be used in GPL'ed
# applications.
configureFlags = [
"--enable-gpl"
"--enable-postproc"
"--enable-swscale"
"--enable-shared"
"--enable-avresample"
"--enable-runtime-cpudetect"
]
++ stdenv.lib.optional mp3Support "--enable-libmp3lame"
++ stdenv.lib.optional speexSupport "--enable-libspeex"
++ stdenv.lib.optional theoraSupport "--enable-libtheora"
++ stdenv.lib.optional vorbisSupport "--enable-libvorbis"
++ stdenv.lib.optional vpxSupport "--enable-libvpx"
++ stdenv.lib.optional x264Support "--enable-libx264"
++ stdenv.lib.optional xvidSupport "--enable-libxvid"
++ stdenv.lib.optional opusSupport "--enable-libopus"
++ stdenv.lib.optional vdpauSupport "--enable-vdpau"
++ stdenv.lib.optional faacSupport "--enable-libfaac --enable-nonfree"
++ stdenv.lib.optional dc1394Support "--enable-libdc1394"
++ stdenv.lib.optional x11grabSupport "--enable-x11grab"
++ stdenv.lib.optional playSupport "--enable-ffplay"
++ stdenv.lib.optional freetypeSupport "--enable-libfreetype --enable-fontconfig";
buildInputs = [ pkgconfig lame yasm zlib bzip2 alsaLib texinfo perl ]
++ stdenv.lib.optional mp3Support lame
++ stdenv.lib.optional speexSupport speex
++ stdenv.lib.optional theoraSupport libtheora
++ stdenv.lib.optional vorbisSupport libvorbis
++ stdenv.lib.optional vpxSupport libvpx
++ stdenv.lib.optional x264Support x264
++ stdenv.lib.optional xvidSupport xvidcore
++ stdenv.lib.optional opusSupport libopus
++ stdenv.lib.optional vdpauSupport libvdpau
++ stdenv.lib.optional vaapiSupport libva
++ stdenv.lib.optional faacSupport faac
++ stdenv.lib.optional dc1394Support libdc1394
++ stdenv.lib.optionals x11grabSupport [ libXext libXfixes ]
++ stdenv.lib.optional playSupport SDL
++ stdenv.lib.optionals freetypeSupport [ freetype fontconfig ];
enableParallelBuilding = true;
crossAttrs = {
dontSetConfigureCross = true;
configureFlags = configureFlags ++ [
"--cross-prefix=${stdenv.cross.config}-"
"--enable-cross-compile"
"--target_os=linux"
"--arch=${stdenv.cross.arch}"
];
};
passthru = {
inherit vdpauSupport;
};
meta = {
homepage = http://www.ffmpeg.org/;
description = "A complete, cross-platform solution to record, convert and stream audio and video";
license = if faacSupport then stdenv.lib.licenses.unfree else stdenv.lib.licenses.gpl2Plus;
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
platforms = stdenv.lib.platforms.unix;
branch = "1";
};
}

View File

@ -0,0 +1,7 @@
{ callPackage, ... } @ args:
callPackage ./generic.nix (args // rec {
version = "${branch}.13";
branch = "2.2";
sha256 = "1vva8ffwxi3rg44byy09qlbiqrrd1h4rmsl5b1mbmvzvwl1lq1l0";
})

View File

@ -1,109 +0,0 @@
{ stdenv, fetchurl, config, pkgconfig, yasm, zlib, bzip2, alsaLib, texinfo, perl
, lame, speex, libass, libtheora, libvorbis, libvpx, x264, xvidcore, libopus
, libvdpau, libva, faac, libdc1394, libXext, libXfixes, SDL
, freetype, fontconfig, fdk_aac, gnutls
}:
stdenv.mkDerivation rec {
version = "2.2.12";
name = "ffmpeg-${version}";
src = fetchurl {
url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
sha256 = "1a1ki0v7c94l68blbimh3xl5adz599ql8nrdm2q0g285qy6mqxck";
};
subtitleSupport = config.ffmpeg.subtitle or true;
mp3Support = config.ffmpeg.mp3 or true;
speexSupport = config.ffmpeg.speex or true;
theoraSupport = config.ffmpeg.theora or true;
vorbisSupport = config.ffmpeg.vorbis or true;
vpxSupport = config.ffmpeg.vpx or true;
x264Support = config.ffmpeg.x264 or true;
xvidSupport = config.ffmpeg.xvid or true;
opusSupport = config.ffmpeg.opus or true;
vdpauSupport = config.ffmpeg.vdpau or true;
vaapiSupport = config.ffmpeg.vaapi or true;
faacSupport = config.ffmpeg.faac or false;
fdkAACSupport = config.ffmpeg.fdk or false;
dc1394Support = config.ffmpeg.dc1394 or false;
x11grabSupport = config.ffmpeg.x11grab or false;
playSupport = config.ffmpeg.play or true;
freetypeSupport = config.ffmpeg.freetype or true;
gnutlsSupport = config.ffmpeg.gnutls or true;
# `--enable-gpl' (as well as the `postproc' and `swscale') mean that
# the resulting library is GPL'ed, so it can only be used in GPL'ed
# applications.
configureFlags = [
"--enable-gpl"
"--enable-postproc"
"--enable-swscale"
"--enable-shared"
"--enable-avresample"
"--enable-runtime-cpudetect"
]
++ stdenv.lib.optional (!stdenv.isDarwin && subtitleSupport) "--enable-libass"
++ stdenv.lib.optional mp3Support "--enable-libmp3lame"
++ stdenv.lib.optional speexSupport "--enable-libspeex"
++ stdenv.lib.optional theoraSupport "--enable-libtheora"
++ stdenv.lib.optional vorbisSupport "--enable-libvorbis"
++ stdenv.lib.optional vpxSupport "--enable-libvpx"
++ stdenv.lib.optional x264Support "--enable-libx264"
++ stdenv.lib.optional xvidSupport "--enable-libxvid"
++ stdenv.lib.optional opusSupport "--enable-libopus"
++ stdenv.lib.optional vdpauSupport "--enable-vdpau"
++ stdenv.lib.optional faacSupport "--enable-libfaac --enable-nonfree"
++ stdenv.lib.optional dc1394Support "--enable-libdc1394"
++ stdenv.lib.optional x11grabSupport "--enable-x11grab"
++ stdenv.lib.optional (!stdenv.isDarwin && playSupport) "--enable-ffplay"
++ stdenv.lib.optional freetypeSupport "--enable-libfreetype --enable-fontconfig"
++ stdenv.lib.optional fdkAACSupport "--enable-libfdk_aac --enable-nonfree"
++ stdenv.lib.optional gnutlsSupport "--enable-gnutls";
buildInputs = [ pkgconfig lame yasm zlib bzip2 texinfo perl ]
++ stdenv.lib.optional mp3Support lame
++ stdenv.lib.optional speexSupport speex
++ stdenv.lib.optional theoraSupport libtheora
++ stdenv.lib.optional vorbisSupport libvorbis
++ stdenv.lib.optional vpxSupport libvpx
++ stdenv.lib.optional x264Support x264
++ stdenv.lib.optional xvidSupport xvidcore
++ stdenv.lib.optional opusSupport libopus
++ stdenv.lib.optional vdpauSupport libvdpau
++ stdenv.lib.optional vaapiSupport libva
++ stdenv.lib.optional faacSupport faac
++ stdenv.lib.optional dc1394Support libdc1394
++ stdenv.lib.optionals x11grabSupport [ libXext libXfixes ]
++ stdenv.lib.optional (!stdenv.isDarwin && playSupport) SDL
++ stdenv.lib.optionals freetypeSupport [ freetype fontconfig ]
++ stdenv.lib.optional fdkAACSupport fdk_aac
++ stdenv.lib.optional gnutlsSupport gnutls
++ stdenv.lib.optional (!stdenv.isDarwin && subtitleSupport) libass
++ stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
enableParallelBuilding = true;
crossAttrs = {
dontSetConfigureCross = true;
configureFlags = configureFlags ++ [
"--cross-prefix=${stdenv.cross.config}-"
"--enable-cross-compile"
"--target_os=linux"
"--arch=${stdenv.cross.arch}"
];
};
passthru = {
inherit vdpauSupport;
};
meta = {
homepage = http://www.ffmpeg.org/;
description = "A complete, cross-platform solution to record, convert and stream audio and video";
license = if (fdkAACSupport || faacSupport) then stdenv.lib.licenses.unfree else stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
branch = "2.2";
};
}

View File

@ -0,0 +1,7 @@
{ callPackage, ... } @ args:
callPackage ./generic.nix (args // rec {
version = "${branch}.4";
branch = "2.5";
sha256 = "11m2hbhdgphjxjp6hk438cxmipqjg5ixbr1kqnn9mbdhq9kc34fc";
})

View File

@ -1,108 +0,0 @@
{ stdenv, fetchurl, config, pkgconfig, yasm, zlib, bzip2, alsaLib, texinfo, perl
, lame, speex, libass, libtheora, libvorbis, libvpx, x264, xvidcore, libopus
, libvdpau, libva, faac, libdc1394, libXext, libXfixes, SDL
, freetype, fontconfig, fdk_aac, gnutls
}:
stdenv.mkDerivation rec {
version = "2.5.4";
name = "ffmpeg-${version}";
src = fetchurl {
url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
sha256 = "11m2hbhdgphjxjp6hk438cxmipqjg5ixbr1kqnn9mbdhq9kc34fc";
};
subtitleSupport = config.ffmpeg.subtitle or true;
mp3Support = config.ffmpeg.mp3 or true;
speexSupport = config.ffmpeg.speex or true;
theoraSupport = config.ffmpeg.theora or true;
vorbisSupport = config.ffmpeg.vorbis or true;
vpxSupport = config.ffmpeg.vpx or true;
x264Support = config.ffmpeg.x264 or true;
xvidSupport = config.ffmpeg.xvid or true;
opusSupport = config.ffmpeg.opus or true;
vdpauSupport = config.ffmpeg.vdpau or true;
vaapiSupport = config.ffmpeg.vaapi or true;
faacSupport = config.ffmpeg.faac or false;
fdkAACSupport = config.ffmpeg.fdk or false;
dc1394Support = config.ffmpeg.dc1394 or false;
x11grabSupport = config.ffmpeg.x11grab or false;
playSupport = config.ffmpeg.play or true;
freetypeSupport = config.ffmpeg.freetype or true;
gnutlsSupport = config.ffmpeg.gnutls or true;
# `--enable-gpl' (as well as the `postproc' and `swscale') mean that
# the resulting library is GPL'ed, so it can only be used in GPL'ed
# applications.
configureFlags = [
"--enable-gpl"
"--enable-postproc"
"--enable-swscale"
"--enable-shared"
"--enable-avresample"
"--enable-runtime-cpudetect"
]
++ stdenv.lib.optional (!stdenv.isDarwin && subtitleSupport) "--enable-libass"
++ stdenv.lib.optional mp3Support "--enable-libmp3lame"
++ stdenv.lib.optional speexSupport "--enable-libspeex"
++ stdenv.lib.optional theoraSupport "--enable-libtheora"
++ stdenv.lib.optional vorbisSupport "--enable-libvorbis"
++ stdenv.lib.optional vpxSupport "--enable-libvpx"
++ stdenv.lib.optional x264Support "--enable-libx264"
++ stdenv.lib.optional xvidSupport "--enable-libxvid"
++ stdenv.lib.optional opusSupport "--enable-libopus"
++ stdenv.lib.optional vdpauSupport "--enable-vdpau"
++ stdenv.lib.optional faacSupport "--enable-libfaac --enable-nonfree"
++ stdenv.lib.optional dc1394Support "--enable-libdc1394"
++ stdenv.lib.optional x11grabSupport "--enable-x11grab"
++ stdenv.lib.optional (!stdenv.isDarwin && playSupport) "--enable-ffplay"
++ stdenv.lib.optional freetypeSupport "--enable-libfreetype --enable-fontconfig"
++ stdenv.lib.optional fdkAACSupport "--enable-libfdk_aac --enable-nonfree"
++ stdenv.lib.optional gnutlsSupport "--enable-gnutls";
buildInputs = [ pkgconfig lame yasm zlib bzip2 texinfo perl ]
++ stdenv.lib.optional mp3Support lame
++ stdenv.lib.optional speexSupport speex
++ stdenv.lib.optional theoraSupport libtheora
++ stdenv.lib.optional vorbisSupport libvorbis
++ stdenv.lib.optional vpxSupport libvpx
++ stdenv.lib.optional x264Support x264
++ stdenv.lib.optional xvidSupport xvidcore
++ stdenv.lib.optional opusSupport libopus
++ stdenv.lib.optional vdpauSupport libvdpau
++ stdenv.lib.optional vaapiSupport libva
++ stdenv.lib.optional faacSupport faac
++ stdenv.lib.optional dc1394Support libdc1394
++ stdenv.lib.optionals x11grabSupport [ libXext libXfixes ]
++ stdenv.lib.optional (!stdenv.isDarwin && playSupport) SDL
++ stdenv.lib.optionals freetypeSupport [ freetype fontconfig ]
++ stdenv.lib.optional fdkAACSupport fdk_aac
++ stdenv.lib.optional gnutlsSupport gnutls
++ stdenv.lib.optional (!stdenv.isDarwin && subtitleSupport) libass
++ stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
enableParallelBuilding = true;
crossAttrs = {
dontSetConfigureCross = true;
configureFlags = configureFlags ++ [
"--cross-prefix=${stdenv.cross.config}-"
"--enable-cross-compile"
"--target_os=linux"
"--arch=${stdenv.cross.arch}"
];
};
passthru = {
inherit vdpauSupport;
};
meta = {
homepage = http://www.ffmpeg.org/;
description = "A complete, cross-platform solution to record, convert and stream audio and video";
license = if (fdkAACSupport || faacSupport) then stdenv.lib.licenses.unfree else stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
};
}

View File

@ -0,0 +1,527 @@
{ stdenv, fetchurl, pkgconfig, perl, texinfo, yasm
/*
* Licensing options (yes some are listed twice, filters and such are not listed)
*/
, gplLicensing ? true # GPL: fdkaac,openssl,frei0r,cdio,samba,utvideo,vidstab,x265,x265,xavs,avid,zvbi,x11grab
, version3Licensing ? true # (L)GPL3: opencore-amrnb,opencore-amrwb,samba,vo-aacenc,vo-amrwbenc
, nonfreeLicensing ? false # NONFREE: openssl,fdkaac,faac,aacplus,blackmagic-design-desktop-video
/*
* Build options
*/
, smallBuild ? false # Optimize for size instead of speed
, runtime-cpudetectBuild ? true # Detect CPU capabilities at runtime (disable to compile natively)
, grayBuild ? true # Full grayscale support
, swscale-alphaBuild ? true # Alpha channel support in swscale
, incompatible-libav-abiBuild ? false # Incompatible Libav fork ABI
, hardcoded-tablesBuild ? true # Hardcode decode tables instead of runtime generation
, safe-bitstream-readerBuild ? true # Buffer boundary checking in bitreaders
, memalign-hackBuild ? false # Emulate memalign
, multithreadBuild ? true # Multithreading via pthreads/win32 threads
, networkBuild ? true # Network support
, pixelutilsBuild ? true # Pixel utils in libavutil
/*
* Program options
*/
, ffmpegProgram ? true # Build ffmpeg executable
, ffplayProgram ? true # Build ffplay executable
, ffprobeProgram ? true # Build ffprobe executable
, ffserverProgram ? true # Build ffserver executable
, qt-faststartProgram ? true # Build qt-faststart executable
/*
* Library options
*/
, avcodecLibrary ? true # Build avcodec library
, avdeviceLibrary ? true # Build avdevice library
, avfilterLibrary ? true # Build avfilter library
, avformatLibrary ? true # Build avformat library
, avresampleLibrary ? true # Build avresample library
, avutilLibrary ? true # Build avutil library
, postprocLibrary ? true # Build postproc library
, swresampleLibrary ? true # Build swresample library
, swscaleLibrary ? true # Build swscale library
/*
* Documentation options
*/
, htmlpagesDocumentation ? false # HTML documentation pages
, manpagesDocumentation ? true # Man documentation pages
, podpagesDocumentation ? false # POD documentation pages
, txtpagesDocumentation ? false # Text documentation pages
/*
* External libraries options
*/
#, aacplusExtlib ? false, aacplus ? null # AAC+ encoder
, alsaLib ? null # Alsa in/output support
#, avisynth ? null # Support for reading AviSynth scripts
, bzip2 ? null
, celt ? null # CELT decoder
#, crystalhd ? null # Broadcom CrystalHD hardware acceleration
#, decklinkExtlib ? false, blackmagic-design-desktop-video ? null # Blackmagic Design DeckLink I/O support
, faacExtlib ? false, faac ? null # AAC encoder
, faad2Extlib ? false, faad2 ? null # AAC decoder - DEPRECATED
, fdk-aacExtlib ? false, fdk_aac ? null # Fraunhofer FDK AAC de/encoder
#, flite ? null # Flite (voice synthesis) support
, fontconfig ? null # Needed for drawtext filter
, freetype ? null # Needed for drawtext filter
, frei0r ? null # frei0r video filtering
, fribidi ? null # Needed for drawtext filter
, game-music-emu ? null # Game Music Emulator
, gnutls ? null
, gsm ? null # GSM de/encoder
#, ilbc ? null # iLBC de/encoder
, jack2 ? null # Jack audio (only version 2 is supported in this build)
, ladspaH ? null # LADSPA audio filtering
, lame ? null # LAME MP3 encoder
, libass ? null # (Advanced) SubStation Alpha subtitle rendering
, libbluray ? null # BluRay reading
, libbs2b ? null # bs2b DSP library
, libcaca ? null # Textual display (ASCII art)
#, libcdio-paranoia ? null # Audio CD grabbing
, libdc1394 ? null, libraw1394 ? null # IIDC-1394 grabbing (ieee 1394)
, libiconv ? null
#, libiec61883 ? null, libavc1394 ? null # iec61883 (also uses libraw1394)
#, libmfx ? null # Hardware acceleration vis libmfx
, libmodplug ? null # ModPlug support
#, libnut ? null # NUT (de)muxer, native (de)muser exists
, libogg ? null # Ogg container used by vorbis & theora
, libopus ? null # Opus de/encoder
, libsndio ? null # sndio playback/record support
, libssh ? null # SFTP protocol
, libtheora ? null # Theora encoder
, libva ? null # Vaapi hardware acceleration
, libvdpau ? null # Vdpau hardware acceleration
, libvorbis ? null # Vorbis de/encoding, native encoder exists
, libvpx ? null # VP8 & VP9 de/encoding
, libwebp ? null # WebP encoder
, libX11 ? null # Xlib support
, libxcb ? null # X11 grabbing using XCB
, libxcb-shmExtlib ? true # X11 grabbing shm communication
, libxcb-xfixesExtlib ? true # X11 grabbing mouse rendering
, libxcb-shapeExtlib ? true # X11 grabbing shape rendering
, libXv ? null # Xlib support
, lzma ? null # xz-utils
#, nvenc ? null # NVIDIA NVENC support
, openal ? null # OpenAL 1.1 capture support
#, opencl ? null # OpenCL code
#, opencore-amr ? null # AMR-NB de/encoder & AMR-WB decoder
, opencv ? null # Video filtering
, openglExtlib ? false, mesa ? null # OpenGL rendering
#, openh264 ? null # H.264/AVC encoder
, openjpeg_1 ? null # JPEG 2000 de/encoder
, opensslExtlib ? false, openssl ? null
, pulseaudio ? null # Pulseaudio input support
, rtmpdump ? null # RTMP[E] support
#, libquvi ? null # Quvi input support
, sambaExtlib ? false, samba ? null # Samba protocol
#, schroedinger ? null # Dirac de/encoder
, SDL ? null
#, shine ? null # Fixed-point MP3 encoder
, soxr ? null # Resampling via soxr
, speex ? null # Speex de/encoder
#, twolame ? null # MP2 encoder
#, utvideo ? null # Ut Video de/encoder
, v4l_utils ? null # Video 4 Linux support
, vid-stab ? null # Video stabilization
#, vo-aacenc ? null # AAC encoder
#, vo-amrwbenc ? null # AMR-WB encoder
, wavpack ? null # Wavpack encoder
, x11grabExtlib ? false, libXext ? null, libXfixes ? null # X11 grabbing (legacy)
, x264 ? null # H.264/AVC encoder
, x265 ? null # H.265/HEVC encoder
, xavs ? null # AVS encoder
, xvidcore ? null # Xvid encoder, native encoder exists
, zeromq4 ? null # Message passing
, zlib ? null
#, zvbi ? null # Teletext support
/*
* Developer options
*/
, debugDeveloper ? false
, optimizationsDeveloper ? true
, extra-warningsDeveloper ? false
, strippingDeveloper ? false
/*
* Inherit generics
*/
, branch, sha256, version, ...
}:
/* Maintainer notes:
*
* Version bumps:
* It should always be safe to bump patch releases (e.g. 2.1.x, x being a patch release)
* If adding a new branch, note any configure flags that were added, changed, or deprecated/removed
* and make the necessary changes.
*
* En/disabling in/outdevs was added in 0.6
*
* Packages with errors:
* flite ilbc schroedinger
*
* Not packaged:
* aacplus avisynth cdio-paranoia crystalhd libavc1394 libiec61883
* libmxf libnut libquvi nvenc opencl opencore-amr openh264 oss shine twolame
* utvideo vo-aacenc vo-amrwbenc xvmc zvbi blackmagic-design-desktop-video
*
* Not supported:
* stagehright-h264(android only)
*
* Known issues:
* 0.5 - libgsm: configure fails to find library (fix: disable for 0.5)
* 0.5-0.8 - qt-quickstart: make error (fix: disable for 0.5-0.8)
* 0.6 - fails to compile (unresolved) (so far, only disabling a number of features
* works, but that is not a feasible solution)
* 0.6.90 - mmx: compile errors (fix: disable for 0.6.90-rc0)
* 0.7-1.1 - opencv: compile error, flag added in 0.7 (fix: disable for 0.7-1.1)
* 1.1 - libsoxr: compile error (fix: disable for 1.1)
* Support was initially added in 1.1 before soxr api change, fix would probably be to add soxr-1.0
* 2.0-2.1 - vid-stab: compile errors, flag added in 2.0 (fix: disable for 2.0-2.1)
* Recent changes (circa 2014) more than likely broke compatibility and a fix has not been back ported
* ALL - flite: configure fails to find library (tested against 1.4 & 1.9 & 2.0)
* Tried modifying configure and flite to use pkg-config
* ALL - Cross-compiling will disable features not present on host OS
* (e.g. dxva2 support [DirectX] will not be enabled unless natively compiled on Cygwin)
*
*/
let
# Minimum/maximun/matching version
cmpVer = builtins.compareVersions;
reqMin = requiredVersion: (cmpVer requiredVersion branch != 1);
reqMax = requiredVersion: (cmpVer branch requiredVersion != 1);
reqMatch = requiredVersion: (cmpVer requiredVersion branch == 0);
# Configure flag
mkFlag = optSet: minVer: flag: if reqMin minVer then (
if optSet then "--enable-${flag}" else "--disable-${flag}")
else null;
# Deprecated configure flag (e.g. faad2)
depFlag = optSet: minVer: maxVer: flag: if reqMin minVer && reqMax maxVer then mkFlag optSet minVer flag else null;
# Version specific fix
verFix = withoutFix: fixVer: withFix: if reqMatch fixVer then withFix else withoutFix;
# Flag change between versions (e.g. "--enable-armvfp" -> "--enable-vfp" changed in v1.1)
chgFlg = chgVer: oldFlag: newFlag: if reqMin chgVer then newFlag else oldFlag;
isCygwin = stdenv.isCygwin;
in
/*
* Licensing dependencies
*/
assert version3Licensing && reqMin "0.5" -> gplLicensing;
assert nonfreeLicensing && reqMin "0.5" -> gplLicensing && version3Licensing;
/*
* Build dependencies
*/
assert networkBuild -> gnutls != null || opensslExtlib;
assert pixelutilsBuild -> avutilLibrary;
/*
* Program dependencies
*/
assert ffmpegProgram && reqMin "0.5" -> avcodecLibrary
&& avfilterLibrary
&& avformatLibrary
&& swresampleLibrary;
assert ffplayProgram && reqMin "0.5" -> avcodecLibrary
&& avformatLibrary
&& swscaleLibrary
&& swresampleLibrary
&& SDL != null;
assert ffprobeProgram && reqMin "0.6" -> avcodecLibrary && avformatLibrary;
assert ffserverProgram && reqMin "0.5" -> avformatLibrary;
/*
* Library dependencies
*/
assert avcodecLibrary && reqMin "0.6" -> avutilLibrary; # configure flag since 0.6
assert avdeviceLibrary && reqMin "0.6" -> avformatLibrary
&& avcodecLibrary
&& avutilLibrary; # configure flag since 0.6
assert avformatLibrary && reqMin "0.6" -> avcodecLibrary && avutilLibrary; # configure flag since 0.6
assert avresampleLibrary && reqMin "0.11" -> avutilLibrary;
assert postprocLibrary && reqMin "0.5" -> gplLicensing && avutilLibrary;
assert swresampleLibrary && reqMin "0.9" -> soxr != null;
assert swscaleLibrary && reqMin "0.5" -> avutilLibrary;
/*
* External libraries
*/
#assert aacplusExtlib && reqMin "0.7" -> nonfreeLicensing;
#assert cdio-paranoia != null && reqMin "0.9" -> gplLicensing;
#assert decklinkExtlib && reqMin "2.2" -> blackmagic-design-desktop-video != null
# && !isCygwin && multithreadBuild # POSIX threads required
# && nonfreeLicensing;
assert faacExtlib && reqMin "0.5" -> faac != null && nonfreeLicensing;
assert fdk-aacExtlib && reqMin "1.0" -> fdk_aac != null && gplLicensing && nonfreeLicensing;
assert frei0r != null && reqMin "0.7" -> gplLicensing;
assert gnutls != null && reqMin "0.9" -> !opensslExtlib;
assert libxcb-shmExtlib && reqMin "2.5" -> libxcb != null;
assert libxcb-xfixesExtlib && reqMin "2.5" -> libxcb != null;
assert libxcb-shapeExtlib && reqMin "2.5" -> libxcb != null;
#assert opencore-amr != null && reqMin "0.5" -> version3Licensing;
assert openglExtlib && reqMin "2.2" -> mesa != null;
assert opensslExtlib && reqMin "0.9" -> gnutls == null && openssl != null && gplLicensing && nonfreeLicensing;
assert sambaExtlib && reqMin "2.3" -> samba != null && gplLicensing && version3Licensing;
#assert utvideo != null && reqMin "0.9" -> gplLicensing;
assert vid-stab != null && reqMin "2.0" -> gplLicensing;
#assert vo-aacenc != null && reqMin "0.6" -> version3Licensing;
#assert vo-amrwbenc != null && reqMin "0.7" -> version3Licensing;
assert x11grabExtlib && reqMin "0.5" -> libX11 != null && libXv != null && gplLicensing;
assert x264 != null && reqMin "0.5" -> gplLicensing;
assert x265 != null && reqMin "2.2" -> gplLicensing;
assert xavs != null && reqMin "0.7" -> gplLicensing;
assert xvidcore != null && reqMin "0.5" -> gplLicensing;
#assert zvbi != null && reqMin "2.1" -> gplLicensing;
with stdenv.lib;
stdenv.mkDerivation rec {
name = "ffmpeg-${version}";
inherit version;
src = fetchurl {
url = "https://www.ffmpeg.org/releases/${name}.tar.bz2";
inherit sha256;
};
patchPhase = ''patchShebangs .'';
configureFlags = [
/*
* Licensing flags
*/
(mkFlag gplLicensing "0.5" "gpl")
(mkFlag version3Licensing "0.5" "version3")
(mkFlag nonfreeLicensing "0.5" "nonfree")
/*
* Build flags
*/
# One some ARM platforms --enable-thumb
"--enable-shared --disable-static"
(mkFlag true "0.6" "pic")
(mkFlag smallBuild "0.5" "small")
(mkFlag runtime-cpudetectBuild "0.5" "runtime-cpudetect")
(mkFlag grayBuild "0.5" "gray")
(mkFlag swscale-alphaBuild "0.6" "swscale-alpha")
(mkFlag incompatible-libav-abiBuild "2.0" "incompatible-libav-abi")
(mkFlag hardcoded-tablesBuild "0.5" "hardcoded-tables")
(mkFlag safe-bitstream-readerBuild "0.9" "safe-bitstream-reader")
(mkFlag memalign-hackBuild "0.5" "memalign-hack")
(if reqMin "0.5" then (
if multithreadBuild then (
if isCygwin then
"--disable-pthreads --enable-w32threads"
else # Use POSIX threads by default
"--enable-pthreads --disable-w32threads")
else
"--disable-pthreads --disable-w32threads")
else null)
(if reqMin "0.9" then "--disable-os2threads" else null) # We don't support OS/2
(mkFlag networkBuild "0.5" "network")
(mkFlag pixelutilsBuild "2.4" "pixelutils")
/*
* Program flags
*/
(mkFlag ffmpegProgram "0.5" "ffmpeg")
(mkFlag ffplayProgram "0.5" "ffplay")
(mkFlag ffprobeProgram "0.6" "ffprobe")
(mkFlag ffserverProgram "0.5" "ffserver")
/*
* Library flags
*/
(mkFlag avcodecLibrary "0.6" "avcodec")
(mkFlag avdeviceLibrary "0.6" "avdevice")
(mkFlag avfilterLibrary "0.5" "avfilter")
(mkFlag avformatLibrary "0.6" "avformat")
(mkFlag avresampleLibrary "1.0" "avresample")
(mkFlag avutilLibrary "1.1" "avutil")
(mkFlag postprocLibrary "0.5" "postproc")
(mkFlag swresampleLibrary "0.9" "swresample")
(mkFlag swscaleLibrary "0.5" "swscale")
/*
* Documentation flags
*/
(mkFlag (htmlpagesDocumentation
|| manpagesDocumentation
|| podpagesDocumentation
|| txtpagesDocumentation) "0.6" "doc")
(mkFlag htmlpagesDocumentation "1.0" "htmlpages")
(mkFlag manpagesDocumentation "1.0" "manpages")
(mkFlag podpagesDocumentation "1.0" "podpages")
(mkFlag txtpagesDocumentation "1.0" "txtpages")
/*
* External libraries
*/
#(mkFlag aacplus "0.7" "libaacplus")
#(mkFlag avisynth "0.5" "avisynth")
(mkFlag (bzip2 != null) "0.5" "bzlib")
(mkFlag (celt != null) "0.8" "libcelt")
#crystalhd
#(mkFlag decklinkExtlib "2.2" "decklink")
(mkFlag faacExtlib "0.5" "libfaac")
(depFlag faad2Extlib "0.5" "0.6" "libfaad")
(mkFlag fdk-aacExtlib "1.0" "libfdk-aac")
#(mkFlag (flite != null) "1.0" "libflite")
(if reqMin "1.0" then # Force disable until a solution is found
"--disable-libflite"
else null)
(mkFlag (fontconfig != null) "1.0" "fontconfig")
(mkFlag (freetype != null) "0.7" "libfreetype")
(mkFlag (frei0r != null) "0.7" "frei0r")
(mkFlag (fribidi != null) "2.3" "libfribidi")
(mkFlag (game-music-emu != null) "2.2" "libgme")
(mkFlag (gnutls != null) "0.9" "gnutls")
(verFix (mkFlag (gsm != null) "0.5" "libgsm") "0.5" "--disable-libgsm")
#(mkFlag (ilbc != null) "1.0" "libilbc")
(mkFlag (ladspaH !=null) "2.1" "ladspa")
(mkFlag (lame != null) "0.5" "libmp3lame")
(mkFlag (libass != null) "0.9" "libass")
#(mkFlag (libavc1394 != null) null null)
(mkFlag (libbluray != null) "1.0" "libbluray")
(mkFlag (libbs2b != null) "2.3" "libbs2b")
(mkFlag (libcaca != null) "1.0" "libcaca")
#(mkFlag (cdio-paranoia != null) "0.9" "libcdio")
(mkFlag (libdc1394 != null && libraw1394 != null) "0.5" "libdc1394")
(mkFlag (libiconv != null) "1.2" "iconv")
#(mkFlag (libiec61883 != null && libavc1394 != null && libraw1394 != null) "1.0" "libiec61883")
(mkFlag (libmfz != null) "2.6" "libmfx")
(mkFlag (libmodplug != null) "0.9" "libmodplug")
#(mkFlag (libnut != null) "0.5" "libnut")
(mkFlag (libopus != null) "1.0" "libopus")
(mkFlag (libssh != null) "2.1" "libssh")
(mkFlag (libtheora != null) "0.5" "libtheora")
(mkFlag (libva != null) "0.6" "vaapi")
(mkFlag (libvdpau != null) "0.5" "vdpau")
(mkFlag (libvorbis != null) "0.5" "libvorbis")
(mkFlag (libvpx != null) "0.6" "libvpx")
(mkFlag (libwebp != null) "2.2" "libwebp")
(mkFlag (libX11 != null && libXv != null) "2.3" "xlib")
(mkFlag (libxcb != null) "2.5" "libxcb")
(mkFlag libxcb-shmExtlib "2.5" "libxcb-shm")
(mkFlag libxcb-xfixesExtlib "2.5" "libxcb-xfixes")
(mkFlag libxcb-shapeExtlib "2.5" "libxcb-shape")
(mkFlag (lzma != null) "2.4" "lzma")
#(mkFlag nvenc "2.6" "nvenc")
(mkFlag (openal != null) "0.9" "openal")
#(mkFlag opencl "2.2" "opencl")
#(mkFlag (opencore-amr != null) "0.5" "libopencore-amrnb")
#(mkFlag (opencore-amr != null) "0.5" "libopencore-amrwb")
(mkFlag (opencv != null) "1.1" "libopencv") # Actual min. version 0.7
(mkFlag openglExtlib "2.2" "opengl")
#(mkFlag (openh264 != null) "2.6" "openh264")
(mkFlag (openjpeg_1 != null) "0.5" "libopenjpeg")
(mkFlag opensslExtlib "0.9" "openssl")
(mkFlag (pulseaudio != null) "0.9" "libpulse")
#(mkFlag quvi "2.0" "libquvi")
(mkFlag (rtmpdump != null) "0.6" "librtmp")
#(mkFlag (schroedinger != null) "0.5" "libschroedinger")
#(mkFlag (shine != null) "2.0" "libshine")
(mkFlag sambaExtlib "2.3" "libsmbclient")
(mkFlag (SDL != null) "2.5" "sdl") # Only configurable since 2.5, auto detected before then
(mkFlag (soxr != null) "1.2" "libsoxr")
(mkFlag (speex != null) "0.5" "libspeex")
#(mkFlag (twolame != null) "1.0" "libtwolame")
#(mkFlag (utvideo != null) "0.9" "libutvideo")
(mkFlag (v4l_utils != null) "0.9" "libv4l2")
(mkFlag (vid-stab != null) "2.2" "libvidstab") # Actual min. version 2.0
#(mkFlag (vo-aacenc != null) "0.6" "libvo-aacenc")
#(mkFlag (vo-amrwbenc) "0.7" "libvo-amrwbenc")
(mkFlag (wavpack != null) "2.0" "libwavpack")
(mkFlag (x11grabExtlib) "0.5" "x11grab")
(mkFlag (x264 != null) "0.5" "libx264")
(mkFlag (x265 != null) "2.2" "libx265")
(mkFlag (xavs != null) "0.7" "libxavs")
(mkFlag (xvidcore != null) "0.5" "libxvid")
(mkFlag (zeromq4 != null) "2.0" "libzmq")
(mkFlag (zlib != null) "0.5" "zlib")
#(mkFlag (zvbi != null) "2.1" "libzvbi")
/*
* Developer flags
*/
(mkFlag debugDeveloper "0.5" "debug")
(mkFlag optimizationsDeveloper "0.5" "optimizations")
(mkFlag extra-warningsDeveloper "0.5" "extra-warnings")
(mkFlag strippingDeveloper "0.5" "stripping")
# Disable mmx support for 0.6.90
(verFix null "0.6.90" "--disable-mmx")
];
nativeBuildInputs = [ perl pkgconfig texinfo yasm ];
buildInputs = [
alsaLib bzip2 celt faad2 fdk_aac fontconfig freetype frei0r fribidi
game-music-emu gnutls gsm jack2 ladspaH lame libass libbluray libbs2b
libcaca libdc1394 libmodplug libogg libopus libraw1394 libssh libtheora
libva libvdpau libvpx libvorbis libwebp libX11 libxcb libXext libXfixes
libXv lzma mesa openal opencv openjpeg_1 openssl pulseaudio rtmpdump
samba SDL soxr speex v4l_utils vid-stab wavpack x264 x265 xavs xvidcore
zeromq4 zlib
] ++ optional faacExtlib faac;
# Build qt-faststart executable
buildPhase = optional (qt-faststartProgram && (reqMin "0.9")) ''make tools/qt-faststart'';
postInstall = optional (qt-faststartProgram && (reqMin "0.9")) ''cp -a tools/qt-faststart $out/bin/'';
enableParallelBuilding = true;
/* Cross-compilation is untested, consider this an outline, more work
needs to be done to portions of the build to get it to work correctly */
crossAttrs = let
os = ''
if [ "${stdenv.cross.config}" = "*cygwin*" ] ; then
# Probably should look for mingw too
echo "cygwin"
elif [ "${stdenv.cross.config}" = "*darwin*" ] ; then
echo "darwin"
elif [ "${stdenv.cross.config}" = "*freebsd*" ] ; then
echo "freebsd"
elif [ "${stdenv.cross.config}" = "*linux*" ] ; then
echo "linux"
elif [ "${stdenv.cross.config}" = "*netbsd*" ] ; then
echo "netbsd"
elif [ "${stdenv.cross.config}" = "*openbsd*" ] ; then
echo "openbsd"
fi
'';
in {
dontSetConfigureCross = true;
configureFlags = configureFlags ++ [
"--cross-prefix=${stdenv.cross.config}-"
"--enable-cross-compile"
"--target_os=${os}"
"--arch=${stdenv.cross.arch}"
];
};
/* TODO: In the future more FFmpeg optionals should be added so that packages that
depend on FFmpeg can check to make sure a required feature is enabled. Since
features are version dependent, versioning needs to be handled as well */
passthru = {
vdpauSupport = libvdpau != null;
};
meta = {
description = "A complete, cross-platform solution to record, convert and stream audio and video";
homepage = http://www.ffmpeg.org/;
longDescription = ''
FFmpeg is the leading multimedia framework, able to decode, encode, transcode,
mux, demux, stream, filter and play pretty much anything that humans and machines
have created. It supports the most obscure ancient formats up to the cutting edge.
No matter if they were designed by some standards committee, the community or
a corporation.
'';
licenses = (
if nonfreeLicensing then
licenses.unfreeRedistributable
else if version3Licensing then
licenses.gpl3
else if gplLicensing then
licenses.gpl2Plus
else
licenses.lgpl21Plus
);
platforms = platforms.all;
maintainers = with maintainers; [ codyopel fuuzetsu ];
inherit branch;
};
}

View File

@ -6,16 +6,24 @@
, libsoup , libsoup
}: }:
stdenv.mkDerivation { let metadata = if stdenv.system == "i686-linux"
name = "swt-3.7.2-201202080800"; then { arch = "x86"; sha256 = "10si8kmc7c9qmbpzs76609wkfb784pln3qpmra73gb3fbk7z8caf"; }
else if stdenv.system == "x86_64-linux"
then { arch = "x86_64"; sha256 = "0hq48zfqx2p0fqr0rlabnz2pdj0874k19918a4dbj0fhzkhrh959"; }
else { };
in stdenv.mkDerivation rec {
version = "3.7.2";
fullVersion = "${version}-201202080800";
name = "swt-${version}";
builder = ./builder.sh; builder = ./builder.sh;
# Alas, the Eclipse Project apparently doesn't produce source-only # Alas, the Eclipse Project apparently doesn't produce source-only
# releases of SWT. So we just grab a binary release and extract # releases of SWT. So we just grab a binary release and extract
# "src.zip" from that. # "src.zip" from that.
src = fetchurl { src = fetchurl {
url = "http://archive.eclipse.org/eclipse/downloads/drops/R-3.7.2-201202080800/swt-3.7.2-gtk-linux-x86.zip"; url = "http://archive.eclipse.org/eclipse/downloads/drops/R-${fullVersion}/${name}-gtk-linux-${metadata.arch}.zip";
sha256 = "10si8kmc7c9qmbpzs76609wkfb784pln3qpmra73gb3fbk7z8caf"; sha256 = metadata.sha256;
}; };
buildInputs = [unzip jdk pkgconfig gtk libXtst libXi mesa webkit libsoup]; buildInputs = [unzip jdk pkgconfig gtk libXtst libXi mesa webkit libsoup];

View File

@ -8,6 +8,12 @@ stdenv.mkDerivation {
sha256 = "1sv3990vsx8hrza1mvq3bhvv9m6ff08y4yz7swn6znszz24l0w6j"; sha256 = "1sv3990vsx8hrza1mvq3bhvv9m6ff08y4yz7swn6znszz24l0w6j";
}; };
# gcc 4.8 optimisations break judy.
# http://sourceforge.net/p/judy/mailman/message/31995144/
preConfigure = ''
configureFlagsArray+=("CFLAGS=-fno-strict-aliasing -fno-aggressive-loop-optimizations")
'';
meta = { meta = {
homepage = http://judy.sourceforge.net/; homepage = http://judy.sourceforge.net/;
license = stdenv.lib.licenses.lgpl21Plus; license = stdenv.lib.licenses.lgpl21Plus;

View File

@ -56,8 +56,8 @@ let
Qt5DBus = qt5.base; Qt5DBus = qt5.base;
Qt5Gui = qt5.base; Qt5Gui = qt5.base;
Qt5LinguistTools = qt5.tools; Qt5LinguistTools = qt5.tools;
Qt5Qml = qt5.declarative; Qt5Qml = [qt5.declarative qt5.graphicaleffects];
Qt5Quick = qt5.quickcontrols; Qt5Quick = [qt5.quickcontrols qt5.graphicaleffects];
Qt5Script = qt5.script; Qt5Script = qt5.script;
Qt5Svg = qt5.svg; Qt5Svg = qt5.svg;
Qt5WebkitWidgets = qt5.webkit; Qt5WebkitWidgets = qt5.webkit;

View File

@ -1,11 +1,11 @@
{ fetchurl, stdenv, libgpgerror, transfig, ghostscript, texinfo }: { fetchurl, stdenv, libgpgerror, transfig, ghostscript, texinfo }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libgcrypt-1.6.2"; name = "libgcrypt-1.6.3";
src = fetchurl { src = fetchurl {
url = "mirror://gnupg/libgcrypt/${name}.tar.bz2"; url = "mirror://gnupg/libgcrypt/${name}.tar.bz2";
sha256 = "de084492a6b38cdb27b67eaf749ceba76bf7029f63a9c0c3c1b05c88c9885c4c"; sha256 = "0pq2nwfqgggrsh8rk84659d80vfnlkbphwqjwahccd5fjdxr3d21";
}; };
nativeBuildInputs = [ transfig ghostscript texinfo ]; nativeBuildInputs = [ transfig ghostscript texinfo ];
@ -18,12 +18,6 @@ stdenv.mkDerivation rec {
doCheck = true; doCheck = true;
# For some reason the tests don't find `libgpg-error.so'.
checkPhase = ''
LD_LIBRARY_PATH="${libgpgerror}/lib:$LD_LIBRARY_PATH" \
make check
'';
crossAttrs = let crossAttrs = let
isCross64 = stdenv.cross.config == "x86_64-w64-mingw32"; isCross64 = stdenv.cross.config == "x86_64-w64-mingw32";
in stdenv.lib.optionalAttrs isCross64 { in stdenv.lib.optionalAttrs isCross64 {

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, gettext }: { stdenv, fetchurl, gettext }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libgpg-error-1.17"; name = "libgpg-error-1.18";
src = fetchurl { src = fetchurl {
url = "mirror://gnupg/libgpg-error/${name}.tar.bz2"; url = "mirror://gnupg/libgpg-error/${name}.tar.bz2";
sha256 = "1dapxzxl1naghf342fwfc2w2f2c5hb9gr1a1s4n8dsqn26kybx1z"; sha256 = "0408v19h3h0q6w61g51hgbdg6cyw81nyzkh70qfprvsc3pkddwcz";
}; };
postPatch = "sed '/BUILD_TIMESTAMP=/s/=.*/=1970-01-01T00:01+0000/' -i ./configure"; postPatch = "sed '/BUILD_TIMESTAMP=/s/=.*/=1970-01-01T00:01+0000/' -i ./configure";

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl }: { stdenv, fetchurl }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libyubikey-1.12"; name = "libyubikey-1.13";
src = fetchurl { src = fetchurl {
url = "https://developers.yubico.com/yubico-c/Releases/${name}.tar.gz"; url = "https://developers.yubico.com/yubico-c/Releases/${name}.tar.gz";
sha256 = "1f0plzmr1gwry4rfgq9q70v6qwqny009hac289ad5m6sj7vqflxr"; sha256 = "009l3k2zyn06dbrlja2d4p2vfnzjhlcqxi88v02mlrnb17mx1v84";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -0,0 +1,25 @@
{ fetchurl, stdenv }:
stdenv.mkDerivation rec {
version = "v1.1.6";
name = "utf8proc-${version}";
src = fetchurl {
url = "http://www.public-software-group.org/pub/projects/utf8proc/${version}/utf8proc-${version}.tar.gz";
sha256 = "1rwr84pw92ajjlbcxq0da7yxgg3ijngmrj7vhh2qzsr2h2kqzp7y";
};
installPhase = ''
mkdir -pv $out/lib $out/include
cp libutf8proc.so libutf8proc.a $out/lib
cp utf8proc.h $out/include
'';
meta = {
description = "A library for processing UTF-8 encoded Unicode strings";
homepage = http://www.public-software-group.org/utf8proc;
license = stdenv.lib.licenses.mit;
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -0,0 +1,24 @@
{ stdenv, fetchurl, ocaml, findlib, type_conv, camlp4 }:
assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.00";
stdenv.mkDerivation {
name = "ocaml-enumerate-111.08.00";
src = fetchurl {
url = https://ocaml.janestreet.com/ocaml-core/111.08.00/individual/enumerate-111.08.00.tar.gz;
sha256 = "0b6mx5p01lcpimvak4wx6aj2119707wsfzd83rwgb91bhpgzh156";
};
buildInputs = [ ocaml findlib ];
propagatedBuildInputs = [ type_conv camlp4 ];
createFindlibDestdir = true;
meta = {
homepage = https://ocaml.janestreet.com/;
description = "Quotation expanders for enumerating finite types";
license = stdenv.lib.licenses.asl20;
platforms = ocaml.meta.platforms;
};
}

View File

@ -16,13 +16,13 @@ wrapPythonProgramsIn() {
done done
for i in $(find "$dir" -type f -perm +0100); do for i in $(find "$dir" -type f -perm +0100); do
# Rewrite "#! .../env python" to "#! /nix/store/.../python". # Rewrite "#! .../env python" to "#! /nix/store/.../python".
if head -n1 "$i" | grep -q '#!.*/env.*\(python\|pypy\)'; then if head -n1 "$i" | grep -q '#!.*/env.*\(python\|pypy\)'; then
sed -i "$i" -e "1 s^.*/env[ ]*\(python\|pypy\)^#! $python^" sed -i "$i" -e "1 s^.*/env[ ]*\(python\|pypy\)^#! $python^"
fi fi
if head -n1 "$i" | grep -q '/python\|/pypy'; then # catch /python and /.python-wrapped
if head -n1 "$i" | grep -q '/\.\?\(python\|pypy\)'; then
# dont wrap EGG-INFO scripts since they are called from python # dont wrap EGG-INFO scripts since they are called from python
if echo "$i" | grep -v EGG-INFO/scripts; then if echo "$i" | grep -v EGG-INFO/scripts; then
echo "wrapping \`$i'..." echo "wrapping \`$i'..."

View File

@ -1,8 +1,17 @@
Index: b/gevent/ssl.py From 485cebc4d9bab2dae51cf29f91fad2f1cf157fec Mon Sep 17 00:00:00 2001
=================================================================== From: Eugene Pankov <john.pankov@gmail.com>
Date: Sun, 21 Sep 2014 12:04:13 +0300
Subject: [PATCH] Work around missing sslwrap in Python 2.7.9 (fixes #477)
---
gevent/_ssl2.py | 28 ++++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/gevent/ssl.py b/gevent/ssl.py
index 21491b7..85e6a86 100644
--- a/gevent/ssl.py --- a/gevent/ssl.py
+++ b/gevent/ssl.py +++ b/gevent/ssl.py
@@ -81,15 +81,14 @@ class SSLSocket(socket): @@ -80,15 +80,27 @@ def __init__(self, sock, keyfile=None, certfile=None,
self._sslobj = None self._sslobj = None
else: else:
# yes, create the SSL object # yes, create the SSL object
@ -10,19 +19,31 @@ Index: b/gevent/ssl.py
- self._sslobj = _ssl.sslwrap(self._sock, server_side, - self._sslobj = _ssl.sslwrap(self._sock, server_side,
- keyfile, certfile, - keyfile, certfile,
- cert_reqs, ssl_version, ca_certs) - cert_reqs, ssl_version, ca_certs)
- else: + if hasattr(_ssl, 'sslwrap'):
+ if ciphers is None:
+ self._sslobj = _ssl.sslwrap(self._sock, server_side,
+ keyfile, certfile,
+ cert_reqs, ssl_version, ca_certs)
+ else:
+ self._sslobj = _ssl.sslwrap(self._sock, server_side,
+ keyfile, certfile,
+ cert_reqs, ssl_version, ca_certs,
+ ciphers)
else:
- self._sslobj = _ssl.sslwrap(self._sock, server_side, - self._sslobj = _ssl.sslwrap(self._sock, server_side,
- keyfile, certfile, - keyfile, certfile,
- cert_reqs, ssl_version, ca_certs, - cert_reqs, ssl_version, ca_certs,
- ciphers) - ciphers)
+ ctx = __ssl__.SSLContext(ssl_version) + self.context = __ssl__.SSLContext(ssl_version)
+ if keyfile or certfile: + self.context.verify_mode = cert_reqs
+ ctx.load_cert_chain(certfile, keyfile)
+ if ca_certs: + if ca_certs:
+ ctx.load_verify_locations(ca_certs) + self.context.load_verify_locations(ca_certs)
+ if certfile:
+ self.context.load_cert_chain(certfile, keyfile)
+ if ciphers: + if ciphers:
+ ctx.set_ciphers(ciphers) + self.context.set_ciphers(ciphers)
+ self._sslobj = ctx._wrap_socket(self._sock, server_side=server_side) + self._sslobj = self.context._wrap_socket(self._sock, server_side=server_side, ssl_sock=self)
+
if do_handshake_on_connect: if do_handshake_on_connect:
self.do_handshake() self.do_handshake()
self.keyfile = keyfile self.keyfile = keyfile

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