mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-26 04:43:09 +03:00
Merge branch 'master.upstream' into staging.upstream
This commit is contained in:
commit
d605663ae2
@ -332,6 +332,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
|
||||
fullName = "SIL Open Font License 1.1";
|
||||
};
|
||||
|
||||
openldap = spdx {
|
||||
spdxId = "OLDAP-2.8";
|
||||
fullName = "Open LDAP Public License v2.8";
|
||||
};
|
||||
|
||||
openssl = spdx {
|
||||
spdxId = "OpenSSL";
|
||||
fullName = "OpenSSL License";
|
||||
|
@ -108,6 +108,15 @@ let
|
||||
description = "The user's home directory.";
|
||||
};
|
||||
|
||||
cryptHomeLuks = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
Path to encrypted luks device that contains
|
||||
the user's home directory.
|
||||
'';
|
||||
};
|
||||
|
||||
shell = mkOption {
|
||||
type = types.str;
|
||||
default = "/run/current-system/sw/bin/nologin";
|
||||
|
@ -84,6 +84,7 @@
|
||||
./security/grsecurity.nix
|
||||
./security/pam.nix
|
||||
./security/pam_usb.nix
|
||||
./security/pam_mount.nix
|
||||
./security/polkit.nix
|
||||
./security/prey.nix
|
||||
./security/rngd.nix
|
||||
@ -383,6 +384,7 @@
|
||||
./services/web-servers/lighttpd/gitweb.nix
|
||||
./services/web-servers/nginx/default.nix
|
||||
./services/web-servers/phpfpm.nix
|
||||
./services/web-servers/shellinabox.nix
|
||||
./services/web-servers/tomcat.nix
|
||||
./services/web-servers/uwsgi.nix
|
||||
./services/web-servers/varnish/default.nix
|
||||
|
@ -126,6 +126,14 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
pamMount = mkOption {
|
||||
default = config.security.pam.mount.enable;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Enable PAM mount (pam_mount) system to mount fileystems on user login.
|
||||
'';
|
||||
};
|
||||
|
||||
allowNullPassword = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
@ -224,7 +232,9 @@ let
|
||||
${optionalString cfg.usbAuth
|
||||
"auth sufficient ${pkgs.pam_usb}/lib/security/pam_usb.so"}
|
||||
${optionalString cfg.unixAuth
|
||||
"auth ${if config.security.pam.enableEcryptfs then "required" else "sufficient"} pam_unix.so ${optionalString cfg.allowNullPassword "nullok"} likeauth"}
|
||||
"auth ${if (config.security.pam.enableEcryptfs || cfg.pamMount) then "required" else "sufficient"} pam_unix.so ${optionalString cfg.allowNullPassword "nullok"} likeauth"}
|
||||
${optionalString cfg.pamMount
|
||||
"auth optional ${pkgs.pam_mount}/lib/security/pam_mount.so"}
|
||||
${optionalString config.security.pam.enableEcryptfs
|
||||
"auth required ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so unwrap"}
|
||||
${optionalString cfg.otpwAuth
|
||||
@ -238,12 +248,14 @@ let
|
||||
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
|
||||
''}
|
||||
${optionalString (! config.security.pam.enableEcryptfs) "auth required pam_deny.so"}
|
||||
${optionalString (!(config.security.pam.enableEcryptfs || cfg.pamMount)) "auth required pam_deny.so"}
|
||||
|
||||
# Password management.
|
||||
${optionalString config.security.pam.enableEcryptfs
|
||||
"password optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so"}
|
||||
password requisite pam_unix.so nullok sha512
|
||||
${optionalString cfg.pamMount
|
||||
"password optional ${pkgs.pam_mount}/lib/security/pam_mount.so"}
|
||||
${optionalString config.users.ldap.enable
|
||||
"password sufficient ${pam_ldap}/lib/security/pam_ldap.so"}
|
||||
${optionalString config.krb5.enable
|
||||
@ -280,6 +292,8 @@ let
|
||||
"session required ${pkgs.pam}/lib/security/pam_limits.so conf=${makeLimitsConf cfg.limits}"}
|
||||
${optionalString (cfg.showMotd && config.users.motd != null)
|
||||
"session optional ${pkgs.pam}/lib/security/pam_motd.so motd=${motd}"}
|
||||
${optionalString cfg.pamMount
|
||||
"session optional ${pkgs.pam_mount}/lib/security/pam_mount.so"}
|
||||
'';
|
||||
};
|
||||
|
||||
|
72
nixos/modules/security/pam_mount.nix
Normal file
72
nixos/modules/security/pam_mount.nix
Normal file
@ -0,0 +1,72 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.security.pam.mount;
|
||||
|
||||
anyPamMount = any (attrByPath ["pamMount"] false) (attrValues config.security.pam.services);
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
|
||||
security.pam.mount = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable PAM mount system to mount fileystems on user login.
|
||||
'';
|
||||
};
|
||||
|
||||
extraVolumes = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
List of volume definitions for pam_mount.
|
||||
For more information, visit <link
|
||||
xlink:href="http://pam-mount.sourceforge.net/pam_mount.conf.5.html" />.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf (cfg.enable || anyPamMount) {
|
||||
|
||||
environment.systemPackages = [ pkgs.pam_mount ];
|
||||
environment.etc = [{
|
||||
target = "security/pam_mount.conf.xml";
|
||||
source =
|
||||
let
|
||||
extraUserVolumes = filterAttrs (n: u: u.cryptHomeLuks != null) config.users.extraUsers;
|
||||
userVolumeEntry = user: "<volume user=\"${user.name}\" path=\"${user.cryptHomeLuks}\" mountpoint=\"${user.home}\" />\n";
|
||||
in
|
||||
pkgs.writeText "pam_mount.conf.xml" ''
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
|
||||
<!-- auto generated from Nixos: modules/config/users-groups.nix -->
|
||||
<pam_mount>
|
||||
<debug enable="0" />
|
||||
|
||||
${concatStrings (map userVolumeEntry (attrValues extraUserVolumes))}
|
||||
${concatStringsSep "\n" cfg.extraVolumes}
|
||||
|
||||
<!-- if activated, requires ofl from hxtools to be present -->
|
||||
<logout wait="0" hup="no" term="no" kill="no" />
|
||||
<!-- set PATH variable for pam_mount module -->
|
||||
<path>${pkgs.utillinux}/bin</path>
|
||||
<!-- create mount point if not present -->
|
||||
<mkmountpoint enable="1" remove="true" />
|
||||
|
||||
<!-- specify the binaries to be called -->
|
||||
<cryptmount>${pkgs.pam_mount}/bin/mount.crypt %(VOLUME) %(MNTPT)</cryptmount>
|
||||
<cryptumount>${pkgs.pam_mount}/bin/umount.crypt %(MNTPT)</cryptumount>
|
||||
<pmvarrun>${pkgs.pam_mount}/bin/pmvarrun -u %(USER) -o %(OPERATION)</pmvarrun>
|
||||
</pam_mount>
|
||||
'';
|
||||
}];
|
||||
|
||||
};
|
||||
}
|
@ -186,8 +186,9 @@ in
|
||||
preStart =
|
||||
''
|
||||
# Initialise the database.
|
||||
if ! test -e ${cfg.dataDir}; then
|
||||
if ! test -e ${cfg.dataDir}/PG_VERSION; then
|
||||
mkdir -m 0700 -p ${cfg.dataDir}
|
||||
rm -f ${cfg.dataDir}/*.conf
|
||||
if [ "$(id -u)" = 0 ]; then
|
||||
chown -R postgres ${cfg.dataDir}
|
||||
su -s ${pkgs.stdenv.shell} postgres -c 'initdb -U root'
|
||||
@ -195,8 +196,6 @@ in
|
||||
# For non-root operation.
|
||||
initdb
|
||||
fi
|
||||
rm -f ${cfg.dataDir}/*.conf
|
||||
touch "${cfg.dataDir}/.first_startup"
|
||||
fi
|
||||
|
||||
ln -sfn "${configFile}" "${cfg.dataDir}/postgresql.conf"
|
||||
|
@ -97,7 +97,7 @@ in
|
||||
Type = "forking";
|
||||
PIDFile = "/run/minidlna/pid";
|
||||
ExecStart =
|
||||
"@${pkgs.minidlna}/sbin/minidlna minidlna -P /run/minidlna/pid" +
|
||||
"@${pkgs.minidlna}/sbin/minidlnad minidlnad -P /run/minidlna/pid" +
|
||||
" -f ${pkgs.writeText "minidlna.conf" cfg.config}";
|
||||
};
|
||||
};
|
||||
|
@ -55,7 +55,7 @@ in {
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
default = pkgs.goPackages.skydns;
|
||||
default = pkgs.skydns;
|
||||
type = types.package;
|
||||
description = "Skydns package to use.";
|
||||
};
|
||||
|
@ -43,38 +43,27 @@ let
|
||||
'';
|
||||
|
||||
# WP translation can be found here:
|
||||
# https://make.wordpress.org/polyglots/teams/
|
||||
# FIXME:
|
||||
# - add all these languages:
|
||||
# sq ar az eu bs bg ca zh-cn zh-tw hr da nl en-au
|
||||
# en-ca en-gb eo fi fr gl de el he hu is id it ja
|
||||
# ko lt nb nn oci pl pt-br pt ro ru sr sk es-mx es
|
||||
# sv th tr uk cy
|
||||
# - cache the files on github.com/qknight/WordpressLanguages and use fetchFromGithub instead
|
||||
# note: this implementation of supportedLanguages will only work for me (qknight) as i'm using nix-prefetch-url
|
||||
# as the sha256 changes like every download.
|
||||
# note: this is also true for plugins and themes but these are controlled not from withing wordpress.nix
|
||||
# https://github.com/nixcloud/wordpress-translations
|
||||
supportedLanguages = {
|
||||
en_GB = "1yf1sb6ji3l4lg8nkkjhckbwl81jly8z93jf06pvk6a1p6bsr6l6";
|
||||
de_DE = "3881221f337799b88f9562df8b3f1560f2c49a8f662297561a5b25ce77f22e17";
|
||||
en_GB = { revision="d6c005372a5318fd758b710b77a800c86518be13"; sha256="0qbbsi87k47q4rgczxx541xz4z4f4fr49hw4lnaxkdsf5maz8p9p"; };
|
||||
de_DE = { revision="3c62955c27baaae98fd99feb35593d46562f4736"; sha256="1shndgd11dk836dakrjlg2arwv08vqx6j4xjh4jshvwmjab6ng6p"; };
|
||||
zh_ZN = { revision="12b9f811e8cae4b6ee41de343d35deb0a8fdda6d"; sha256="1339ggsxh0g6lab37jmfxicsax4h702rc3fsvv5azs7mcznvwh47"; };
|
||||
fr_FR = { revision="688c8b1543e3d38d9e8f57e0a6f2a2c3c8b588bd"; sha256="1j41iak0i6k7a4wzyav0yrllkdjjskvs45w53db8vfm8phq1n014"; };
|
||||
};
|
||||
|
||||
downloadLanguagePack = language: sha256:
|
||||
downloadLanguagePack = language: revision: sha256s:
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "wp_${language}-${version}";
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://downloads.wordpress.org/translation/core/${version}/${language}.zip";
|
||||
sha256 = "${sha256}";
|
||||
name = "wp_${language}";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nixcloud";
|
||||
repo = "wordpress-translations";
|
||||
rev = revision;
|
||||
sha256 = sha256s;
|
||||
};
|
||||
buildInputs = [ pkgs.unzip ];
|
||||
unpackPhase = ''
|
||||
unzip $src
|
||||
export sourceRoot=.
|
||||
'';
|
||||
installPhase = "mkdir -p $out; cp -R * $out/";
|
||||
};
|
||||
|
||||
selectedLanguages = map (lang: downloadLanguagePack lang supportedLanguages.${lang}) (config.languages);
|
||||
selectedLanguages = map (lang: downloadLanguagePack lang supportedLanguages.${lang}.revision supportedLanguages.${lang}.sha256) (config.languages);
|
||||
|
||||
# The wordpress package itself
|
||||
wordpressRoot = pkgs.stdenv.mkDerivation rec {
|
||||
@ -235,6 +224,7 @@ in
|
||||
|
||||
documentRoot = wordpressRoot;
|
||||
|
||||
# FIXME adding the user has to be done manually for the time being
|
||||
startupScript = pkgs.writeScript "init-wordpress.sh" ''
|
||||
#!/bin/sh
|
||||
mkdir -p ${config.wordpressUploads}
|
||||
|
122
nixos/modules/services/web-servers/shellinabox.nix
Normal file
122
nixos/modules/services/web-servers/shellinabox.nix
Normal file
@ -0,0 +1,122 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.shellinabox;
|
||||
|
||||
# If a certificate file is specified, shellinaboxd requires
|
||||
# a file descriptor to retrieve it
|
||||
fd = "3";
|
||||
createFd = optionalString (cfg.certFile != null) "${fd}<${cfg.certFile}";
|
||||
|
||||
# Command line arguments for the shellinabox daemon
|
||||
args = [ "--background" ]
|
||||
++ optional (! cfg.enableSSL) "--disable-ssl"
|
||||
++ optional (cfg.certFile != null) "--cert-fd=${fd}"
|
||||
++ optional (cfg.certDirectory != null) "--cert=${cfg.certDirectory}"
|
||||
++ cfg.extraOptions;
|
||||
|
||||
# Command to start shellinaboxd
|
||||
cmd = "${pkgs.shellinabox}/bin/shellinaboxd ${concatStringsSep " " args}";
|
||||
|
||||
# Command to start shellinaboxd if certFile is specified
|
||||
wrappedCmd = "${pkgs.bash}/bin/bash -c 'exec ${createFd} && ${cmd}'";
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
services.shellinabox = {
|
||||
enable = mkEnableOption "shellinabox daemon";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "root";
|
||||
description = ''
|
||||
User to run shellinaboxd as. If started as root, the server drops
|
||||
privileges by changing to nobody, unless overridden by the
|
||||
<literal>--user</literal> option.
|
||||
'';
|
||||
};
|
||||
|
||||
enableSSL = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether or not to enable SSL (https) support.
|
||||
'';
|
||||
};
|
||||
|
||||
certDirectory = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/var/certs";
|
||||
description = ''
|
||||
The daemon will look in this directory far any certificates.
|
||||
If the browser negotiated a Server Name Identification the daemon
|
||||
will look for a matching certificate-SERVERNAME.pem file. If no SNI
|
||||
handshake takes place, it will fall back on using the certificate in the
|
||||
certificate.pem file.
|
||||
|
||||
If no suitable certificate is installed, shellinaboxd will attempt to
|
||||
create a new self-signed certificate. This will only succeed if, after
|
||||
dropping privileges, shellinaboxd has write permissions for this
|
||||
directory.
|
||||
'';
|
||||
};
|
||||
|
||||
certFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/var/certificate.pem";
|
||||
description = "Path to server SSL certificate.";
|
||||
};
|
||||
|
||||
extraOptions = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
example = [ "--port=443" "--service /:LOGIN" ];
|
||||
description = ''
|
||||
A list of strings to be appended to the command line arguments
|
||||
for shellinaboxd. Please see the manual page
|
||||
<link xlink:href="https://code.google.com/p/shellinabox/wiki/shellinaboxd_man"/>
|
||||
for a full list of available arguments.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
assertions =
|
||||
[ { assertion = cfg.enableSSL == true
|
||||
-> cfg.certDirectory != null || cfg.certFile != null;
|
||||
message = "SSL is enabled for shellinabox, but no certDirectory or certFile has been specefied."; }
|
||||
{ assertion = ! (cfg.certDirectory != null && cfg.certFile != null);
|
||||
message = "Cannot set both certDirectory and certFile for shellinabox."; }
|
||||
];
|
||||
|
||||
systemd.services.shellinaboxd = {
|
||||
description = "Shellinabox Web Server Daemon";
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "sshd.service" ];
|
||||
after = [ "sshd.service" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
User = "${cfg.user}";
|
||||
ExecStart = "${if cfg.certFile == null then "${cmd}" else "${wrappedCmd}"}";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -10,7 +10,8 @@ let
|
||||
|
||||
realGrub = if cfg.version == 1 then pkgs.grub
|
||||
else if cfg.zfsSupport then pkgs.grub2.override { zfsSupport = true; }
|
||||
else pkgs.grub2;
|
||||
else if cfg.enableTrustedboot then pkgs.trustedGrub
|
||||
else pkgs.grub2;
|
||||
|
||||
grub =
|
||||
# Don't include GRUB if we're only generating a GRUB menu (e.g.,
|
||||
@ -37,6 +38,7 @@ let
|
||||
grub = f grub;
|
||||
grubTarget = f (grub.grubTarget or "");
|
||||
shell = "${pkgs.stdenv.shell}";
|
||||
fullName = (builtins.parseDrvName realGrub.name).name;
|
||||
fullVersion = (builtins.parseDrvName realGrub.name).version;
|
||||
grubEfi = f grubEfi;
|
||||
grubTargetEfi = if cfg.efiSupport && (cfg.version == 2) then f (grubEfi.grubTarget or "") else "";
|
||||
@ -367,6 +369,15 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
enableTrustedboot = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Enable trusted boot. Grub will measure all critical components during
|
||||
the boot process to offer TCG (TPM) support.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
@ -429,6 +440,22 @@ in
|
||||
assertion = all (c: c < 2) (mapAttrsToList (_: c: c) bootDeviceCounters);
|
||||
message = "You cannot have duplicated devices in mirroredBoots";
|
||||
}
|
||||
{
|
||||
assertion = !cfg.enableTrustedboot || cfg.version == 2;
|
||||
message = "Trusted GRUB is only available for GRUB 2";
|
||||
}
|
||||
{
|
||||
assertion = !cfg.efiSupport || !cfg.enableTrustedboot;
|
||||
message = "Trusted GRUB does not have EFI support";
|
||||
}
|
||||
{
|
||||
assertion = !cfg.zfsSupport || !cfg.enableTrustedboot;
|
||||
message = "Trusted GRUB does not have ZFS support";
|
||||
}
|
||||
{
|
||||
assertion = !cfg.enableTrustedboot;
|
||||
message = "Trusted GRUB can break your system. Remove assertion if you want to test trustedGRUB nevertheless.";
|
||||
}
|
||||
] ++ flip concatMap cfg.mirroredBoots (args: [
|
||||
{
|
||||
assertion = args.devices != [ ];
|
||||
|
@ -433,15 +433,18 @@ foreach my $fn (glob "$bootPath/kernels/*") {
|
||||
#
|
||||
|
||||
struct(GrubState => {
|
||||
name => '$',
|
||||
version => '$',
|
||||
efi => '$',
|
||||
devices => '$',
|
||||
efiMountPoint => '$',
|
||||
});
|
||||
sub readGrubState {
|
||||
my $defaultGrubState = GrubState->new(version => "", efi => "", devices => "", efiMountPoint => "" );
|
||||
my $defaultGrubState = GrubState->new(name => "", version => "", efi => "", devices => "", efiMountPoint => "" );
|
||||
open FILE, "<$bootPath/grub/state" or return $defaultGrubState;
|
||||
local $/ = "\n";
|
||||
my $name = <FILE>;
|
||||
chomp($name);
|
||||
my $version = <FILE>;
|
||||
chomp($version);
|
||||
my $efi = <FILE>;
|
||||
@ -451,7 +454,7 @@ sub readGrubState {
|
||||
my $efiMountPoint = <FILE>;
|
||||
chomp($efiMountPoint);
|
||||
close FILE;
|
||||
my $grubState = GrubState->new(version => $version, efi => $efi, devices => $devices, efiMountPoint => $efiMountPoint );
|
||||
my $grubState = GrubState->new(name => $name, version => $version, efi => $efi, devices => $devices, efiMountPoint => $efiMountPoint );
|
||||
return $grubState
|
||||
}
|
||||
|
||||
@ -496,11 +499,12 @@ my $efiTarget = getEfiTarget();
|
||||
my $prevGrubState = readGrubState();
|
||||
my @prevDeviceTargets = split/:/, $prevGrubState->devices;
|
||||
|
||||
my $devicesDiffer = scalar (List::Compare->new( '-u', '-a', \@deviceTargets, \@prevDeviceTargets)->get_symmetric_difference() );
|
||||
my $versionDiffer = (get("fullVersion") eq \$prevGrubState->version);
|
||||
my $efiDiffer = ($efiTarget eq \$prevGrubState->efi);
|
||||
my $efiMountPointDiffer = ($efiSysMountPoint eq \$prevGrubState->efiMountPoint);
|
||||
my $requireNewInstall = $devicesDiffer || $versionDiffer || $efiDiffer || $efiMountPointDiffer || (($ENV{'NIXOS_INSTALL_GRUB'} // "") eq "1");
|
||||
my $devicesDiffer = scalar (List::Compare->new( '-u', '-a', \@deviceTargets, \@prevDeviceTargets)->get_symmetric_difference());
|
||||
my $nameDiffer = get("fullName") ne $prevGrubState->name;
|
||||
my $versionDiffer = get("fullVersion") ne $prevGrubState->version;
|
||||
my $efiDiffer = $efiTarget ne $prevGrubState->efi;
|
||||
my $efiMountPointDiffer = $efiSysMountPoint ne $prevGrubState->efiMountPoint;
|
||||
my $requireNewInstall = $devicesDiffer || $nameDiffer || $versionDiffer || $efiDiffer || $efiMountPointDiffer || (($ENV{'NIXOS_INSTALL_GRUB'} // "") eq "1");
|
||||
|
||||
# install a symlink so that grub can detect the boot drive when set
|
||||
# as the root directory
|
||||
@ -543,6 +547,7 @@ if (($requireNewInstall != 0) && ($efiTarget eq "only" || $efiTarget eq "both"))
|
||||
# update GRUB state file
|
||||
if ($requireNewInstall != 0) {
|
||||
open FILE, ">$bootPath/grub/state" or die "cannot create $bootPath/grub/state: $!\n";
|
||||
print FILE get("fullName"), "\n" or die;
|
||||
print FILE get("fullVersion"), "\n" or die;
|
||||
print FILE $efiTarget, "\n" or die;
|
||||
print FILE join( ":", @deviceTargets ), "\n" or die;
|
||||
|
@ -5,7 +5,7 @@ with lib;
|
||||
let
|
||||
luks = config.boot.initrd.luks;
|
||||
|
||||
openCommand = { name, device, keyFile, keyFileSize, allowDiscards, yubikey, ... }: ''
|
||||
openCommand = { name, device, header, keyFile, keyFileSize, allowDiscards, yubikey, ... }: ''
|
||||
# Wait for luksRoot to appear, e.g. if on a usb drive.
|
||||
# XXX: copied and adapted from stage-1-init.sh - should be
|
||||
# available as a function.
|
||||
@ -33,6 +33,7 @@ let
|
||||
|
||||
open_normally() {
|
||||
cryptsetup luksOpen ${device} ${name} ${optionalString allowDiscards "--allow-discards"} \
|
||||
${optionalString (header != null) "--header=${header}"} \
|
||||
${optionalString (keyFile != null) "--key-file=${keyFile} ${optionalString (keyFileSize != null) "--keyfile-size=${toString keyFileSize}"}"}
|
||||
}
|
||||
|
||||
@ -251,6 +252,16 @@ in
|
||||
description = "Path of the underlying block device.";
|
||||
};
|
||||
|
||||
header = mkOption {
|
||||
default = null;
|
||||
example = "/root/header.img";
|
||||
type = types.nullOr types.string;
|
||||
description = ''
|
||||
The name of the file or block device that
|
||||
should be used as header for the encrypted device.
|
||||
'';
|
||||
};
|
||||
|
||||
keyFile = mkOption {
|
||||
default = null;
|
||||
example = "/dev/sdb1";
|
||||
|
@ -103,6 +103,9 @@ in
|
||||
LimitNPROC = 1048576;
|
||||
} // proxy_env;
|
||||
|
||||
path = [ pkgs.kmod ];
|
||||
environment.MODULE_DIR = "/run/current-system/kernel-modules/lib/modules";
|
||||
|
||||
postStart = ''
|
||||
while ! [ -e /var/run/docker.sock ]; do
|
||||
sleep 0.1
|
||||
|
@ -47,13 +47,32 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
virtualisation.xen.bridge =
|
||||
mkOption {
|
||||
default = "xenbr0";
|
||||
description =
|
||||
''
|
||||
Create a bridge for the Xen domUs to connect to.
|
||||
virtualisation.xen.bridge = {
|
||||
name = mkOption {
|
||||
default = "xenbr0";
|
||||
description = ''
|
||||
Name of bridge the Xen domUs connect to.
|
||||
'';
|
||||
};
|
||||
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "172.16.0.1";
|
||||
description = ''
|
||||
IPv4 address of the bridge.
|
||||
'';
|
||||
};
|
||||
|
||||
prefixLength = mkOption {
|
||||
type = types.addCheck types.int (n: n >= 0 && n <= 32);
|
||||
default = 16;
|
||||
description = ''
|
||||
Subnet mask of the bridge interface, specified as the number of
|
||||
bits in the prefix (<literal>24</literal>).
|
||||
A DHCP server will provide IP addresses for the whole, remaining
|
||||
subnet.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.xen.stored =
|
||||
@ -261,11 +280,71 @@ in
|
||||
description = "Xen bridge";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
before = [ "xen-domains.service" ];
|
||||
serviceConfig.RemainAfterExit = "yes";
|
||||
serviceConfig.ExecStart = "${pkgs.bridge-utils}/bin/brctl addbr ${cfg.bridge}";
|
||||
postStart = "${pkgs.inetutils}/bin/ifconfig ${cfg.bridge} up";
|
||||
serviceConfig.ExecStop = "${pkgs.inetutils}/bin/ifconfig ${cfg.bridge} down";
|
||||
postStop = "${pkgs.bridge-utils}/bin/brctl delbr ${cfg.bridge}";
|
||||
preStart = ''
|
||||
mkdir -p /var/run/xen
|
||||
touch /var/run/xen/dnsmasq.pid
|
||||
touch /var/run/xen/dnsmasq.etherfile
|
||||
touch /var/run/xen/dnsmasq.leasefile
|
||||
|
||||
IFS='-' read -a data <<< `${pkgs.sipcalc}/bin/sipcalc ${cfg.bridge.address}/${toString cfg.bridge.prefixLength} | grep Usable\ range`
|
||||
export XEN_BRIDGE_IP_RANGE_START="${"\${data[1]//[[:blank:]]/}"}"
|
||||
export XEN_BRIDGE_IP_RANGE_END="${"\${data[2]//[[:blank:]]/}"}"
|
||||
|
||||
IFS='-' read -a data <<< `${pkgs.sipcalc}/bin/sipcalc ${cfg.bridge.address}/${toString cfg.bridge.prefixLength} | grep Network\ address`
|
||||
export XEN_BRIDGE_NETWORK_ADDRESS="${"\${data[1]//[[:blank:]]/}"}"
|
||||
|
||||
echo "${cfg.bridge.address} host gw dns" > /var/run/xen/dnsmasq.hostsfile
|
||||
|
||||
cat <<EOF > /var/run/xen/dnsmasq.conf
|
||||
no-daemon
|
||||
pid-file=/var/run/xen/dnsmasq.pid
|
||||
interface=${cfg.bridge.name}
|
||||
except-interface=lo
|
||||
bind-interfaces
|
||||
auth-server=dns.xen.local,${cfg.bridge.name}
|
||||
auth-zone=xen.local,$XEN_BRIDGE_NETWORK_ADDRESS/${toString cfg.bridge.prefixLength}
|
||||
domain=xen.local
|
||||
addn-hosts=/var/run/xen/dnsmasq.hostsfile
|
||||
expand-hosts
|
||||
strict-order
|
||||
no-hosts
|
||||
bogus-priv
|
||||
no-resolv
|
||||
no-poll
|
||||
filterwin2k
|
||||
clear-on-reload
|
||||
domain-needed
|
||||
dhcp-hostsfile=/var/run/xen/dnsmasq.etherfile
|
||||
dhcp-authoritative
|
||||
dhcp-range=$XEN_BRIDGE_IP_RANGE_START,$XEN_BRIDGE_IP_RANGE_END,$XEN_BRIDGE_NETWORK_ADDRESS
|
||||
dhcp-no-override
|
||||
no-ping
|
||||
dhcp-leasefile=/var/run/xen/dnsmasq.leasefile
|
||||
EOF
|
||||
|
||||
# DHCP
|
||||
${pkgs.iptables}/bin/iptables -I INPUT -i ${cfg.bridge.name} -p tcp -s $XEN_BRIDGE_NETWORK_ADDRESS/${toString cfg.bridge.prefixLength} --sport 68 --dport 67 -j ACCEPT
|
||||
${pkgs.iptables}/bin/iptables -I INPUT -i ${cfg.bridge.name} -p udp -s $XEN_BRIDGE_NETWORK_ADDRESS/${toString cfg.bridge.prefixLength} --sport 68 --dport 67 -j ACCEPT
|
||||
# DNS
|
||||
${pkgs.iptables}/bin/iptables -I INPUT -i ${cfg.bridge.name} -p tcp -d ${cfg.bridge.address} --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
|
||||
${pkgs.iptables}/bin/iptables -I INPUT -i ${cfg.bridge.name} -p udp -d ${cfg.bridge.address} --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
${pkgs.bridge-utils}/bin/brctl addbr ${cfg.bridge.name}
|
||||
${pkgs.inetutils}/bin/ifconfig ${cfg.bridge.name} ${cfg.bridge.address}
|
||||
${pkgs.inetutils}/bin/ifconfig ${cfg.bridge.name} up
|
||||
'';
|
||||
serviceConfig.ExecStart = "${pkgs.dnsmasq}/bin/dnsmasq --conf-file=/var/run/xen/dnsmasq.conf";
|
||||
postStop = ''
|
||||
${pkgs.inetutils}/bin/ifconfig ${cfg.bridge.name} down
|
||||
${pkgs.bridge-utils}/bin/brctl delbr ${cfg.bridge.name}
|
||||
|
||||
# DNS
|
||||
${pkgs.iptables}/bin/iptables -D INPUT -i ${cfg.bridge.name} -p udp -d ${cfg.bridge.address} --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
|
||||
${pkgs.iptables}/bin/iptables -D INPUT -i ${cfg.bridge.name} -p tcp -d ${cfg.bridge.address} --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
|
||||
# DHCP
|
||||
${pkgs.iptables}/bin/iptables -D INPUT -i ${cfg.bridge.name} -p udp --sport 68 --dport 67 -j ACCEPT
|
||||
${pkgs.iptables}/bin/iptables -D INPUT -i ${cfg.bridge.name} -p tcp --sport 68 --dport 67 -j ACCEPT
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
|
@ -157,10 +157,11 @@ import ./make-test.nix (
|
||||
|
||||
my $clipboard = $machine->succeed("${pkgs.xclip}/bin/xclip -o");
|
||||
die "sandbox not working properly: $clipboard"
|
||||
unless $clipboard =~ /(?:suid|namespace) sandbox.*yes/mi
|
||||
unless $clipboard =~ /namespace sandbox.*yes/mi
|
||||
&& $clipboard =~ /pid namespaces.*yes/mi
|
||||
&& $clipboard =~ /network namespaces.*yes/mi
|
||||
&& $clipboard =~ /seccomp.*sandbox.*yes/mi;
|
||||
&& $clipboard =~ /seccomp.*sandbox.*yes/mi
|
||||
&& $clipboard =~ /you are adequately sandboxed/mi;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -15,8 +15,8 @@ import ./make-test.nix {
|
||||
startAll;
|
||||
|
||||
$docker->waitForUnit("docker.service");
|
||||
$docker->succeed("tar cv --files-from /dev/null | docker import - scratch");
|
||||
$docker->succeed("docker run -d --name=sleeping -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratch /bin/sleep 10");
|
||||
$docker->succeed("tar cv --files-from /dev/null | docker import - scratchimg");
|
||||
$docker->succeed("docker run -d --name=sleeping -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg /bin/sleep 10");
|
||||
$docker->succeed("docker ps | grep sleeping");
|
||||
$docker->succeed("docker stop sleeping");
|
||||
'';
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ stdenv, fetchurl, buildEnv, makeDesktopItem, makeWrapper, zlib, glib, alsaLib
|
||||
, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf
|
||||
, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xlibs, libcap
|
||||
, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xlibs, libcap, systemd
|
||||
}:
|
||||
|
||||
let
|
||||
@ -11,16 +11,16 @@ let
|
||||
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
|
||||
xlibs.libXrender xlibs.libX11 xlibs.libXext xlibs.libXdamage xlibs.libXtst
|
||||
xlibs.libXcomposite xlibs.libXi xlibs.libXfixes xlibs.libXrandr
|
||||
xlibs.libXcursor libcap
|
||||
xlibs.libXcursor libcap systemd
|
||||
];
|
||||
};
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "atom-${version}";
|
||||
version = "0.187.0";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
||||
sha256 = "0s6173dg5m52zc8kqwlgjn113d84cskrv9v29fb0nrvwvkv2xzmw";
|
||||
sha256 = "434be52726fed9804ddb8c07dba200d774d145d0a870d2a013b5f95eb882fa7e";
|
||||
name = "${name}.deb";
|
||||
};
|
||||
|
||||
@ -31,7 +31,10 @@ in stdenv.mkDerivation rec {
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
ar p $src data.tar.gz | tar -C $out -xz ./usr
|
||||
substituteInPlace $out/usr/share/applications/atom.desktop \
|
||||
--replace /usr/share/atom $out/bin
|
||||
mv $out/usr/* $out/
|
||||
rm -r $out/share/lintian
|
||||
rm -r $out/usr/
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
$out/share/atom/atom
|
||||
|
@ -302,4 +302,20 @@ in {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
eclipse_sdk_45 = buildEclipse {
|
||||
name = "eclipse-sdk-4.5";
|
||||
description = "Eclipse Mars Classic";
|
||||
sources = {
|
||||
"x86_64-linux" = fetchurl {
|
||||
url = http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/eclipse-SDK-4.5-linux-gtk-x86_64.tar.gz;
|
||||
sha256 = "0vfql4gh263ms8bg7sgn05gnjajplx304cn3nr03jlacgr3pkarf";
|
||||
|
||||
};
|
||||
"i686-linux" = fetchurl {
|
||||
url = http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/eclipse-SDK-4.5-linux-gtk.tar.gz;
|
||||
sha256 = "0xv66l6hdlvxpswcqrsh398wg6xhy30f833dr7jvvz45s5437hm3";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ stdenv, fetchurl, ncurses, x11, libXaw, libXpm, Xaw3d
|
||||
, pkgconfig, gtk, libXft, dbus, libpng, libjpeg, libungif
|
||||
, pkgconfig, gettext, gtk, libXft, dbus, libpng, libjpeg, libungif
|
||||
, libtiff, librsvg, texinfo, gconf, libxml2, imagemagick, gnutls
|
||||
, alsaLib, cairo, acl, gpm
|
||||
, withX ? !stdenv.isDarwin
|
||||
@ -35,8 +35,12 @@ stdenv.mkDerivation rec {
|
||||
./at-fdcwd.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
sed -i 's|/usr/share/locale|${gettext}/share/locale|g' lisp/international/mule-cmds.el
|
||||
'';
|
||||
|
||||
buildInputs =
|
||||
[ ncurses gconf libxml2 gnutls alsaLib pkgconfig texinfo acl gpm ]
|
||||
[ ncurses gconf libxml2 gnutls alsaLib pkgconfig texinfo acl gpm gettext ]
|
||||
++ stdenv.lib.optional stdenv.isLinux dbus
|
||||
++ stdenv.lib.optionals withX
|
||||
[ x11 libXaw Xaw3d libXpm libpng libjpeg libungif libtiff librsvg libXft
|
||||
|
@ -1,4 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
mkdir -p $out/share/emacs/site-lisp
|
||||
cp $src $out/share/emacs/site-lisp/htmlize.el
|
@ -1,15 +1,21 @@
|
||||
{ stdenv, fetchurl }:
|
||||
{ stdenv, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "htmlize-1.47";
|
||||
|
||||
builder = ./builder.sh;
|
||||
|
||||
src = fetchurl {
|
||||
url = http://fly.srk.fer.hr/~hniksic/emacs/htmlize.el.cgi;
|
||||
sha256 = "0m7lby95w9sj0xlqv39imlbp80x8ajd295cs6079jyhmryf6mr10";
|
||||
src = fetchFromGitHub {
|
||||
owner = "emacsmirror";
|
||||
repo = "htmlize";
|
||||
rev = "release/1.47";
|
||||
name = "htmlize-1.47-src";
|
||||
sha256 = "1vkqxgirc82vc44g7xhhr041arf93yirjin3h144kjyfkgkplnkp";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/emacs/site-lisp
|
||||
cp htmlize.el $out/share/emacs/site-lisp/
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Convert buffer text and decorations to HTML";
|
||||
};
|
||||
|
@ -212,14 +212,14 @@ in
|
||||
|
||||
android-studio = buildAndroidStudio rec {
|
||||
name = "android-studio-${version}";
|
||||
version = "1.2.1.1";
|
||||
build = "141.1903250";
|
||||
version = "1.2.2.0";
|
||||
build = "141.1980579";
|
||||
description = "Android development environment based on IntelliJ IDEA";
|
||||
license = stdenv.lib.licenses.asl20;
|
||||
src = fetchurl {
|
||||
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}" +
|
||||
"/android-studio-ide-${build}-linux.zip";
|
||||
sha256 = "17n0hsw0655b2w7a3avj5hw6njhv4gayxnsj1bwi9p3dgzr5d5zp";
|
||||
sha256 = "08bayp2kxxg0zdmd1rcfg89g80wmwxf56fzmk5xkz1qg6s9b98a6";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -3,12 +3,12 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "oiio-${version}";
|
||||
version = "1.4.15";
|
||||
name = "openimageio-${version}";
|
||||
version = "1.4.16";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/OpenImageIO/oiio/archive/Release-${version}.zip";
|
||||
sha256 = "1fc5v3qmrzf9qx765fd15r2dc3ccrz4xf4f9q4cwsrspmaxqyqzs";
|
||||
sha256 = "0f9gspsjhniz992c04dm4lvffzz7zjqn1n34nqn6c32r498kimcj";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
@ -25,6 +25,8 @@ stdenv.mkDerivation rec {
|
||||
INSTALLDIR=$out dist_dir=
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://www.openimageio.org;
|
||||
description = "A library and tools for reading and writing images";
|
||||
|
@ -10,15 +10,13 @@
|
||||
with lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "blender-2.74";
|
||||
name = "blender-2.75";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.blender.org/source/${name}.tar.gz";
|
||||
sha256 = "178i19pz7jl79b4wn92869j6qymawsa0kaw1dxaprbjnqsvcx8qc";
|
||||
sha256 = "1r3qyj57g06ir424q7szxkyb6h0b7laq7f126158kgs94xpkhlsz";
|
||||
};
|
||||
|
||||
patches = [ ./sm52.patch ];
|
||||
|
||||
buildInputs =
|
||||
[ SDL boost cmake ffmpeg gettext glew ilmbase libXi
|
||||
libjpeg libpng libsamplerate libsndfile libtiff mesa openal
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff -ru -x '*~' blender-2.73a-orig/CMakeLists.txt blender-2.73a/CMakeLists.txt
|
||||
--- blender-2.73a-orig/CMakeLists.txt 2015-01-21 13:31:24.000000000 +0100
|
||||
+++ blender-2.73a/CMakeLists.txt 2015-03-01 23:14:22.962585422 +0100
|
||||
@@ -351,7 +351,7 @@
|
||||
option(WITH_CYCLES_STANDALONE_GUI "Build cycles standalone with GUI" OFF)
|
||||
option(WITH_CYCLES_OSL "Build Cycles with OSL support" ${_init_CYCLES_OSL})
|
||||
option(WITH_CYCLES_CUDA_BINARIES "Build cycles CUDA binaries" OFF)
|
||||
-set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 sm_50 CACHE STRING "CUDA architectures to build binaries for")
|
||||
+set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 sm_50 sm_52 CACHE STRING "CUDA architectures to build binaries for")
|
||||
mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
|
||||
unset(PLATFORM_DEFAULT)
|
||||
option(WITH_CYCLES_LOGGING "Build cycles with logging support" ON)
|
@ -1,11 +1,11 @@
|
||||
{ stdenv, fetchurl, automake, autoconf, libtool, pkgconfig, libzen, libmediainfo, wxGTK, desktop_file_utils, libSM, imagemagick }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.7.74";
|
||||
version = "0.7.75";
|
||||
name = "mediainfo-gui-${version}";
|
||||
src = fetchurl {
|
||||
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.bz2";
|
||||
sha256 = "06r6inggkb3gmxax182y4y39icxry5hdcvq7syb060l8wxrk14ky";
|
||||
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
|
||||
sha256 = "1xdsy5z7x7bd251m26h5hcwcmgl6gklxj6h9q025mlnfmcs7pbdy";
|
||||
};
|
||||
|
||||
buildInputs = [ automake autoconf libtool pkgconfig libzen libmediainfo wxGTK desktop_file_utils libSM imagemagick ];
|
||||
|
@ -1,11 +1,11 @@
|
||||
{ stdenv, fetchurl, automake, autoconf, libtool, pkgconfig, libzen, libmediainfo, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.7.74";
|
||||
version = "0.7.75";
|
||||
name = "mediainfo-${version}";
|
||||
src = fetchurl {
|
||||
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.bz2";
|
||||
sha256 = "06r6inggkb3gmxax182y4y39icxry5hdcvq7syb060l8wxrk14ky";
|
||||
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
|
||||
sha256 = "1xdsy5z7x7bd251m26h5hcwcmgl6gklxj6h9q025mlnfmcs7pbdy";
|
||||
};
|
||||
|
||||
buildInputs = [ automake autoconf libtool pkgconfig libzen libmediainfo zlib ];
|
||||
|
@ -0,0 +1,28 @@
|
||||
{ stdenv, fetchFromGitHub, xrdb }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "urxvt-font-size-2015-05-22";
|
||||
dontPatchShebangs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "majutsushi";
|
||||
repo = "urxvt-font-size";
|
||||
rev = "fd5b09c10798c6723bbf771d4d8881cf6563bc69";
|
||||
sha256 = "16m3kkypg3y00x597zx05zy167a0kaqpawz0l591wzb2bv1dz55z";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
substituteInPlace font-size \
|
||||
--replace "xrdb -merge" "${xrdb}/bin/xrdb -merge"
|
||||
|
||||
mkdir -p $out/lib/urxvt/perl
|
||||
cp font-size $out/lib/urxvt/perl
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Change the urxvt font size on the fly";
|
||||
homepage = "https://github.com/majutsushi/urxvt-font-size";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ cstrahan ];
|
||||
};
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
{ stdenv, fetchFromGitHub, wmctrl }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "urxvt-perl-2015-01-16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "effigies";
|
||||
repo = "urxvt-perl";
|
||||
rev = "c3beb9ff09a7139591416c61f8e9458c8a23bea5";
|
||||
sha256 = "1w1p8ng7bwq5hnaprjl1zf073y5l3hdsj7sz7cll6isjswcm6r0s";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
substituteInPlace fullscreen \
|
||||
--replace "wmctrl" "${wmctrl}/bin/wmctrl"
|
||||
|
||||
mkdir -p $out/lib/urxvt/perl
|
||||
cp fullscreen $out/lib/urxvt/perl
|
||||
cp newterm $out/lib/urxvt/perl
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Perl extensions for the rxvt-unicode terminal emulator";
|
||||
homepage = "https://github.com/effigies/urxvt-perl";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ cstrahan ];
|
||||
};
|
||||
}
|
@ -5,17 +5,18 @@ with stdenv.lib;
|
||||
mkChromiumDerivation (base: rec {
|
||||
name = "chromium-browser";
|
||||
packageName = "chromium";
|
||||
buildTargets = [ "mksnapshot" "chrome" ];
|
||||
buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$libExecPath"
|
||||
cp -v "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
|
||||
cp -v "$buildPath/icudtl.dat" "$libExecPath/"
|
||||
cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
|
||||
${optionalString (versionOlder base.version "45.0.0.0") ''
|
||||
${optionalString (versionOlder base.version "44.0.0.0") ''
|
||||
cp -v "$buildPath/libffmpegsumo.so" "$libExecPath/"
|
||||
''}
|
||||
cp -v "$buildPath/chrome" "$libExecPath/$packageName"
|
||||
cp -v "$buildPath/chrome_sandbox" "$libExecPath/chrome-sandbox"
|
||||
|
||||
mkdir -vp "$out/share/man/man1"
|
||||
cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1"
|
||||
|
@ -126,7 +126,6 @@ let
|
||||
# derivations.
|
||||
prePatch = ''
|
||||
cp -dr --no-preserve=mode "${source.main}"/* .
|
||||
cp -dr --no-preserve=mode "${source.sandbox}" sandbox
|
||||
cp -dr "${source.bundled}" third_party
|
||||
chmod -R u+w third_party
|
||||
'';
|
||||
|
@ -33,7 +33,6 @@ let
|
||||
};
|
||||
|
||||
browser = callPackage ./browser.nix { };
|
||||
sandbox = callPackage ./sandbox.nix { };
|
||||
|
||||
plugins = callPackage ./plugins.nix {
|
||||
inherit enablePepperFlash enableWideVine;
|
||||
@ -71,7 +70,6 @@ in stdenv.mkDerivation {
|
||||
|
||||
buildCommand = let
|
||||
browserBinary = "${chromium.browser}/libexec/chromium/chromium";
|
||||
sandboxBinary = "${chromium.sandbox}/bin/chromium-sandbox";
|
||||
mkEnvVar = key: val: "--set '${key}' '${val}'";
|
||||
envVars = chromium.plugins.settings.envVars or {};
|
||||
flags = chromium.plugins.settings.flags or [];
|
||||
|
@ -1,21 +0,0 @@
|
||||
{ stdenv, source }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "chromium-sandbox-${source.version}";
|
||||
src = source.sandbox;
|
||||
|
||||
patchPhase = ''
|
||||
sed -i -e '/#include.*base_export/c \
|
||||
#define BASE_EXPORT __attribute__((visibility("default")))
|
||||
/#include/s|sandbox/linux|'"$(pwd)"'/linux|
|
||||
' linux/suid/*.[hc]
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
gcc -Wall -std=gnu99 -o sandbox linux/suid/*.c
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
install -svD sandbox "$out/bin/chromium-sandbox"
|
||||
'';
|
||||
}
|
@ -14,12 +14,10 @@ let
|
||||
"s,^[^/]+(.*)$,$main\\1,"
|
||||
"s,$main/(build|tools)(/.*)?$,$out/\\1\\2,"
|
||||
"s,$main/third_party(/.*)?$,$bundled\\1,"
|
||||
"s,$main/sandbox(/.*)?$,$sandbox\\1,"
|
||||
"s,^/,,"
|
||||
]);
|
||||
|
||||
pre44 = versionOlder version "44.0.0.0";
|
||||
is44 = versionOlder version "45.0.0.0" && !pre44;
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
name = "chromium-source-${version}";
|
||||
@ -29,7 +27,7 @@ in stdenv.mkDerivation {
|
||||
buildInputs = [ python ]; # cannot patch shebangs otherwise
|
||||
|
||||
phases = [ "unpackPhase" "patchPhase" ];
|
||||
outputs = [ "out" "sandbox" "bundled" "main" ];
|
||||
outputs = [ "out" "bundled" "main" ];
|
||||
|
||||
unpackPhase = ''
|
||||
tar xf "$src" -C / \
|
||||
@ -48,39 +46,9 @@ in stdenv.mkDerivation {
|
||||
done
|
||||
'';
|
||||
|
||||
patches = let
|
||||
baseURL = "https://codereview.chromium.org/download";
|
||||
|
||||
mkBlinkFix = issue: sha256: fetchpatch {
|
||||
url = "${baseURL}/issue${issue}.diff";
|
||||
inherit sha256;
|
||||
postFetch = ''
|
||||
sed -i -e 's,^\(---\|+++\) *[ab]/,&third_party/WebKit/,' "$out"
|
||||
'';
|
||||
};
|
||||
|
||||
fixes44 = [
|
||||
# WebPluginContainer::setNeedsLayout
|
||||
# https://codereview.chromium.org/1157943002/
|
||||
(mkBlinkFix "1157943002_20001"
|
||||
"0932yd15zlh2g5a5bbm6qrnfvv22jlfdg8pj0w9z58m5zdzw1p82")
|
||||
# WebRuntimeFeatures::enablePermissionsAPI
|
||||
# https://codereview.chromium.org/1156113007/
|
||||
(mkBlinkFix "1156113007_1"
|
||||
"1v76brrgdziv1q62ba4bimg0my2dmnkyl68b21nv2vw661v0hzwh")
|
||||
# Revert of https://codereview.chromium.org/1150543002/
|
||||
(fetchpatch {
|
||||
url = "${baseURL}/issue1150543002_1.diff";
|
||||
sha256 = "0x9sya0m1zcb2vcp2vfss88qqdrh6bzcbx2ngfiql7rkbynnpqn6";
|
||||
postFetch = ''
|
||||
${patchutils}/bin/interdiff "$out" /dev/null > reversed.patch
|
||||
mv reversed.patch "$out"
|
||||
'';
|
||||
})
|
||||
];
|
||||
pluginPaths = if pre44 then singleton ./nix_plugin_paths_42.patch
|
||||
else singleton ./nix_plugin_paths_44.patch;
|
||||
in pluginPaths ++ optionals is44 fixes44;
|
||||
patches = if pre44
|
||||
then singleton ./nix_plugin_paths_42.patch
|
||||
else singleton ./nix_plugin_paths_44.patch;
|
||||
|
||||
patchPhase = let
|
||||
diffmod = sym: "/^${sym} /{s/^${sym} //;${transform ""};s/^/${sym} /}";
|
||||
@ -102,8 +70,6 @@ in stdenv.mkDerivation {
|
||||
-e 's|/bin/echo|echo|' \
|
||||
-e "/python_arch/s/: *'[^']*'/: '""'/" \
|
||||
"$out/build/common.gypi" "$main/chrome/chrome_tests.gypi"
|
||||
sed -i -e '/LOG.*no_suid_error/d' \
|
||||
"$main/content/browser/browser_main_loop.cc"
|
||||
'' + optionalString useOpenSSL ''
|
||||
cat $opensslPatches | patch -p1 -d "$bundled/openssl/openssl"
|
||||
'';
|
||||
|
@ -1,287 +0,0 @@
|
||||
commit 0fec7e4a742f001c9816a8b58a1120fb44230867
|
||||
Author: aszlig <aszlig@redmoonstudios.org>
|
||||
Date: Thu May 16 14:17:56 2013 +0200
|
||||
|
||||
zygote: Add support for user namespaces on Linux.
|
||||
|
||||
The implementation is done by patching the Zygote host to execute the sandbox
|
||||
binary with CLONE_NEWUSER and setting the uid and gid mapping so that the child
|
||||
process is using uid 0 and gid 0 which map to the current user of the parent.
|
||||
Afterwards, the sandbox will continue as if it was called as a setuid binary.
|
||||
|
||||
In addition, this adds new_user_namespace as an option in process_util in order
|
||||
to set the UID and GID mapping correctly. The reason for this is that just
|
||||
passing CLONE_NEWUSER to clone_flags doesn't help in LaunchProcess(), because
|
||||
without setting the mappings exec*() will clear the process's capability sets.
|
||||
|
||||
If the kernel doesn't support unprivileged user namespaces and the sandbox
|
||||
binary doesn't have the setuid flag, the Zygote main process will run without a
|
||||
sandbox. This is to mimic the behaviour if no SUID sandbox binary path is set.
|
||||
|
||||
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
||||
|
||||
diff --git a/base/process/launch.cc b/base/process/launch.cc
|
||||
index 81748f5..930f20f 100644
|
||||
--- a/base/process/launch.cc
|
||||
+++ b/base/process/launch.cc
|
||||
@@ -26,6 +26,7 @@ LaunchOptions::LaunchOptions()
|
||||
#if defined(OS_LINUX)
|
||||
, clone_flags(0)
|
||||
, allow_new_privs(false)
|
||||
+ , new_user_namespace(false)
|
||||
#endif // OS_LINUX
|
||||
#if defined(OS_CHROMEOS)
|
||||
, ctrl_terminal_fd(-1)
|
||||
diff --git a/base/process/launch.h b/base/process/launch.h
|
||||
index 9e39fba..00e4c79 100644
|
||||
--- a/base/process/launch.h
|
||||
+++ b/base/process/launch.h
|
||||
@@ -115,6 +115,9 @@ struct BASE_EXPORT LaunchOptions {
|
||||
// By default, child processes will have the PR_SET_NO_NEW_PRIVS bit set. If
|
||||
// true, then this bit will not be set in the new child process.
|
||||
bool allow_new_privs;
|
||||
+
|
||||
+ // If true, start the process in a new user namespace.
|
||||
+ bool new_user_namespace;
|
||||
#endif // defined(OS_LINUX)
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc
|
||||
index 457234f..a99ce9b 100644
|
||||
--- a/base/process/launch_posix.cc
|
||||
+++ b/base/process/launch_posix.cc
|
||||
@@ -40,6 +40,10 @@
|
||||
|
||||
#if defined(OS_LINUX)
|
||||
#include <sys/prctl.h>
|
||||
+#include <sched.h>
|
||||
+#if !defined(CLONE_NEWUSER)
|
||||
+#define CLONE_NEWUSER 0x10000000
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
@@ -301,13 +305,23 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
||||
|
||||
pid_t pid;
|
||||
#if defined(OS_LINUX)
|
||||
- if (options.clone_flags) {
|
||||
+ int map_pipe_fd[2];
|
||||
+ int flags = options.clone_flags;
|
||||
+
|
||||
+ if (options.new_user_namespace) {
|
||||
+ flags |= CLONE_NEWUSER;
|
||||
+ if (pipe(map_pipe_fd) < 0) {
|
||||
+ DPLOG(ERROR) << "user namespace pipe";
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (options.clone_flags || options.new_user_namespace) {
|
||||
// Signal handling in this function assumes the creation of a new
|
||||
// process, so we check that a thread is not being created by mistake
|
||||
// and that signal handling follows the process-creation rules.
|
||||
- RAW_CHECK(
|
||||
- !(options.clone_flags & (CLONE_SIGHAND | CLONE_THREAD | CLONE_VM)));
|
||||
- pid = syscall(__NR_clone, options.clone_flags, 0, 0, 0);
|
||||
+ RAW_CHECK(!(flags & (CLONE_SIGHAND | CLONE_THREAD | CLONE_VM)));
|
||||
+ pid = syscall(__NR_clone, flags, 0, 0, 0);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
@@ -328,6 +342,21 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
||||
// DANGER: no calls to malloc or locks are allowed from now on:
|
||||
// http://crbug.com/36678
|
||||
|
||||
+#if defined(OS_LINUX)
|
||||
+ if (options.new_user_namespace) {
|
||||
+ // Close the write end of the pipe so we get an EOF when the parent closes
|
||||
+ // the FD. This is to avoid race conditions when the UID/GID mappings are
|
||||
+ // written _after_ execvp().
|
||||
+ close(map_pipe_fd[1]);
|
||||
+
|
||||
+ char dummy;
|
||||
+ if (HANDLE_EINTR(read(map_pipe_fd[0], &dummy, 1)) != 0) {
|
||||
+ RAW_LOG(ERROR, "Unexpected input in uid/gid mapping pipe.");
|
||||
+ _exit(127);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
// DANGER: fork() rule: in the child, if you don't end up doing exec*(),
|
||||
// you call _exit() instead of exit(). This is because _exit() does not
|
||||
// call any previously-registered (in the parent) exit handlers, which
|
||||
@@ -452,6 +481,40 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
||||
_exit(127);
|
||||
} else {
|
||||
// Parent process
|
||||
+#if defined(OS_LINUX)
|
||||
+ if (options.new_user_namespace) {
|
||||
+ // We need to write UID/GID mapping here to map the current user outside
|
||||
+ // the namespace to the root user inside the namespace in order to
|
||||
+ // correctly "fool" the child process.
|
||||
+ char buf[256];
|
||||
+ int map_fd, map_len;
|
||||
+
|
||||
+ snprintf(buf, sizeof(buf), "/proc/%d/uid_map", pid);
|
||||
+ map_fd = open(buf, O_RDWR);
|
||||
+ DPCHECK(map_fd >= 0);
|
||||
+ snprintf(buf, sizeof(buf), "0 %d 1", geteuid());
|
||||
+ map_len = strlen(buf);
|
||||
+ if (write(map_fd, buf, map_len) != map_len) {
|
||||
+ RAW_LOG(WARNING, "Can't write to uid_map.");
|
||||
+ }
|
||||
+ close(map_fd);
|
||||
+
|
||||
+ snprintf(buf, sizeof(buf), "/proc/%d/gid_map", pid);
|
||||
+ map_fd = open(buf, O_RDWR);
|
||||
+ DPCHECK(map_fd >= 0);
|
||||
+ snprintf(buf, sizeof(buf), "0 %d 1", getegid());
|
||||
+ map_len = strlen(buf);
|
||||
+ if (write(map_fd, buf, map_len) != map_len) {
|
||||
+ RAW_LOG(WARNING, "Can't write to gid_map.");
|
||||
+ }
|
||||
+ close(map_fd);
|
||||
+
|
||||
+ // Close the pipe on the parent, so the child can continue doing the
|
||||
+ // execvp() call.
|
||||
+ close(map_pipe_fd[1]);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (options.wait) {
|
||||
// While this isn't strictly disk IO, waiting for another process to
|
||||
// finish is the sort of thing ThreadRestrictions is trying to prevent.
|
||||
diff --git a/content/browser/zygote_host/zygote_host_impl_linux.cc b/content/browser/zygote_host/zygote_host_impl_linux.cc
|
||||
index 9d63ad9..0885705 100644
|
||||
--- a/content/browser/zygote_host/zygote_host_impl_linux.cc
|
||||
+++ b/content/browser/zygote_host/zygote_host_impl_linux.cc
|
||||
@@ -144,6 +144,9 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
|
||||
// A non empty sandbox_cmd means we want a SUID sandbox.
|
||||
using_suid_sandbox_ = !sandbox_cmd.empty();
|
||||
|
||||
+ bool userns_sandbox = false;
|
||||
+ const std::vector<std::string> cmd_line_unwrapped(cmd_line.argv());
|
||||
+
|
||||
// Start up the sandbox host process and get the file descriptor for the
|
||||
// renderers to talk to it.
|
||||
const int sfd = RenderSandboxHostLinux::GetInstance()->GetRendererSocket();
|
||||
@@ -156,11 +159,24 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
|
||||
sandbox_client->PrependWrapper(&cmd_line);
|
||||
sandbox_client->SetupLaunchOptions(&options, &fds_to_map, &dummy_fd);
|
||||
sandbox_client->SetupLaunchEnvironment();
|
||||
+ userns_sandbox = sandbox_client->IsNoSuid();
|
||||
}
|
||||
|
||||
base::ProcessHandle process = -1;
|
||||
options.fds_to_remap = &fds_to_map;
|
||||
+ if (userns_sandbox)
|
||||
+ options.new_user_namespace = true;
|
||||
base::LaunchProcess(cmd_line.argv(), options, &process);
|
||||
+
|
||||
+ if (process == -1 && userns_sandbox) {
|
||||
+ LOG(ERROR) << "User namespace sandbox failed to start, running without "
|
||||
+ << "sandbox! You need at least kernel 3.8.0 with CONFIG_USER_NS "
|
||||
+ << "enabled in order to use the sandbox without setuid bit.";
|
||||
+ using_suid_sandbox_ = false;
|
||||
+ options.new_user_namespace = false;
|
||||
+ base::LaunchProcess(cmd_line_unwrapped, options, &process);
|
||||
+ }
|
||||
+
|
||||
CHECK(process != -1) << "Failed to launch zygote process";
|
||||
dummy_fd.reset();
|
||||
|
||||
diff --git a/content/zygote/zygote_main_linux.cc b/content/zygote/zygote_main_linux.cc
|
||||
index 11f0602..b7b8214 100644
|
||||
--- a/content/zygote/zygote_main_linux.cc
|
||||
+++ b/content/zygote/zygote_main_linux.cc
|
||||
@@ -389,6 +389,13 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox) {
|
||||
CHECK(CreateInitProcessReaper());
|
||||
}
|
||||
|
||||
+ // Don't set non-dumpable, as it causes trouble when the host tries to find
|
||||
+ // the zygote process (XXX: Not quite sure why this happens with user
|
||||
+ // namespaces). Fortunately, we also have the seccomp filter sandbox which
|
||||
+ // should disallow the use of ptrace.
|
||||
+ if (setuid_sandbox->IsNoSuid())
|
||||
+ return true;
|
||||
+
|
||||
#if !defined(OS_OPENBSD)
|
||||
// Previously, we required that the binary be non-readable. This causes the
|
||||
// kernel to mark the process as non-dumpable at startup. The thinking was
|
||||
diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.cc b/sandbox/linux/suid/client/setuid_sandbox_client.cc
|
||||
index fc03cdd..a972faa 100644
|
||||
--- a/sandbox/linux/suid/client/setuid_sandbox_client.cc
|
||||
+++ b/sandbox/linux/suid/client/setuid_sandbox_client.cc
|
||||
@@ -229,6 +229,10 @@ bool SetuidSandboxClient::IsInNewNETNamespace() const {
|
||||
return env_->HasVar(kSandboxNETNSEnvironmentVarName);
|
||||
}
|
||||
|
||||
+bool SetuidSandboxClient::IsNoSuid() const {
|
||||
+ return env_->HasVar(kSandboxNoSuidVarName);
|
||||
+}
|
||||
+
|
||||
bool SetuidSandboxClient::IsSandboxed() const {
|
||||
return sandboxed_;
|
||||
}
|
||||
@@ -277,8 +281,7 @@ void SetuidSandboxClient::PrependWrapper(base::CommandLine* cmd_line) {
|
||||
"LinuxSUIDSandboxDevelopment.";
|
||||
}
|
||||
|
||||
- if (access(sandbox_binary.c_str(), X_OK) != 0 || (st.st_uid != 0) ||
|
||||
- ((st.st_mode & S_ISUID) == 0) || ((st.st_mode & S_IXOTH)) == 0) {
|
||||
+ if (access(sandbox_binary.c_str(), X_OK) != 0) {
|
||||
LOG(FATAL) << "The SUID sandbox helper binary was found, but is not "
|
||||
"configured correctly. Rather than run without sandboxing "
|
||||
"I'm aborting now. You need to make sure that "
|
||||
@@ -286,6 +289,12 @@ void SetuidSandboxClient::PrependWrapper(base::CommandLine* cmd_line) {
|
||||
}
|
||||
|
||||
cmd_line->PrependWrapper(sandbox_binary);
|
||||
+
|
||||
+ if (!((st.st_uid == 0) &&
|
||||
+ (st.st_mode & S_ISUID) &&
|
||||
+ (st.st_mode & S_IXOTH))) {
|
||||
+ env_->SetVar(kSandboxNoSuidVarName, "1");
|
||||
+ }
|
||||
}
|
||||
|
||||
void SetuidSandboxClient::SetupLaunchOptions(
|
||||
diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.h b/sandbox/linux/suid/client/setuid_sandbox_client.h
|
||||
index 2bbad7a..8605475 100644
|
||||
--- a/sandbox/linux/suid/client/setuid_sandbox_client.h
|
||||
+++ b/sandbox/linux/suid/client/setuid_sandbox_client.h
|
||||
@@ -66,6 +66,8 @@ class SANDBOX_EXPORT SetuidSandboxClient {
|
||||
bool IsInNewPIDNamespace() const;
|
||||
// Did the setuid helper create a new network namespace ?
|
||||
bool IsInNewNETNamespace() const;
|
||||
+ // Is sandboxed without SUID binary ?
|
||||
+ bool IsNoSuid() const;
|
||||
// Are we done and fully sandboxed ?
|
||||
bool IsSandboxed() const;
|
||||
|
||||
diff --git a/sandbox/linux/suid/common/sandbox.h b/sandbox/linux/suid/common/sandbox.h
|
||||
index 9345287..2db659e 100644
|
||||
--- a/sandbox/linux/suid/common/sandbox.h
|
||||
+++ b/sandbox/linux/suid/common/sandbox.h
|
||||
@@ -15,6 +15,7 @@ static const char kAdjustOOMScoreSwitch[] = "--adjust-oom-score";
|
||||
|
||||
static const char kSandboxDescriptorEnvironmentVarName[] = "SBX_D";
|
||||
static const char kSandboxHelperPidEnvironmentVarName[] = "SBX_HELPER_PID";
|
||||
+static const char kSandboxNoSuidVarName[] = "SBX_NO_SUID";
|
||||
|
||||
static const long kSUIDSandboxApiNumber = 1;
|
||||
static const char kSandboxEnvironmentApiRequest[] = "SBX_CHROME_API_RQ";
|
||||
diff --git a/sandbox/linux/suid/sandbox.c b/sandbox/linux/suid/sandbox.c
|
||||
index 7410b71..a83593d 100644
|
||||
--- a/sandbox/linux/suid/sandbox.c
|
||||
+++ b/sandbox/linux/suid/sandbox.c
|
||||
@@ -330,7 +330,7 @@ static bool DropRoot() {
|
||||
return false;
|
||||
}
|
||||
|
||||
- if (setresgid(rgid, rgid, rgid)) {
|
||||
+ if (egid != rgid && setresgid(rgid, rgid, rgid)) {
|
||||
perror("setresgid");
|
||||
return false;
|
||||
}
|
@ -7,15 +7,15 @@
|
||||
sha256bin64 = "1jzmkgiqn17ynbv0xljiifvlj1136jq98zrkd4hdmkgv8xrrzd74";
|
||||
};
|
||||
beta = {
|
||||
version = "44.0.2403.52";
|
||||
sha256 = "0zgcqbxm2slxpj6i50w7r3xxql1k6kgd51qn8w8gwfzhmad4zxyx";
|
||||
sha256bin32 = "1kfgl2l7j5fhj6wg4i3bsany2rlwspprypdy0z7k3pqiwwyiw658";
|
||||
sha256bin64 = "1sabqqh1hii7appmx6xwabnapf4cv7smsy31nvz063fa5p6h21m8";
|
||||
version = "44.0.2403.61";
|
||||
sha256 = "16bifaqs3fmfms305c1h10kabsyrscxkywf32pl6zwlzjd3y4ncm";
|
||||
sha256bin32 = "1lgqf6bid02pjdzxg1jipfzjqzp5frqxv4bi6q127kky3lz9lmlc";
|
||||
sha256bin64 = "1l6cyfn5mraprisib7q5rgy8vvkc7ky8z91c2iqsikjv7nmrm6hv";
|
||||
};
|
||||
stable = {
|
||||
version = "43.0.2357.125";
|
||||
sha256 = "01alba50zrc50bn4p3f298khk8fam2rv5wyysz7rq3zrjg8785xg";
|
||||
sha256bin32 = "0527bdlf4nd4b1ydmwn6rnxy377388qb98v9anicfd4bc2p9jjml";
|
||||
sha256bin64 = "0yhgcjaxcpgk32l1sjrgkq447ywcj156a7372v87m22dcwl8fi01";
|
||||
version = "43.0.2357.130";
|
||||
sha256 = "0bh093rfiklwj03my9d6x3118k2msbl7fhrxlndx99cnjd1mbyv2";
|
||||
sha256bin32 = "083scn6dd11lnd0z5yxd6jfgdxj7iaafssccj8a9ybr1ay894ch1";
|
||||
sha256bin64 = "14mfw64ips6nzz6kr8k8dq5253cbqd69hjlc54fl7nqfxi9zw31f";
|
||||
};
|
||||
}
|
||||
|
@ -4,185 +4,185 @@
|
||||
# ruby generate_source.rb > source.nix
|
||||
|
||||
{
|
||||
version = "38.0.5";
|
||||
version = "39.0";
|
||||
sources = [
|
||||
{ locale = "ach"; arch = "linux-i686"; sha1 = "71e7e8194190bebcdde40a0e265b7dcb3d6173d1"; }
|
||||
{ locale = "ach"; arch = "linux-x86_64"; sha1 = "eda799cc394838cf2a5eea4a182149ff2616bc00"; }
|
||||
{ locale = "af"; arch = "linux-i686"; sha1 = "9162c87b2d1f420ccc5475b59bca72d45918fed3"; }
|
||||
{ locale = "af"; arch = "linux-x86_64"; sha1 = "4f1d9f1bebea6a9adb085191b4bdb7b3367c4b9b"; }
|
||||
{ locale = "an"; arch = "linux-i686"; sha1 = "537e6ea08c546d1ed704b1e9dd28b1219e1e5e8a"; }
|
||||
{ locale = "an"; arch = "linux-x86_64"; sha1 = "34b9e09b3f29e1263105b713e743038b3a166cec"; }
|
||||
{ locale = "ar"; arch = "linux-i686"; sha1 = "17b25623c086778caffd7ed45e10870a3d17baa1"; }
|
||||
{ locale = "ar"; arch = "linux-x86_64"; sha1 = "4e35d4704dfd1218b783156d0a97340480eabe30"; }
|
||||
{ locale = "as"; arch = "linux-i686"; sha1 = "596d66e6b3a8818ddd07ea285c08ca6ad508e4f6"; }
|
||||
{ locale = "as"; arch = "linux-x86_64"; sha1 = "80b92c1881e2841dee4f955156237aadfdf37a33"; }
|
||||
{ locale = "ast"; arch = "linux-i686"; sha1 = "7f6b67bbf751fb55419bb3893e121b50f4d5e34b"; }
|
||||
{ locale = "ast"; arch = "linux-x86_64"; sha1 = "4705cda1e366b2be2be5164fedf22f5724454101"; }
|
||||
{ locale = "az"; arch = "linux-i686"; sha1 = "5fa3021fcb1c0f7317738dcdd95f0f76ca70eb55"; }
|
||||
{ locale = "az"; arch = "linux-x86_64"; sha1 = "b16d8a1e56ba3818f590952c19463b4eb08bb4a4"; }
|
||||
{ locale = "be"; arch = "linux-i686"; sha1 = "300fca8783d59df6b4459760d0aaa5ac6af2a6cc"; }
|
||||
{ locale = "be"; arch = "linux-x86_64"; sha1 = "d8d56febf53ed513628dc1604f65c60ac8460a37"; }
|
||||
{ locale = "bg"; arch = "linux-i686"; sha1 = "4aad8ed44d69c3aecb9c629168f62d0e4711eea6"; }
|
||||
{ locale = "bg"; arch = "linux-x86_64"; sha1 = "9eaddf470789ca0574ea07bbfdfbbcaca635c69d"; }
|
||||
{ locale = "bn-BD"; arch = "linux-i686"; sha1 = "873db2012724c313f956ee0aca72341d443ff201"; }
|
||||
{ locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "3192ab016485d10abfb0dd7bccdbd94f3d33a706"; }
|
||||
{ locale = "bn-IN"; arch = "linux-i686"; sha1 = "bb7b5dee4134546ce341e324a53c77e35e95b627"; }
|
||||
{ locale = "bn-IN"; arch = "linux-x86_64"; sha1 = "057e4c7bc2a06c53209e87804516cb12a644be12"; }
|
||||
{ locale = "br"; arch = "linux-i686"; sha1 = "d3a08e420b46d17f702c5b4bf1ed52160e8532c8"; }
|
||||
{ locale = "br"; arch = "linux-x86_64"; sha1 = "e18d7a198b0bd1c08a3b0ef5ab453daacc7528a2"; }
|
||||
{ locale = "bs"; arch = "linux-i686"; sha1 = "5ccfa1e2e8058707c6d0428bab370f8517c4e231"; }
|
||||
{ locale = "bs"; arch = "linux-x86_64"; sha1 = "98e7ae1ca507e58b297acb39b7aa026530b75974"; }
|
||||
{ locale = "ca"; arch = "linux-i686"; sha1 = "ff54c24002b0b1161a859771497f9a31013c265b"; }
|
||||
{ locale = "ca"; arch = "linux-x86_64"; sha1 = "781161113c8719d8932365f113c1bfa1994caa63"; }
|
||||
{ locale = "cs"; arch = "linux-i686"; sha1 = "f697723873da7961159ef17318b1b64c2d021a7c"; }
|
||||
{ locale = "cs"; arch = "linux-x86_64"; sha1 = "44d20f198bbeca2c69fccbfc8d21c2861145102e"; }
|
||||
{ locale = "cy"; arch = "linux-i686"; sha1 = "8ae202815c3c60aef0287f18b857ba432f122a84"; }
|
||||
{ locale = "cy"; arch = "linux-x86_64"; sha1 = "c06b25151929540760d2d10dcdb0f4087a9f531a"; }
|
||||
{ locale = "da"; arch = "linux-i686"; sha1 = "02690ab49d10976d5176c95f0cbc72509908fc1f"; }
|
||||
{ locale = "da"; arch = "linux-x86_64"; sha1 = "0a4733b4e56e99976a53d99e209f84527c2a3059"; }
|
||||
{ locale = "de"; arch = "linux-i686"; sha1 = "e3e067f028a018e4ae61542da9ae4e43c736f65b"; }
|
||||
{ locale = "de"; arch = "linux-x86_64"; sha1 = "8161109d11373b07626b563c4ca494feca3abd41"; }
|
||||
{ locale = "dsb"; arch = "linux-i686"; sha1 = "01fc9ebe4ac4a86a2bd4fedb6b07a9a832980a57"; }
|
||||
{ locale = "dsb"; arch = "linux-x86_64"; sha1 = "7de40c35552ce74b66bdcf56a5e4edb75995f8d5"; }
|
||||
{ locale = "el"; arch = "linux-i686"; sha1 = "f53b5bb439e882701dfe1efdcb7fb42ba15cc72d"; }
|
||||
{ locale = "el"; arch = "linux-x86_64"; sha1 = "05843b9324fc255a4123a70d460e6db421cf55a7"; }
|
||||
{ locale = "en-GB"; arch = "linux-i686"; sha1 = "c93568ad64a96235aec83ff8740335b07191d2ef"; }
|
||||
{ locale = "en-GB"; arch = "linux-x86_64"; sha1 = "536b58997a39aed71a985d9eb9ab96602c9ab057"; }
|
||||
{ locale = "en-US"; arch = "linux-i686"; sha1 = "8bfc35a45e9d0f2a2d4359ccaaee54c564d3b5e3"; }
|
||||
{ locale = "en-US"; arch = "linux-x86_64"; sha1 = "b86e07f455da243f1236b8044aeccf41c4ade1b0"; }
|
||||
{ locale = "en-ZA"; arch = "linux-i686"; sha1 = "cd3722feaebc63944e927ab244a95deb2a55aced"; }
|
||||
{ locale = "en-ZA"; arch = "linux-x86_64"; sha1 = "0daf7c897bf695338310050374d29c2acdaea553"; }
|
||||
{ locale = "eo"; arch = "linux-i686"; sha1 = "d79ecbf48f47a3e34e0bcf897d37d2a2abbf466a"; }
|
||||
{ locale = "eo"; arch = "linux-x86_64"; sha1 = "95c616e21fe9d948d363db89c0a6a1a4e31301db"; }
|
||||
{ locale = "es-AR"; arch = "linux-i686"; sha1 = "5ab97d5aebbde63477cf1868bf0cb5f1b79ee820"; }
|
||||
{ locale = "es-AR"; arch = "linux-x86_64"; sha1 = "02d49650094d336e17f57fa43c9969d0b3221ca3"; }
|
||||
{ locale = "es-CL"; arch = "linux-i686"; sha1 = "e8d10a3465e7efd01ee03e57316d60176710b124"; }
|
||||
{ locale = "es-CL"; arch = "linux-x86_64"; sha1 = "f40a1ec33e5018d423b65bd26563ac8db100e50d"; }
|
||||
{ locale = "es-ES"; arch = "linux-i686"; sha1 = "66a1bc0c31061d5738bc80e9254262ada65bfb71"; }
|
||||
{ locale = "es-ES"; arch = "linux-x86_64"; sha1 = "8f22bab29fb4e7359aa1261f2333faecbafe4c08"; }
|
||||
{ locale = "es-MX"; arch = "linux-i686"; sha1 = "34f60fef14360b754510a5378d4b5d6855d49326"; }
|
||||
{ locale = "es-MX"; arch = "linux-x86_64"; sha1 = "9d024945473b55373c155dbbec8880f79ee2de5e"; }
|
||||
{ locale = "et"; arch = "linux-i686"; sha1 = "2fd526c6fd23e5b0e7b292d99a60cf1530bb84e1"; }
|
||||
{ locale = "et"; arch = "linux-x86_64"; sha1 = "15628af429866cac3a1604f587b08d4bbeccb7e9"; }
|
||||
{ locale = "eu"; arch = "linux-i686"; sha1 = "ea55480fd572173c1461a9e41c2080af890c4667"; }
|
||||
{ locale = "eu"; arch = "linux-x86_64"; sha1 = "1e7f8cd86df1cf74525f8d07d13bcd8ea2a22b87"; }
|
||||
{ locale = "fa"; arch = "linux-i686"; sha1 = "24982ebb6d6cac67673a9c39c91da7adc4c825c2"; }
|
||||
{ locale = "fa"; arch = "linux-x86_64"; sha1 = "02f221c5526e03edadb2c36bfa5d9e35557d03a3"; }
|
||||
{ locale = "ff"; arch = "linux-i686"; sha1 = "f3b8962106a9a4bc5b4f1d2928255cfaaa9094b0"; }
|
||||
{ locale = "ff"; arch = "linux-x86_64"; sha1 = "3a8ebe66407e6369ebc26757562b4f48a6773cdd"; }
|
||||
{ locale = "fi"; arch = "linux-i686"; sha1 = "c8a838618b2a8d267e24596c6cbc25f539676762"; }
|
||||
{ locale = "fi"; arch = "linux-x86_64"; sha1 = "3382937e58f6e244d3c6dcef1051aa6bdd38692c"; }
|
||||
{ locale = "fr"; arch = "linux-i686"; sha1 = "6fefc6e8548fa8fcc7182a05b06b00a3b50bb5d6"; }
|
||||
{ locale = "fr"; arch = "linux-x86_64"; sha1 = "5b58fe2c383d4d43d1731f25dc52754712bc207d"; }
|
||||
{ locale = "fy-NL"; arch = "linux-i686"; sha1 = "118c326cdedbc4e5a1bac1ff6b1bb92f5d054847"; }
|
||||
{ locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "384e13b51d09e99b2abce566d06d7cd522a532a7"; }
|
||||
{ locale = "ga-IE"; arch = "linux-i686"; sha1 = "ae6002a1a9b1be4f29a56176aa4dfd2fee543bdd"; }
|
||||
{ locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "c87ac5ff79b4dbf3d8738cc3309c882d7573eb3b"; }
|
||||
{ locale = "gd"; arch = "linux-i686"; sha1 = "2bfd0ccec6d84b22d3f6f471f4ad096e6dc1edd3"; }
|
||||
{ locale = "gd"; arch = "linux-x86_64"; sha1 = "cc919edd60169de8167c9e9fcf32f94fe9df4f52"; }
|
||||
{ locale = "gl"; arch = "linux-i686"; sha1 = "70cdf62012d3d98b028d6b9fb9adf077c37e7c0c"; }
|
||||
{ locale = "gl"; arch = "linux-x86_64"; sha1 = "a090ce8a36f3182aba809823ba171a0702bf17b5"; }
|
||||
{ locale = "gu-IN"; arch = "linux-i686"; sha1 = "5698a36c3f1372446e38ada59e45468f07fd5d19"; }
|
||||
{ locale = "gu-IN"; arch = "linux-x86_64"; sha1 = "18b49c1004778b8b11d2f3961dfed29ba562430a"; }
|
||||
{ locale = "he"; arch = "linux-i686"; sha1 = "9edddef1ce1361d76917ce255f348e208bb16697"; }
|
||||
{ locale = "he"; arch = "linux-x86_64"; sha1 = "64136eeab22a5150a95bdc916ce81e2f1b42a6df"; }
|
||||
{ locale = "hi-IN"; arch = "linux-i686"; sha1 = "314f99e05cf58ec8a2c50f8fe93ebe648a62a570"; }
|
||||
{ locale = "hi-IN"; arch = "linux-x86_64"; sha1 = "2e9245f46a28c70aa5451011bd2c59e8100a1804"; }
|
||||
{ locale = "hr"; arch = "linux-i686"; sha1 = "4cc1112e81ec7f8df2ef95bbab3b3eb398ea67eb"; }
|
||||
{ locale = "hr"; arch = "linux-x86_64"; sha1 = "e9d643c799542b118ce8cf274ab36aaec89850b3"; }
|
||||
{ locale = "hsb"; arch = "linux-i686"; sha1 = "e525b1c0a77274c851417c1d3af887657d9dcb18"; }
|
||||
{ locale = "hsb"; arch = "linux-x86_64"; sha1 = "016e3fcbaeb7844e3639e1c2599172de5c3f7b2f"; }
|
||||
{ locale = "hu"; arch = "linux-i686"; sha1 = "2234cff2bb19e849d1a6ace38dd63258a54c192f"; }
|
||||
{ locale = "hu"; arch = "linux-x86_64"; sha1 = "9498c156b33d8a9f90ccef6ccc202c69e4ee6c3d"; }
|
||||
{ locale = "hy-AM"; arch = "linux-i686"; sha1 = "49e7923e60daea2e0df4c27d1f6baad70b24b030"; }
|
||||
{ locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "c9bed347d74b399901ee3f8e745ed1832462357e"; }
|
||||
{ locale = "id"; arch = "linux-i686"; sha1 = "7fecad428f80346a6333aa6cdc912cec0644b306"; }
|
||||
{ locale = "id"; arch = "linux-x86_64"; sha1 = "7370cb725b9087e5bff8943208762bc5bf4d01d9"; }
|
||||
{ locale = "is"; arch = "linux-i686"; sha1 = "c1139da81e8e581e7ddd511d0ce16c0b169d46f0"; }
|
||||
{ locale = "is"; arch = "linux-x86_64"; sha1 = "63c64558cd22ac170b39e186c1dd0e77a09c3200"; }
|
||||
{ locale = "it"; arch = "linux-i686"; sha1 = "4eb39e3fc5c3847a85a618100d3a9edc9d3bfe78"; }
|
||||
{ locale = "it"; arch = "linux-x86_64"; sha1 = "37fa87367363d7e337e75da89f8e5ce8f762c755"; }
|
||||
{ locale = "ja"; arch = "linux-i686"; sha1 = "47b6d53050cf10535a5f7d6a8cee78ab15ad36b7"; }
|
||||
{ locale = "ja"; arch = "linux-x86_64"; sha1 = "48b20dd2a743a1b887d15179c87b266dbe89a1ae"; }
|
||||
{ locale = "kk"; arch = "linux-i686"; sha1 = "4046e0f75d4657d7423b4a0da53778348442ee5e"; }
|
||||
{ locale = "kk"; arch = "linux-x86_64"; sha1 = "039f3c025f562e9278b16fb065d07511a3ca1f54"; }
|
||||
{ locale = "km"; arch = "linux-i686"; sha1 = "7baebf01741af616e69520f4bc95dd56187c12a2"; }
|
||||
{ locale = "km"; arch = "linux-x86_64"; sha1 = "f1a0557ac698f79bf926756cca2c33bd12a8ae83"; }
|
||||
{ locale = "kn"; arch = "linux-i686"; sha1 = "1d2c2f8d9f455e0b6c793749f2298436167c25e4"; }
|
||||
{ locale = "kn"; arch = "linux-x86_64"; sha1 = "473abeac7637b82d910427cac7e6da8ece20a4e5"; }
|
||||
{ locale = "ko"; arch = "linux-i686"; sha1 = "41fe278dc963a7464679f4ec8a9e586666e7ceb3"; }
|
||||
{ locale = "ko"; arch = "linux-x86_64"; sha1 = "58563ea60e40b73d1d5c9b10797d05aba5d13c95"; }
|
||||
{ locale = "lij"; arch = "linux-i686"; sha1 = "dfa1c12416a9e7e6d04e5f4aaed3a03731d98372"; }
|
||||
{ locale = "lij"; arch = "linux-x86_64"; sha1 = "75f9fb66b6610b65b402d3c8664096b4194ce1b0"; }
|
||||
{ locale = "lt"; arch = "linux-i686"; sha1 = "667f035cb58c56967ed28f9cde44864cb15d5afa"; }
|
||||
{ locale = "lt"; arch = "linux-x86_64"; sha1 = "d5709105b8255ee94c96358d2ac447dc5e4acc2d"; }
|
||||
{ locale = "lv"; arch = "linux-i686"; sha1 = "b090761ded023ed465fc9629873e08ecdbaf924b"; }
|
||||
{ locale = "lv"; arch = "linux-x86_64"; sha1 = "529312d4e7109472bf5b97ed4a9fff58bb8adbd5"; }
|
||||
{ locale = "mai"; arch = "linux-i686"; sha1 = "d2ced083aefcdcd5aca84471bc382be8247e8745"; }
|
||||
{ locale = "mai"; arch = "linux-x86_64"; sha1 = "be7a808a391a4fd1dde215834756bc61ae5e85fa"; }
|
||||
{ locale = "mk"; arch = "linux-i686"; sha1 = "8a079d8ee62e3bf8fb37f81385a270af5e474aef"; }
|
||||
{ locale = "mk"; arch = "linux-x86_64"; sha1 = "c644e5c7a6506ab203d1be61264f6bcf9fa52946"; }
|
||||
{ locale = "ml"; arch = "linux-i686"; sha1 = "d3bd6308643ae805c69eeee8b716b97dc844ed9c"; }
|
||||
{ locale = "ml"; arch = "linux-x86_64"; sha1 = "33f0f47e125f8a67a30d807775c7d0743135da84"; }
|
||||
{ locale = "mr"; arch = "linux-i686"; sha1 = "9d38caee6d6c0baa8a7ea6148c65e7a28362a0fe"; }
|
||||
{ locale = "mr"; arch = "linux-x86_64"; sha1 = "3c3f93fd22c8ae7d7056bbfae3df0ecaa7d7dcaf"; }
|
||||
{ locale = "ms"; arch = "linux-i686"; sha1 = "8486b9a81265430e876410a6040e09f0bf6d4eed"; }
|
||||
{ locale = "ms"; arch = "linux-x86_64"; sha1 = "6cd3c0ab1c33d8eb3de6f68ce7c7a219e80f49f9"; }
|
||||
{ locale = "nb-NO"; arch = "linux-i686"; sha1 = "bcd8e685a023c9919479ffe0f77c16df4fe3e2e8"; }
|
||||
{ locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "8052c43680c9720783b6e1947c949030f1cfa51a"; }
|
||||
{ locale = "nl"; arch = "linux-i686"; sha1 = "c0ae9e1fb361a7d085ef296f5afcc61a5b106c94"; }
|
||||
{ locale = "nl"; arch = "linux-x86_64"; sha1 = "246213bd7baa7bb32b15c39237c0eece624a8dae"; }
|
||||
{ locale = "nn-NO"; arch = "linux-i686"; sha1 = "f5f7b590544228f110ddb1153f1c5354bea58656"; }
|
||||
{ locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "c62e1e681736dbdf19d1a8c6a7f3eff01764d050"; }
|
||||
{ locale = "or"; arch = "linux-i686"; sha1 = "8008fd2095b86bd05daee4e48f95aa9003982ebf"; }
|
||||
{ locale = "or"; arch = "linux-x86_64"; sha1 = "a52d6d27d9612fe9b1aa3dac377d783bcc53baa1"; }
|
||||
{ locale = "pa-IN"; arch = "linux-i686"; sha1 = "a819a01f2968030cc2102640f50e31cb340e5044"; }
|
||||
{ locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "2b8e58cf70e8cc841e720706a511e0626439b8ac"; }
|
||||
{ locale = "pl"; arch = "linux-i686"; sha1 = "db1bb9bbf35166ba760274dd4c813bf4b52db2da"; }
|
||||
{ locale = "pl"; arch = "linux-x86_64"; sha1 = "1a97efa01142188d282743bd3f97dec2bf51067a"; }
|
||||
{ locale = "pt-BR"; arch = "linux-i686"; sha1 = "d3b3f3de01e6970909d6083a2164eb840897d46e"; }
|
||||
{ locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "e842275df31fa1202a6e5214424b870ed8e04789"; }
|
||||
{ locale = "pt-PT"; arch = "linux-i686"; sha1 = "86001510f93e7063442415325cea1772a8fe04e8"; }
|
||||
{ locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "7090a6adb110be77527bca5a40ea5c44515e07d3"; }
|
||||
{ locale = "rm"; arch = "linux-i686"; sha1 = "42087d61aed17ce567503cc944bbada7d5bc77a4"; }
|
||||
{ locale = "rm"; arch = "linux-x86_64"; sha1 = "7b3a8078235ca307dc75b931b060d46a7b3e8e95"; }
|
||||
{ locale = "ro"; arch = "linux-i686"; sha1 = "1ff6eb3feef71d37f943667945f4547fe9daca37"; }
|
||||
{ locale = "ro"; arch = "linux-x86_64"; sha1 = "acf3f0c0ad5bd9b3c2edcafe7dd7b6e8e45a7ec4"; }
|
||||
{ locale = "ru"; arch = "linux-i686"; sha1 = "3e9b32187704caec231fce83e5519d2b2fc066a7"; }
|
||||
{ locale = "ru"; arch = "linux-x86_64"; sha1 = "065fee4f21ff6ebdc21a81aadc86a20ab3281dad"; }
|
||||
{ locale = "si"; arch = "linux-i686"; sha1 = "d742e451a73195d0445b393b0f1127835ad4684b"; }
|
||||
{ locale = "si"; arch = "linux-x86_64"; sha1 = "6341e742bfab7379d8a9de9545a126efa9f129ba"; }
|
||||
{ locale = "sk"; arch = "linux-i686"; sha1 = "c714445df861c7073e8c840d904c91578c08db7a"; }
|
||||
{ locale = "sk"; arch = "linux-x86_64"; sha1 = "a8fbdfa4c68092ff5258f88b7413d64fd0729ce6"; }
|
||||
{ locale = "sl"; arch = "linux-i686"; sha1 = "dc4ef7a8aedbebcd3b9a0e6701c8b2fb245f784a"; }
|
||||
{ locale = "sl"; arch = "linux-x86_64"; sha1 = "6165e3a1ef198eae25d56fa5b8dde4e37b037b9f"; }
|
||||
{ locale = "son"; arch = "linux-i686"; sha1 = "2dd5909759dc85ae7a9401eb4c759748805b0729"; }
|
||||
{ locale = "son"; arch = "linux-x86_64"; sha1 = "d09741294a24d80ddacb80676a2824cbd51a5585"; }
|
||||
{ locale = "sq"; arch = "linux-i686"; sha1 = "1f2e3fa864c7c8f7f2d0ecca7812bfdfe7991d29"; }
|
||||
{ locale = "sq"; arch = "linux-x86_64"; sha1 = "db5c95f01d258db2dfc04b7efecd1d7826663db8"; }
|
||||
{ locale = "sr"; arch = "linux-i686"; sha1 = "54c0f91e41622e8263f7897d0b5a385870ae0d7a"; }
|
||||
{ locale = "sr"; arch = "linux-x86_64"; sha1 = "b8b9c9001ed87429ce868144a50e6ab1ac7ccd5f"; }
|
||||
{ locale = "sv-SE"; arch = "linux-i686"; sha1 = "667ed9f21997fc79e9ce40b8bf5e607258292699"; }
|
||||
{ locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "cb5abaca549b30ba5385ea3ef0a57be0bf446d44"; }
|
||||
{ locale = "ta"; arch = "linux-i686"; sha1 = "13fdda06ab9a36a24128e12651a06f0499fbe581"; }
|
||||
{ locale = "ta"; arch = "linux-x86_64"; sha1 = "95cd3149f404cfd0beadcdece8dfd5c102dbc72a"; }
|
||||
{ locale = "te"; arch = "linux-i686"; sha1 = "4ec9f9b30078e70451bbf5bb06cc1c07530ed5a8"; }
|
||||
{ locale = "te"; arch = "linux-x86_64"; sha1 = "1d5cbfee0731dfe10e3eb3aafe102e73c9e9eede"; }
|
||||
{ locale = "th"; arch = "linux-i686"; sha1 = "a6809b082761293aca28b456b1489f270234f8bf"; }
|
||||
{ locale = "th"; arch = "linux-x86_64"; sha1 = "77dba4a3eec1474be026dfc9021420af889172ad"; }
|
||||
{ locale = "tr"; arch = "linux-i686"; sha1 = "eaa7a43b155ffbfc23e72b48fe0e150695a779e7"; }
|
||||
{ locale = "tr"; arch = "linux-x86_64"; sha1 = "dfc241131ef4e46801e86bfe10e80b4c2bb5fdb3"; }
|
||||
{ locale = "uk"; arch = "linux-i686"; sha1 = "fa5346d0c36f88a6a50259f0e170bbe5167f2393"; }
|
||||
{ locale = "uk"; arch = "linux-x86_64"; sha1 = "bb5d61d9c14997958af850d663d48b607aa3e43e"; }
|
||||
{ locale = "uz"; arch = "linux-i686"; sha1 = "d634d94bc28779757535d05295db33e186c15abc"; }
|
||||
{ locale = "uz"; arch = "linux-x86_64"; sha1 = "0f469e0d5f2d92b4b3f2b47efef3aa44cd25803f"; }
|
||||
{ locale = "vi"; arch = "linux-i686"; sha1 = "639aa1abebe1b670ecef9df6e9d06841124ddf0b"; }
|
||||
{ locale = "vi"; arch = "linux-x86_64"; sha1 = "16f1319cb63cc4634a215a1c9b3e0e65c1833003"; }
|
||||
{ locale = "xh"; arch = "linux-i686"; sha1 = "960338fec19485c733ebd7fbacd9b55ebd1b9981"; }
|
||||
{ locale = "xh"; arch = "linux-x86_64"; sha1 = "3a795ffee6d119741fceaa0a4825e72f5cc4e0f2"; }
|
||||
{ locale = "zh-CN"; arch = "linux-i686"; sha1 = "63dbb0328ea991b827fd5747d99aa3075486fce0"; }
|
||||
{ locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "a1d047de7685d70750850cfb0084259041d33cd4"; }
|
||||
{ locale = "zh-TW"; arch = "linux-i686"; sha1 = "6f56944d2e31ab714d648bfd9262d39731e167b9"; }
|
||||
{ locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "d3cd71c2ceeb1856bea66de8d7220a8529888e86"; }
|
||||
{ locale = "ach"; arch = "linux-i686"; sha1 = "802ac533ba95ecfb4780f84d52698a2cc2d7ac82"; }
|
||||
{ locale = "ach"; arch = "linux-x86_64"; sha1 = "3c000ef496165cb4e0e104d72a381040a3bc6787"; }
|
||||
{ locale = "af"; arch = "linux-i686"; sha1 = "6fa249f63fe690f3459f4b0112f4945a502a79eb"; }
|
||||
{ locale = "af"; arch = "linux-x86_64"; sha1 = "f22b92d0fb0ed21f0e6a3a47c5f2fe873b3bfb56"; }
|
||||
{ locale = "an"; arch = "linux-i686"; sha1 = "650c772ef89bc5ef6efe5129ddf8feaf993c8f1d"; }
|
||||
{ locale = "an"; arch = "linux-x86_64"; sha1 = "e722d65e3b9b706e6b9214ae79543130ad6dba95"; }
|
||||
{ locale = "ar"; arch = "linux-i686"; sha1 = "8ff6fbc92e5b9cedfa17eda240fc89f14eb68f73"; }
|
||||
{ locale = "ar"; arch = "linux-x86_64"; sha1 = "a1e94f56148a554e522cd317d0f2384073020278"; }
|
||||
{ locale = "as"; arch = "linux-i686"; sha1 = "c6815876c23117a462d79eb5da291610c1d96feb"; }
|
||||
{ locale = "as"; arch = "linux-x86_64"; sha1 = "629997b112da84852a01606f7fa4f15448c0ebb3"; }
|
||||
{ locale = "ast"; arch = "linux-i686"; sha1 = "acda6aefe872e4982d0e8f3ac337d4243bb5e00f"; }
|
||||
{ locale = "ast"; arch = "linux-x86_64"; sha1 = "181d998305bb75ea5e99bb1b4b5059b54a724ab9"; }
|
||||
{ locale = "az"; arch = "linux-i686"; sha1 = "230ebfaf61efac65c9daae983ec2fd854a9c1dac"; }
|
||||
{ locale = "az"; arch = "linux-x86_64"; sha1 = "a8ddb38542bce008924e4b593691ae84a839e564"; }
|
||||
{ locale = "be"; arch = "linux-i686"; sha1 = "47a242cd2c91cd7435c8c959d5eaa8595710f6aa"; }
|
||||
{ locale = "be"; arch = "linux-x86_64"; sha1 = "db62ad921f9df2683522db1968db9b79edfbadf2"; }
|
||||
{ locale = "bg"; arch = "linux-i686"; sha1 = "c2fddb3667c5bb50fee3011cfb782b2dff7f4063"; }
|
||||
{ locale = "bg"; arch = "linux-x86_64"; sha1 = "1b891a9df513e9f099f68fe2f0429b00bd12505b"; }
|
||||
{ locale = "bn-BD"; arch = "linux-i686"; sha1 = "0ad965be5c9ce5468e65667dcb0390a9afabd7b0"; }
|
||||
{ locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "301b659d5689de81ca60f7092176efaf48a50a18"; }
|
||||
{ locale = "bn-IN"; arch = "linux-i686"; sha1 = "df99d9e80ebda8c146724f893ae2de77cf2518ab"; }
|
||||
{ locale = "bn-IN"; arch = "linux-x86_64"; sha1 = "4b4cc8e588a518af8a922d32163249af115fac42"; }
|
||||
{ locale = "br"; arch = "linux-i686"; sha1 = "39976bf6a0c7bdfc1832a6f2c48e92324f4a6727"; }
|
||||
{ locale = "br"; arch = "linux-x86_64"; sha1 = "ea66a36ea70486f39c7cf7abbf637d37c04d32ef"; }
|
||||
{ locale = "bs"; arch = "linux-i686"; sha1 = "71eeeccd5bf5757d6ec4f9e1442c4fcfbf312d79"; }
|
||||
{ locale = "bs"; arch = "linux-x86_64"; sha1 = "10911d28d56d4083aea7eb2174d0d7dd78772215"; }
|
||||
{ locale = "ca"; arch = "linux-i686"; sha1 = "434532ff2cca7a0401a7aed8753d1c5578e98c1a"; }
|
||||
{ locale = "ca"; arch = "linux-x86_64"; sha1 = "2a6aaed334856d06ce8c426282f3345d9bcaa435"; }
|
||||
{ locale = "cs"; arch = "linux-i686"; sha1 = "e2445b13ab680f5dfd5d67e4e796170fbd6bd120"; }
|
||||
{ locale = "cs"; arch = "linux-x86_64"; sha1 = "ef1df48bd465a3b05d1046bf4627c1ae4f60ee06"; }
|
||||
{ locale = "cy"; arch = "linux-i686"; sha1 = "f95974e478e2d0fec7400424a33202e1e2b1e5b9"; }
|
||||
{ locale = "cy"; arch = "linux-x86_64"; sha1 = "c521abab2bffe24863c087f02d57ffafae47def7"; }
|
||||
{ locale = "da"; arch = "linux-i686"; sha1 = "f11b050caae304029ccf23ce2906fe18115adbc8"; }
|
||||
{ locale = "da"; arch = "linux-x86_64"; sha1 = "800e0f3b649c9a03d4e9cd2a4ccd8f14bbb5ed95"; }
|
||||
{ locale = "de"; arch = "linux-i686"; sha1 = "b9502be9396e00b69946f0094c5939a8a57da64b"; }
|
||||
{ locale = "de"; arch = "linux-x86_64"; sha1 = "84fab2779bc055821afdb5d7ff45e3ffe95e2858"; }
|
||||
{ locale = "dsb"; arch = "linux-i686"; sha1 = "5eee946bc2182990b310ed57fbf527e82f93bc8b"; }
|
||||
{ locale = "dsb"; arch = "linux-x86_64"; sha1 = "8b3219b071e836ecc4966e153ec0adb4e691de89"; }
|
||||
{ locale = "el"; arch = "linux-i686"; sha1 = "9759c69061d6419edb949c55f7e797302b477c78"; }
|
||||
{ locale = "el"; arch = "linux-x86_64"; sha1 = "db5025d393a763c7cd4ed447d61b640ee77e7e79"; }
|
||||
{ locale = "en-GB"; arch = "linux-i686"; sha1 = "4fdc423d6d15bd6a14030a526ad7017fd5bdf937"; }
|
||||
{ locale = "en-GB"; arch = "linux-x86_64"; sha1 = "0d8637f1ca6acfe494f963c936d8510c6c11f8bf"; }
|
||||
{ locale = "en-US"; arch = "linux-i686"; sha1 = "e05722e42ea1d844d8fe40672026cacb19575ccf"; }
|
||||
{ locale = "en-US"; arch = "linux-x86_64"; sha1 = "8143b339d0ceedaf797b49ca4b54bcc0c91925e3"; }
|
||||
{ locale = "en-ZA"; arch = "linux-i686"; sha1 = "fac507eebec642fd50f248ac184dbde4538ad0bb"; }
|
||||
{ locale = "en-ZA"; arch = "linux-x86_64"; sha1 = "2670a80c7ca5d5390df9fcee907afbe7a01f9f37"; }
|
||||
{ locale = "eo"; arch = "linux-i686"; sha1 = "a134117ddd446b63f325a38f818a80921adb5b2f"; }
|
||||
{ locale = "eo"; arch = "linux-x86_64"; sha1 = "5b073a912221e8e734ba17ecfe735d820f5febf3"; }
|
||||
{ locale = "es-AR"; arch = "linux-i686"; sha1 = "0e518d9fe0644a6ada9463ae14fa67c2c49bfd5f"; }
|
||||
{ locale = "es-AR"; arch = "linux-x86_64"; sha1 = "fa33935aa4abb696ea9a399cff0c1dc29beffab0"; }
|
||||
{ locale = "es-CL"; arch = "linux-i686"; sha1 = "3c7df32ed5d2570e62e35dcb9f9d91588d7584d2"; }
|
||||
{ locale = "es-CL"; arch = "linux-x86_64"; sha1 = "ced3821f7e334b2f0d5b5115cc04cbaf5bcdbe15"; }
|
||||
{ locale = "es-ES"; arch = "linux-i686"; sha1 = "6af75a3e116162591dd6a15c8903ee5182afe03b"; }
|
||||
{ locale = "es-ES"; arch = "linux-x86_64"; sha1 = "fa1ddbc5a3d9bd7c9cc424fe6c5e94c87d51eab2"; }
|
||||
{ locale = "es-MX"; arch = "linux-i686"; sha1 = "8110bdf4c8657e88f71b8a6bec1ca92f2eac0538"; }
|
||||
{ locale = "es-MX"; arch = "linux-x86_64"; sha1 = "30df4777fde7eba8724fab002cb7387203eeb82e"; }
|
||||
{ locale = "et"; arch = "linux-i686"; sha1 = "2f16472e5cd030a14e3cfa761a32c0ef5ffd395e"; }
|
||||
{ locale = "et"; arch = "linux-x86_64"; sha1 = "19a96b008a49e7a223ea2463edab7cda504e2ba5"; }
|
||||
{ locale = "eu"; arch = "linux-i686"; sha1 = "786db5ad8d92324d3086f7b2b8da71767829a8f2"; }
|
||||
{ locale = "eu"; arch = "linux-x86_64"; sha1 = "31273f797cb90615032611d2d86cac8cf6d28994"; }
|
||||
{ locale = "fa"; arch = "linux-i686"; sha1 = "e2980430f1cd25edb401862b83fb49f2d730ff5e"; }
|
||||
{ locale = "fa"; arch = "linux-x86_64"; sha1 = "dae850824c3eaaa31fec4aad19e38e2073d96f10"; }
|
||||
{ locale = "ff"; arch = "linux-i686"; sha1 = "f865672eaa7815f3bb527baf3946c62c01c76dbb"; }
|
||||
{ locale = "ff"; arch = "linux-x86_64"; sha1 = "aa207b51d24ca275b0cbd5ba4cd93ce16a6bd28a"; }
|
||||
{ locale = "fi"; arch = "linux-i686"; sha1 = "30ef856ecdadeba171977859324f010d441a51e9"; }
|
||||
{ locale = "fi"; arch = "linux-x86_64"; sha1 = "3ebbabc2346eeac01aaf88e91fd1fd55538c0770"; }
|
||||
{ locale = "fr"; arch = "linux-i686"; sha1 = "4dd376ccc6811d46be052fcf1aab82e50a3e0999"; }
|
||||
{ locale = "fr"; arch = "linux-x86_64"; sha1 = "f6409e276b400ecaa689d92fe5387662d1b5f2ab"; }
|
||||
{ locale = "fy-NL"; arch = "linux-i686"; sha1 = "751cd1092a58a8b6cde5d9e80790715d249ac11b"; }
|
||||
{ locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "3cc75c55220f81b0291c16d2f237cb6a2d2609f0"; }
|
||||
{ locale = "ga-IE"; arch = "linux-i686"; sha1 = "2bfa436c566a4e2f0fe7847feccf3c157e026d4b"; }
|
||||
{ locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "0b2ce0b246e107d99b13e497c64ad169e85eec51"; }
|
||||
{ locale = "gd"; arch = "linux-i686"; sha1 = "3afc8ad8747bfcbc5a7e6f2e6de37cbefb3967e7"; }
|
||||
{ locale = "gd"; arch = "linux-x86_64"; sha1 = "5bec8bcc0a67f304485b1efa7be5d952ce7985ce"; }
|
||||
{ locale = "gl"; arch = "linux-i686"; sha1 = "8fa3dfdc0d2da19f6c98dc76363c9e0d9d10f978"; }
|
||||
{ locale = "gl"; arch = "linux-x86_64"; sha1 = "4345cf5673267fb41c2c38f5fb92a3b0a9208cf0"; }
|
||||
{ locale = "gu-IN"; arch = "linux-i686"; sha1 = "e57883626a22d3935716417194e78a689c5535c2"; }
|
||||
{ locale = "gu-IN"; arch = "linux-x86_64"; sha1 = "be6095129ee3f3fc80f6705594a53c6ced996cb2"; }
|
||||
{ locale = "he"; arch = "linux-i686"; sha1 = "7ca70c0648b2f3928c1dc33288b48f488cf1d19b"; }
|
||||
{ locale = "he"; arch = "linux-x86_64"; sha1 = "f2eb7c6c33e8b4bc9a03bee587de4fe5b442ac95"; }
|
||||
{ locale = "hi-IN"; arch = "linux-i686"; sha1 = "32b242a2c6865fdad63ba4de701c566ffb33ef99"; }
|
||||
{ locale = "hi-IN"; arch = "linux-x86_64"; sha1 = "f83ceece81a71e6fb1494863b2970b2dc384d4c4"; }
|
||||
{ locale = "hr"; arch = "linux-i686"; sha1 = "77f9c855e5f728dcd3b4ff27ed656aa67217dd35"; }
|
||||
{ locale = "hr"; arch = "linux-x86_64"; sha1 = "f48bcf72d740f4a34bb7f888d977d4d39c141567"; }
|
||||
{ locale = "hsb"; arch = "linux-i686"; sha1 = "2db09bd59f3761bfdba8bad565e27e1b42a93727"; }
|
||||
{ locale = "hsb"; arch = "linux-x86_64"; sha1 = "99e0f119e5e79df5b20f686dd065fee5bda4511f"; }
|
||||
{ locale = "hu"; arch = "linux-i686"; sha1 = "0d601a679675c517a535bf706e7cbad9882a5d7c"; }
|
||||
{ locale = "hu"; arch = "linux-x86_64"; sha1 = "dbd3d180342d0946ab857bdd8d6bc30373e991b5"; }
|
||||
{ locale = "hy-AM"; arch = "linux-i686"; sha1 = "5f3e01cf375af38bee7014ff21fe75daf4e27071"; }
|
||||
{ locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "a78fbb1cc4e6d10056cc7a3ccecf4750979c5953"; }
|
||||
{ locale = "id"; arch = "linux-i686"; sha1 = "7efc031614247ddb93a27531d3fa1d19ce21d516"; }
|
||||
{ locale = "id"; arch = "linux-x86_64"; sha1 = "e409bb73aad373791d83569dfb4a475bc617eac8"; }
|
||||
{ locale = "is"; arch = "linux-i686"; sha1 = "0e5c4e9173379457b6c8edd1812121fce84cda07"; }
|
||||
{ locale = "is"; arch = "linux-x86_64"; sha1 = "dc6cbffde61b6188080e458b4a31b634f4c0434c"; }
|
||||
{ locale = "it"; arch = "linux-i686"; sha1 = "d75318f8421f634eeacf15aaa91a28261324044c"; }
|
||||
{ locale = "it"; arch = "linux-x86_64"; sha1 = "b024d0e3498c3dd32757997a273d9f1051ccd47f"; }
|
||||
{ locale = "ja"; arch = "linux-i686"; sha1 = "f74c1c567582a207efb501892845d1c28d7b8751"; }
|
||||
{ locale = "ja"; arch = "linux-x86_64"; sha1 = "cb4151c0c1c6efa4c8ec5e4656de60b1abd65bac"; }
|
||||
{ locale = "kk"; arch = "linux-i686"; sha1 = "1e9d43eedb0bab9f428a80ee3c2721a944961562"; }
|
||||
{ locale = "kk"; arch = "linux-x86_64"; sha1 = "18a55f6ea18663922052411ebaed18c16c9f3050"; }
|
||||
{ locale = "km"; arch = "linux-i686"; sha1 = "f4f6af5a09072e004e7c8db7a10edc9ab8d474c3"; }
|
||||
{ locale = "km"; arch = "linux-x86_64"; sha1 = "43694f66fea7caf9b2f4d976564c00a99f7092e7"; }
|
||||
{ locale = "kn"; arch = "linux-i686"; sha1 = "3a94f8a0cadc729e97bb6a7b273b02d79c9012dd"; }
|
||||
{ locale = "kn"; arch = "linux-x86_64"; sha1 = "ec51644f69354aebac67f36e387d1a5b45d0dfa8"; }
|
||||
{ locale = "ko"; arch = "linux-i686"; sha1 = "599de739c08799b8e4082190a53de3ae0dfc6617"; }
|
||||
{ locale = "ko"; arch = "linux-x86_64"; sha1 = "338825804362d34911beaad146ca6d104bc69788"; }
|
||||
{ locale = "lij"; arch = "linux-i686"; sha1 = "f2a6112a81043cc9608594cd56680a2e075dfd36"; }
|
||||
{ locale = "lij"; arch = "linux-x86_64"; sha1 = "8650de76d89abdcba3d0e4bba8c2b90533e54ce6"; }
|
||||
{ locale = "lt"; arch = "linux-i686"; sha1 = "0ea6e49b51dfd12150334b6023e26419716cdb65"; }
|
||||
{ locale = "lt"; arch = "linux-x86_64"; sha1 = "a16c9e916462e3780159677528ffa35b9569a80b"; }
|
||||
{ locale = "lv"; arch = "linux-i686"; sha1 = "0255634959aa739ae6807a1c249e4c78f51f8316"; }
|
||||
{ locale = "lv"; arch = "linux-x86_64"; sha1 = "ada8dc2d3ea22c2afffac88b581dfc72a27f2f89"; }
|
||||
{ locale = "mai"; arch = "linux-i686"; sha1 = "fa932b9e6d9798753e7b89b91a5db6565fe2b695"; }
|
||||
{ locale = "mai"; arch = "linux-x86_64"; sha1 = "8a9252658d549d2cbc764197265275461db605b6"; }
|
||||
{ locale = "mk"; arch = "linux-i686"; sha1 = "641c882870dfa7fb23bed9c07def585477ff459d"; }
|
||||
{ locale = "mk"; arch = "linux-x86_64"; sha1 = "4b68d11f2a613bc8350d37dae899c2c65afe5dc9"; }
|
||||
{ locale = "ml"; arch = "linux-i686"; sha1 = "f636e9b8d5e268f7c124ef3f35f6933de83fed62"; }
|
||||
{ locale = "ml"; arch = "linux-x86_64"; sha1 = "ed98b20d8eb88a73b119c3a1435904f69529eabd"; }
|
||||
{ locale = "mr"; arch = "linux-i686"; sha1 = "d5ef4d4dbf4d0b63f526d102e95f28078096032a"; }
|
||||
{ locale = "mr"; arch = "linux-x86_64"; sha1 = "8e92bf456593359afb256c387578042c6085916f"; }
|
||||
{ locale = "ms"; arch = "linux-i686"; sha1 = "d94320d0c8aee23b6d3c603664caab45180b6069"; }
|
||||
{ locale = "ms"; arch = "linux-x86_64"; sha1 = "b9fdc0248d9656b3555c475643c7e07ca3c6b222"; }
|
||||
{ locale = "nb-NO"; arch = "linux-i686"; sha1 = "d49719c255a43151ed5e94d7024c39914ea27ec7"; }
|
||||
{ locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "f2b1f00254ef350f817b5c1958384a9f5144f83e"; }
|
||||
{ locale = "nl"; arch = "linux-i686"; sha1 = "cc54828041f57f623de691a49e4bb055bd059c54"; }
|
||||
{ locale = "nl"; arch = "linux-x86_64"; sha1 = "5728a30bf53644a3b13bc00f5652e067cbe9100b"; }
|
||||
{ locale = "nn-NO"; arch = "linux-i686"; sha1 = "0f69ddbd963a19d104ee96589c405c55aa7140b2"; }
|
||||
{ locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "26af2b8cf928fedb5442c5257289f5e38c4f8432"; }
|
||||
{ locale = "or"; arch = "linux-i686"; sha1 = "2da0842ebe8ae5a8e80061d0fc159a5d408c4464"; }
|
||||
{ locale = "or"; arch = "linux-x86_64"; sha1 = "b7cc446178a493589d8654236f6e9113aee48455"; }
|
||||
{ locale = "pa-IN"; arch = "linux-i686"; sha1 = "dd81dc403366a7fd0d395338878b8b8fcb858365"; }
|
||||
{ locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "2ca8cc4c491f0ded4cef8e3826a3c1419a580051"; }
|
||||
{ locale = "pl"; arch = "linux-i686"; sha1 = "468d45392126ac7852012ed43d76d83e238dc2ac"; }
|
||||
{ locale = "pl"; arch = "linux-x86_64"; sha1 = "ed20af16563516671f32bb588728e90f29955964"; }
|
||||
{ locale = "pt-BR"; arch = "linux-i686"; sha1 = "b197bca20e972ce2f8851dc128fb212a7d293454"; }
|
||||
{ locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "2cd05329c3612330fdc1354fe651cc13ab8d9a5f"; }
|
||||
{ locale = "pt-PT"; arch = "linux-i686"; sha1 = "1087ba6ba17aa102888e929ccf7acc6b2476e447"; }
|
||||
{ locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "aa1907c10e980a8466c1604519ffa08aaabb2d7c"; }
|
||||
{ locale = "rm"; arch = "linux-i686"; sha1 = "fdb717a0f40b94a53077ff036a55c0f93b61a2cc"; }
|
||||
{ locale = "rm"; arch = "linux-x86_64"; sha1 = "af10206080a7ad21e5fda9cdf66a734ee33b07ac"; }
|
||||
{ locale = "ro"; arch = "linux-i686"; sha1 = "f08c67c6ea2a63c216f944453b4ce8b36f4ed840"; }
|
||||
{ locale = "ro"; arch = "linux-x86_64"; sha1 = "07efb37804ffab35f117eb32f9f645b554ac1dd8"; }
|
||||
{ locale = "ru"; arch = "linux-i686"; sha1 = "874f588d7ac5554ae4e8e134bfc272897f839f97"; }
|
||||
{ locale = "ru"; arch = "linux-x86_64"; sha1 = "af64b6eb8d33d6bd78ce86e4785be50babe5c919"; }
|
||||
{ locale = "si"; arch = "linux-i686"; sha1 = "672523b996c7021e06b4a713f7ac1239a3b1800f"; }
|
||||
{ locale = "si"; arch = "linux-x86_64"; sha1 = "2e594b56230c079a9f1735e9bab9dc4a9d9e31ab"; }
|
||||
{ locale = "sk"; arch = "linux-i686"; sha1 = "6edffa576d9829673c65400d4570b34dc787faad"; }
|
||||
{ locale = "sk"; arch = "linux-x86_64"; sha1 = "7b506fedbf3a25cd1ed54b05c9b5cb7b8c237ad8"; }
|
||||
{ locale = "sl"; arch = "linux-i686"; sha1 = "e8d1fea389b7cb75b7ccbf22ad5b8691e9bf1b6a"; }
|
||||
{ locale = "sl"; arch = "linux-x86_64"; sha1 = "20163798733ee36ffa510987b18d1eb67b82aca1"; }
|
||||
{ locale = "son"; arch = "linux-i686"; sha1 = "9076d0e9de6adb7fbd26dbd3cd89dd5728939aab"; }
|
||||
{ locale = "son"; arch = "linux-x86_64"; sha1 = "352aeb9f5ccb1e3bb87c8e47f93e96a049991412"; }
|
||||
{ locale = "sq"; arch = "linux-i686"; sha1 = "838c4c525a9f93117704851ad81b2c199a9c28fc"; }
|
||||
{ locale = "sq"; arch = "linux-x86_64"; sha1 = "0139a064056da0ed1730fd768da1322a9661bca9"; }
|
||||
{ locale = "sr"; arch = "linux-i686"; sha1 = "7d74018cd9948ee31e05b30ff1fb45a84d417494"; }
|
||||
{ locale = "sr"; arch = "linux-x86_64"; sha1 = "85c43e2359f444faf111efd83fb0dc3e1b0edb48"; }
|
||||
{ locale = "sv-SE"; arch = "linux-i686"; sha1 = "bc95ee926f82aba58691d923eb4cb963aa4cb64a"; }
|
||||
{ locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "7c8946d6180e2c48a80958b6a790bf6c9231591e"; }
|
||||
{ locale = "ta"; arch = "linux-i686"; sha1 = "dfaad8f934869d714c94a95a775bcdcd67fda3c4"; }
|
||||
{ locale = "ta"; arch = "linux-x86_64"; sha1 = "5523c6df4e2b03ae71c865aabe6bb0dd0446fc87"; }
|
||||
{ locale = "te"; arch = "linux-i686"; sha1 = "7a61ca88c832af3d15f197ba01d66c6fc43465d3"; }
|
||||
{ locale = "te"; arch = "linux-x86_64"; sha1 = "696823890791a05c6cf0230d1063a30012873090"; }
|
||||
{ locale = "th"; arch = "linux-i686"; sha1 = "4a3b932813ad0ab07f467a598e9e85b847bbe142"; }
|
||||
{ locale = "th"; arch = "linux-x86_64"; sha1 = "f847f3f0fb07f97053066f4b4314d93e9614e6cf"; }
|
||||
{ locale = "tr"; arch = "linux-i686"; sha1 = "59eee567e30cf6321c234c60002b416faec07aa4"; }
|
||||
{ locale = "tr"; arch = "linux-x86_64"; sha1 = "b64dfdbdc75f87003f00883173084646a2617a29"; }
|
||||
{ locale = "uk"; arch = "linux-i686"; sha1 = "44e6b53ede97835847ed84defe4235cad513c653"; }
|
||||
{ locale = "uk"; arch = "linux-x86_64"; sha1 = "bb6f84f58a19c6287bbc84e0e7101fcd48bd720a"; }
|
||||
{ locale = "uz"; arch = "linux-i686"; sha1 = "1aec3ba9efd52a1f386e0bb075745a7c01c443a2"; }
|
||||
{ locale = "uz"; arch = "linux-x86_64"; sha1 = "2ce2caccb638c0467ba1382a15146ef1cc33fa72"; }
|
||||
{ locale = "vi"; arch = "linux-i686"; sha1 = "d8b339892c152254c89ec1d42ff9b7f128455aab"; }
|
||||
{ locale = "vi"; arch = "linux-x86_64"; sha1 = "e4503686f2a997e1c793ef8e3c80bccd3dc0e2f0"; }
|
||||
{ locale = "xh"; arch = "linux-i686"; sha1 = "d130fae691b91a1f1f7d15ca84f643ccf299b0e3"; }
|
||||
{ locale = "xh"; arch = "linux-x86_64"; sha1 = "18b5d09571f4db7b18dbbdb3f3c29c80480a16aa"; }
|
||||
{ locale = "zh-CN"; arch = "linux-i686"; sha1 = "303816f99659e2bbb8ecc4f9b1c83932a0c9205d"; }
|
||||
{ locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "238b50b8bb745f2d80099354592c9b710c55f1d8"; }
|
||||
{ locale = "zh-TW"; arch = "linux-i686"; sha1 = "9159a6fea44a97a33390c527abf7730cdbbc9216"; }
|
||||
{ locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "74e3c2292aed9c2a7de24d6f3693ac1d0ba4c41f"; }
|
||||
];
|
||||
}
|
||||
|
@ -16,14 +16,14 @@
|
||||
|
||||
assert stdenv.cc ? libc && stdenv.cc.libc != null;
|
||||
|
||||
let version = "38.0.6"; in
|
||||
let version = "39.0"; in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "firefox-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.bz2";
|
||||
sha1 = "d6103cdcc6a6eda029d44104354d3a5cafbf8d45";
|
||||
sha1 = "32785daee7ddb9da8d7509ef095258fc58fe838e";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
|
@ -4,11 +4,11 @@
|
||||
, gsm, speex, portaudio, spandsp, libuuid
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.4.12";
|
||||
version = "0.4.13";
|
||||
name = "baresip-${version}";
|
||||
src=fetchurl {
|
||||
url = "http://www.creytiv.com/pub/baresip-${version}.tar.gz";
|
||||
sha256 = "0f4jfpyvlgvq47yha3ys3kbrpd6c20yxaqki70hl6b91jbhmq9i2";
|
||||
sha256 = "1mndpcclp5cqlm5jfbh37ig8dmga75qxqfinp4dyd1c0wnd0f0jg";
|
||||
};
|
||||
buildInputs = [zlib openssl libre librem pkgconfig
|
||||
cairo mpg123 gstreamer gst_ffmpeg gst_plugins_base gst_plugins_bad gst_plugins_good
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "mcabber-${version}";
|
||||
version = "0.10.3";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://mcabber.com/files/mcabber-${version}.tar.bz2";
|
||||
sha256 = "0vgsqw6yn0lzzcnr4fql4ycgf3gwqj6w4p0l4nqnvhkc94w62ikp";
|
||||
sha256 = "0ckh2l5fbnykzbvdrqjwd1ppalaifb79nnizh8kra2sy76xbqxjl";
|
||||
};
|
||||
|
||||
buildInputs = [ openssl ncurses pkgconfig glib loudmouth libotr gpgme ];
|
||||
|
@ -24,8 +24,8 @@ let
|
||||
langsSpaces = stdenv.lib.concatStringsSep " " langs;
|
||||
major = "4";
|
||||
minor = "4";
|
||||
patch = "3";
|
||||
tweak = "2";
|
||||
patch = "4";
|
||||
tweak = "3";
|
||||
subdir = "${major}.${minor}.${patch}";
|
||||
version = "${subdir}${if tweak == "" then "" else "."}${tweak}";
|
||||
|
||||
@ -80,14 +80,14 @@ let
|
||||
|
||||
translations = fetchSrc {
|
||||
name = "translations";
|
||||
sha256 = "17wfnbwcp7c5cx06c88gmprscfz05qyb5587m72xs6hzr741ygir";
|
||||
sha256 = "1zyfpbdsx0kjkabdpkf0lg7hjnvxsf6hj9ljs8v9iqw3x3b7llib";
|
||||
};
|
||||
|
||||
# TODO: dictionaries
|
||||
|
||||
help = fetchSrc {
|
||||
name = "help";
|
||||
sha256 = "09im7shbka9dfdh6mq31xq106khlyyw6rr1ij69smlkq0kg463g1";
|
||||
sha256 = "1jbbbv63p63mwby52ynz2yk79pb32wsnakhxfhc75ng1br6cpll0";
|
||||
};
|
||||
|
||||
};
|
||||
@ -97,7 +97,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
|
||||
sha256 = "0rl9x01ngxwnqwzxkrqy4vks4rb024m75z0w4zidwyp0az0m8qdd";
|
||||
sha256 = "0wns7ny19bsl5ar1rq7n4033rfijl2cjn9l8bj1gwhpqlkd8db1i";
|
||||
};
|
||||
|
||||
# Openoffice will open libcups dynamically, so we link it directly
|
||||
|
@ -6,7 +6,7 @@ let
|
||||
version="1.8";
|
||||
name="${baseName}-${version}";
|
||||
hash="0bl4dr7k6simwdvdyxhnjkiz4nm5y0nr8bfhc34zk0360i9m6sk3";
|
||||
url="http://www4.in.tum.de/~schulz/WORK/E_DOWNLOAD/V_1.8/E.tgz";
|
||||
url="http://wwwlehre.dhbw-stuttgart.de/~sschulz/WORK/E_DOWNLOAD/V_1.8/E.tgz";
|
||||
sha256="0bl4dr7k6simwdvdyxhnjkiz4nm5y0nr8bfhc34zk0360i9m6sk3";
|
||||
};
|
||||
in
|
||||
|
@ -1,3 +1,3 @@
|
||||
url http://www4.informatik.tu-muenchen.de/~schulz/E/Download.html
|
||||
url http://wwwlehre.dhbw-stuttgart.de/~sschulz/E/Download.html
|
||||
version_link '[.]tgz$'
|
||||
version '.*[/]V_([0-9.]+)[/].*' '\1'
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, gmp, readline }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.7.3";
|
||||
version = "2.7.4";
|
||||
name = "pari-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://pari.math.u-bordeaux.fr/pub/pari/unix/${name}.tar.gz";
|
||||
sha256 = "02k54m7p47r54lgxqanxvf7pdrss17n8if1qwk5wx0j1px22j0rq";
|
||||
sha256 = "0k1qqagfl6zn7gvwmsqffj6g9yrzqvszwh2mblhmxpjlw1pigfh8";
|
||||
};
|
||||
|
||||
buildInputs = [gmp readline];
|
||||
|
@ -1,24 +1,16 @@
|
||||
{ stdenv, fetchurl, python, rcs, git }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "src-0.13";
|
||||
name = "src-0.19";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.catb.org/~esr/src/${name}.tar.gz";
|
||||
sha256 = "03x0slgi6bnzgfn7f9qbl6jma0pj7357kwdh832l3v8zafk41p51";
|
||||
sha256 = "0p56g09ndbmnxxjz2rn7fq3yjx572ywj0xdim9rz5cqnx0pmr71x";
|
||||
};
|
||||
|
||||
buildInputs = [ python ];
|
||||
buildInputs = [ python rcs git ];
|
||||
|
||||
patches = [ ./path.patch ];
|
||||
|
||||
postPatch = ''
|
||||
sed -i \
|
||||
-e 's|@python@|${python}|' \
|
||||
-e 's|@rcs@|${rcs}|' \
|
||||
-e 's|@git@|${git}|' \
|
||||
src srctest
|
||||
'';
|
||||
preConfigure = "patchShebangs .";
|
||||
|
||||
makeFlags = [ "prefix=$(out)" ];
|
||||
|
||||
@ -26,11 +18,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = {
|
||||
description = "Simple single-file revision control";
|
||||
|
||||
homepage = http://www.catb.org/~esr/src/;
|
||||
|
||||
license = stdenv.lib.licenses.bsd3;
|
||||
|
||||
platforms = stdenv.lib.platforms.all;
|
||||
};
|
||||
}
|
||||
|
@ -1,30 +0,0 @@
|
||||
diff -Naur src-0.13-orig/src src-0.13/src
|
||||
--- src-0.13-orig/src 2014-11-24 03:56:16.000000000 -0500
|
||||
+++ src-0.13/src 2014-11-26 16:32:32.925151003 -0500
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env python2
|
||||
+#!@python@/bin/python
|
||||
#
|
||||
# src - simple revision control.
|
||||
#
|
||||
@@ -51,6 +51,8 @@
|
||||
|
||||
import sys, os, subprocess, time, calendar, stat, glob, shutil, hashlib
|
||||
|
||||
+os.environ['PATH'] = "@rcs@/bin:@git@/bin:" + os.environ['PATH']
|
||||
+
|
||||
version="0.13"
|
||||
|
||||
def rfc3339(t):
|
||||
diff -Naur src-0.13-orig/srctest src-0.13/srctest
|
||||
--- src-0.13-orig/srctest 2014-11-21 08:12:00.000000000 -0500
|
||||
+++ src-0.13/srctest 2014-11-26 16:33:13.627715388 -0500
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
# Set the PATH to include the current directory, so the repository
|
||||
# head version of src can always be tested.
|
||||
-PATH="$(pwd)":$PATH
|
||||
+PATH="$(pwd)":@git@/bin:$PATH
|
||||
|
||||
trap "rm -fr $SANDBOX" 0 1 2 15
|
||||
|
@ -4,20 +4,21 @@
|
||||
let
|
||||
version = "0.3.7.2";
|
||||
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://get.popcorntime.io/build/Popcorn-Time-${version}-Linux64.tar.xz";
|
||||
sha256 = "0lm9k4fr73a9p00i3xj2ywa4wvjf9csadm0pcz8d6imwwq44sa8b";
|
||||
};
|
||||
i686-linux = fetchurl {
|
||||
url = "https://get.popcorntime.io/build/Popcorn-Time-${version}-Linux32.tar.xz";
|
||||
sha256 = "1dz1cp31qbwamm9pf8ydmzzhnb6d9z73bigdv3y74dgicz3dpr91";
|
||||
};
|
||||
};
|
||||
|
||||
popcorntimePackage = stdenv.mkDerivation rec {
|
||||
name = "popcorntime-package-${version}";
|
||||
src = srcs."${stdenv.system}";
|
||||
src =
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "https://get.popcorntime.io/build/Popcorn-Time-${version}-Linux64.tar.xz";
|
||||
sha256 = "0lm9k4fr73a9p00i3xj2ywa4wvjf9csadm0pcz8d6imwwq44sa8b";
|
||||
}
|
||||
else if stdenv.system == "i686-linux" then
|
||||
fetchurl {
|
||||
url = "https://get.popcorntime.io/build/Popcorn-Time-${version}-Linux32.tar.xz";
|
||||
sha256 = "1dz1cp31qbwamm9pf8ydmzzhnb6d9z73bigdv3y74dgicz3dpr91";
|
||||
}
|
||||
else
|
||||
throw "Unsupported system ${stdenv.system}";
|
||||
sourceRoot = ".";
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
|
@ -0,0 +1,30 @@
|
||||
{ stdenv, fetchgit }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "win-pvdrivers-git-20150701";
|
||||
version = "20150701";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/ts468/win-pvdrivers";
|
||||
rev = "3054d645fc3ee182bea3e97ff01869f01cc3637a";
|
||||
sha256 = "6232ca2b7c9af874abbcb9262faf2c74c819727ed2eb64599c790879df535106";
|
||||
};
|
||||
|
||||
buildPhase =
|
||||
let unpack = x: "tar xf $src/${x}.tar; mkdir -p x86/${x} amd64/${x}; cp ${x}/x86/* x86/${x}/.; cp ${x}/x64/* amd64/${x}/.";
|
||||
in stdenv.lib.concatStringsSep "\n" (map unpack ["xenbus" "xeniface" "xenvif" "xennet" "xenvbd"]);
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r x86 $out/.
|
||||
cp -r amd64 $out/.
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Xen Subproject: Windows PV Driver";
|
||||
homepage = "http://xenproject.org/downloads/windows-pv-drivers.html";
|
||||
maintainers = [ maintainers.tstrobel ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.bsd3;
|
||||
};
|
||||
}
|
38
pkgs/applications/virtualization/driver/win-qemu/default.nix
Normal file
38
pkgs/applications/virtualization/driver/win-qemu/default.nix
Normal file
@ -0,0 +1,38 @@
|
||||
{ stdenv, fetchurl, p7zip }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "win-qemu-0.1.105-1";
|
||||
version = "0.1.105-1";
|
||||
|
||||
phases = [ "buildPhase" "installPhase" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.105-1/virtio-win.iso";
|
||||
sha256 = "065gz7s77y0q9kfqbr27451sr28rm9azpi88sqjkfph8c6r8q3wc";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
${p7zip}/bin/7z x $src
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
let
|
||||
copy_pvpanic = arch: version: "mkdir -p $out/${arch}/qemupanic; cp pvpanic/${version}/${arch}/* $out/${arch}/qemupanic/. \n";
|
||||
copy_pciserial = arch: "mkdir -p $out/${arch}/qemupciserial; cp qemupciserial/* $out/${arch}/qemupciserial/. \n";
|
||||
copy_agent = arch: ''
|
||||
mkdir -p $out/${arch}/qemuagent
|
||||
cp guest-agent/${if arch=="x86" then "qemu-ga-x86.msi" else "qemu-ga-x64.msi"} $out/${arch}/qemuagent/qemu-guest-agent.msi
|
||||
(cd $out/${arch}/qemuagent; ${p7zip}/bin/7z x qemu-guest-agent.msi; rm qemu-guest-agent.msi)
|
||||
'';
|
||||
copy = arch: version: (copy_pvpanic arch version) + (copy_pciserial arch) + (copy_agent arch);
|
||||
in
|
||||
(copy "amd64" "w8.1") + (copy "x86" "w8.1");
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Windows QEMU Drivers";
|
||||
homepage = "https://fedoraproject.org/wiki/Windows_Virtio_Drivers";
|
||||
maintainers = [ maintainers.tstrobel ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl2;
|
||||
};
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
{ stdenv, fetchurl, p7zip }:
|
||||
|
||||
let
|
||||
src_x86 = fetchurl {
|
||||
url = "http://apt.univention.de/download/addons/gplpv-drivers/gplpv_Vista2008x32_signed_0.11.0.373.msi";
|
||||
sha256 = "04r11xw8ikjmcdhrsk878c86g0d0pvras5arsas3zs6dhgjykqap";
|
||||
};
|
||||
|
||||
src_amd64 = fetchurl {
|
||||
url = "http://apt.univention.de/download/addons/gplpv-drivers/gplpv_Vista2008x64_signed_0.11.0.373.msi";
|
||||
sha256 = "00k628mg9b039p8lmg2l9n81dr15svy70p3m6xmq6f0frmci38ph";
|
||||
};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "gplpv-0.11.0.373";
|
||||
version = "0.11.0.373";
|
||||
|
||||
phases = [ "buildPhase" "installPhase" ];
|
||||
|
||||
buildPhase = ''
|
||||
mkdir -p x86
|
||||
(cd x86; ${p7zip}/bin/7z e ${src_x86})
|
||||
mkdir -p amd64
|
||||
(cd amd64; ${p7zip}/bin/7z e ${src_amd64})
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/x86 $out/amd64
|
||||
cp x86/* $out/x86/.
|
||||
cp amd64/* $out/amd64/.
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = ''
|
||||
A collection of open source Window PV drivers that allow
|
||||
Windows to be para-virtualized.
|
||||
The drivers are signed by Univention with a Software Publishers
|
||||
Certificate obtained from the VeriSign CA.
|
||||
'';
|
||||
homepage = "http://wiki.univention.de/index.php?title=Installing-signed-GPLPV-drivers";
|
||||
maintainers = [ maintainers.tstrobel ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl2;
|
||||
};
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
{ stdenv, fetchurl, p7zip, win-virtio }:
|
||||
|
||||
let
|
||||
src_usbdk_x86 = fetchurl {
|
||||
url = "http://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.4_x86.msi";
|
||||
sha256 = "17hv8034wk1xqnanm5jxs4741nl7asps1fdz6lhnrpp6gvj6yg9y";
|
||||
};
|
||||
|
||||
src_usbdk_amd64 = fetchurl {
|
||||
url = "http://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.4_x64.msi";
|
||||
sha256 = "0alcqsivp33pm8sy0lmkvq7m5yh6mmcmxdl39zjxjra67kw8r2sd";
|
||||
};
|
||||
|
||||
src_qxlwddm = fetchurl {
|
||||
url = "http://people.redhat.com/~vrozenfe/qxlwddm/qxlwddm-0.11.zip";
|
||||
sha256 = "082zdpbh9i3bq2ds8g33rcbcw390jsm7cqf46rrlx02x8r03dm98";
|
||||
};
|
||||
|
||||
src_vdagent_x86 = fetchurl {
|
||||
url = "http://www.spice-space.org/download/windows/vdagent/vdagent-win-0.7.3/vdagent_0_7_3_x86.zip";
|
||||
sha256 = "0d928g49rf4dl79jmvnqh6g864hp1flw1f0384sfp82himm3bxjs";
|
||||
};
|
||||
|
||||
src_vdagent_amd64 = fetchurl {
|
||||
url = "http://www.spice-space.org/download/windows/vdagent/vdagent-win-0.7.3/vdagent_0_7_3_x64.zip";
|
||||
sha256 = "0djmvm66jcmcyhhbjppccbai45nqpva7vyvry6w8nyc0fwi1vm9l";
|
||||
};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
# use version number of qxlwddm as qxlwddm is the most important component
|
||||
name = "win-spice-0.11";
|
||||
version = "0.11";
|
||||
|
||||
phases = [ "buildPhase" "installPhase" ];
|
||||
|
||||
buildPhase = ''
|
||||
mkdir -p usbdk/x86 usbdk/amd64
|
||||
(cd usbdk/x86; ${p7zip}/bin/7z x ${src_usbdk_x86})
|
||||
(cd usbdk/amd64; ${p7zip}/bin/7z x ${src_usbdk_amd64})
|
||||
|
||||
mkdir -p vdagent/x86 vdagent/amd64
|
||||
(cd vdagent/x86; ${p7zip}/bin/7z x ${src_vdagent_x86}; mv vdagent_0_7_3_x86/* .; rm -r vdagent_0_7_3_x86)
|
||||
(cd vdagent/amd64; ${p7zip}/bin/7z x ${src_vdagent_amd64}; mv vdagent_0_7_3_x64/* .; rm -r vdagent_0_7_3_x64)
|
||||
|
||||
mkdir -p qxlwddm
|
||||
(cd qxlwddm; ${p7zip}/bin/7z x ${src_qxlwddm}; mv Win8 w8.1; cd w8.1; mv x64 amd64)
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
let
|
||||
copy_qxl = arch: version: "mkdir -p $out/${arch}/qxl; cp qxlwddm/${version}/${arch}/* $out/${arch}/qxl/. \n";
|
||||
copy_usbdk = arch: "mkdir -p $out/${arch}/usbdk; cp usbdk/${arch}/* $out/${arch}/usbdk/. \n";
|
||||
copy_vdagent = arch: "mkdir -p $out/${arch}/vdagent; cp vdagent/${arch}/* $out/${arch}/vdagent/. \n";
|
||||
# SPICE needs vioserial
|
||||
# TODO: Link windows version in win-spice (here) to version used in win-virtio.
|
||||
# That way it would never matter whether vioserial is installed from win-virtio or win-spice.
|
||||
copy_vioserial = arch: "mkdir -p $out/${arch}/vioserial; cp ${win-virtio}/${arch}/vioserial/* $out/${arch}/vioserial/. \n";
|
||||
copy = arch: version: (copy_qxl arch version) + (copy_usbdk arch) + (copy_vdagent arch) + (copy_vioserial arch);
|
||||
in
|
||||
(copy "amd64" "w8.1") + (copy "x86" "w8.1");
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = ''Windows SPICE Drivers'';
|
||||
homepage = "http://www.spice-space.org";
|
||||
maintainers = [ maintainers.tstrobel ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
{ stdenv, fetchurl, p7zip }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "win-virtio-0.1.105-1";
|
||||
version = "0.1.105-1";
|
||||
|
||||
phases = [ "buildPhase" "installPhase" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.105-1/virtio-win.iso";
|
||||
sha256 = "065gz7s77y0q9kfqbr27451sr28rm9azpi88sqjkfph8c6r8q3wc";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
${p7zip}/bin/7z x $src
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
let
|
||||
copy = arch: version: {input, output}: "mkdir -p $out/${arch}/${output}; cp ${input}/${version}/${arch}/* $out/${arch}/${output}/.";
|
||||
virtio = [{input="Balloon"; output="vioballoon";}
|
||||
{input="NetKVM"; output="vionet";}
|
||||
{input="vioscsi"; output="vioscsi";}
|
||||
{input="vioserial"; output="vioserial";}
|
||||
{input="viostor"; output="viostor";}
|
||||
{input="viorng"; output="viorng";}
|
||||
];
|
||||
in
|
||||
stdenv.lib.concatStringsSep "\n" ((map (copy "amd64" "w8.1") virtio) ++ (map (copy "x86" "w8.1") virtio));
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Windows VirtIO Drivers";
|
||||
homepage = "https://fedoraproject.org/wiki/Windows_Virtio_Drivers";
|
||||
maintainers = [ maintainers.tstrobel ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
diff --git a/src/Kconfig b/src/Kconfig
|
||||
index 45ca59c..faf8951 100644
|
||||
--- a/src/Kconfig
|
||||
+++ b/src/Kconfig
|
||||
@@ -144,13 +144,13 @@ menu "Hardware support"
|
||||
config ATA_DMA
|
||||
depends on ATA
|
||||
bool "ATA DMA"
|
||||
- default n
|
||||
+ default y
|
||||
help
|
||||
Detect and try to use ATA bus mastering DMA controllers.
|
||||
config ATA_PIO32
|
||||
depends on ATA
|
||||
bool "ATA 32bit PIO"
|
||||
- default n
|
||||
+ default y
|
||||
help
|
||||
Use 32bit PIO accesses on ATA (minor optimization on PCI
|
||||
transfers).
|
||||
config AHCI
|
||||
--
|
||||
1.7.10.4
|
@ -0,0 +1,104 @@
|
||||
From bd71555985efc423b1a119b6a3177de855763453 Mon Sep 17 00:00:00 2001
|
||||
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
|
||||
Date: Tue, 20 Jan 2015 11:26:30 +0100
|
||||
Subject: [PATCH] libxl: Spice image compression setting support for upstream
|
||||
qemu
|
||||
|
||||
Usage:
|
||||
spice_image_compression=[auto_glz|auto_lz|quic|glz|lz|off]
|
||||
|
||||
Specifies what image compression is to be used by spice (if given),
|
||||
otherwise the qemu default will be used.
|
||||
|
||||
Signed-off-by: Fabio Fantoni <fabio.fantoni@m2r.biz>
|
||||
Acked-by: Wei Liu <wei.liu2@citrix.com>
|
||||
---
|
||||
docs/man/xl.cfg.pod.5 | 6 ++++++
|
||||
tools/libxl/libxl.h | 11 +++++++++++
|
||||
tools/libxl/libxl_dm.c | 4 ++++
|
||||
tools/libxl/libxl_types.idl | 1 +
|
||||
tools/libxl/xl_cmdimpl.c | 2 ++
|
||||
5 files changed, 24 insertions(+)
|
||||
|
||||
diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
|
||||
index e2f91fc..0c2cbac 100644
|
||||
--- a/docs/man/xl.cfg.pod.5
|
||||
+++ b/docs/man/xl.cfg.pod.5
|
||||
@@ -1427,6 +1427,12 @@ for redirection of up to 4 usb devices from spice client to domU's qemu.
|
||||
It requires an usb controller and if not defined it will automatically adds
|
||||
an usb2 controller. The default is disabled (0).
|
||||
|
||||
+=item B<spice_image_compression=[auto_glz|auto_lz|quic|glz|lz|off]>
|
||||
+
|
||||
+Specifies what image compression is to be used by spice (if given), otherwise
|
||||
+the qemu default will be used. Please see documentations of your current qemu
|
||||
+version for details.
|
||||
+
|
||||
=back
|
||||
|
||||
=head3 Miscellaneous Emulated Hardware
|
||||
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
|
||||
index 0a123f1..b8e0b67 100644
|
||||
--- a/tools/libxl/libxl.h
|
||||
+++ b/tools/libxl/libxl.h
|
||||
@@ -528,6 +528,17 @@ typedef struct libxl__ctx libxl_ctx;
|
||||
#define LIBXL_HAVE_SPICE_USBREDIREDIRECTION 1
|
||||
|
||||
/*
|
||||
+ * LIBXL_HAVE_SPICE_IMAGECOMPRESSION
|
||||
+ *
|
||||
+ * If defined, then the libxl_spice_info structure will contain a string type
|
||||
+ * field: image_compression. This value defines what Spice image compression
|
||||
+ * is used.
|
||||
+ *
|
||||
+ * If this is not defined, the Spice image compression setting support is ignored.
|
||||
+ */
|
||||
+#define LIBXL_HAVE_SPICE_IMAGECOMPRESSION 1
|
||||
+
|
||||
+/*
|
||||
* LIBXL_HAVE_DOMAIN_CREATE_RESTORE_PARAMS 1
|
||||
*
|
||||
* If this is defined, libxl_domain_create_restore()'s API has changed to
|
||||
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
|
||||
index c2b0487..40c8649 100644
|
||||
--- a/tools/libxl/libxl_dm.c
|
||||
+++ b/tools/libxl/libxl_dm.c
|
||||
@@ -398,6 +398,10 @@ static char *dm_spice_options(libxl__gc *gc,
|
||||
if (!libxl_defbool_val(spice->clipboard_sharing))
|
||||
opt = libxl__sprintf(gc, "%s,disable-copy-paste", opt);
|
||||
|
||||
+ if (spice->image_compression)
|
||||
+ opt = libxl__sprintf(gc, "%s,image-compression=%s", opt,
|
||||
+ spice->image_compression);
|
||||
+
|
||||
return opt;
|
||||
}
|
||||
|
||||
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
|
||||
index 1214d2e..052ded9 100644
|
||||
--- a/tools/libxl/libxl_types.idl
|
||||
+++ b/tools/libxl/libxl_types.idl
|
||||
@@ -241,6 +241,7 @@ libxl_spice_info = Struct("spice_info", [
|
||||
("vdagent", libxl_defbool),
|
||||
("clipboard_sharing", libxl_defbool),
|
||||
("usbredirection", integer),
|
||||
+ ("image_compression", string),
|
||||
])
|
||||
|
||||
libxl_sdl_info = Struct("sdl_info", [
|
||||
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
|
||||
index 0b02a6c..00aa69d 100644
|
||||
--- a/tools/libxl/xl_cmdimpl.c
|
||||
+++ b/tools/libxl/xl_cmdimpl.c
|
||||
@@ -1948,6 +1948,8 @@ skip_vfb:
|
||||
&b_info->u.hvm.spice.clipboard_sharing, 0);
|
||||
if (!xlu_cfg_get_long (config, "spiceusbredirection", &l, 0))
|
||||
b_info->u.hvm.spice.usbredirection = l;
|
||||
+ xlu_cfg_replace_string (config, "spice_image_compression",
|
||||
+ &b_info->u.hvm.spice.image_compression, 0);
|
||||
xlu_cfg_get_defbool(config, "nographic", &b_info->u.hvm.nographic, 0);
|
||||
xlu_cfg_get_defbool(config, "gfx_passthru",
|
||||
&b_info->u.hvm.gfx_passthru, 0);
|
||||
--
|
||||
1.9.2
|
||||
|
@ -0,0 +1,104 @@
|
||||
From 296c7f3284efe655d95a8ae045a5dc1a20d6fff0 Mon Sep 17 00:00:00 2001
|
||||
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
|
||||
Date: Tue, 20 Jan 2015 11:33:17 +0100
|
||||
Subject: [PATCH] libxl: Spice streaming video setting support for upstream
|
||||
qemu
|
||||
|
||||
Usage:
|
||||
spice_streaming_video=[filter|all|off]
|
||||
|
||||
Specifies what streaming video setting is to be used by spice (if
|
||||
given),
|
||||
otherwise the qemu default will be used.
|
||||
|
||||
Signed-off-by: Fabio Fantoni <fabio.fantoni@m2r.biz>
|
||||
Acked-by: Wei Liu <wei.liu2@citrix.com>
|
||||
---
|
||||
docs/man/xl.cfg.pod.5 | 5 +++++
|
||||
tools/libxl/libxl.h | 11 +++++++++++
|
||||
tools/libxl/libxl_dm.c | 4 ++++
|
||||
tools/libxl/libxl_types.idl | 1 +
|
||||
tools/libxl/xl_cmdimpl.c | 2 ++
|
||||
5 files changed, 23 insertions(+)
|
||||
|
||||
diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
|
||||
index 0c2cbac..408653f 100644
|
||||
--- a/docs/man/xl.cfg.pod.5
|
||||
+++ b/docs/man/xl.cfg.pod.5
|
||||
@@ -1433,6 +1433,11 @@ Specifies what image compression is to be used by spice (if given), otherwise
|
||||
the qemu default will be used. Please see documentations of your current qemu
|
||||
version for details.
|
||||
|
||||
+=item B<spice_streaming_video=[filter|all|off]>
|
||||
+
|
||||
+Specifies what streaming video setting is to be used by spice (if given),
|
||||
+otherwise the qemu default will be used.
|
||||
+
|
||||
=back
|
||||
|
||||
=head3 Miscellaneous Emulated Hardware
|
||||
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
|
||||
index b8e0b67..c219f59 100644
|
||||
--- a/tools/libxl/libxl.h
|
||||
+++ b/tools/libxl/libxl.h
|
||||
@@ -539,6 +539,17 @@ typedef struct libxl__ctx libxl_ctx;
|
||||
#define LIBXL_HAVE_SPICE_IMAGECOMPRESSION 1
|
||||
|
||||
/*
|
||||
+ * LIBXL_HAVE_SPICE_STREAMINGVIDEO
|
||||
+ *
|
||||
+ * If defined, then the libxl_spice_info structure will contain a string type
|
||||
+ * field: streaming_video. This value defines what Spice streaming video setting
|
||||
+ * is used.
|
||||
+ *
|
||||
+ * If this is not defined, the Spice streaming video setting support is ignored.
|
||||
+ */
|
||||
+#define LIBXL_HAVE_SPICE_STREAMINGVIDEO 1
|
||||
+
|
||||
+/*
|
||||
* LIBXL_HAVE_DOMAIN_CREATE_RESTORE_PARAMS 1
|
||||
*
|
||||
* If this is defined, libxl_domain_create_restore()'s API has changed to
|
||||
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
|
||||
index 40c8649..d8d6f0c 100644
|
||||
--- a/tools/libxl/libxl_dm.c
|
||||
+++ b/tools/libxl/libxl_dm.c
|
||||
@@ -402,6 +402,10 @@ static char *dm_spice_options(libxl__gc *gc,
|
||||
opt = libxl__sprintf(gc, "%s,image-compression=%s", opt,
|
||||
spice->image_compression);
|
||||
|
||||
+ if (spice->streaming_video)
|
||||
+ opt = libxl__sprintf(gc, "%s,streaming-video=%s", opt,
|
||||
+ spice->streaming_video);
|
||||
+
|
||||
return opt;
|
||||
}
|
||||
|
||||
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
|
||||
index 052ded9..02be466 100644
|
||||
--- a/tools/libxl/libxl_types.idl
|
||||
+++ b/tools/libxl/libxl_types.idl
|
||||
@@ -242,6 +242,7 @@ libxl_spice_info = Struct("spice_info", [
|
||||
("clipboard_sharing", libxl_defbool),
|
||||
("usbredirection", integer),
|
||||
("image_compression", string),
|
||||
+ ("streaming_video", string),
|
||||
])
|
||||
|
||||
libxl_sdl_info = Struct("sdl_info", [
|
||||
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
|
||||
index 00aa69d..b7eac29 100644
|
||||
--- a/tools/libxl/xl_cmdimpl.c
|
||||
+++ b/tools/libxl/xl_cmdimpl.c
|
||||
@@ -1950,6 +1950,8 @@ skip_vfb:
|
||||
b_info->u.hvm.spice.usbredirection = l;
|
||||
xlu_cfg_replace_string (config, "spice_image_compression",
|
||||
&b_info->u.hvm.spice.image_compression, 0);
|
||||
+ xlu_cfg_replace_string (config, "spice_streaming_video",
|
||||
+ &b_info->u.hvm.spice.streaming_video, 0);
|
||||
xlu_cfg_get_defbool(config, "nographic", &b_info->u.hvm.nographic, 0);
|
||||
xlu_cfg_get_defbool(config, "gfx_passthru",
|
||||
&b_info->u.hvm.gfx_passthru, 0);
|
||||
--
|
||||
1.9.2
|
||||
|
@ -0,0 +1,165 @@
|
||||
From 161212ef02312c0681d2d809c8ff1e1f0ea6f6f9 Mon Sep 17 00:00:00 2001
|
||||
From: Fabio Fantoni <fabio.fantoni@m2r.biz>
|
||||
Date: Wed, 29 Apr 2015 11:20:28 +0200
|
||||
Subject: [PATCH] libxl: Add qxl vga interface support for upstream qemu
|
||||
|
||||
Usage:
|
||||
vga="qxl"
|
||||
|
||||
Qxl vga support many resolutions that not supported by stdvga,
|
||||
mainly the 16:9 ones and other high up to 2560x1600.
|
||||
With QXL you can get improved performance and smooth video also
|
||||
with high resolutions and high quality.
|
||||
Require their drivers installed in the domU and spice used
|
||||
otherwise act as a simple stdvga.
|
||||
|
||||
Signed-off-by: Fabio Fantoni <fabio.fantoni@m2r.biz>
|
||||
Signed-off-by: Zhou Peng <zpengxen@gmail.com>
|
||||
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
||||
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
|
||||
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
|
||||
---
|
||||
docs/man/xl.cfg.pod.5 | 10 +++++++++-
|
||||
tools/libxl/libxl.h | 10 ++++++++++
|
||||
tools/libxl/libxl_create.c | 13 +++++++++++++
|
||||
tools/libxl/libxl_dm.c | 8 ++++++++
|
||||
tools/libxl/libxl_types.idl | 1 +
|
||||
tools/libxl/xl_cmdimpl.c | 2 ++
|
||||
6 files changed, 43 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
|
||||
index f936dfc..8e4154f 100644
|
||||
--- a/docs/man/xl.cfg.pod.5
|
||||
+++ b/docs/man/xl.cfg.pod.5
|
||||
@@ -1360,6 +1360,9 @@ qemu-xen-traditional device-model, the amount of video RAM is fixed at 4 MB,
|
||||
which is sufficient for 1024x768 at 32 bpp. For the upstream qemu-xen
|
||||
device-model, the default and minimum is 8 MB.
|
||||
|
||||
+For B<qxl> vga, the default is both default and minimal 128MB.
|
||||
+If B<videoram> is set less than 128MB, an error will be triggered.
|
||||
+
|
||||
=item B<stdvga=BOOLEAN>
|
||||
|
||||
Select a standard VGA card with VBE (VESA BIOS Extensions) as the
|
||||
@@ -1371,9 +1374,14 @@ This option is deprecated, use vga="stdvga" instead.
|
||||
|
||||
=item B<vga="STRING">
|
||||
|
||||
-Selects the emulated video card (none|stdvga|cirrus).
|
||||
+Selects the emulated video card (none|stdvga|cirrus|qxl).
|
||||
The default is cirrus.
|
||||
|
||||
+In general, QXL should work with the Spice remote display protocol
|
||||
+for acceleration, and QXL driver is necessary in guest in this case.
|
||||
+QXL can also work with the VNC protocol, but it will be like a standard
|
||||
+VGA without acceleration.
|
||||
+
|
||||
=item B<vnc=BOOLEAN>
|
||||
|
||||
Allow access to the display via the VNC protocol. This enables the
|
||||
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
|
||||
index 44bd8e2..efc0617 100644
|
||||
--- a/tools/libxl/libxl.h
|
||||
+++ b/tools/libxl/libxl.h
|
||||
@@ -535,6 +535,16 @@ typedef struct libxl__ctx libxl_ctx;
|
||||
#define LIBXL_HAVE_DOMINFO_OUTSTANDING_MEMKB 1
|
||||
|
||||
/*
|
||||
+ * LIBXL_HAVE_QXL
|
||||
+ *
|
||||
+ * If defined, then the libxl_vga_interface_type will contain another value:
|
||||
+ * "QXL". This value define if qxl vga is supported.
|
||||
+ *
|
||||
+ * If this is not defined, the qxl vga support is missed.
|
||||
+ */
|
||||
+#define LIBXL_HAVE_QXL 1
|
||||
+
|
||||
+/*
|
||||
* LIBXL_HAVE_SPICE_VDAGENT
|
||||
*
|
||||
* If defined, then the libxl_spice_info structure will contain a boolean type:
|
||||
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
|
||||
index e5a343f..188f7df 100644
|
||||
--- a/tools/libxl/libxl_create.c
|
||||
+++ b/tools/libxl/libxl_create.c
|
||||
@@ -248,6 +248,10 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
|
||||
if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
|
||||
b_info->video_memkb = 0;
|
||||
break;
|
||||
+ case LIBXL_VGA_INTERFACE_TYPE_QXL:
|
||||
+ LOG(ERROR,"qemu upstream required for qxl vga");
|
||||
+ return ERROR_INVAL;
|
||||
+ break;
|
||||
case LIBXL_VGA_INTERFACE_TYPE_STD:
|
||||
if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
|
||||
b_info->video_memkb = 8 * 1024;
|
||||
@@ -272,6 +276,15 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
|
||||
if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
|
||||
b_info->video_memkb = 0;
|
||||
break;
|
||||
+ case LIBXL_VGA_INTERFACE_TYPE_QXL:
|
||||
+ if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT) {
|
||||
+ b_info->video_memkb = (128 * 1024);
|
||||
+ } else if (b_info->video_memkb < (128 * 1024)) {
|
||||
+ LOG(ERROR,
|
||||
+ "128 Mib videoram is the minimum for qxl default");
|
||||
+ return ERROR_INVAL;
|
||||
+ }
|
||||
+ break;
|
||||
case LIBXL_VGA_INTERFACE_TYPE_STD:
|
||||
if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT)
|
||||
b_info->video_memkb = 16 * 1024;
|
||||
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
|
||||
index 30c1578..58c9b99 100644
|
||||
--- a/tools/libxl/libxl_dm.c
|
||||
+++ b/tools/libxl/libxl_dm.c
|
||||
@@ -251,6 +251,8 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc,
|
||||
case LIBXL_VGA_INTERFACE_TYPE_NONE:
|
||||
flexarray_append_pair(dm_args, "-vga", "none");
|
||||
break;
|
||||
+ case LIBXL_VGA_INTERFACE_TYPE_QXL:
|
||||
+ break;
|
||||
}
|
||||
|
||||
if (b_info->u.hvm.boot) {
|
||||
@@ -625,6 +627,12 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc,
|
||||
break;
|
||||
case LIBXL_VGA_INTERFACE_TYPE_NONE:
|
||||
break;
|
||||
+ case LIBXL_VGA_INTERFACE_TYPE_QXL:
|
||||
+ /* QXL have 2 ram regions, ram and vram */
|
||||
+ flexarray_append_pair(dm_args, "-device",
|
||||
+ GCSPRINTF("qxl-vga,vram_size_mb=%"PRIu64",ram_size_mb=%"PRIu64,
|
||||
+ (b_info->video_memkb/2/1024), (b_info->video_memkb/2/1024) ) );
|
||||
+ break;
|
||||
}
|
||||
|
||||
if (b_info->u.hvm.boot) {
|
||||
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
|
||||
index 117b61d..023b21e 100644
|
||||
--- a/tools/libxl/libxl_types.idl
|
||||
+++ b/tools/libxl/libxl_types.idl
|
||||
@@ -183,6 +183,7 @@ libxl_vga_interface_type = Enumeration("vga_interface_type", [
|
||||
(1, "CIRRUS"),
|
||||
(2, "STD"),
|
||||
(3, "NONE"),
|
||||
+ (4, "QXL"),
|
||||
], init_val = "LIBXL_VGA_INTERFACE_TYPE_CIRRUS")
|
||||
|
||||
libxl_vendor_device = Enumeration("vendor_device", [
|
||||
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
|
||||
index 648ca08..526a1f6 100644
|
||||
--- a/tools/libxl/xl_cmdimpl.c
|
||||
+++ b/tools/libxl/xl_cmdimpl.c
|
||||
@@ -2115,6 +2115,8 @@ skip_vfb:
|
||||
b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_CIRRUS;
|
||||
} else if (!strcmp(buf, "none")) {
|
||||
b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_NONE;
|
||||
+ } else if (!strcmp(buf, "qxl")) {
|
||||
+ b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_QXL;
|
||||
} else {
|
||||
fprintf(stderr, "Unknown vga \"%s\" specified\n", buf);
|
||||
exit(1);
|
||||
--
|
||||
1.9.2
|
||||
|
@ -14,30 +14,34 @@ let
|
||||
# Sources needed to build the xen tools and tools/firmware.
|
||||
toolsGits =
|
||||
[ # tag qemu-xen-4.4.1
|
||||
{ name = "qemu-xen";
|
||||
url = git://xenbits.xen.org/qemu-upstream-4.4-testing.git;
|
||||
rev = "65fc9b78ba3d868a26952db0d8e51cecf01d47b4";
|
||||
sha256 = "e24fb58f773fd9134c5aae6d3ca7e9f754dc9822de92b1eb2cedc76faf911f18";
|
||||
{ git = { name = "qemu-xen";
|
||||
url = git://xenbits.xen.org/qemu-upstream-4.4-testing.git;
|
||||
rev = "65fc9b78ba3d868a26952db0d8e51cecf01d47b4";
|
||||
sha256 = "e24fb58f773fd9134c5aae6d3ca7e9f754dc9822de92b1eb2cedc76faf911f18";
|
||||
};
|
||||
}
|
||||
# tag xen-4.4.1
|
||||
{ name = "qemu-xen-traditional";
|
||||
url = git://xenbits.xen.org/qemu-xen-4.4-testing.git;
|
||||
rev = "6ae4e588081620b141071eb010ec40aca7e12876";
|
||||
sha256 = "b1ed1feb92fbe658273a8d6d38d6ea60b79c1658413dd93979d6d128d8554ded";
|
||||
{ git = { name = "qemu-xen-traditional";
|
||||
url = git://xenbits.xen.org/qemu-xen-4.4-testing.git;
|
||||
rev = "6ae4e588081620b141071eb010ec40aca7e12876";
|
||||
sha256 = "b1ed1feb92fbe658273a8d6d38d6ea60b79c1658413dd93979d6d128d8554ded";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
firmwareGits =
|
||||
[ # tag 1.7.3.1
|
||||
{ name = "seabios";
|
||||
url = git://xenbits.xen.org/seabios.git;
|
||||
rev = "7d9cbe613694924921ed1a6f8947d711c5832eee";
|
||||
sha256 = "c071282bbcb1dd0d98536ef90cd1410f5d8da19648138e0e3863bc540d954a87";
|
||||
{ git = { name = "seabios";
|
||||
url = git://xenbits.xen.org/seabios.git;
|
||||
rev = "7d9cbe613694924921ed1a6f8947d711c5832eee";
|
||||
sha256 = "c071282bbcb1dd0d98536ef90cd1410f5d8da19648138e0e3863bc540d954a87";
|
||||
};
|
||||
}
|
||||
{ name = "ovmf";
|
||||
url = git://xenbits.xen.org/ovmf.git;
|
||||
rev = "447d264115c476142f884af0be287622cd244423";
|
||||
sha256 = "7086f882495a8be1497d881074e8f1005dc283a5e1686aec06c1913c76a6319b";
|
||||
{ git = { name = "ovmf";
|
||||
url = git://xenbits.xen.org/ovmf.git;
|
||||
rev = "447d264115c476142f884af0be287622cd244423";
|
||||
sha256 = "7086f882495a8be1497d881074e8f1005dc283a5e1686aec06c1913c76a6319b";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
|
@ -14,30 +14,47 @@ let
|
||||
# Sources needed to build the xen tools and tools/firmware.
|
||||
firmwareGits =
|
||||
[ # tag 1.7.5
|
||||
{ name = "seabios";
|
||||
url = git://xenbits.xen.org/seabios.git;
|
||||
rev = "e51488c5f8800a52ac5c8da7a31b85cca5cc95d2";
|
||||
sha256 = "b96a0b9f31cab0f3993d007dcbe5f1bd69ad02b0a23eb2dc8a3ed1aafe7985cb";
|
||||
{ git = { name = "seabios";
|
||||
url = git://xenbits.xen.org/seabios.git;
|
||||
rev = "e51488c5f8800a52ac5c8da7a31b85cca5cc95d2";
|
||||
sha256 = "b96a0b9f31cab0f3993d007dcbe5f1bd69ad02b0a23eb2dc8a3ed1aafe7985cb";
|
||||
};
|
||||
patches = [ ./0000-qemu-seabios-enable-ATA_DMA.patch ];
|
||||
}
|
||||
{ name = "ovmf";
|
||||
url = git://xenbits.xen.org/ovmf.git;
|
||||
rev = "447d264115c476142f884af0be287622cd244423";
|
||||
sha256 = "7086f882495a8be1497d881074e8f1005dc283a5e1686aec06c1913c76a6319b";
|
||||
{ git = { name = "ovmf";
|
||||
url = git://xenbits.xen.org/ovmf.git;
|
||||
rev = "447d264115c476142f884af0be287622cd244423";
|
||||
sha256 = "7086f882495a8be1497d881074e8f1005dc283a5e1686aec06c1913c76a6319b";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
toolsGits =
|
||||
[ # tag qemu-xen-4.5.0
|
||||
{ name = "qemu-xen";
|
||||
url = git://xenbits.xen.org/qemu-upstream-4.5-testing.git;
|
||||
rev = "1ebb75b1fee779621b63e84fefa7b07354c43a99";
|
||||
sha256 = "1j312q2mqvkvby9adkkxf7f1pn3nz85g5mr9nbg4qpf2y9cg122z";
|
||||
{ git = { name = "qemu-xen";
|
||||
url = git://xenbits.xen.org/qemu-upstream-4.5-testing.git;
|
||||
rev = "1ebb75b1fee779621b63e84fefa7b07354c43a99";
|
||||
sha256 = "1j312q2mqvkvby9adkkxf7f1pn3nz85g5mr9nbg4qpf2y9cg122z";
|
||||
};
|
||||
}
|
||||
# tag xen-4.5.0
|
||||
{ name = "qemu-xen-traditional";
|
||||
url = git://xenbits.xen.org/qemu-xen-4.5-testing.git;
|
||||
rev = "b0d42741f8e9a00854c3b3faca1da84bfc69bf22";
|
||||
sha256 = "ce52b5108936c30ab85ec0c9554f88d5e7b34896f3acb666d56765b49c86f2af";
|
||||
{ git = { name = "qemu-xen-traditional";
|
||||
url = git://xenbits.xen.org/qemu-xen-4.5-testing.git;
|
||||
rev = "b0d42741f8e9a00854c3b3faca1da84bfc69bf22";
|
||||
sha256 = "ce52b5108936c30ab85ec0c9554f88d5e7b34896f3acb666d56765b49c86f2af";
|
||||
};
|
||||
}
|
||||
{ git = { name = "xen-libhvm";
|
||||
url = "https://github.com/ts468/xen-libhvm";
|
||||
rev = "442dcc4f6f4e374a51e4613532468bd6b48bdf63";
|
||||
sha256 = "9ba97c39a00a54c154785716aa06691d312c99be498ebbc00dc3769968178ba8";
|
||||
};
|
||||
description = ''
|
||||
Helper library for reading ACPI and SMBIOS firmware values
|
||||
from the host system for use with the HVM guest firmware
|
||||
pass-through feature in Xen.
|
||||
'';
|
||||
#license = licenses.bsd2;
|
||||
}
|
||||
];
|
||||
|
||||
@ -52,6 +69,10 @@ let
|
||||
quilt push -a
|
||||
substituteInPlace tools/xenguest/Makefile --replace "_BSD_SOURCE" "_DEFAULT_SOURCE"
|
||||
'';
|
||||
|
||||
xenPatches = [ ./0001-libxl-Spice-image-compression-setting-support-for-up.patch
|
||||
./0002-libxl-Spice-streaming-video-setting-support-for-upst.patch
|
||||
./0003-Add-qxl-vga-interface-support-for-upstream-qem.patch ];
|
||||
};
|
||||
|
||||
in callPackage ./generic.nix (args // { xenConfig=xenConfig; })
|
||||
|
67
pkgs/applications/virtualization/xen/4.5.1.nix
Normal file
67
pkgs/applications/virtualization/xen/4.5.1.nix
Normal file
@ -0,0 +1,67 @@
|
||||
{ callPackage, fetchurl, fetchgit, ... } @ args:
|
||||
|
||||
let
|
||||
# Xen 4.5.1
|
||||
xenConfig = {
|
||||
name = "xen-4.5.1";
|
||||
version = "4.5.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://bits.xensource.com/oss-xen/release/4.5.1/xen-4.5.1.tar.gz";
|
||||
sha256 = "0w8kbqy7zixacrpbk3yj51xx7b3f6l8ghsg3551w8ym6zka13336";
|
||||
};
|
||||
|
||||
# Sources needed to build the xen tools and tools/firmware.
|
||||
firmwareGits =
|
||||
[ # tag 1.7.5
|
||||
{ git = { name = "seabios";
|
||||
url = git://xenbits.xen.org/seabios.git;
|
||||
rev = "e51488c5f8800a52ac5c8da7a31b85cca5cc95d2";
|
||||
sha256 = "b96a0b9f31cab0f3993d007dcbe5f1bd69ad02b0a23eb2dc8a3ed1aafe7985cb";
|
||||
};
|
||||
patches = [ ./0000-qemu-seabios-enable-ATA_DMA.patch ];
|
||||
}
|
||||
{ git = { name = "ovmf";
|
||||
url = git://xenbits.xen.org/ovmf.git;
|
||||
rev = "447d264115c476142f884af0be287622cd244423";
|
||||
sha256 = "7086f882495a8be1497d881074e8f1005dc283a5e1686aec06c1913c76a6319b";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
toolsGits =
|
||||
[ # tag qemu-xen-4.5.1
|
||||
{ git = { name = "qemu-xen";
|
||||
url = git://xenbits.xen.org/qemu-upstream-4.5-testing.git;
|
||||
rev = "d9552b0af21c27535cd3c8549bb31d26bbecd506";
|
||||
sha256 = "15dbz8j26wl4vs5jijhccwgd8c6wkmpj4mz899fa7i1bbh8yysfy";
|
||||
};
|
||||
}
|
||||
# tag xen-4.5.1
|
||||
{ git = { name = "qemu-xen-traditional";
|
||||
url = git://xenbits.xen.org/qemu-xen-4.5-testing.git;
|
||||
rev = "afaa35b4bc975b2b89ad44c481d0d7623e3d1c49";
|
||||
sha256 = "906b31cf32b52d29e521abaa76d641123bdf24f33fa53c6f109b6d7834e514be";
|
||||
};
|
||||
}
|
||||
{ git = { name = "xen-libhvm";
|
||||
url = "https://github.com/ts468/xen-libhvm";
|
||||
rev = "442dcc4f6f4e374a51e4613532468bd6b48bdf63";
|
||||
sha256 = "9ba97c39a00a54c154785716aa06691d312c99be498ebbc00dc3769968178ba8";
|
||||
};
|
||||
description = ''
|
||||
Helper library for reading ACPI and SMBIOS firmware values
|
||||
from the host system for use with the HVM guest firmware
|
||||
pass-through feature in Xen.
|
||||
'';
|
||||
#license = licenses.bsd2;
|
||||
}
|
||||
];
|
||||
|
||||
xenPatches = [ ./0001-libxl-Spice-image-compression-setting-support-for-up.patch
|
||||
./0002-libxl-Spice-streaming-video-setting-support-for-upst.patch
|
||||
./0003-Add-qxl-vga-interface-support-for-upstream-qem.patch ];
|
||||
};
|
||||
|
||||
in callPackage ./generic.nix (args // { xenConfig=xenConfig; })
|
||||
|
@ -3,7 +3,7 @@
|
||||
, lvm2, utillinux, procps, texinfo, perl, pythonPackages
|
||||
, glib, bridge-utils, xlibs, pixman, iproute, udev, bison
|
||||
, flex, cmake, ocaml, ocamlPackages, figlet, libaio, yajl
|
||||
, checkpolicy, transfig, glusterfs, fetchgit, xz, spice
|
||||
, checkpolicy, transfig, glusterfs, acl, fetchgit, xz, spice
|
||||
, spice_protocol, usbredir, alsaLib, quilt
|
||||
, coreutils, gawk, gnused, gnugrep, diffutils, multipath_tools
|
||||
, inetutils, iptables, openvswitch, nbd, drbd, xenConfig
|
||||
@ -69,15 +69,14 @@ stdenv.mkDerivation {
|
||||
glib bridge-utils pixman iproute udev bison xlibs.libX11
|
||||
flex ocaml ocamlPackages.findlib figlet libaio
|
||||
checkpolicy pythonPackages.markdown transfig
|
||||
glusterfs cmake spice spice_protocol usbredir
|
||||
glusterfs acl cmake spice spice_protocol usbredir
|
||||
alsaLib quilt
|
||||
];
|
||||
|
||||
pythonPath = [ pythonPackages.curses ];
|
||||
|
||||
patchPhase = if ((xenserverPatched == true) && (builtins.hasAttr "xenserverPatches" xenConfig))
|
||||
then xenConfig.xenserverPatches
|
||||
else "";
|
||||
patches = stdenv.lib.optionals ((xenserverPatched == false) && (builtins.hasAttr "xenPatches" xenConfig)) xenConfig.xenPatches;
|
||||
patchPhase = stdenv.lib.optional ((xenserverPatched == true) && (builtins.hasAttr "xenserverPatches" xenConfig)) xenConfig.xenserverPatches;
|
||||
|
||||
preConfigure = ''
|
||||
# Fake wget: copy prefetched downloads instead
|
||||
@ -87,13 +86,9 @@ stdenv.mkDerivation {
|
||||
echo "cp \$4 \$3" >> wget/wget
|
||||
chmod +x wget/wget
|
||||
export PATH=$PATH:$PWD/wget
|
||||
export EXTRA_QEMUU_CONFIGURE_ARGS="--enable-spice --enable-usb-redir --enable-linux-aio"
|
||||
'';
|
||||
|
||||
# TODO: If multiple arguments are given with with-extra-qemuu,
|
||||
# then the configuration aborts; the reason is unclear.
|
||||
# If you know how to fix it, please let me know! :)
|
||||
#configureFlags = "--with-extra-qemuu-configure-args='--enable-spice --enable-usb-redir --enable-linux-aio'";
|
||||
|
||||
# TODO: Flask needs more testing before enabling it by default.
|
||||
#makeFlags = "XSM_ENABLE=y FLASK_ENABLE=y PREFIX=$(out) CONFIG_DIR=/etc XEN_EXTFILES_URL=\\$(XEN_ROOT)/xen_ext_files ";
|
||||
makeFlags = "PREFIX=$(out) CONFIG_DIR=/etc XEN_EXTFILES_URL=\\$(XEN_ROOT)/xen_ext_files ";
|
||||
@ -154,13 +149,17 @@ stdenv.mkDerivation {
|
||||
|
||||
# Xen's tools and firmares need various git repositories that it
|
||||
# usually checks out at time using git. We can't have that.
|
||||
${flip concatMapStrings xenConfig.toolsGits (x: let src = fetchgit x; in ''
|
||||
${flip concatMapStrings xenConfig.toolsGits (x: let src = fetchgit x.git; in ''
|
||||
cp -r ${src} tools/${src.name}-dir-remote
|
||||
chmod +w tools/${src.name}-dir-remote
|
||||
chmod -R +w tools/${src.name}-dir-remote
|
||||
'' + stdenv.lib.optionalString (builtins.hasAttr "patches" x) ''
|
||||
( cd tools/${src.name}-dir-remote; ${concatStringsSep "; " (map (p: "patch -p1 < ${p}") x.patches)} )
|
||||
'')}
|
||||
${flip concatMapStrings xenConfig.firmwareGits (x: let src = fetchgit x; in ''
|
||||
${flip concatMapStrings xenConfig.firmwareGits (x: let src = fetchgit x.git; in ''
|
||||
cp -r ${src} tools/firmware/${src.name}-dir-remote
|
||||
chmod +w tools/firmware/${src.name}-dir-remote
|
||||
chmod -R +w tools/firmware/${src.name}-dir-remote
|
||||
'' + stdenv.lib.optionalString (builtins.hasAttr "patches" x) ''
|
||||
( cd tools/firmware/${src.name}-dir-remote; ${concatStringsSep "; " (map (p: "patch -p1 < ${p}") x.patches)} )
|
||||
'')}
|
||||
|
||||
# Xen's stubdoms and firmwares need various sources that are usually fetched
|
||||
@ -178,6 +177,9 @@ stdenv.mkDerivation {
|
||||
postBuild =
|
||||
''
|
||||
make -C docs man-pages
|
||||
|
||||
(cd tools/xen-libhvm-dir-remote; make)
|
||||
(cd tools/xen-libhvm-dir-remote/biospt; cc -Wall -g -D_LINUX -Wstrict-prototypes biospt.c -o biospt -I../libhvm -L../libhvm -lxenhvm)
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
@ -192,8 +194,11 @@ stdenv.mkDerivation {
|
||||
|
||||
shopt -s extglob
|
||||
for i in $out/etc/xen/scripts/!(*.sh); do
|
||||
sed -i '2s@^@export PATH=$out/bin:${scriptEnvPath}@' $i
|
||||
sed -i "2s@^@export PATH=$out/bin:${scriptEnvPath}\n@" $i
|
||||
done
|
||||
|
||||
(cd tools/xen-libhvm-dir-remote; make install)
|
||||
cp tools/xen-libhvm-dir-remote/biospt/biospt $out/bin/.
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
25
pkgs/applications/virtualization/xhyve/default.nix
Normal file
25
pkgs/applications/virtualization/xhyve/default.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ stdenv, lib, fetchurl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "xhyve-${version}";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/mist64/xhyve/archive/v${version}.tar.gz";
|
||||
sha256 = "0nbb9zy4iqmdz2dpyvcl1ynimrrpyd6f6cq8y2p78n1lmgqhrgkm";
|
||||
};
|
||||
|
||||
buildFlags = "CFLAGS=-Wno-pedantic -Wno-shift-sign-overflow";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp build/xhyve $out/bin
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Lightweight Virtualization on OS X Based on bhyve";
|
||||
homepage = "https://github.com/mist64/xhyve";
|
||||
maintainers = lib.maintainers.lnl7;
|
||||
platforms = lib.platforms.darwin;
|
||||
};
|
||||
}
|
@ -1,62 +1,6 @@
|
||||
{ lib, stdenv, fetchurl, patchelf, perl, ncurses, expat, python, zlib
|
||||
, xlibs, gtk2, glib, fontconfig, freetype, unixODBC, alsaLib
|
||||
} :
|
||||
{ callPackage, ... } @ args:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "cudatoolkit-5.5.22";
|
||||
|
||||
dontPatchELF = true;
|
||||
dontStrip = true;
|
||||
|
||||
src =
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = http://developer.download.nvidia.com/compute/cuda/5_5/rel/installers/cuda_5.5.22_linux_64.run;
|
||||
sha256 = "b997e1dbe95704e0e806e0cedc5fd370a385351fef565c7bae0917baf3a29aa4";
|
||||
}
|
||||
else throw "cudatoolkit does not support platform ${stdenv.system}";
|
||||
|
||||
outputs = [ "out" "sdk" ];
|
||||
|
||||
buildInputs = [ perl ];
|
||||
|
||||
runtimeDependencies = [
|
||||
ncurses expat python zlib
|
||||
xlibs.libX11 xlibs.libXext xlibs.libXrender xlibs.libXt xlibs.libXtst xlibs.libXi xlibs.libXext
|
||||
gtk2 glib fontconfig freetype unixODBC alsaLib
|
||||
];
|
||||
|
||||
rpath = "${stdenv.lib.makeLibraryPath runtimeDependencies}:${stdenv.cc.cc}/lib64";
|
||||
|
||||
unpackPhase = ''
|
||||
sh $src --keep --noexec
|
||||
cd pkg/run_files
|
||||
sh cuda-linux64-rel-5.5.22-16488124.run --keep --noexec
|
||||
sh cuda-samples-linux-5.5.22-16488124.run --keep --noexec
|
||||
cd pkg
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
find . -type f -executable -exec patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
'{}' \; || true
|
||||
find . -type f -exec patchelf \
|
||||
--set-rpath $rpath:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64:$(cat $NIX_CC/nix-support/orig-cc)/lib \
|
||||
--force-rpath \
|
||||
'{}' \; || true
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out $sdk
|
||||
perl ./install-linux.pl --prefix="$out"
|
||||
rm $out/tools/CUDA_Occupancy_Calculator.xls
|
||||
perl ./install-sdk-linux.pl --prefix="$sdk" --cudaprefix="$out"
|
||||
mv $out/include $out/usr_include
|
||||
'';
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
meta = {
|
||||
license = lib.licenses.unfree;
|
||||
};
|
||||
}
|
||||
callPackage ./generic.nix (args // rec {
|
||||
version = "5.5.22";
|
||||
sha256 = "b997e1dbe95704e0e806e0cedc5fd370a385351fef565c7bae0917baf3a29aa4";
|
||||
})
|
||||
|
@ -1,63 +1,6 @@
|
||||
{ lib, stdenv, fetchurl, patchelf, perl, ncurses, expat, python, zlib
|
||||
, xlibs, gtk2, glib, fontconfig, freetype, unixODBC, alsaLib
|
||||
} :
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "cudatoolkit-6.0.37";
|
||||
|
||||
dontPatchELF = true;
|
||||
dontStrip = true;
|
||||
|
||||
src =
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = http://developer.download.nvidia.com/compute/cuda/6_0/rel/installers/cuda_6.0.37_linux_64.run;
|
||||
sha256 = "991e436c7a6c94ec67cf44204d136adfef87baa3ded270544fa211179779bc40";
|
||||
}
|
||||
else throw "cudatoolkit does not support platform ${stdenv.system}";
|
||||
|
||||
outputs = [ "out" "sdk" ];
|
||||
|
||||
buildInputs = [ perl ];
|
||||
|
||||
runtimeDependencies = [
|
||||
ncurses expat python zlib
|
||||
xlibs.libX11 xlibs.libXext xlibs.libXrender xlibs.libXt xlibs.libXtst xlibs.libXi xlibs.libXext
|
||||
gtk2 glib fontconfig freetype unixODBC alsaLib
|
||||
];
|
||||
|
||||
rpath = "${stdenv.lib.makeLibraryPath runtimeDependencies}:${stdenv.cc.cc}/lib64";
|
||||
|
||||
unpackPhase = ''
|
||||
sh $src --keep --noexec
|
||||
cd pkg/run_files
|
||||
sh cuda-linux64-rel-6.0.37-18176142.run --keep --noexec
|
||||
sh cuda-samples-linux-6.0.37-18176142.run --keep --noexec
|
||||
cd pkg
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
find . -type f -executable -exec patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
'{}' \; || true
|
||||
find . -type f -exec patchelf \
|
||||
--set-rpath $rpath:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64:$(cat $NIX_CC/nix-support/orig-cc)/lib \
|
||||
--force-rpath \
|
||||
'{}' \; || true
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out $sdk
|
||||
perl ./install-linux.pl --prefix="$out"
|
||||
rm $out/tools/CUDA_Occupancy_Calculator.xls
|
||||
perl ./install-sdk-linux.pl --prefix="$sdk" --cudaprefix="$out"
|
||||
mv $out/include $out/usr_include
|
||||
'';
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
meta = {
|
||||
license = lib.licenses.unfree;
|
||||
};
|
||||
}
|
||||
{ callPackage, ... } @ args:
|
||||
|
||||
callPackage ./generic.nix (args // rec {
|
||||
version = "6.0.37";
|
||||
sha256 = "991e436c7a6c94ec67cf44204d136adfef87baa3ded270544fa211179779bc40";
|
||||
})
|
||||
|
@ -1,69 +1,6 @@
|
||||
{ lib, stdenv, fetchurl, patchelf, perl, ncurses, expat, python, zlib
|
||||
, xlibs, gtk2, glib, fontconfig, freetype, unixODBC, alsaLib, glibc
|
||||
}:
|
||||
|
||||
let version = "6.5.19"; in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "cudatoolkit-${version}";
|
||||
|
||||
dontPatchELF = true;
|
||||
dontStrip = true;
|
||||
|
||||
src =
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda_${version}_linux_64.run";
|
||||
sha256 = "1x9zdmk8z784d3d35vr2ak1l4h5v4jfjhpxfi9fl9dvjkcavqyaj";
|
||||
}
|
||||
else throw "cudatoolkit does not support platform ${stdenv.system}";
|
||||
|
||||
outputs = [ "out" "sdk" ];
|
||||
|
||||
buildInputs = [ perl ];
|
||||
|
||||
runtimeDependencies = [
|
||||
glibc
|
||||
ncurses expat python zlib
|
||||
xlibs.libX11 xlibs.libXext xlibs.libXrender xlibs.libXt xlibs.libXtst xlibs.libXi xlibs.libXext
|
||||
gtk2 glib fontconfig freetype unixODBC alsaLib
|
||||
];
|
||||
|
||||
rpath = "${stdenv.lib.makeLibraryPath runtimeDependencies}:${stdenv.cc.cc}/lib64";
|
||||
|
||||
unpackPhase = ''
|
||||
sh $src --keep --noexec
|
||||
cd pkg/run_files
|
||||
sh cuda-linux64-rel-${version}-*.run --keep --noexec
|
||||
sh cuda-samples-linux-${version}-*.run --keep --noexec
|
||||
cd pkg
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
find . -type f -executable -exec patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
'{}' \; || true
|
||||
find . -type f -exec patchelf \
|
||||
--set-rpath $rpath:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64:$(cat $NIX_CC/nix-support/orig-cc)/lib \
|
||||
--force-rpath \
|
||||
'{}' \; || true
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out $sdk
|
||||
perl ./install-linux.pl --prefix="$out"
|
||||
rm $out/tools/CUDA_Occupancy_Calculator.xls
|
||||
perl ./install-sdk-linux.pl --prefix="$sdk" --cudaprefix="$out"
|
||||
mv $out/include $out/usr_include
|
||||
|
||||
# let's remove the 32-bit libraries, they confuse the lib64->lib mover
|
||||
rm -rf $out/lib
|
||||
'';
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
meta = {
|
||||
license = lib.licenses.unfree;
|
||||
};
|
||||
}
|
||||
{ callPackage, ... } @ args:
|
||||
|
||||
callPackage ./generic.nix (args // rec {
|
||||
version = "6.5.19";
|
||||
sha256 = "1x9zdmk8z784d3d35vr2ak1l4h5v4jfjhpxfi9fl9dvjkcavqyaj";
|
||||
})
|
||||
|
7
pkgs/development/compilers/cudatoolkit/7.0.nix
Normal file
7
pkgs/development/compilers/cudatoolkit/7.0.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ callPackage, ... } @ args:
|
||||
|
||||
callPackage ./generic.nix (args // rec {
|
||||
version = "7.0.28";
|
||||
sha256 = "1km5hpiimx11jcazg0h3mjzk220klwahs2vfqhjavpds5ff2wafi";
|
||||
url = "http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run";
|
||||
})
|
73
pkgs/development/compilers/cudatoolkit/generic.nix
Normal file
73
pkgs/development/compilers/cudatoolkit/generic.nix
Normal file
@ -0,0 +1,73 @@
|
||||
{ lib, stdenv, fetchurl, patchelf, perl, ncurses, expat, python, zlib
|
||||
, xlibs, gtk2, glib, fontconfig, freetype, unixODBC, alsaLib, glibc
|
||||
# generic inputs
|
||||
, version, sha256, url ? null, ...
|
||||
} :
|
||||
|
||||
let
|
||||
# eg, 5.5.22 => 5_5
|
||||
mkShort = let str = stdenv.lib.strings;
|
||||
take = stdenv.lib.lists.take;
|
||||
in v: str.concatStringsSep "_" (take 2 (str.splitString "." v));
|
||||
shortVer = mkShort version;
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "cudatoolkit-${version}";
|
||||
|
||||
dontPatchELF = true;
|
||||
dontStrip = true;
|
||||
|
||||
src =
|
||||
if stdenv.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = if url != null then url else "http://developer.download.nvidia.com/compute/cuda/${shortVer}/rel/installers/cuda_${version}_linux_64.run";
|
||||
sha256 = sha256;
|
||||
}
|
||||
else throw "cudatoolkit does not support platform ${stdenv.system}";
|
||||
|
||||
outputs = [ "out" "sdk" ];
|
||||
|
||||
buildInputs = [ perl ];
|
||||
|
||||
runtimeDependencies = [
|
||||
ncurses expat python zlib glibc
|
||||
xlibs.libX11 xlibs.libXext xlibs.libXrender xlibs.libXt xlibs.libXtst xlibs.libXi xlibs.libXext
|
||||
gtk2 glib fontconfig freetype unixODBC alsaLib
|
||||
];
|
||||
|
||||
rpath = "${stdenv.lib.makeLibraryPath runtimeDependencies}:${stdenv.cc.cc}/lib64";
|
||||
|
||||
unpackPhase = ''
|
||||
sh $src --keep --noexec
|
||||
cd pkg/run_files
|
||||
sh cuda-linux64-rel-${version}-*.run --keep --noexec
|
||||
sh cuda-samples-linux-${version}-*.run --keep --noexec
|
||||
cd pkg
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
find . -type f -executable -exec patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
'{}' \; || true
|
||||
find . -type f -exec patchelf \
|
||||
--set-rpath $rpath:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64:$(cat $NIX_CC/nix-support/orig-cc)/lib \
|
||||
--force-rpath \
|
||||
'{}' \; || true
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out $sdk
|
||||
perl ./install-linux.pl --prefix="$out"
|
||||
rm $out/tools/CUDA_Occupancy_Calculator.xls
|
||||
perl ./install-sdk-linux.pl --prefix="$sdk" --cudaprefix="$out"
|
||||
mv $out/include $out/usr_include
|
||||
|
||||
# let's remove the 32-bit libraries, they confuse the lib64->lib mover
|
||||
rm -rf $out/lib
|
||||
'';
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
meta = {
|
||||
license = lib.licenses.unfree;
|
||||
};
|
||||
}
|
56
pkgs/development/compilers/ghc/7.10.2.nix
Normal file
56
pkgs/development/compilers/ghc/7.10.2.nix
Normal file
@ -0,0 +1,56 @@
|
||||
{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv }:
|
||||
|
||||
let
|
||||
|
||||
buildMK = ''
|
||||
libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp}/lib"
|
||||
libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-includes="${gmp}/include"
|
||||
libraries/terminfo_CONFIGURE_OPTS += --configure-option=--with-curses-includes="${ncurses}/include"
|
||||
libraries/terminfo_CONFIGURE_OPTS += --configure-option=--with-curses-libraries="${ncurses}/lib"
|
||||
${stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
libraries/base_CONFIGURE_OPTS += --configure-option=--with-iconv-includes="${libiconv}/include"
|
||||
libraries/base_CONFIGURE_OPTS += --configure-option=--with-iconv-libraries="${libiconv}/lib"
|
||||
''}
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "7.10.1.20150630";
|
||||
name = "ghc-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.haskell.org/~ghc/7.10.2-rc2/${name}-src.tar.xz";
|
||||
sha256 = "1wxf7jkkgpvvrg3q311c4rca4vsxrqrmnrqg4j4klgj445yj82gb";
|
||||
};
|
||||
|
||||
buildInputs = [ ghc perl ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preConfigure = ''
|
||||
echo >mk/build.mk "${buildMK}"
|
||||
sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
|
||||
'' + stdenv.lib.optionalString (!stdenv.isDarwin) ''
|
||||
export NIX_LDFLAGS="$NIX_LDFLAGS -rpath $out/lib/ghc-${version}"
|
||||
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
export NIX_LDFLAGS+=" -no_dtrace_dof"
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
"--with-gcc=${stdenv.cc}/bin/cc"
|
||||
"--with-gmp-includes=${gmp}/include" "--with-gmp-libraries=${gmp}/lib"
|
||||
];
|
||||
|
||||
# required, because otherwise all symbols from HSffi.o are stripped, and
|
||||
# that in turn causes GHCi to abort
|
||||
stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols";
|
||||
|
||||
meta = {
|
||||
homepage = "http://haskell.org/ghc";
|
||||
description = "The Glasgow Haskell Compiler";
|
||||
maintainers = with stdenv.lib.maintainers; [ marcweber andres simons ];
|
||||
inherit (ghc.meta) license platforms;
|
||||
};
|
||||
|
||||
}
|
@ -17,14 +17,14 @@ let
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "7.11.20150607";
|
||||
version = "7.11.20150705";
|
||||
name = "ghc-${version}";
|
||||
rev = "89223ce1340654455a9f3aa9cbf25f30884227fd";
|
||||
rev = "3fabb71a559b493efdfb5bb91907f6a0f696a114";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://git.haskell.org/ghc.git";
|
||||
inherit rev;
|
||||
sha256 = "1qsv2n5js21kqphq92xlyc91f11fnr9sh1glqzsirc8xr60dg5cs";
|
||||
sha256 = "1c0fsk2yk08x02n6s722d36igc9prrql4wcnr8m8c62wp4yrf25z";
|
||||
};
|
||||
|
||||
postUnpack = ''
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "sbcl-${version}";
|
||||
version = "1.2.12";
|
||||
version = "1.2.13";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2";
|
||||
sha256 = "1bf98wi3gz8n09prwmxa38b2mhq69rqq11s9h9swi3avy5wchnxn";
|
||||
sha256 = "018jxd7f39a5aimjzfjdj739m3jq82k0qi59032v48gqrfa3mng6";
|
||||
};
|
||||
|
||||
buildInputs = [ which ]
|
||||
|
@ -135,6 +135,7 @@ self: super: {
|
||||
});
|
||||
|
||||
# The Haddock phase fails for one reason or another.
|
||||
acme-one = dontHaddock super.acme-one;
|
||||
attoparsec-conduit = dontHaddock super.attoparsec-conduit;
|
||||
base-noprelude = dontHaddock super.base-noprelude;
|
||||
blaze-builder-conduit = dontHaddock super.blaze-builder-conduit;
|
||||
@ -330,6 +331,7 @@ self: super: {
|
||||
bitx-bitcoin = dontCheck super.bitx-bitcoin; # http://hydra.cryp.to/build/926187/log/raw
|
||||
concurrent-dns-cache = dontCheck super.concurrent-dns-cache;
|
||||
dbus = dontCheck super.dbus; # http://hydra.cryp.to/build/498404/log/raw
|
||||
digitalocean-kzs = dontCheck super.digitalocean-kzs; # https://github.com/KazumaSATO/digitalocean-kzs/issues/1
|
||||
hadoop-rpc = dontCheck super.hadoop-rpc; # http://hydra.cryp.to/build/527461/nixlog/2/raw
|
||||
hasql = dontCheck super.hasql; # http://hydra.cryp.to/build/502489/nixlog/4/raw
|
||||
hjsonschema = overrideCabal super.hjsonschema (drv: { testTarget = "local"; });
|
||||
@ -344,14 +346,15 @@ self: super: {
|
||||
raven-haskell = dontCheck super.raven-haskell; # http://hydra.cryp.to/build/502053/log/raw
|
||||
riak = dontCheck super.riak; # http://hydra.cryp.to/build/498763/log/raw
|
||||
scotty-binding-play = dontCheck super.scotty-binding-play;
|
||||
serversession-backend-redis = dontCheck super.serversession-backend-redis;
|
||||
slack-api = dontCheck super.slack-api; # https://github.com/mpickering/slack-api/issues/5
|
||||
socket = dontCheck super.socket;
|
||||
stackage = dontCheck super.stackage; # http://hydra.cryp.to/build/501867/nixlog/1/raw
|
||||
textocat-api = dontCheck super.textocat-api; # http://hydra.cryp.to/build/887011/log/raw
|
||||
warp = dontCheck super.warp; # http://hydra.cryp.to/build/501073/nixlog/5/raw
|
||||
wreq = dontCheck super.wreq; # http://hydra.cryp.to/build/501895/nixlog/1/raw
|
||||
wreq-sb = dontCheck super.wreq-sb; # http://hydra.cryp.to/build/783948/log/raw
|
||||
wuss = dontCheck super.wuss; # http://hydra.cryp.to/build/875964/nixlog/2/raw
|
||||
serversession-backend-redis = dontCheck super.serversession-backend-redis;
|
||||
|
||||
# https://github.com/NICTA/digit/issues/3
|
||||
digit = dontCheck super.digit;
|
||||
@ -626,6 +629,7 @@ self: super: {
|
||||
|
||||
# https://github.com/srijs/hwsl2/issues/1
|
||||
hwsl2 = markBroken super.hwsl2;
|
||||
hwsl2-reducers = dontDistribute super.hwsl2-reducers;
|
||||
|
||||
# https://code.google.com/p/linux-music-player/issues/detail?id=1
|
||||
mp = markBroken super.mp;
|
||||
@ -794,9 +798,6 @@ self: super: {
|
||||
# Patch to consider NIX_GHC just like xmonad does
|
||||
dyre = appendPatch super.dyre ./dyre-nix.patch;
|
||||
|
||||
# https://github.com/gwern/mueval/issues/9
|
||||
mueval = appendPatch (appendPatch super.mueval ./mueval-fix.patch) ./mueval-nix.patch;
|
||||
|
||||
# Test suite won't compile against tasty-hunit 0.9.x.
|
||||
zlib = dontCheck super.zlib;
|
||||
|
||||
@ -820,6 +821,7 @@ self: super: {
|
||||
# https://github.com/goldfirere/singletons/issues/118
|
||||
clash-lib = dontDistribute super.clash-lib;
|
||||
clash-verilog = dontDistribute super.clash-verilog;
|
||||
Frames = dontDistribute super.Frames;
|
||||
hgeometry = dontDistribute super.hgeometry;
|
||||
hipe = dontDistribute super.hipe;
|
||||
singleton-nats = dontDistribute super.singleton-nats;
|
||||
@ -898,4 +900,11 @@ self: super: {
|
||||
# https://github.com/commercialhaskell/stack/issues/409
|
||||
stack = overrideCabal super.stack (drv: { preCheck = "export HOME=$TMPDIR"; doCheck = false; });
|
||||
|
||||
# Missing dependency on some hid-usb library.
|
||||
hid = markBroken super.hid;
|
||||
msi-kb-backlit = dontDistribute super.msi-kb-backlit;
|
||||
|
||||
# Hydra no longer allows building texlive packages.
|
||||
lhs2tex = dontDistribute super.lhs2tex;
|
||||
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,90 +0,0 @@
|
||||
diff --git a/Mueval/ArgsParse.hs b/Mueval/ArgsParse.hs
|
||||
index 05c8fd9..0c32e27 100644
|
||||
--- a/Mueval/ArgsParse.hs
|
||||
+++ b/Mueval/ArgsParse.hs
|
||||
@@ -1,10 +1,9 @@
|
||||
+{-# LANGUAGE CPP #-}
|
||||
module Mueval.ArgsParse (Options(..), interpreterOpts, getOptions) where
|
||||
|
||||
import Control.Monad (liftM)
|
||||
import System.Console.GetOpt
|
||||
|
||||
-import qualified Codec.Binary.UTF8.String as Codec (decodeString)
|
||||
-
|
||||
import Mueval.Context (defaultModules, defaultPackages)
|
||||
|
||||
-- | See the results of --help for information on what each option means.
|
||||
@@ -98,4 +97,11 @@ header = "Usage: mueval [OPTION...] --expression EXPRESSION..."
|
||||
-- | Just give us the end result options; this parsing for
|
||||
-- us. Bonus points for handling UTF.
|
||||
getOptions :: [String] -> Either (Bool, String) Options
|
||||
-getOptions = interpreterOpts . map Codec.decodeString
|
||||
\ No newline at end of file
|
||||
+getOptions = interpreterOpts . map decodeString
|
||||
+
|
||||
+decodeString :: String -> String
|
||||
+#if __GLASGOW_HASKELL__ >= 702
|
||||
+decodeString = id
|
||||
+#else
|
||||
+decodeString = Codec.decodeString
|
||||
+#endif
|
||||
diff --git a/Mueval/Context.hs b/Mueval/Context.hs
|
||||
index 78925cf..548514c 100644
|
||||
--- a/Mueval/Context.hs
|
||||
+++ b/Mueval/Context.hs
|
||||
@@ -1,3 +1,4 @@
|
||||
+{-# LANGUAGE CPP #-}
|
||||
module Mueval.Context (
|
||||
cleanModules,
|
||||
defaultModules,
|
||||
@@ -32,7 +33,9 @@ defaultModules = ["Prelude",
|
||||
"Control.Monad.Error",
|
||||
"Control.Monad.Fix",
|
||||
"Control.Monad.Identity",
|
||||
+#if !MIN_VERSION_base(4,7,0)
|
||||
"Control.Monad.Instances",
|
||||
+#endif
|
||||
"Control.Monad.RWS",
|
||||
"Control.Monad.Reader",
|
||||
"Control.Monad.State",
|
||||
diff --git a/Mueval/Interpreter.hs b/Mueval/Interpreter.hs
|
||||
index 29b771f..6c39482 100644
|
||||
--- a/Mueval/Interpreter.hs
|
||||
+++ b/Mueval/Interpreter.hs
|
||||
@@ -1,4 +1,5 @@
|
||||
{-# LANGUAGE PatternGuards #-}
|
||||
+{-# LANGUAGE FlexibleContexts #-}
|
||||
-- TODO: suggest the convenience functions be put into Hint proper?
|
||||
module Mueval.Interpreter where
|
||||
|
||||
@@ -12,8 +13,6 @@ import System.Exit (exitFailure)
|
||||
import System.FilePath.Posix (takeFileName)
|
||||
import qualified Control.Exception.Extensible as E (evaluate,catch,SomeException(..))
|
||||
|
||||
-import qualified System.IO.UTF8 as UTF (putStrLn)
|
||||
-
|
||||
import Language.Haskell.Interpreter (eval, set, reset, setImportsQ, loadModules, liftIO,
|
||||
installedModulesInScope, languageExtensions,
|
||||
typeOf, setTopLevelModules, runInterpreter, glasgowExtensions,
|
||||
@@ -100,7 +99,7 @@ mvload lfl = do canonfile <- makeRelativeToCurrentDirectory lfl
|
||||
-- flooding. Lambdabot has a similar limit.
|
||||
sayIO :: String -> IO ()
|
||||
sayIO str = do (out,b) <- render 1024 str
|
||||
- UTF.putStrLn out
|
||||
+ putStrLn out
|
||||
when b exitFailure
|
||||
|
||||
-- | Oh no, something has gone wrong. If it's a compilation error pretty print
|
||||
diff --git a/mueval.cabal b/mueval.cabal
|
||||
index 3f9406d..b86d796 100644
|
||||
--- a/mueval.cabal
|
||||
+++ b/mueval.cabal
|
||||
@@ -32,7 +32,7 @@ library
|
||||
exposed-modules: Mueval.Parallel, Mueval.Context, Mueval.Interpreter,
|
||||
Mueval.ArgsParse, Mueval.Resources
|
||||
build-depends: base>=4 && < 5, containers, directory, mtl>2, filepath, unix, process,
|
||||
- hint>=0.3.1, show>=0.3, utf8-string, Cabal, extensible-exceptions, simple-reflect
|
||||
+ hint>=0.3.1, show>=0.3, Cabal, extensible-exceptions, simple-reflect
|
||||
ghc-options: -Wall -static
|
||||
|
||||
executable mueval-core
|
@ -1,23 +0,0 @@
|
||||
diff --git a/Mueval/Interpreter.hs b/Mueval/Interpreter.hs
|
||||
index 29b771f..6360ee3 100644
|
||||
--- a/Mueval/Interpreter.hs
|
||||
+++ b/Mueval/Interpreter.hs
|
||||
@@ -8,6 +8,7 @@ import Control.Monad.Writer (Any(..),runWriterT,tell)
|
||||
import Data.Char (isDigit)
|
||||
import Data.List (stripPrefix)
|
||||
import System.Directory (copyFile, makeRelativeToCurrentDirectory, removeFile, setCurrentDirectory)
|
||||
+import System.Environment (lookupEnv)
|
||||
import System.Exit (exitFailure)
|
||||
import System.FilePath.Posix (takeFileName)
|
||||
import qualified Control.Exception.Extensible as E (evaluate,catch,SomeException(..))
|
||||
@@ -47,6 +48,10 @@ interpreter Options { extensions = exts, namedExtensions = nexts,
|
||||
-- Explicitly adding ImplicitPrelude because of
|
||||
-- http://darcsden.com/jcpetruzza/hint/issue/1
|
||||
unless (null lexts) $ set [languageExtensions := (UnknownExtension "ImplicitPrelude" : lexts)]
|
||||
+ pkgs' <- liftIO $ lookupEnv "NIX_GHC_LIBDIR"
|
||||
+ case pkgs' of
|
||||
+ Just pkgs -> unsafeSetGhcOption ("-package-db " ++ pkgs ++ "/package.conf.d")
|
||||
+ Nothing -> return ()
|
||||
when trust $ do
|
||||
unsafeSetGhcOption "-fpackage-trust"
|
||||
forM_ (trustPkgs >>= words) $ \pkg ->
|
@ -3,10 +3,10 @@ let
|
||||
s = # Generated upstream information
|
||||
rec {
|
||||
baseName="angelscript";
|
||||
version = "2.30.0";
|
||||
version = "2.30.1";
|
||||
name="${baseName}-${version}";
|
||||
url="http://www.angelcode.com/angelscript/sdk/files/angelscript_${version}.zip";
|
||||
sha256 = "00w7h2g6g1lkq9ahsvzyk78nbdzhn1adsrns9mrqb2fbxv2wbz5d";
|
||||
sha256 = "10ym7185h26gzmw5v6wz8zlycw8gzygv0aw87dmgjcyy7qfk74m4";
|
||||
};
|
||||
buildInputs = [
|
||||
unzip
|
||||
|
@ -16,7 +16,7 @@ let
|
||||
sourceInfo = rec {
|
||||
baseName="allegro";
|
||||
folderSuffix = "-unstable";
|
||||
version = "5.1.10";
|
||||
version = "5.1.11";
|
||||
name="${baseName}-${version}";
|
||||
project="alleg";
|
||||
url="mirror://sourceforge/project/${project}/${baseName}${folderSuffix}/${version}/${name}.tar.gz";
|
||||
@ -26,7 +26,7 @@ in
|
||||
rec {
|
||||
src = a.fetchurl {
|
||||
url = sourceInfo.url;
|
||||
sha256 = "13dfs007pyh908bm1hg7hz71y8fr9fj51byh5w149h8dsq2dds78";
|
||||
sha256 = "0zz07gdyc6xflpvkknwgzsyyyh9qiwd69j42rm9cw1ciwcsic1vs";
|
||||
};
|
||||
|
||||
inherit (sourceInfo) name version;
|
||||
|
@ -1,7 +1,7 @@
|
||||
{stdenv, fetchurl, cmake}:
|
||||
|
||||
let
|
||||
version = "3.2.4";
|
||||
version = "3.2.5";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "eigen-${version}";
|
||||
@ -9,7 +9,7 @@ stdenv.mkDerivation {
|
||||
src = fetchurl {
|
||||
url = "http://bitbucket.org/eigen/eigen/get/${version}.tar.gz";
|
||||
name = "eigen-${version}.tar.gz";
|
||||
sha256 = "19c6as664a3kxvkhas2cq19r6ag19jw9lcz04sc0kza6i1hlh9xv";
|
||||
sha256 = "1vjixip19lwfia2bjpjwm09j7l20ry75493i6mjsk9djszj61agi";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
@ -11,11 +11,11 @@ let
|
||||
"${gnupg}/bin/gpg2";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gpgme-1.5.4";
|
||||
name = "gpgme-1.5.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnupg/gpgme/${name}.tar.bz2";
|
||||
sha256 = "0v7azxazsfakvhrxzj5ysvcxma0892c89d27c17fkj8mi3nc0f5v";
|
||||
sha256 = "01y28fkq52wwf4p470wscaxd2vgzl615irmafx3mj3380x8ksg8b";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ libgpgerror glib libassuan pth ];
|
||||
|
@ -1,13 +1,12 @@
|
||||
{ stdenv, openexr, automake, autoconf, libtool, which }:
|
||||
{ stdenv, fetchurl, automake, autoconf, libtool, which }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "ilmbase-${openexr.source.version}";
|
||||
|
||||
src = openexr.source.src;
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ilmbase-2.2.0";
|
||||
|
||||
prePatch = ''
|
||||
cd IlmBase
|
||||
'';
|
||||
src = fetchurl {
|
||||
url = "http://download.savannah.nongnu.org/releases/openexr/${name}.tar.gz";
|
||||
sha256 = "1izddjwbh1grs8080vmaix72z469qy29wrvkphgmqmcm0sv1by7c";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
./bootstrap
|
||||
|
@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
|
||||
buildInputs = [ sqlite kyotocabinet ];
|
||||
|
||||
buildPhase = ''
|
||||
make all db_bench{,_sqlite3,_tree_db} leveldbutil
|
||||
make all db_bench{,_sqlite3,_tree_db} leveldbutil libmemenv.a
|
||||
'';
|
||||
|
||||
installPhase = "
|
||||
@ -22,6 +22,8 @@ stdenv.mkDerivation rec {
|
||||
cp -r include $out
|
||||
cp lib* $out/lib
|
||||
cp db_bench{,_sqlite3,_tree_db} leveldbutil $out/bin
|
||||
mkdir -p $out/include/leveldb/helpers
|
||||
cp helpers/memenv/memenv.h $out/include/leveldb/helpers
|
||||
";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -1,14 +1,15 @@
|
||||
{ stdenv, fetchgit, pkgconfig, cmake, git, doxygen, help2man, tecla, libusb1, udev }:
|
||||
{ stdenv, fetchFromGitHub, pkgconfig, cmake, git, doxygen, help2man, tecla
|
||||
, libusb1, udev }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.1.0";
|
||||
version = "1.4.0";
|
||||
name = "libbladeRF-v${version}";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/Nuand/bladeRF/";
|
||||
rev = "refs/tags/libbladeRF_v${version}";
|
||||
sha256 = "19qd26yflig51scknyjf3r3nmnc2bni75294jpsv0idzqfj87lbr";
|
||||
name = "libbladeRF_v${version}-checkout";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Nuand";
|
||||
repo = "bladeRF";
|
||||
rev = "libbladeRF_v${version}";
|
||||
sha256 = "1y00hqsmqaix4dql8mb75zx87zvn8b483yxv53x9qyjspksbs60c";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig cmake git doxygen help2man tecla libusb1 udev ];
|
||||
@ -19,7 +20,6 @@ stdenv.mkDerivation rec {
|
||||
# Let us avoid nettools as a dependency.
|
||||
patchPhase = ''
|
||||
sed -i 's/$(hostname)/hostname/' host/utilities/bladeRF-cli/src/cmd/doc/generate.bash
|
||||
sed -i 's/ --no-info/ --no-info --no-discard-stderr/' host/utilities/bladeRF-cli/CMakeLists.txt
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
@ -29,11 +29,11 @@ stdenv.mkDerivation rec {
|
||||
"-DBUILD_DOCUMENTATION=ON"
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://www.nuand.com/";
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://www.nuand.com/;
|
||||
description = "Supporting library of the BladeRF SDR opensource hardware";
|
||||
license = stdenv.lib.licenses.lgpl21;
|
||||
maintainers = [ stdenv.lib.maintainers.funfunctor ];
|
||||
platforms = with stdenv.lib.platforms; linux;
|
||||
license = licenses.lgpl21;
|
||||
maintainers = with maintainers; [ funfunctor ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -1,11 +1,11 @@
|
||||
{ stdenv, fetchurl, automake, autoconf, libtool, pkgconfig, libzen, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.7.74";
|
||||
version = "0.7.75";
|
||||
name = "libmediainfo-${version}";
|
||||
src = fetchurl {
|
||||
url = "http://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.bz2";
|
||||
sha256 = "1dn7zwqkl08vafc979i1mx63r2jlr95gfazg4d2cc9v3pav28zpk";
|
||||
url = "http://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.xz";
|
||||
sha256 = "1im39kd595ia6g41qvwgvszn1s10nwa3q5r2lj2g5fm4kgi0dwhr";
|
||||
};
|
||||
|
||||
buildInputs = [ automake autoconf libtool pkgconfig libzen zlib ];
|
||||
|
@ -3,11 +3,11 @@ let
|
||||
s = # Generated upstream information
|
||||
rec {
|
||||
baseName="libmwaw";
|
||||
version="0.3.4";
|
||||
version="0.3.5";
|
||||
name="${baseName}-${version}";
|
||||
hash="1sn95flxrh85qjsg1kk700c1ggxaaccr9j1nnw7x4daw8lky25ac";
|
||||
url="mirror://sourceforge/project/libmwaw/libmwaw/libmwaw-0.3.4/libmwaw-0.3.4.tar.xz";
|
||||
sha256="1sn95flxrh85qjsg1kk700c1ggxaaccr9j1nnw7x4daw8lky25ac";
|
||||
hash="1vx9h419fcfcs0yj071hsg9d2qvkacgca6052m8hv3h743cdmzil";
|
||||
url="mirror://sourceforge/project/libmwaw/libmwaw/libmwaw-0.3.5/libmwaw-0.3.5.tar.xz";
|
||||
sha256="1vx9h419fcfcs0yj071hsg9d2qvkacgca6052m8hv3h743cdmzil";
|
||||
};
|
||||
buildInputs = [
|
||||
boost pkgconfig cppunit zlib libwpg libwpd librevenge
|
||||
|
@ -3,11 +3,11 @@ let
|
||||
s = # Generated upstream information
|
||||
rec {
|
||||
baseName="libodfgen";
|
||||
version="0.1.3";
|
||||
version="0.1.4";
|
||||
name="${baseName}-${version}";
|
||||
hash="1flfh1i4r116aqdlqpgpmyzpcylwba48l7mddj25a2cwgsc9v86k";
|
||||
url="mirror://sourceforge/project/libwpd/libodfgen/libodfgen-0.1.3/libodfgen-0.1.3.tar.xz";
|
||||
sha256="1flfh1i4r116aqdlqpgpmyzpcylwba48l7mddj25a2cwgsc9v86k";
|
||||
hash="1qgilnsd57ayv9mqh4sg9mkknifr98dv70a35gizxh5cw7c5x6r4";
|
||||
url="mirror://sourceforge/project/libwpd/libodfgen/libodfgen-0.1.4/libodfgen-0.1.4.tar.xz";
|
||||
sha256="1qgilnsd57ayv9mqh4sg9mkknifr98dv70a35gizxh5cw7c5x6r4";
|
||||
};
|
||||
buildInputs = [
|
||||
boost pkgconfig cppunit zlib libwpg libwpd librevenge
|
||||
|
@ -1,10 +1,10 @@
|
||||
{stdenv, fetchurl, zlib, openssl}:
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.4.12";
|
||||
version = "0.4.13";
|
||||
name = "libre-${version}";
|
||||
src=fetchurl {
|
||||
url = "http://www.creytiv.com/pub/re-${version}.tar.gz";
|
||||
sha256 = "1wjdcf5wr50d86rysj5haz53v7d58j7sszpc6k5b4mn1x6604i0d";
|
||||
sha256 = "0496nfi7vi6ivnyici5bqs147pwkdqn48w2rajhr5k8jd07pq5qp";
|
||||
};
|
||||
buildInputs = [zlib openssl];
|
||||
makeFlags = [
|
||||
|
@ -1,8 +1,11 @@
|
||||
{ stdenv, fetchurl, libspotify, alsaLib, readline, pkgconfig, apiKey, unzip, gnused }:
|
||||
|
||||
let version = "12.1.51"; in
|
||||
let
|
||||
version = "12.1.51";
|
||||
isLinux = (stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux");
|
||||
in
|
||||
|
||||
if (stdenv.system != "x86_64-linux" && stdenv.system != "x86_64-darwin")
|
||||
if (stdenv.system != "x86_64-linux" && stdenv.system != "x86_64-darwin" && stdenv.system != "i686-linux")
|
||||
then throw "Check https://developer.spotify.com/technologies/libspotify/ for a tarball for your system and add it here"
|
||||
else stdenv.mkDerivation {
|
||||
name = "libspotify-${version}";
|
||||
@ -18,6 +21,11 @@ else stdenv.mkDerivation {
|
||||
url = "https://developer.spotify.com/download/libspotify/libspotify-${version}-Darwin-universal.zip";
|
||||
sha256 = "1gcgrc8arim3hnszcc886lmcdb4iigc08abkaa02l6gng43ky1c0";
|
||||
}
|
||||
else if stdenv.system == "i686-linux" then
|
||||
fetchurl {
|
||||
url = "https://developer.spotify.com/download/libspotify/libspotify-${version}-Linux-i686-release.tar.gz";
|
||||
sha256 = "1bjmn64gbr4p9irq426yap4ipq9rb84zsyhjjr7frmmw22xb86ll";
|
||||
}
|
||||
else
|
||||
null;
|
||||
|
||||
@ -26,9 +34,9 @@ else stdenv.mkDerivation {
|
||||
# no patch or build phase for darwin
|
||||
phases =
|
||||
[ "unpackPhase" ] ++
|
||||
(stdenv.lib.optionals (stdenv.system == "x86_64-linux") [ "patchPhase" "buildPhase" ]) ++
|
||||
(stdenv.lib.optionals (isLinux) [ "patchPhase" "buildPhase" ]) ++
|
||||
[ "installPhase" ];
|
||||
installPhase = if (stdenv.system == "x86_64-linux")
|
||||
installPhase = if (isLinux)
|
||||
then "installPhase"
|
||||
else ''
|
||||
mkdir -p "$out"/include/libspotify
|
||||
@ -46,11 +54,11 @@ else stdenv.mkDerivation {
|
||||
buildInputs = stdenv.lib.optional (stdenv.system == "x86_64-darwin") unzip;
|
||||
|
||||
# linux-specific
|
||||
installFlags = stdenv.lib.optionalString (stdenv.system == "x86_64-linux")
|
||||
installFlags = stdenv.lib.optionalString (isLinux)
|
||||
"prefix=$(out)";
|
||||
patchPhase = stdenv.lib.optionalString (stdenv.system == "x86_64-linux")
|
||||
patchPhase = stdenv.lib.optionalString (isLinux)
|
||||
"${gnused}/bin/sed -i 's/ldconfig//' Makefile";
|
||||
postInstall = stdenv.lib.optionalString (stdenv.system == "x86_64-linux")
|
||||
postInstall = stdenv.lib.optionalString (isLinux)
|
||||
"mv -v share $out";
|
||||
|
||||
passthru = {
|
||||
|
37
pkgs/development/libraries/lmdb/default.nix
Normal file
37
pkgs/development/libraries/lmdb/default.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{ stdenv, fetchzip }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "lmdb-${version}";
|
||||
version = "0.9.15";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/LMDB/lmdb/archive/LMDB_${version}.tar.gz";
|
||||
sha256 = "0p79fpyh1yx2jg1f0kag5zsdn4spkgs1j3dxibvqdy32wkbpxd0g";
|
||||
};
|
||||
|
||||
postUnpack = "sourceRoot=\${sourceRoot}/libraries/liblmdb";
|
||||
|
||||
makeFlags = "prefix=$(out)";
|
||||
|
||||
doCheck = true;
|
||||
checkPhase = "make test";
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p $out/{man/man1,bin,lib,include}
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Lightning memory-mapped database";
|
||||
longDescription = ''
|
||||
LMDB is an ultra-fast, ultra-compact key-value embedded data store
|
||||
developed by Symas for the OpenLDAP Project. It uses memory-mapped files,
|
||||
so it has the read performance of a pure in-memory database while still
|
||||
offering the persistence of standard disk-based databases, and is only
|
||||
limited to the size of the virtual address space.
|
||||
'';
|
||||
homepage = http://symas.com/mdb/;
|
||||
maintainers = with maintainers; [ jb55 ];
|
||||
license = licenses.openldap;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
{ lib, stdenv, fetchFromGitHub, cmake, pkgconfig, libxml2, pcre }:
|
||||
|
||||
# The exact revision specified by Blender's install_deps.sh script.
|
||||
let rev = "18da7f4109a8eafaa290a33f5550501cc4c8bae8"; in
|
||||
let rev = "3335ac164e68b2512a40914b14c74db260e6ff7d"; in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "opencollada-1.3-${rev}";
|
||||
@ -10,7 +10,7 @@ stdenv.mkDerivation {
|
||||
owner = "KhronosGroup";
|
||||
repo = "OpenCOLLADA";
|
||||
inherit rev;
|
||||
sha256 = "0ach32ws95mh0ijd8sr22kxka3riq72bb9ng46vs3615dxn7h18d";
|
||||
sha256 = "0s2m8crbg1kf09hpscrplv65a45dlg157b9c20chrv7wy0qizbw5";
|
||||
};
|
||||
|
||||
buildInputs = [ cmake pkgconfig ];
|
||||
|
@ -1,33 +1,28 @@
|
||||
{ stdenv, callPackage, autoconf, automake, libtool, pkgconfig, zlib, ilmbase }:
|
||||
let
|
||||
source = callPackage ./source.nix { };
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "openexr-${source.version}";
|
||||
|
||||
src = source.src;
|
||||
{ lib, stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, zlib, ilmbase }:
|
||||
|
||||
prePatch = ''
|
||||
cd OpenEXR
|
||||
'';
|
||||
stdenv.mkDerivation rec {
|
||||
name = "openexr-${lib.getVersion ilmbase}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.savannah.nongnu.org/releases/openexr/${name}.tar.gz";
|
||||
sha256 = "0ca2j526n4wlamrxb85y2jrgcv0gf21b3a19rr0gh4rjqkv1581n";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
./bootstrap
|
||||
'';
|
||||
|
||||
configureFlags = [ "--enable-imfexamples" ];
|
||||
|
||||
buildInputs = [ autoconf automake libtool pkgconfig ];
|
||||
propagatedBuildInputs = [ ilmbase zlib ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
patches = [ ./bootstrap.patch ];
|
||||
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://www.openexr.com/;
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ wkennington ];
|
||||
};
|
||||
|
||||
passthru.source = source;
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
{ fetchFromGitHub }:
|
||||
rec {
|
||||
version = "2.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "openexr";
|
||||
repo = "openexr";
|
||||
rev = "v${version}";
|
||||
sha256 = "030vj2jk3n65x1wl0rmxzpl1bd5mzmld2lzn7sg92svpnghry6a8";
|
||||
};
|
||||
}
|
@ -46,10 +46,11 @@ cp "@out@/bin/qmake" "$qtOut/bin"
|
||||
cat >"$qtOut/bin/qt.conf" <<EOF
|
||||
[Paths]
|
||||
Prefix = $qtOut
|
||||
Plugins = $qtOut/lib/qt5/plugins
|
||||
Imports = $qtOut/lib/qt5/imports
|
||||
Qml2Imports = $qtOut/lib/qt5/qml
|
||||
Plugins = lib/qt5/plugins
|
||||
Imports = lib/qt5/imports
|
||||
Qml2Imports = lib/qt5/qml
|
||||
EOF
|
||||
export QMAKE="$qtOut/bin/qmake"
|
||||
|
||||
envHooks+=(addQtModule)
|
||||
preConfigurePhases+=" setQMakePath"
|
||||
|
@ -1,29 +1,30 @@
|
||||
{stdenv, fetchurl, ocaml, findlib}:
|
||||
|
||||
assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "3.11";
|
||||
{ stdenv, fetchzip, ocaml, findlib }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
|
||||
name = "ocaml-csv-1.3.3";
|
||||
name = "ocaml-csv-1.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://forge.ocamlcore.org/frs/download.php/1376/csv-1.3.3.tar.gz";
|
||||
sha256 = "19qsvw3n7k4xpy0sw7n5s29kzj91myihjljhr5js6xcxwj4cydh2";
|
||||
src = fetchzip {
|
||||
url = https://github.com/Chris00/ocaml-csv/releases/download/1.4/csv-1.4.tar.gz;
|
||||
sha256 = "0si0v79rxzyzmgyhd6lidpzxdlcpprlhg0pgrsf688g83xsclkwa";
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml findlib ];
|
||||
|
||||
createFindlibDestdir = true;
|
||||
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out";
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out --enable-tests";
|
||||
|
||||
buildPhase = "ocaml setup.ml -build";
|
||||
|
||||
doCheck = true;
|
||||
checkPhase = "ocaml setup.ml -test";
|
||||
|
||||
installPhase = "ocaml setup.ml -install";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A pure OCaml library to read and write CSV files";
|
||||
homepage = "https://forge.ocamlcore.org/projects/csv/";
|
||||
homepage = https://github.com/Chris00/ocaml-csv;
|
||||
license = licenses.lgpl21;
|
||||
maintainers = [ maintainers.vbgl ];
|
||||
platforms = ocaml.meta.platforms;
|
||||
|
29
pkgs/development/ocaml-modules/qcheck/default.nix
Normal file
29
pkgs/development/ocaml-modules/qcheck/default.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{ stdenv, fetchzip, ocaml, findlib, oasis, ounit }:
|
||||
|
||||
assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4";
|
||||
|
||||
stdenv.mkDerivation {
|
||||
|
||||
name = "ocaml-qcheck-0.4.0.1";
|
||||
src = fetchzip {
|
||||
url = https://github.com/c-cube/qcheck/archive/0.4.0.1.tar.gz;
|
||||
sha256 = "0j2jdrfz8rrslgjihnfgg8yy12860z2vvf7hqzjbmfmf03hz4pgv";
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml findlib oasis ounit ];
|
||||
|
||||
configureFlags = "--enable-tests --enable-ounit";
|
||||
|
||||
doCheck = true;
|
||||
checkPhase = "ocaml setup.ml -test";
|
||||
|
||||
createFindlibDestdir = true;
|
||||
|
||||
meta = {
|
||||
description = "QuickCheck inspired property-based testing for OCaml";
|
||||
homepage = https://github.com/c-cube/qcheck/;
|
||||
license = stdenv.lib.licenses.bsd2;
|
||||
maintainers = with stdenv.lib.maintainers; [ vbgl ];
|
||||
platforms = ocaml.meta.platforms;
|
||||
};
|
||||
}
|
@ -1,17 +1,19 @@
|
||||
{ stdenv, fetchzip, ocaml, findlib }:
|
||||
{ stdenv, fetchzip, ocaml, findlib, ounit }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ocaml-re-1.4.0";
|
||||
name = "ocaml-re-1.4.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/ocaml/ocaml-re/archive/${name}.tar.gz";
|
||||
sha256 = "1xcfmhjgd7prqx2g1addlrk84xpfafmqnpjkqrvg7mw0hn1p7v2m";
|
||||
sha256 = "1wmfgazydd20hc796zisqpmsw0sb5lv9g3x77ckmf50v3z8hyhvk";
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml findlib ];
|
||||
buildInputs = [ ocaml findlib ounit ];
|
||||
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out";
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out --enable-tests";
|
||||
buildPhase = "ocaml setup.ml -build";
|
||||
doCheck = true;
|
||||
checkPhase = "ocaml setup.ml -test";
|
||||
installPhase = "ocaml setup.ml -install";
|
||||
|
||||
createFindlibDestdir = true;
|
||||
|
@ -1,19 +1,25 @@
|
||||
{ stdenv, fetchzip, ocaml, findlib }:
|
||||
{ stdenv, fetchzip, ocaml, findlib, ounit, qcheck
|
||||
# Optionally enable tests; test script use OCaml-4.01+ features
|
||||
, doCheck ? stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.01"
|
||||
}:
|
||||
|
||||
let version = "1.3.0"; in
|
||||
let version = "1.4.0"; in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "ocaml-stringext-${version}";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/rgrinberg/stringext/archive/v${version}.tar.gz";
|
||||
sha256 = "0sd1chyxclmip0nxqhasp1ri91bwxr8nszkkr5kpja45f6bav6k9";
|
||||
sha256 = "1jp0x9rkss8a48z9wbnc4v5zvmnysin30345psl3xnxb2aqzwlii";
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml findlib ];
|
||||
buildInputs = [ ocaml findlib ounit qcheck ];
|
||||
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out";
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out"
|
||||
+ stdenv.lib.optionalString doCheck " --enable-tests";
|
||||
buildPhase = "ocaml setup.ml -build";
|
||||
inherit doCheck;
|
||||
checkPhase = "ocaml setup.ml -test";
|
||||
installPhase = "ocaml setup.ml -install";
|
||||
|
||||
createFindlibDestdir = true;
|
||||
|
@ -26,7 +26,7 @@ stdenv.mkDerivation {
|
||||
homepage = http://www.cduce.org/download.html;
|
||||
description = "A lexer generator for Unicode and OCaml";
|
||||
license = stdenv.lib.licenses.mit;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
platforms = ocaml.meta.platforms;
|
||||
maintainers = [ stdenv.lib.maintainers.roconnor ];
|
||||
};
|
||||
}
|
||||
|
@ -1,25 +1,27 @@
|
||||
{ stdenv, fetchzip, ocaml, findlib, re, sexplib, stringext }:
|
||||
{ stdenv, fetchzip, ocaml, findlib, re, sexplib, stringext, ounit }:
|
||||
|
||||
assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4";
|
||||
|
||||
let version = "1.9.0"; in
|
||||
let version = "1.9.1"; in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "ocaml-uri-${version}";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/mirage/ocaml-uri/archive/v${version}.tar.gz";
|
||||
sha256 = "13vbv6q7npl2bvvqfw03mav90jcrrvjbdpdp4y8mcjz0iax5ww9b";
|
||||
sha256 = "0v3jxqgyi4kj92r3x83rszfpnvvzy9lyb913basch4q64yka3w85";
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml findlib ];
|
||||
buildInputs = [ ocaml findlib ounit ];
|
||||
propagatedBuildInputs = [ re sexplib stringext ];
|
||||
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out";
|
||||
configurePhase = "ocaml setup.ml -configure --prefix $out --enable-tests";
|
||||
buildPhase = ''
|
||||
ocaml setup.ml -build
|
||||
ocaml setup.ml -doc
|
||||
'';
|
||||
doCheck = true;
|
||||
checkPhase = "ocaml setup.ml -test";
|
||||
installPhase = "ocaml setup.ml -install";
|
||||
|
||||
createFindlibDestdir = true;
|
||||
|
@ -3,8 +3,8 @@
|
||||
with stdenv.lib;
|
||||
|
||||
let
|
||||
baseVersion = "3.2";
|
||||
revision = "1";
|
||||
baseVersion = "3.4";
|
||||
revision = "2";
|
||||
version = "${baseVersion}.${revision}";
|
||||
in
|
||||
|
||||
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.qt-project.org/official_releases/qtcreator/${baseVersion}/${version}/qt-creator-opensource-src-${version}.tar.gz";
|
||||
sha256 = "0kp7czn9mzncdpq8bx15s3sy13g4xlcdz7y7zy0s9350g4ijs8fx";
|
||||
sha256 = "1asbfphws0aqs92gjgh0iqzr1911kg51r9al44jxpfk88yazjzgm";
|
||||
};
|
||||
|
||||
# This property can be used in a nix development environment to refer to the Qt package
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
let
|
||||
name = "scons";
|
||||
version = "2.3.4";
|
||||
version = "2.3.5";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
@ -10,7 +10,7 @@ stdenv.mkDerivation {
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/scons/${name}-${version}.tar.gz";
|
||||
sha256 = "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb";
|
||||
sha256 = "0hlwkrr5fkjpjgmwipp9a2bnc9riqks2pjc3rvjsq0a8j7hr72ca";
|
||||
};
|
||||
|
||||
buildInputs = [python makeWrapper];
|
||||
|
@ -1,23 +1,24 @@
|
||||
{ stdenv, fetchurl, runCommand, gcc, perl, zlib }:
|
||||
{ stdenv, fetchurl, runCommand, gcc, zlib }:
|
||||
|
||||
let
|
||||
# TODO: find out if there's harm in just using 'rec' instead.
|
||||
name = "ccache-${version}";
|
||||
version = "3.2.2";
|
||||
sha256 = "1jm0qb3h5sypllaiyj81zp6m009vm50hzjnx994ril94kxlrj3ag";
|
||||
doCheck = true;
|
||||
|
||||
ccache =
|
||||
stdenv.mkDerivation {
|
||||
inherit name doCheck;
|
||||
inherit name;
|
||||
src = fetchurl {
|
||||
inherit sha256;
|
||||
url = "mirror://samba/ccache/${name}.tar.xz";
|
||||
};
|
||||
|
||||
# The test dependency on perl should be gone in the next release:
|
||||
buildInputs = [ zlib ]
|
||||
++ stdenv.lib.optionals doCheck [ perl ];
|
||||
patches = [ ./test-drop-perl-requirement.patch ];
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
passthru = {
|
||||
# A derivation that provides gcc and g++ commands, but that
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user