mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 23:03:40 +01:00
Merge remote-tracking branch 'upstream/master' into staging
This commit is contained in:
commit
4f1261134e
115 changed files with 1449 additions and 1528 deletions
|
@ -141,11 +141,10 @@
|
|||
For a more useful example, try the following. This configuration only allows unfree packages named flash player and visual studio code:
|
||||
<programlisting>
|
||||
{
|
||||
allowUnfreePredicate = (pkg: builtins.elem
|
||||
(pkg.pname or (builtins.parseDrvName pkg.name).name) [
|
||||
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||
"flashplayer"
|
||||
"vscode"
|
||||
]);
|
||||
];
|
||||
}
|
||||
</programlisting>
|
||||
</para>
|
||||
|
@ -217,7 +216,7 @@
|
|||
The following configuration example only allows insecure packages with very short names:
|
||||
<programlisting>
|
||||
{
|
||||
allowInsecurePredicate = (pkg: (builtins.stringLength (builtins.parseDrvName pkg.name).name) <= 5);
|
||||
allowInsecurePredicate = pkg: builtins.stringLength (lib.getName pkg) <= 5;
|
||||
}
|
||||
</programlisting>
|
||||
</para>
|
||||
|
|
|
@ -84,7 +84,8 @@ let
|
|||
hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
|
||||
escapeShellArg escapeShellArgs replaceChars lowerChars
|
||||
upperChars toLower toUpper addContextFrom splitString
|
||||
removePrefix removeSuffix versionOlder versionAtLeast getVersion
|
||||
removePrefix removeSuffix versionOlder versionAtLeast
|
||||
getName getVersion
|
||||
nameFromURL enableFeature enableFeatureAs withFeature
|
||||
withFeatureAs fixedWidthString fixedWidthNumber isStorePath
|
||||
toInt readPathsFromFile fileContents;
|
||||
|
|
|
@ -472,6 +472,23 @@ rec {
|
|||
*/
|
||||
versionAtLeast = v1: v2: !versionOlder v1 v2;
|
||||
|
||||
/* This function takes an argument that's either a derivation or a
|
||||
derivation's "name" attribute and extracts the name part from that
|
||||
argument.
|
||||
|
||||
Example:
|
||||
getName "youtube-dl-2016.01.01"
|
||||
=> "youtube-dl"
|
||||
getName pkgs.youtube-dl
|
||||
=> "youtube-dl"
|
||||
*/
|
||||
getName = x:
|
||||
let
|
||||
parse = drv: (builtins.parseDrvName drv).name;
|
||||
in if isString x
|
||||
then parse x
|
||||
else x.pname or (parse x.name);
|
||||
|
||||
/* This function takes an argument that's either a derivation or a
|
||||
derivation's "name" attribute and extracts the version part from that
|
||||
argument.
|
||||
|
|
|
@ -4524,6 +4524,12 @@
|
|||
githubId = 117842;
|
||||
name = "Henri Bourcereau";
|
||||
};
|
||||
mmilata = {
|
||||
email = "martin@martinmilata.cz";
|
||||
github = "mmilata";
|
||||
gitHubId = 85857;
|
||||
name = "Martin Milata";
|
||||
};
|
||||
mmlb = {
|
||||
email = "me.mmlb@mmlb.me";
|
||||
github = "mmlb";
|
||||
|
@ -6727,6 +6733,12 @@
|
|||
githubId = 42933;
|
||||
name = "Andrew Childs";
|
||||
};
|
||||
thefenriswolf = {
|
||||
email = "stefan.rohrbacher97@gmail.com";
|
||||
github = "thefenriswolf";
|
||||
githubId = "8547242";
|
||||
name = "Stefan Rohrbacher";
|
||||
};
|
||||
thesola10 = {
|
||||
email = "thesola10@bobile.fr";
|
||||
github = "thesola10";
|
||||
|
|
|
@ -126,7 +126,7 @@ let
|
|||
|
||||
packageData = package: {
|
||||
name = package.name;
|
||||
pname = (builtins.parseDrvName package.name).name;
|
||||
pname = lib.getName package;
|
||||
updateScript = map builtins.toString (pkgs.lib.toList package.updateScript);
|
||||
};
|
||||
|
||||
|
|
|
@ -176,6 +176,11 @@
|
|||
KDE’s old multimedia framework Phonon no longer supports Qt 4. For that reason, Plasma desktop also does not have <option>enableQt4Support</option> option any more.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The BeeGFS module has been removed.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.networking.vpnc;
|
||||
mkServiceDef = name: value:
|
||||
{
|
||||
name = "vpnc/${name}.conf";
|
||||
value = { text = value; };
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
options = {
|
||||
networking.vpnc = {
|
||||
services = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = {};
|
||||
example = literalExample ''
|
||||
{ test = '''
|
||||
IPSec gateway 192.168.1.1
|
||||
IPSec ID someID
|
||||
IPSec secret secretKey
|
||||
Xauth username name
|
||||
Xauth password pass
|
||||
''';
|
||||
}
|
||||
'';
|
||||
description =
|
||||
''
|
||||
The names of cisco VPNs and their associated definitions
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config.environment.etc = mapAttrs' mkServiceDef cfg.services;
|
||||
}
|
||||
|
||||
|
|
@ -35,7 +35,6 @@
|
|||
./config/terminfo.nix
|
||||
./config/unix-odbc-drivers.nix
|
||||
./config/users-groups.nix
|
||||
./config/vpnc.nix
|
||||
./config/vte.nix
|
||||
./config/zram.nix
|
||||
./hardware/acpilight.nix
|
||||
|
@ -539,7 +538,6 @@
|
|||
./services/monitoring/zabbix-agent.nix
|
||||
./services/monitoring/zabbix-proxy.nix
|
||||
./services/monitoring/zabbix-server.nix
|
||||
./services/network-filesystems/beegfs.nix
|
||||
./services/network-filesystems/cachefilesd.nix
|
||||
./services/network-filesystems/davfs2.nix
|
||||
./services/network-filesystems/drbd.nix
|
||||
|
|
|
@ -235,6 +235,7 @@ with lib;
|
|||
(mkRemovedOptionModule [ "services" "zabbixServer" "dbPassword" ] "Use services.zabbixServer.database.passwordFile instead.")
|
||||
(mkRemovedOptionModule [ "systemd" "generator-packages" ] "Use systemd.packages instead.")
|
||||
(mkRemovedOptionModule [ "fonts" "enableCoreFonts" ] "Use fonts.fonts = [ pkgs.corefonts ]; instead.")
|
||||
(mkRemovedOptionModule [ "networking" "vpnc" ] "Use environment.etc.\"vpnc/service.conf\" instead.")
|
||||
|
||||
# ZSH
|
||||
(mkRenamedOptionModule [ "programs" "zsh" "enableSyntaxHighlighting" ] [ "programs" "zsh" "syntaxHighlighting" "enable" ])
|
||||
|
@ -279,6 +280,10 @@ with lib;
|
|||
# BLCR
|
||||
(mkRemovedOptionModule [ "environment.blcr.enable" ] "The BLCR module has been removed")
|
||||
|
||||
# beegfs
|
||||
(mkRemovedOptionModule [ "services.beegfsEnable" ] "The BeeGFS module has been removed")
|
||||
(mkRemovedOptionModule [ "services.beegfs" ] "The BeeGFS module has been removed")
|
||||
|
||||
# Redis
|
||||
(mkRemovedOptionModule [ "services" "redis" "user" ] "The redis module now is hardcoded to the redis user.")
|
||||
(mkRemovedOptionModule [ "services" "redis" "dbpath" ] "The redis module now uses /var/lib/redis as data directory.")
|
||||
|
|
|
@ -8,15 +8,11 @@ let
|
|||
|
||||
mysql = cfg.package;
|
||||
|
||||
isMariaDB =
|
||||
let
|
||||
pName = _p: (builtins.parseDrvName (_p.name)).name;
|
||||
in pName mysql == pName pkgs.mariadb;
|
||||
isMariaDB = lib.getName mysql == lib.getName pkgs.mariadb;
|
||||
|
||||
isMysqlAtLeast57 =
|
||||
let
|
||||
pName = _p: (builtins.parseDrvName (_p.name)).name;
|
||||
in (pName mysql == pName pkgs.mysql57)
|
||||
&& ((builtins.compareVersions mysql.version "5.7") >= 0);
|
||||
(lib.getName mysql == lib.getName pkgs.mysql57)
|
||||
&& (builtins.compareVersions mysql.version "5.7" >= 0);
|
||||
|
||||
mysqldOptions =
|
||||
"--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${mysql}";
|
||||
|
|
|
@ -43,7 +43,7 @@ in
|
|||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
StateDirectory = "openarena";
|
||||
ExecStart = "${pkgs.openarena}/bin/openarena-server +set fs_basepath ${pkgs.openarena}/openarena-0.8.8 +set fs_homepath /var/lib/openarena ${concatStringsSep " " cfg.extraFlags}";
|
||||
ExecStart = "${pkgs.openarena}/bin/oa_ded +set fs_basepath ${pkgs.openarena}/openarena-0.8.8 +set fs_homepath /var/lib/openarena ${concatStringsSep " " cfg.extraFlags}";
|
||||
Restart = "on-failure";
|
||||
|
||||
# Hardening
|
||||
|
|
|
@ -1,357 +0,0 @@
|
|||
{ config, lib, pkgs, ...} :
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.beegfs;
|
||||
|
||||
# functions for the generations of config files
|
||||
|
||||
configMgmtd = name: cfg: pkgs.writeText "mgmt-${name}.conf" ''
|
||||
storeMgmtdDirectory = ${cfg.mgmtd.storeDir}
|
||||
storeAllowFirstRunInit = false
|
||||
connAuthFile = ${cfg.connAuthFile}
|
||||
connPortShift = ${toString cfg.connPortShift}
|
||||
|
||||
${cfg.mgmtd.extraConfig}
|
||||
'';
|
||||
|
||||
configAdmon = name: cfg: pkgs.writeText "admon-${name}.conf" ''
|
||||
sysMgmtdHost = ${cfg.mgmtdHost}
|
||||
connAuthFile = ${cfg.connAuthFile}
|
||||
connPortShift = ${toString cfg.connPortShift}
|
||||
|
||||
${cfg.admon.extraConfig}
|
||||
'';
|
||||
|
||||
configMeta = name: cfg: pkgs.writeText "meta-${name}.conf" ''
|
||||
storeMetaDirectory = ${cfg.meta.storeDir}
|
||||
sysMgmtdHost = ${cfg.mgmtdHost}
|
||||
connAuthFile = ${cfg.connAuthFile}
|
||||
connPortShift = ${toString cfg.connPortShift}
|
||||
storeAllowFirstRunInit = false
|
||||
|
||||
${cfg.meta.extraConfig}
|
||||
'';
|
||||
|
||||
configStorage = name: cfg: pkgs.writeText "storage-${name}.conf" ''
|
||||
storeStorageDirectory = ${cfg.storage.storeDir}
|
||||
sysMgmtdHost = ${cfg.mgmtdHost}
|
||||
connAuthFile = ${cfg.connAuthFile}
|
||||
connPortShift = ${toString cfg.connPortShift}
|
||||
storeAllowFirstRunInit = false
|
||||
|
||||
${cfg.storage.extraConfig}
|
||||
'';
|
||||
|
||||
configHelperd = name: cfg: pkgs.writeText "helperd-${name}.conf" ''
|
||||
connAuthFile = ${cfg.connAuthFile}
|
||||
${cfg.helperd.extraConfig}
|
||||
'';
|
||||
|
||||
configClientFilename = name : "/etc/beegfs/client-${name}.conf";
|
||||
|
||||
configClient = name: cfg: ''
|
||||
sysMgmtdHost = ${cfg.mgmtdHost}
|
||||
connAuthFile = ${cfg.connAuthFile}
|
||||
connPortShift = ${toString cfg.connPortShift}
|
||||
|
||||
${cfg.client.extraConfig}
|
||||
'';
|
||||
|
||||
serviceList = [
|
||||
{ service = "admon"; cfgFile = configAdmon; }
|
||||
{ service = "meta"; cfgFile = configMeta; }
|
||||
{ service = "mgmtd"; cfgFile = configMgmtd; }
|
||||
{ service = "storage"; cfgFile = configStorage; }
|
||||
];
|
||||
|
||||
# functions to generate systemd.service entries
|
||||
|
||||
systemdEntry = service: cfgFile: (mapAttrs' ( name: cfg:
|
||||
(nameValuePair "beegfs-${service}-${name}" (mkIf cfg.${service}.enable {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "network-online.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
serviceConfig = rec {
|
||||
ExecStart = ''
|
||||
${pkgs.beegfs}/bin/beegfs-${service} \
|
||||
cfgFile=${cfgFile name cfg} \
|
||||
pidFile=${PIDFile}
|
||||
'';
|
||||
PIDFile = "/run/beegfs-${service}-${name}.pid";
|
||||
TimeoutStopSec = "300";
|
||||
};
|
||||
}))) cfg);
|
||||
|
||||
systemdHelperd = mapAttrs' ( name: cfg:
|
||||
(nameValuePair "beegfs-helperd-${name}" (mkIf cfg.client.enable {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "network-online.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
serviceConfig = rec {
|
||||
ExecStart = ''
|
||||
${pkgs.beegfs}/bin/beegfs-helperd \
|
||||
cfgFile=${configHelperd name cfg} \
|
||||
pidFile=${PIDFile}
|
||||
'';
|
||||
PIDFile = "/run/beegfs-helperd-${name}.pid";
|
||||
TimeoutStopSec = "300";
|
||||
};
|
||||
}))) cfg;
|
||||
|
||||
# wrappers to beegfs tools. Avoid typing path of config files
|
||||
utilWrappers = mapAttrsToList ( name: cfg:
|
||||
( pkgs.runCommand "beegfs-utils-${name}" {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
preferLocalBuild = true;
|
||||
} ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
makeWrapper ${pkgs.beegfs}/bin/beegfs-check-servers \
|
||||
$out/bin/beegfs-check-servers-${name} \
|
||||
--add-flags "-c ${configClientFilename name}" \
|
||||
--prefix PATH : ${lib.makeBinPath [ pkgs.beegfs ]}
|
||||
|
||||
makeWrapper ${pkgs.beegfs}/bin/beegfs-ctl \
|
||||
$out/bin/beegfs-ctl-${name} \
|
||||
--add-flags "--cfgFile=${configClientFilename name}"
|
||||
|
||||
makeWrapper ${pkgs.beegfs}/bin/beegfs-ctl \
|
||||
$out/bin/beegfs-df-${name} \
|
||||
--add-flags "--cfgFile=${configClientFilename name}" \
|
||||
--add-flags --listtargets \
|
||||
--add-flags --hidenodeid \
|
||||
--add-flags --pools \
|
||||
--add-flags --spaceinfo
|
||||
|
||||
makeWrapper ${pkgs.beegfs}/bin/beegfs-fsck \
|
||||
$out/bin/beegfs-fsck-${name} \
|
||||
--add-flags "--cfgFile=${configClientFilename name}"
|
||||
''
|
||||
)) cfg;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
services.beegfsEnable = mkEnableOption "BeeGFS";
|
||||
|
||||
services.beegfs = mkOption {
|
||||
default = {};
|
||||
description = ''
|
||||
BeeGFS configurations. Every mount point requires a separate configuration.
|
||||
'';
|
||||
type = with types; attrsOf (submodule ({ ... } : {
|
||||
options = {
|
||||
mgmtdHost = mkOption {
|
||||
type = types.str;
|
||||
default = null;
|
||||
example = "master";
|
||||
description = ''Hostname of managament host.'';
|
||||
};
|
||||
|
||||
connAuthFile = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "/etc/my.key";
|
||||
description = "File containing shared secret authentication.";
|
||||
};
|
||||
|
||||
connPortShift = mkOption {
|
||||
type = types.int;
|
||||
default = 0;
|
||||
example = 5;
|
||||
description = ''
|
||||
For each additional beegfs configuration shift all
|
||||
service TCP/UDP ports by at least 5.
|
||||
'';
|
||||
};
|
||||
|
||||
client = {
|
||||
enable = mkEnableOption "BeeGFS client";
|
||||
|
||||
mount = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Create fstab entry automatically";
|
||||
};
|
||||
|
||||
mountPoint = mkOption {
|
||||
type = types.str;
|
||||
default = "/run/beegfs";
|
||||
description = ''
|
||||
Mount point under which the beegfs filesytem should be mounted.
|
||||
If mounted manually the mount option specifing the config file is needed:
|
||||
cfgFile=/etc/beegfs/beegfs-client-<name>.conf
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Additional lines for beegfs-client.conf.
|
||||
See documentation for further details.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
helperd = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Enable the BeeGFS helperd.
|
||||
The helpered is need for logging purposes on the client.
|
||||
Disabling <literal>helperd</literal> allows for runing the client
|
||||
with <literal>allowUnfree = false</literal>.
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Additional lines for beegfs-helperd.conf. See documentation
|
||||
for further details.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
mgmtd = {
|
||||
enable = mkEnableOption "BeeGFS mgmtd daemon";
|
||||
|
||||
storeDir = mkOption {
|
||||
type = types.path;
|
||||
default = null;
|
||||
example = "/data/beegfs-mgmtd";
|
||||
description = ''
|
||||
Data directory for mgmtd.
|
||||
Must not be shared with other beegfs daemons.
|
||||
This directory must exist and it must be initialized
|
||||
with beegfs-setup-mgmtd, e.g. "beegfs-setup-mgmtd -C -p <storeDir>"
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Additional lines for beegfs-mgmtd.conf. See documentation
|
||||
for further details.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
admon = {
|
||||
enable = mkEnableOption "BeeGFS admon daemon";
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Additional lines for beegfs-admon.conf. See documentation
|
||||
for further details.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
enable = mkEnableOption "BeeGFS meta data daemon";
|
||||
|
||||
storeDir = mkOption {
|
||||
type = types.path;
|
||||
default = null;
|
||||
example = "/data/beegfs-meta";
|
||||
description = ''
|
||||
Data directory for meta data service.
|
||||
Must not be shared with other beegfs daemons.
|
||||
The underlying filesystem must be mounted with xattr turned on.
|
||||
This directory must exist and it must be initialized
|
||||
with beegfs-setup-meta, e.g.
|
||||
"beegfs-setup-meta -C -s <serviceID> -p <storeDir>"
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
Additional lines for beegfs-meta.conf. See documentation
|
||||
for further details.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
storage = {
|
||||
enable = mkEnableOption "BeeGFS storage daemon";
|
||||
|
||||
storeDir = mkOption {
|
||||
type = types.path;
|
||||
default = null;
|
||||
example = "/data/beegfs-storage";
|
||||
description = ''
|
||||
Data directories for storage service.
|
||||
Must not be shared with other beegfs daemons.
|
||||
The underlying filesystem must be mounted with xattr turned on.
|
||||
This directory must exist and it must be initialized
|
||||
with beegfs-setup-storage, e.g.
|
||||
"beegfs-setup-storage -C -s <serviceID> -i <storageTargetID> -p <storeDir>"
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
Addional lines for beegfs-storage.conf. See documentation
|
||||
for further details.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config =
|
||||
mkIf config.services.beegfsEnable {
|
||||
|
||||
environment.systemPackages = utilWrappers;
|
||||
|
||||
# Put the client.conf files in /etc since they are needed
|
||||
# by the commandline tools
|
||||
environment.etc = mapAttrs' ( name: cfg:
|
||||
(nameValuePair "beegfs/client-${name}.conf" (mkIf (cfg.client.enable)
|
||||
{
|
||||
enable = true;
|
||||
text = configClient name cfg;
|
||||
}))) cfg;
|
||||
|
||||
# Kernel module, we need it only once per host.
|
||||
boot = mkIf (
|
||||
foldr (a: b: a || b) false
|
||||
(map (x: x.client.enable) (collect (x: x ? client) cfg)))
|
||||
{
|
||||
kernelModules = [ "beegfs" ];
|
||||
extraModulePackages = [ pkgs.linuxPackages.beegfs-module ];
|
||||
};
|
||||
|
||||
# generate fstab entries
|
||||
fileSystems = mapAttrs' (name: cfg:
|
||||
(nameValuePair cfg.client.mountPoint (optionalAttrs cfg.client.mount (mkIf cfg.client.enable {
|
||||
device = "beegfs_nodev";
|
||||
fsType = "beegfs";
|
||||
mountPoint = cfg.client.mountPoint;
|
||||
options = [ "cfgFile=${configClientFilename name}" "_netdev" ];
|
||||
})))) cfg;
|
||||
|
||||
# generate systemd services
|
||||
systemd.services = systemdHelperd //
|
||||
foldr (a: b: a // b) {}
|
||||
(map (x: systemdEntry x.service x.cfgFile) serviceList);
|
||||
};
|
||||
}
|
|
@ -239,7 +239,7 @@ in
|
|||
services.znc = {
|
||||
configFile = mkDefault (pkgs.writeText "znc-generated.conf" semanticString);
|
||||
config = {
|
||||
Version = (builtins.parseDrvName pkgs.znc.name).version;
|
||||
Version = lib.getVersion pkgs.znc;
|
||||
Listener.l.Port = mkDefault 5000;
|
||||
Listener.l.SSL = mkDefault true;
|
||||
};
|
||||
|
|
|
@ -47,8 +47,8 @@ let
|
|||
grub = f grub;
|
||||
grubTarget = f (grub.grubTarget or "");
|
||||
shell = "${pkgs.runtimeShell}";
|
||||
fullName = (builtins.parseDrvName realGrub.name).name;
|
||||
fullVersion = (builtins.parseDrvName realGrub.name).version;
|
||||
fullName = lib.getName realGrub;
|
||||
fullVersion = lib.getVersion realGrub;
|
||||
grubEfi = f grubEfi;
|
||||
grubTargetEfi = if cfg.efiSupport && (cfg.version == 2) then f (grubEfi.grubTarget or "") else "";
|
||||
bootPath = args.path;
|
||||
|
|
197
nixos/modules/virtualisation/digital-ocean-config.nix
Normal file
197
nixos/modules/virtualisation/digital-ocean-config.nix
Normal file
|
@ -0,0 +1,197 @@
|
|||
{ config, pkgs, lib, modulesPath, ... }:
|
||||
with lib;
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
(modulesPath + "/virtualisation/digital-ocean-init.nix")
|
||||
];
|
||||
options.virtualisation.digitalOcean = with types; {
|
||||
setRootPassword = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = "Whether to set the root password from the Digital Ocean metadata";
|
||||
};
|
||||
setSshKeys = mkOption {
|
||||
type = bool;
|
||||
default = true;
|
||||
example = true;
|
||||
description = "Whether to fetch ssh keys from Digital Ocean";
|
||||
};
|
||||
seedEntropy = mkOption {
|
||||
type = bool;
|
||||
default = true;
|
||||
example = true;
|
||||
description = "Whether to run the kernel RNG entropy seeding script from the Digital Ocean vendor data";
|
||||
};
|
||||
};
|
||||
config =
|
||||
let
|
||||
cfg = config.virtualisation.digitalOcean;
|
||||
hostName = config.networking.hostName;
|
||||
doMetadataFile = "/run/do-metadata/v1.json";
|
||||
in mkMerge [{
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/nixos";
|
||||
autoResize = true;
|
||||
fsType = "ext4";
|
||||
};
|
||||
boot = {
|
||||
growPartition = true;
|
||||
kernelParams = [ "console=ttyS0" "panic=1" "boot.panic_on_fail" ];
|
||||
initrd.kernelModules = [ "virtio_scsi" ];
|
||||
kernelModules = [ "virtio_pci" "virtio_net" ];
|
||||
loader = {
|
||||
grub.device = "/dev/vda";
|
||||
timeout = 0;
|
||||
grub.configurationLimit = 0;
|
||||
};
|
||||
};
|
||||
services.openssh = {
|
||||
enable = mkDefault true;
|
||||
passwordAuthentication = mkDefault false;
|
||||
};
|
||||
services.do-agent.enable = mkDefault true;
|
||||
networking = {
|
||||
hostName = mkDefault ""; # use Digital Ocean metadata server
|
||||
};
|
||||
|
||||
/* Check for and wait for the metadata server to become reachable.
|
||||
* This serves as a dependency for all the other metadata services. */
|
||||
systemd.services.digitalocean-metadata = {
|
||||
path = [ pkgs.curl ];
|
||||
description = "Get host metadata provided by Digitalocean";
|
||||
script = ''
|
||||
set -eu
|
||||
DO_DELAY_ATTEMPTS=0
|
||||
while ! curl -fsSL -o $RUNTIME_DIRECTORY/v1.json http://169.254.169.254/metadata/v1.json; do
|
||||
DO_DELAY_ATTEMPTS=$((DO_DELAY_ATTEMPTS + 1))
|
||||
if (( $DO_DELAY_ATTEMPTS >= $DO_DELAY_ATTEMPTS_MAX )); then
|
||||
echo "giving up"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "metadata unavailable, trying again in 1s..."
|
||||
sleep 1
|
||||
done
|
||||
chmod 600 $RUNTIME_DIRECTORY/v1.json
|
||||
'';
|
||||
environment = {
|
||||
DO_DELAY_ATTEMPTS_MAX = "10";
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
RuntimeDirectory = "do-metadata";
|
||||
RuntimeDirectoryPreserve = "yes";
|
||||
};
|
||||
unitConfig = {
|
||||
ConditionPathExists = "!${doMetadataFile}";
|
||||
After = [ "network-pre.target" ] ++
|
||||
optional config.networking.dhcpcd.enable "dhcpcd.service" ++
|
||||
optional config.systemd.network.enable "systemd-networkd.service";
|
||||
};
|
||||
};
|
||||
|
||||
/* Fetch the root password from the digital ocean metadata.
|
||||
* There is no specific route for this, so we use jq to get
|
||||
* it from the One Big JSON metadata blob */
|
||||
systemd.services.digitalocean-set-root-password = mkIf cfg.setRootPassword {
|
||||
path = [ pkgs.shadow pkgs.jq ];
|
||||
description = "Set root password provided by Digitalocean";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
script = ''
|
||||
set -eo pipefail
|
||||
ROOT_PASSWORD=$(jq -er '.auth_key' ${doMetadataFile})
|
||||
echo "root:$ROOT_PASSWORD" | chpasswd
|
||||
mkdir -p /etc/do-metadata/set-root-password
|
||||
'';
|
||||
unitConfig = {
|
||||
ConditionPathExists = "!/etc/do-metadata/set-root-password";
|
||||
Before = optional config.services.openssh.enable "sshd.service";
|
||||
After = [ "digitalocean-metadata.service" ];
|
||||
Requires = [ "digitalocean-metadata.service" ];
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
|
||||
/* Set the hostname from Digital Ocean, unless the user configured it in
|
||||
* the NixOS configuration. The cached metadata file isn't used here
|
||||
* because the hostname is a mutable part of the droplet. */
|
||||
systemd.services.digitalocean-set-hostname = mkIf (hostName == "") {
|
||||
path = [ pkgs.curl pkgs.nettools ];
|
||||
description = "Set hostname provided by Digitalocean";
|
||||
wantedBy = [ "network.target" ];
|
||||
script = ''
|
||||
set -e
|
||||
DIGITALOCEAN_HOSTNAME=$(curl -fsSL http://169.254.169.254/metadata/v1/hostname)
|
||||
hostname "$DIGITALOCEAN_HOSTNAME"
|
||||
if [[ ! -e /etc/hostname || -w /etc/hostname ]]; then
|
||||
printf "%s\n" "$DIGITALOCEAN_HOSTNAME" > /etc/hostname
|
||||
fi
|
||||
'';
|
||||
unitConfig = {
|
||||
Before = [ "network.target" ];
|
||||
After = [ "digitalocean-metadata.service" ];
|
||||
Wants = [ "digitalocean-metadata.service" ];
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
|
||||
/* Fetch the ssh keys for root from Digital Ocean */
|
||||
systemd.services.digitalocean-ssh-keys = mkIf cfg.setSshKeys {
|
||||
description = "Set root ssh keys provided by Digital Ocean";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.jq ];
|
||||
script = ''
|
||||
set -e
|
||||
mkdir -m 0700 -p /root/.ssh
|
||||
jq -er '.public_keys[]' ${doMetadataFile} > /root/.ssh/authorized_keys
|
||||
chmod 600 /root/.ssh/authorized_keys
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
unitConfig = {
|
||||
ConditionPathExists = "!/root/.ssh/authorized_keys";
|
||||
Before = optional config.services.openssh.enable "sshd.service";
|
||||
After = [ "digitalocean-metadata.service" ];
|
||||
Requires = [ "digitalocean-metadata.service" ];
|
||||
};
|
||||
};
|
||||
|
||||
/* Initialize the RNG by running the entropy-seed script from the
|
||||
* Digital Ocean metadata
|
||||
*/
|
||||
systemd.services.digitalocean-entropy-seed = mkIf cfg.seedEntropy {
|
||||
description = "Run the kernel RNG entropy seeding script from the Digital Ocean vendor data";
|
||||
wantedBy = [ "network.target" ];
|
||||
path = [ pkgs.jq pkgs.mpack ];
|
||||
script = ''
|
||||
set -eo pipefail
|
||||
TEMPDIR=$(mktemp -d)
|
||||
jq -er '.vendor_data' ${doMetadataFile} | munpack -tC $TEMPDIR
|
||||
ENTROPY_SEED=$(grep -rl "DigitalOcean Entropy Seed script" $TEMPDIR)
|
||||
${pkgs.runtimeShell} $ENTROPY_SEED
|
||||
rm -rf $TEMPDIR
|
||||
'';
|
||||
unitConfig = {
|
||||
Before = [ "network.target" ];
|
||||
After = [ "digitalocean-metadata.service" ];
|
||||
Requires = [ "digitalocean-metadata.service" ];
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
];
|
||||
meta.maintainers = with maintainers; [ arianvp eamsden ];
|
||||
}
|
||||
|
69
nixos/modules/virtualisation/digital-ocean-image.nix
Normal file
69
nixos/modules/virtualisation/digital-ocean-image.nix
Normal file
|
@ -0,0 +1,69 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.virtualisation.digitalOceanImage;
|
||||
in
|
||||
{
|
||||
|
||||
imports = [ ./digital-ocean-config.nix ];
|
||||
|
||||
options = {
|
||||
virtualisation.digitalOceanImage.diskSize = mkOption {
|
||||
type = with types; int;
|
||||
default = 4096;
|
||||
description = ''
|
||||
Size of disk image. Unit is MB.
|
||||
'';
|
||||
};
|
||||
|
||||
virtualisation.digitalOceanImage.configFile = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
description = ''
|
||||
A path to a configuration file which will be placed at
|
||||
<literal>/etc/nixos/configuration.nix</literal> and be used when switching
|
||||
to a new configuration. If set to <literal>null</literal>, a default
|
||||
configuration is used that imports
|
||||
<literal>(modulesPath + "/virtualisation/digital-ocean-config.nix")</literal>.
|
||||
'';
|
||||
};
|
||||
|
||||
virtualisation.digitalOceanImage.compressionMethod = mkOption {
|
||||
type = types.enum [ "gzip" "bzip2" ];
|
||||
default = "gzip";
|
||||
example = "bzip2";
|
||||
description = ''
|
||||
Disk image compression method. Choose bzip2 to generate smaller images that
|
||||
take longer to generate but will consume less metered storage space on your
|
||||
Digital Ocean account.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
#### implementation
|
||||
config = {
|
||||
|
||||
system.build.digitalOceanImage = import ../../lib/make-disk-image.nix {
|
||||
name = "digital-ocean-image";
|
||||
format = "qcow2";
|
||||
postVM = let
|
||||
compress = {
|
||||
"gzip" = "${pkgs.gzip}/bin/gzip";
|
||||
"bzip2" = "${pkgs.bzip2}/bin/bzip2";
|
||||
}.${cfg.compressionMethod};
|
||||
in ''
|
||||
${compress} $diskImage
|
||||
'';
|
||||
configFile = if cfg.configFile == null
|
||||
then config.virtualisation.digitalOcean.defaultConfigFile
|
||||
else cfg.configFile;
|
||||
inherit (cfg) diskSize;
|
||||
inherit config lib pkgs;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = with maintainers; [ arianvp eamsden ];
|
||||
|
||||
}
|
95
nixos/modules/virtualisation/digital-ocean-init.nix
Normal file
95
nixos/modules/virtualisation/digital-ocean-init.nix
Normal file
|
@ -0,0 +1,95 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.virtualisation.digitalOcean;
|
||||
defaultConfigFile = pkgs.writeText "digitalocean-configuration.nix" ''
|
||||
{ modulesPath, lib, ... }:
|
||||
{
|
||||
imports = lib.optional (builtins.pathExists ./do-userdata.nix) ./do-userdata.nix ++ [
|
||||
(modulesPath + "/virtualisation/digital-ocean-config.nix")
|
||||
];
|
||||
}
|
||||
'';
|
||||
in {
|
||||
options.virtualisation.digitalOcean.rebuildFromUserData = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
example = true;
|
||||
description = "Whether to reconfigure the system from Digital Ocean user data";
|
||||
};
|
||||
options.virtualisation.digitalOcean.defaultConfigFile = mkOption {
|
||||
type = types.path;
|
||||
default = defaultConfigFile;
|
||||
defaultText = ''
|
||||
The default configuration imports user-data if applicable and
|
||||
<literal>(modulesPath + "/virtualisation/digital-ocean-config.nix")</literal>.
|
||||
'';
|
||||
description = ''
|
||||
A path to a configuration file which will be placed at
|
||||
<literal>/etc/nixos/configuration.nix</literal> and be used when switching to
|
||||
a new configuration.
|
||||
'';
|
||||
};
|
||||
|
||||
config = {
|
||||
systemd.services.digitalocean-init = mkIf cfg.rebuildFromUserData {
|
||||
description = "Reconfigure the system from Digital Ocean userdata on startup";
|
||||
wantedBy = [ "network-online.target" ];
|
||||
unitConfig = {
|
||||
ConditionPathExists = "!/etc/nixos/do-userdata.nix";
|
||||
After = [ "digitalocean-metadata.service" "network-online.target" ];
|
||||
Requires = [ "digitalocean-metadata.service" ];
|
||||
X-StopOnRemoval = false;
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
restartIfChanged = false;
|
||||
path = [ pkgs.jq pkgs.gnused pkgs.gnugrep pkgs.systemd config.nix.package config.system.build.nixos-rebuild ];
|
||||
environment = {
|
||||
HOME = "/root";
|
||||
NIX_PATH = concatStringsSep ":" [
|
||||
"/nix/var/nix/profiles/per-user/root/channels/nixos"
|
||||
"nixos-config=/etc/nixos/configuration.nix"
|
||||
"/nix/var/nix/profiles/per-user/root/channels"
|
||||
];
|
||||
};
|
||||
script = ''
|
||||
set -e
|
||||
echo "attempting to fetch configuration from Digital Ocean user data..."
|
||||
userData=$(mktemp)
|
||||
if jq -er '.user_data' /run/do-metadata/v1.json > $userData; then
|
||||
# If the user-data looks like it could be a nix expression,
|
||||
# copy it over. Also, look for a magic three-hash comment and set
|
||||
# that as the channel.
|
||||
if nix-instantiate --parse $userData > /dev/null; then
|
||||
channels="$(grep '^###' "$userData" | sed 's|###\s*||')"
|
||||
printf "%s" "$channels" | while read channel; do
|
||||
echo "writing channel: $channel"
|
||||
done
|
||||
|
||||
if [[ -n "$channels" ]]; then
|
||||
printf "%s" "$channels" > /root/.nix-channels
|
||||
nix-channel --update
|
||||
fi
|
||||
|
||||
echo "setting configuration from Digital Ocean user data"
|
||||
cp "$userData" /etc/nixos/do-userdata.nix
|
||||
if [[ ! -e /etc/nixos/configuration.nix ]]; then
|
||||
install -m0644 ${cfg.defaultConfigFile} /etc/nixos/configuration.nix
|
||||
fi
|
||||
else
|
||||
echo "user data does not appear to be a Nix expression; ignoring"
|
||||
exit
|
||||
fi
|
||||
|
||||
nixos-rebuild switch
|
||||
else
|
||||
echo "no user data is available"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
};
|
||||
meta.maintainers = with maintainers; [ arianvp eamsden ];
|
||||
}
|
|
@ -28,7 +28,7 @@ in
|
|||
babeld = handleTest ./babeld.nix {};
|
||||
bcachefs = handleTestOn ["x86_64-linux"] ./bcachefs.nix {}; # linux-4.18.2018.10.12 is unsupported on aarch64
|
||||
beanstalkd = handleTest ./beanstalkd.nix {};
|
||||
beegfs = handleTestOn ["x86_64-linux"] ./beegfs.nix {}; # beegfs is unsupported on aarch64
|
||||
bees = handleTest ./bees.nix {};
|
||||
bind = handleTest ./bind.nix {};
|
||||
bittorrent = handleTest ./bittorrent.nix {};
|
||||
#blivet = handleTest ./blivet.nix {}; # broken since 2017-07024
|
||||
|
|
|
@ -1,115 +0,0 @@
|
|||
import ./make-test.nix ({ ... } :
|
||||
|
||||
let
|
||||
connAuthFile="beegfs/auth-def.key";
|
||||
|
||||
client = { pkgs, ... } : {
|
||||
networking.firewall.enable = false;
|
||||
services.beegfsEnable = true;
|
||||
services.beegfs.default = {
|
||||
mgmtdHost = "mgmt";
|
||||
connAuthFile = "/etc/${connAuthFile}";
|
||||
client = {
|
||||
mount = false;
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems = pkgs.lib.mkVMOverride # FIXME: this should be creatd by the module
|
||||
[ { mountPoint = "/beegfs";
|
||||
device = "default";
|
||||
fsType = "beegfs";
|
||||
options = [ "cfgFile=/etc/beegfs/client-default.conf" "_netdev" ];
|
||||
}
|
||||
];
|
||||
|
||||
environment.etc.${connAuthFile} = {
|
||||
enable = true;
|
||||
text = "ThisIsALousySecret";
|
||||
mode = "0600";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
server = service : { pkgs, ... } : {
|
||||
networking.firewall.enable = false;
|
||||
boot.initrd.postDeviceCommands = ''
|
||||
${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb
|
||||
'';
|
||||
|
||||
virtualisation.emptyDiskImages = [ 4096 ];
|
||||
|
||||
fileSystems = pkgs.lib.mkVMOverride
|
||||
[ { mountPoint = "/data";
|
||||
device = "/dev/disk/by-label/data";
|
||||
fsType = "ext4";
|
||||
}
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [ beegfs ];
|
||||
environment.etc.${connAuthFile} = {
|
||||
enable = true;
|
||||
text = "ThisIsALousySecret";
|
||||
mode = "0600";
|
||||
};
|
||||
|
||||
services.beegfsEnable = true;
|
||||
services.beegfs.default = {
|
||||
mgmtdHost = "mgmt";
|
||||
connAuthFile = "/etc/${connAuthFile}";
|
||||
${service} = {
|
||||
enable = true;
|
||||
storeDir = "/data";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
name = "beegfs";
|
||||
|
||||
nodes = {
|
||||
meta = server "meta";
|
||||
mgmt = server "mgmtd";
|
||||
storage1 = server "storage";
|
||||
storage2 = server "storage";
|
||||
client1 = client;
|
||||
client2 = client;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Initalize the data directories
|
||||
$mgmt->waitForUnit("default.target");
|
||||
$mgmt->succeed("beegfs-setup-mgmtd -C -f -p /data");
|
||||
$mgmt->succeed("systemctl start beegfs-mgmtd-default");
|
||||
|
||||
$meta->waitForUnit("default.target");
|
||||
$meta->succeed("beegfs-setup-meta -C -f -s 1 -p /data");
|
||||
$meta->succeed("systemctl start beegfs-meta-default");
|
||||
|
||||
$storage1->waitForUnit("default.target");
|
||||
$storage1->succeed("beegfs-setup-storage -C -f -s 1 -i 1 -p /data");
|
||||
$storage1->succeed("systemctl start beegfs-storage-default");
|
||||
|
||||
$storage2->waitForUnit("default.target");
|
||||
$storage2->succeed("beegfs-setup-storage -C -f -s 2 -i 2 -p /data");
|
||||
$storage2->succeed("systemctl start beegfs-storage-default");
|
||||
|
||||
#
|
||||
|
||||
# Basic test
|
||||
$client1->waitForUnit("beegfs.mount");
|
||||
$client1->succeed("beegfs-check-servers-default");
|
||||
$client1->succeed("echo test > /beegfs/test");
|
||||
$client2->waitForUnit("beegfs.mount");
|
||||
$client2->succeed("test -e /beegfs/test");
|
||||
$client2->succeed("cat /beegfs/test | grep test");
|
||||
|
||||
# test raid0/stripping
|
||||
$client1->succeed("dd if=/dev/urandom bs=1M count=10 of=/beegfs/striped");
|
||||
$client2->succeed("cat /beegfs/striped > /dev/null");
|
||||
|
||||
# check if fs is still healthy
|
||||
$client1->succeed("beegfs-fsck-default --checkfs");
|
||||
'';
|
||||
})
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test.nix ({ lib, ... }:
|
||||
import ./make-test-python.nix ({ lib, pkgs, ... }:
|
||||
{
|
||||
name = "bees";
|
||||
|
||||
|
@ -29,27 +29,34 @@ import ./make-test.nix ({ lib, ... }:
|
|||
|
||||
testScript =
|
||||
let
|
||||
withRetry = content: maxTests: sleepTime: ''
|
||||
max_tests=${lib.escapeShellArg maxTests}; sleep_time=${lib.escapeShellArg sleepTime}; for ((i=0; i<max_tests; i++)); do ${content} && exit 0; sleep "$sleep_time"; done; exit 1;
|
||||
someContentIsShared = loc: pkgs.writeShellScript "some-content-is-shared" ''
|
||||
[[ $(btrfs fi du -s --raw ${lib.escapeShellArg loc}/dedup-me-{1,2} | awk 'BEGIN { count=0; } NR>1 && $3 == 0 { count++ } END { print count }') -eq 0 ]]
|
||||
'';
|
||||
someContentIsShared = loc: ''[[ $(btrfs fi du -s --raw ${lib.escapeShellArg loc}/dedup-me-{1,2} | awk 'BEGIN { count=0; } NR>1 && $3 == 0 { count++ } END { print count }') -eq 0 ]]'';
|
||||
in ''
|
||||
# shut down the instance started by systemd at boot, so we can test our test procedure
|
||||
$machine->succeed("systemctl stop beesd\@aux1.service");
|
||||
machine.succeed("systemctl stop beesd@aux1.service")
|
||||
|
||||
$machine->succeed("dd if=/dev/urandom of=/aux1/dedup-me-1 bs=1M count=8");
|
||||
$machine->succeed("cp --reflink=never /aux1/dedup-me-1 /aux1/dedup-me-2");
|
||||
$machine->succeed("cp --reflink=never /aux1/* /aux2/");
|
||||
$machine->succeed("sync");
|
||||
$machine->fail(q(${someContentIsShared "/aux1"}));
|
||||
$machine->fail(q(${someContentIsShared "/aux2"}));
|
||||
$machine->succeed("systemctl start beesd\@aux1.service");
|
||||
machine.succeed(
|
||||
"dd if=/dev/urandom of=/aux1/dedup-me-1 bs=1M count=8",
|
||||
"cp --reflink=never /aux1/dedup-me-1 /aux1/dedup-me-2",
|
||||
"cp --reflink=never /aux1/* /aux2/",
|
||||
"sync",
|
||||
)
|
||||
machine.fail(
|
||||
"${someContentIsShared "/aux1"}",
|
||||
"${someContentIsShared "/aux2"}",
|
||||
)
|
||||
machine.succeed("systemctl start beesd@aux1.service")
|
||||
|
||||
# assert that "Set Shared" column is nonzero
|
||||
$machine->succeed(q(${withRetry (someContentIsShared "/aux1") 20 2}));
|
||||
$machine->fail(q(${someContentIsShared "/aux2"}));
|
||||
machine.wait_until_succeeds(
|
||||
"${someContentIsShared "/aux1"}",
|
||||
)
|
||||
machine.fail("${someContentIsShared "/aux2"}")
|
||||
|
||||
# assert that 16MB hash table size requested was honored
|
||||
$machine->succeed(q([[ $(stat -c %s /aux1/.beeshome/beeshash.dat) = $(( 16 * 1024 * 1024)) ]]))
|
||||
machine.succeed(
|
||||
"[[ $(stat -c %s /aux1/.beeshome/beeshash.dat) = $(( 16 * 1024 * 1024)) ]]"
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test.nix ({ pkgs, lib, ... }:
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
{
|
||||
name = "codimd";
|
||||
|
||||
|
@ -35,20 +35,18 @@ import ./make-test.nix ({ pkgs, lib, ... }:
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
startAll();
|
||||
start_all()
|
||||
|
||||
subtest "CodiMD sqlite", sub {
|
||||
$codimdSqlite->waitForUnit("codimd.service");
|
||||
$codimdSqlite->waitForOpenPort(3000);
|
||||
$codimdSqlite->waitUntilSucceeds("curl -sSf http://localhost:3000/new");
|
||||
};
|
||||
with subtest("CodiMD sqlite"):
|
||||
codimdSqlite.wait_for_unit("codimd.service")
|
||||
codimdSqlite.wait_for_open_port(3000)
|
||||
codimdSqlite.wait_until_succeeds("curl -sSf http://localhost:3000/new")
|
||||
|
||||
subtest "CodiMD postgres", sub {
|
||||
$codimdPostgres->waitForUnit("postgresql.service");
|
||||
$codimdPostgres->waitForUnit("codimd.service");
|
||||
$codimdPostgres->waitForOpenPort(5432);
|
||||
$codimdPostgres->waitForOpenPort(3000);
|
||||
$codimdPostgres->waitUntilSucceeds("curl -sSf http://localhost:3000/new");
|
||||
};
|
||||
with subtest("CodiMD postgres"):
|
||||
codimdPostgres.wait_for_unit("postgresql.service")
|
||||
codimdPostgres.wait_for_unit("codimd.service")
|
||||
codimdPostgres.wait_for_open_port(5432)
|
||||
codimdPostgres.wait_for_open_port(3000)
|
||||
codimdPostgres.wait_until_succeeds("curl -sSf http://localhost:3000/new")
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# This test runs docker-registry and check if it works
|
||||
|
||||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
name = "docker-registry";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ globin ma27 ironpinguin ];
|
||||
|
@ -28,36 +28,34 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
$client1->start();
|
||||
$client1->waitForUnit("docker.service");
|
||||
$client1->succeed("tar cv --files-from /dev/null | docker import - scratch");
|
||||
$client1->succeed("docker tag scratch registry:8080/scratch");
|
||||
client1.start()
|
||||
client1.wait_for_unit("docker.service")
|
||||
client1.succeed("tar cv --files-from /dev/null | docker import - scratch")
|
||||
client1.succeed("docker tag scratch registry:8080/scratch")
|
||||
|
||||
$registry->start();
|
||||
$registry->waitForUnit("docker-registry.service");
|
||||
$registry->waitForOpenPort("8080");
|
||||
$client1->succeed("docker push registry:8080/scratch");
|
||||
registry.start()
|
||||
registry.wait_for_unit("docker-registry.service")
|
||||
registry.wait_for_open_port("8080")
|
||||
client1.succeed("docker push registry:8080/scratch")
|
||||
|
||||
$client2->start();
|
||||
$client2->waitForUnit("docker.service");
|
||||
$client2->succeed("docker pull registry:8080/scratch");
|
||||
$client2->succeed("docker images | grep scratch");
|
||||
client2.start()
|
||||
client2.wait_for_unit("docker.service")
|
||||
client2.succeed("docker pull registry:8080/scratch")
|
||||
client2.succeed("docker images | grep scratch")
|
||||
|
||||
$client2->succeed(
|
||||
'curl -fsS -X DELETE registry:8080/v2/scratch/manifests/$(curl -fsS -I -H"Accept: application/vnd.docker.distribution.manifest.v2+json" registry:8080/v2/scratch/manifests/latest | grep Docker-Content-Digest | sed -e \'s/Docker-Content-Digest: //\' | tr -d \'\r\')'
|
||||
);
|
||||
client2.succeed(
|
||||
"curl -fsS -X DELETE registry:8080/v2/scratch/manifests/$(curl -fsS -I -H\"Accept: application/vnd.docker.distribution.manifest.v2+json\" registry:8080/v2/scratch/manifests/latest | grep Docker-Content-Digest | sed -e 's/Docker-Content-Digest: //' | tr -d '\\r')"
|
||||
)
|
||||
|
||||
$registry->systemctl("start docker-registry-garbage-collect.service");
|
||||
$registry->waitUntilFails("systemctl status docker-registry-garbage-collect.service");
|
||||
$registry->waitForUnit("docker-registry.service");
|
||||
registry.systemctl("start docker-registry-garbage-collect.service")
|
||||
registry.wait_until_fails("systemctl status docker-registry-garbage-collect.service")
|
||||
registry.wait_for_unit("docker-registry.service")
|
||||
|
||||
$registry->fail(
|
||||
'ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data'
|
||||
);
|
||||
registry.fail("ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data")
|
||||
|
||||
$client1->succeed("docker push registry:8080/scratch");
|
||||
$registry->succeed(
|
||||
'ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data'
|
||||
);
|
||||
client1.succeed("docker push registry:8080/scratch")
|
||||
registry.succeed(
|
||||
"ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data"
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# This test runs simple etcd cluster
|
||||
|
||||
import ./make-test.nix ({ pkgs, ... } : let
|
||||
import ./make-test-python.nix ({ pkgs, ... } : let
|
||||
|
||||
runWithOpenSSL = file: cmd: pkgs.runCommand file {
|
||||
buildInputs = [ pkgs.openssl ];
|
||||
|
@ -129,29 +129,26 @@ in {
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
subtest "should start etcd cluster", sub {
|
||||
$node1->start();
|
||||
$node2->start();
|
||||
$node1->waitForUnit("etcd.service");
|
||||
$node2->waitForUnit("etcd.service");
|
||||
$node2->waitUntilSucceeds("etcdctl cluster-health");
|
||||
$node1->succeed("etcdctl set /foo/bar 'Hello world'");
|
||||
$node2->succeed("etcdctl get /foo/bar | grep 'Hello world'");
|
||||
};
|
||||
with subtest("should start etcd cluster"):
|
||||
node1.start()
|
||||
node2.start()
|
||||
node1.wait_for_unit("etcd.service")
|
||||
node2.wait_for_unit("etcd.service")
|
||||
node2.wait_until_succeeds("etcdctl cluster-health")
|
||||
node1.succeed("etcdctl set /foo/bar 'Hello world'")
|
||||
node2.succeed("etcdctl get /foo/bar | grep 'Hello world'")
|
||||
|
||||
subtest "should add another member", sub {
|
||||
$node1->waitUntilSucceeds("etcdctl member add node3 https://node3:2380");
|
||||
$node3->start();
|
||||
$node3->waitForUnit("etcd.service");
|
||||
$node3->waitUntilSucceeds("etcdctl member list | grep 'node3'");
|
||||
$node3->succeed("etcdctl cluster-health");
|
||||
};
|
||||
with subtest("should add another member"):
|
||||
node1.wait_until_succeeds("etcdctl member add node3 https://node3:2380")
|
||||
node3.start()
|
||||
node3.wait_for_unit("etcd.service")
|
||||
node3.wait_until_succeeds("etcdctl member list | grep 'node3'")
|
||||
node3.succeed("etcdctl cluster-health")
|
||||
|
||||
subtest "should survive member crash", sub {
|
||||
$node3->crash;
|
||||
$node1->succeed("etcdctl cluster-health");
|
||||
$node1->succeed("etcdctl set /foo/bar 'Hello degraded world'");
|
||||
$node1->succeed("etcdctl get /foo/bar | grep 'Hello degraded world'");
|
||||
};
|
||||
with subtest("should survive member crash"):
|
||||
node3.crash()
|
||||
node1.succeed("etcdctl cluster-health")
|
||||
node1.succeed("etcdctl set /foo/bar 'Hello degraded world'")
|
||||
node1.succeed("etcdctl get /foo/bar | grep 'Hello degraded world'")
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# This test runs simple etcd node
|
||||
|
||||
import ./make-test.nix ({ pkgs, ... } : {
|
||||
import ./make-test-python.nix ({ pkgs, ... } : {
|
||||
name = "etcd";
|
||||
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
|
@ -14,14 +14,12 @@ import ./make-test.nix ({ pkgs, ... } : {
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
subtest "should start etcd node", sub {
|
||||
$node->start();
|
||||
$node->waitForUnit("etcd.service");
|
||||
};
|
||||
with subtest("should start etcd node"):
|
||||
node.start()
|
||||
node.wait_for_unit("etcd.service")
|
||||
|
||||
subtest "should write and read some values to etcd", sub {
|
||||
$node->succeed("etcdctl set /foo/bar 'Hello world'");
|
||||
$node->succeed("etcdctl get /foo/bar | grep 'Hello world'");
|
||||
}
|
||||
with subtest("should write and read some values to etcd"):
|
||||
node.succeed("etcdctl set /foo/bar 'Hello world'")
|
||||
node.succeed("etcdctl get /foo/bar | grep 'Hello world'")
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,7 +1,14 @@
|
|||
import ../make-test.nix ({ pkgs, ... } :
|
||||
import ../make-test-python.nix ({ pkgs, ... } :
|
||||
let
|
||||
inherit (import ./../ssh-keys.nix pkgs)
|
||||
snakeOilPrivateKey snakeOilPublicKey;
|
||||
|
||||
# don't check host keys or known hosts, use the snakeoil ssh key
|
||||
ssh-config = builtins.toFile "ssh.conf" ''
|
||||
UserKnownHostsFile=/dev/null
|
||||
StrictHostKeyChecking=no
|
||||
IdentityFile=~/.ssh/id_snakeoil
|
||||
'';
|
||||
in {
|
||||
name = "google-oslogin";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
|
@ -15,38 +22,49 @@ in {
|
|||
client = { ... }: {};
|
||||
};
|
||||
testScript = ''
|
||||
startAll;
|
||||
start_all()
|
||||
|
||||
$server->waitForUnit("mock-google-metadata.service");
|
||||
$server->waitForOpenPort(80);
|
||||
server.wait_for_unit("mock-google-metadata.service")
|
||||
server.wait_for_open_port(80)
|
||||
|
||||
# mockserver should return a non-expired ssh key for both mockuser and mockadmin
|
||||
$server->succeed('${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockuser | grep -q "${snakeOilPublicKey}"');
|
||||
$server->succeed('${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockadmin | grep -q "${snakeOilPublicKey}"');
|
||||
server.succeed(
|
||||
'${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockuser | grep -q "${snakeOilPublicKey}"'
|
||||
)
|
||||
server.succeed(
|
||||
'${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockadmin | grep -q "${snakeOilPublicKey}"'
|
||||
)
|
||||
|
||||
# install snakeoil ssh key on the client
|
||||
$client->succeed("mkdir -p ~/.ssh");
|
||||
$client->succeed("cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil");
|
||||
$client->succeed("chmod 600 ~/.ssh/id_snakeoil");
|
||||
# install snakeoil ssh key on the client, and provision .ssh/config file
|
||||
client.succeed("mkdir -p ~/.ssh")
|
||||
client.succeed(
|
||||
"cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil"
|
||||
)
|
||||
client.succeed("chmod 600 ~/.ssh/id_snakeoil")
|
||||
client.succeed("cp ${ssh-config} ~/.ssh/config")
|
||||
|
||||
$client->waitForUnit("network.target");
|
||||
$server->waitForUnit("sshd.service");
|
||||
client.wait_for_unit("network.target")
|
||||
server.wait_for_unit("sshd.service")
|
||||
|
||||
# we should not be able to connect as non-existing user
|
||||
$client->fail("ssh -o User=ghost -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'");
|
||||
client.fail("ssh ghost@server 'true'")
|
||||
|
||||
# we should be able to connect as mockuser
|
||||
$client->succeed("ssh -o User=mockuser -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'");
|
||||
client.succeed("ssh mockuser@server 'true'")
|
||||
# but we shouldn't be able to sudo
|
||||
$client->fail("ssh -o User=mockuser -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil '/run/wrappers/bin/sudo /run/current-system/sw/bin/id' | grep -q 'root'");
|
||||
client.fail(
|
||||
"ssh mockuser@server '/run/wrappers/bin/sudo /run/current-system/sw/bin/id' | grep -q 'root'"
|
||||
)
|
||||
|
||||
# we should also be able to log in as mockadmin
|
||||
$client->succeed("ssh -o User=mockadmin -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'");
|
||||
client.succeed("ssh mockadmin@server 'true'")
|
||||
# pam_oslogin_admin.so should now have generated a sudoers file
|
||||
$server->succeed("find /run/google-sudoers.d | grep -q '/run/google-sudoers.d/mockadmin'");
|
||||
server.succeed("find /run/google-sudoers.d | grep -q '/run/google-sudoers.d/mockadmin'")
|
||||
|
||||
# and we should be able to sudo
|
||||
$client->succeed("ssh -o User=mockadmin -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil '/run/wrappers/bin/sudo /run/current-system/sw/bin/id' | grep -q 'root'");
|
||||
client.succeed(
|
||||
"ssh mockadmin@server '/run/wrappers/bin/sudo /run/current-system/sw/bin/id' | grep -q 'root'"
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test.nix ({ pkgs, lib, ...} : {
|
||||
import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
||||
name = "gotify-server";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ ma27 ];
|
||||
|
@ -14,32 +14,32 @@ import ./make-test.nix ({ pkgs, lib, ...} : {
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
machine.start()
|
||||
|
||||
$machine->waitForUnit("gotify-server");
|
||||
$machine->waitForOpenPort(3000);
|
||||
machine.wait_for_unit("gotify-server.service")
|
||||
machine.wait_for_open_port(3000)
|
||||
|
||||
my $token = $machine->succeed(
|
||||
"curl --fail -sS -X POST localhost:3000/application -F name=nixos " .
|
||||
'-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" ' .
|
||||
'| jq .token | xargs echo -n'
|
||||
);
|
||||
token = machine.succeed(
|
||||
"curl --fail -sS -X POST localhost:3000/application -F name=nixos "
|
||||
+ '-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" '
|
||||
+ "| jq .token | xargs echo -n"
|
||||
)
|
||||
|
||||
my $usertoken = $machine->succeed(
|
||||
"curl --fail -sS -X POST localhost:3000/client -F name=nixos " .
|
||||
'-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" ' .
|
||||
'| jq .token | xargs echo -n'
|
||||
);
|
||||
usertoken = machine.succeed(
|
||||
"curl --fail -sS -X POST localhost:3000/client -F name=nixos "
|
||||
+ '-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" '
|
||||
+ "| jq .token | xargs echo -n"
|
||||
)
|
||||
|
||||
$machine->succeed(
|
||||
"curl --fail -sS -X POST 'localhost:3000/message?token=$token' -H 'Accept: application/json' " .
|
||||
'-F title=Gotify -F message=Works'
|
||||
);
|
||||
machine.succeed(
|
||||
f"curl --fail -sS -X POST 'localhost:3000/message?token={token}' -H 'Accept: application/json' "
|
||||
+ "-F title=Gotify -F message=Works"
|
||||
)
|
||||
|
||||
my $title = $machine->succeed(
|
||||
"curl --fail -sS 'localhost:3000/message?since=0&token=$usertoken' | jq '.messages|.[0]|.title' | xargs echo -n"
|
||||
);
|
||||
title = machine.succeed(
|
||||
f"curl --fail -sS 'localhost:3000/message?since=0&token={usertoken}' | jq '.messages|.[0]|.title' | xargs echo -n"
|
||||
)
|
||||
|
||||
$title eq "Gotify" or die "Wrong title ($title), expected 'Gotify'!";
|
||||
assert title == "Gotify"
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test.nix ({ pkgs, lib, ... }: {
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "graylog";
|
||||
meta.maintainers = with lib.maintainers; [ ma27 ];
|
||||
|
||||
|
@ -64,48 +64,52 @@ import ./make-test.nix ({ pkgs, lib, ... }: {
|
|||
facility = "Test";
|
||||
});
|
||||
in ''
|
||||
$machine->start;
|
||||
$machine->waitForUnit("graylog.service");
|
||||
$machine->waitForOpenPort(9000);
|
||||
$machine->succeed("curl -sSfL http://127.0.0.1:9000/");
|
||||
machine.start()
|
||||
machine.wait_for_unit("graylog.service")
|
||||
machine.wait_for_open_port(9000)
|
||||
machine.succeed("curl -sSfL http://127.0.0.1:9000/")
|
||||
|
||||
my $session = $machine->succeed("curl -X POST "
|
||||
. "-sSfL http://127.0.0.1:9000/api/system/sessions "
|
||||
. "-d \$(cat ${payloads.login}) "
|
||||
. "-H 'Content-Type: application/json' "
|
||||
. "-H 'Accept: application/json' "
|
||||
. "-H 'x-requested-by: cli' "
|
||||
. "| jq .session_id | xargs echo"
|
||||
);
|
||||
session = machine.succeed(
|
||||
"curl -X POST "
|
||||
+ "-sSfL http://127.0.0.1:9000/api/system/sessions "
|
||||
+ "-d $(cat ${payloads.login}) "
|
||||
+ "-H 'Content-Type: application/json' "
|
||||
+ "-H 'Accept: application/json' "
|
||||
+ "-H 'x-requested-by: cli' "
|
||||
+ "| jq .session_id | xargs echo"
|
||||
).rstrip()
|
||||
|
||||
chomp($session);
|
||||
machine.succeed(
|
||||
"curl -X POST "
|
||||
+ f"-sSfL http://127.0.0.1:9000/api/system/inputs -u {session}:session "
|
||||
+ '-d $(cat ${payloads.input} | sed -e "s,@node@,$(cat /var/lib/graylog/server/node-id),") '
|
||||
+ "-H 'Accept: application/json' "
|
||||
+ "-H 'Content-Type: application/json' "
|
||||
+ "-H 'x-requested-by: cli' "
|
||||
)
|
||||
|
||||
$machine->succeed("curl -X POST "
|
||||
. "-sSfL http://127.0.0.1:9000/api/system/inputs -u $session:session "
|
||||
. "-d \$(cat ${payloads.input} | sed -e \"s,\@node\@,\$(cat /var/lib/graylog/server/node-id),\") "
|
||||
. "-H 'Accept: application/json' "
|
||||
. "-H 'Content-Type: application/json' "
|
||||
. "-H 'x-requested-by: cli' "
|
||||
);
|
||||
machine.wait_until_succeeds(
|
||||
"test \"$(curl -sSfL 'http://127.0.0.1:9000/api/cluster/inputstates' "
|
||||
+ f"-u {session}:session "
|
||||
+ "-H 'Accept: application/json' "
|
||||
+ "-H 'Content-Type: application/json' "
|
||||
+ "-H 'x-requested-by: cli'"
|
||||
+ "| jq 'to_entries[]|.value|.[0]|.state' | xargs echo"
|
||||
+ ')" = "RUNNING"'
|
||||
)
|
||||
|
||||
$machine->waitUntilSucceeds("test \"\$(curl -sSfL 'http://127.0.0.1:9000/api/cluster/inputstates' "
|
||||
. "-u $session:session "
|
||||
. "-H 'Accept: application/json' "
|
||||
. "-H 'Content-Type: application/json' "
|
||||
. "-H 'x-requested-by: cli'"
|
||||
. "| jq 'to_entries[]|.value|.[0]|.state' | xargs echo"
|
||||
. ")\" = \"RUNNING\""
|
||||
);
|
||||
machine.succeed(
|
||||
"echo -n $(cat ${payloads.gelf_message}) | nc -w10 -u 127.0.0.1 12201"
|
||||
)
|
||||
|
||||
$machine->succeed("echo -n \$(cat ${payloads.gelf_message}) | nc -w10 -u 127.0.0.1 12201");
|
||||
|
||||
$machine->succeed("test \"\$(curl -X GET "
|
||||
. "-sSfL 'http://127.0.0.1:9000/api/search/universal/relative?query=*' "
|
||||
. "-u $session:session "
|
||||
. "-H 'Accept: application/json' "
|
||||
. "-H 'Content-Type: application/json' "
|
||||
. "-H 'x-requested-by: cli'"
|
||||
. " | jq '.total_results' | xargs echo)\" = \"1\""
|
||||
);
|
||||
machine.succeed(
|
||||
'test "$(curl -X GET '
|
||||
+ "-sSfL 'http://127.0.0.1:9000/api/search/universal/relative?query=*' "
|
||||
+ f"-u {session}:session "
|
||||
+ "-H 'Accept: application/json' "
|
||||
+ "-H 'Content-Type: application/json' "
|
||||
+ "-H 'x-requested-by: cli'"
|
||||
+ ' | jq \'.total_results\' | xargs echo)" = "1"'
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Test whether mysqlBackup option works
|
||||
import ./make-test.nix ({ pkgs, ... } : {
|
||||
import ./make-test-python.nix ({ pkgs, ... } : {
|
||||
name = "mysql-backup";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ rvl ];
|
||||
|
@ -20,31 +20,37 @@ import ./make-test.nix ({ pkgs, ... } : {
|
|||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
'' startAll;
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
# Delete backup file that may be left over from a previous test run.
|
||||
# This is not needed on Hydra but useful for repeated local test runs.
|
||||
$master->execute("rm -f /var/backup/mysql/testdb.gz");
|
||||
master.execute("rm -f /var/backup/mysql/testdb.gz")
|
||||
|
||||
# Need to have mysql started so that it can be populated with data.
|
||||
$master->waitForUnit("mysql.service");
|
||||
master.wait_for_unit("mysql.service")
|
||||
|
||||
# Wait for testdb to be fully populated (5 rows).
|
||||
$master->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
||||
master.wait_until_succeeds(
|
||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
# Do a backup and wait for it to start
|
||||
$master->startJob("mysql-backup.service");
|
||||
$master->waitForJob("mysql-backup.service");
|
||||
master.start_job("mysql-backup.service")
|
||||
master.wait_for_unit("mysql-backup.service")
|
||||
|
||||
# wait for backup to fail, because of database 'doesnotexist'
|
||||
$master->waitUntilFails("systemctl is-active -q mysql-backup.service");
|
||||
master.wait_until_fails("systemctl is-active -q mysql-backup.service")
|
||||
|
||||
# wait for backup file and check that data appears in backup
|
||||
$master->waitForFile("/var/backup/mysql/testdb.gz");
|
||||
$master->succeed("${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello");
|
||||
master.wait_for_file("/var/backup/mysql/testdb.gz")
|
||||
master.succeed(
|
||||
"${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello"
|
||||
)
|
||||
|
||||
# Check that a failed backup is logged
|
||||
$master->succeed("journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null");
|
||||
master.succeed(
|
||||
"journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null"
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test.nix ({ pkgs, ...} :
|
||||
import ./make-test-python.nix ({ pkgs, ...} :
|
||||
|
||||
let
|
||||
replicateUser = "replicate";
|
||||
|
@ -54,28 +54,36 @@ in
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
$master->start;
|
||||
$master->waitForUnit("mysql");
|
||||
$master->waitForOpenPort(3306);
|
||||
master.start()
|
||||
master.wait_for_unit("mysql")
|
||||
master.wait_for_open_port(3306)
|
||||
# Wait for testdb to be fully populated (5 rows).
|
||||
$master->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
||||
master.wait_until_succeeds(
|
||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
$slave1->start;
|
||||
$slave2->start;
|
||||
$slave1->waitForUnit("mysql");
|
||||
$slave1->waitForOpenPort(3306);
|
||||
$slave2->waitForUnit("mysql");
|
||||
$slave2->waitForOpenPort(3306);
|
||||
slave1.start()
|
||||
slave2.start()
|
||||
slave1.wait_for_unit("mysql")
|
||||
slave1.wait_for_open_port(3306)
|
||||
slave2.wait_for_unit("mysql")
|
||||
slave2.wait_for_open_port(3306)
|
||||
|
||||
# wait for replications to finish
|
||||
$slave1->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
||||
$slave2->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
||||
slave1.wait_until_succeeds(
|
||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
slave2.wait_until_succeeds(
|
||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
$slave2->succeed("systemctl stop mysql");
|
||||
$master->succeed("echo 'insert into testdb.tests values (123, 456);' | mysql -u root -N");
|
||||
$slave2->succeed("systemctl start mysql");
|
||||
$slave2->waitForUnit("mysql");
|
||||
$slave2->waitForOpenPort(3306);
|
||||
$slave2->waitUntilSucceeds("echo 'select * from testdb.tests where Id = 123;' | mysql -u root -N | grep 456");
|
||||
slave2.succeed("systemctl stop mysql")
|
||||
master.succeed("echo 'insert into testdb.tests values (123, 456);' | mysql -u root -N")
|
||||
slave2.succeed("systemctl start mysql")
|
||||
slave2.wait_for_unit("mysql")
|
||||
slave2.wait_for_open_port(3306)
|
||||
slave2.wait_until_succeeds(
|
||||
"echo 'select * from testdb.tests where Id = 123;' | mysql -u root -N | grep 456"
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test.nix ({ pkgs, ...} : {
|
||||
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
name = "mysql";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ eelco shlevy ];
|
||||
|
@ -47,17 +47,23 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
start_all
|
||||
|
||||
$mysql->waitForUnit("mysql");
|
||||
$mysql->succeed("echo 'use empty_testdb;' | mysql -u root");
|
||||
$mysql->succeed("echo 'use testdb; select * from tests;' | mysql -u root -N | grep 4");
|
||||
mysql.wait_for_unit("mysql")
|
||||
mysql.succeed("echo 'use empty_testdb;' | mysql -u root")
|
||||
mysql.succeed("echo 'use testdb; select * from tests;' | mysql -u root -N | grep 4")
|
||||
# ';' acts as no-op, just check whether login succeeds with the user created from the initialScript
|
||||
$mysql->succeed("echo ';' | mysql -u passworduser --password=password123");
|
||||
mysql.succeed("echo ';' | mysql -u passworduser --password=password123")
|
||||
|
||||
$mariadb->waitForUnit("mysql");
|
||||
$mariadb->succeed("echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser");
|
||||
$mariadb->succeed("echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser");
|
||||
$mariadb->succeed("echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42");
|
||||
mariadb.wait_for_unit("mysql")
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42"
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test.nix ({ pkgs, lib, ... }:
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
let inherit (import ./ssh-keys.nix pkgs)
|
||||
snakeOilPrivateKey snakeOilPublicKey;
|
||||
ssh-config = builtins.toFile "ssh.conf" ''
|
||||
|
@ -18,22 +18,28 @@ in
|
|||
client.nix.package = pkgs.nix;
|
||||
};
|
||||
testScript = ''
|
||||
startAll;
|
||||
start_all()
|
||||
|
||||
$client->succeed("mkdir -m 700 /root/.ssh");
|
||||
$client->copyFileFromHost("${ssh-config}", "/root/.ssh/config");
|
||||
$client->succeed("cat ${snakeOilPrivateKey} > /root/.ssh/id_ecdsa");
|
||||
$client->succeed("chmod 600 /root/.ssh/id_ecdsa");
|
||||
client.succeed("mkdir -m 700 /root/.ssh")
|
||||
client.succeed(
|
||||
"cat ${ssh-config} > /root/.ssh/config"
|
||||
)
|
||||
client.succeed(
|
||||
"cat ${snakeOilPrivateKey} > /root/.ssh/id_ecdsa"
|
||||
)
|
||||
client.succeed("chmod 600 /root/.ssh/id_ecdsa")
|
||||
|
||||
$client->succeed("nix-store --add /etc/machine-id > mach-id-path");
|
||||
client.succeed("nix-store --add /etc/machine-id > mach-id-path")
|
||||
|
||||
$server->waitForUnit("sshd");
|
||||
server.wait_for_unit("sshd")
|
||||
|
||||
$client->fail("diff /root/other-store\$(cat mach-id-path) /etc/machine-id");
|
||||
client.fail("diff /root/other-store$(cat mach-id-path) /etc/machine-id")
|
||||
# Currently due to shared store this is a noop :(
|
||||
$client->succeed("nix copy --to ssh-ng://nix-ssh\@server \$(cat mach-id-path)");
|
||||
$client->succeed("nix-store --realise \$(cat mach-id-path) --store /root/other-store --substituters ssh-ng://nix-ssh\@server");
|
||||
$client->succeed("diff /root/other-store\$(cat mach-id-path) /etc/machine-id");
|
||||
client.succeed("nix copy --to ssh-ng://nix-ssh@server $(cat mach-id-path)")
|
||||
client.succeed(
|
||||
"nix-store --realise $(cat mach-id-path) --store /root/other-store --substituters ssh-ng://nix-ssh@server"
|
||||
)
|
||||
client.succeed("diff /root/other-store$(cat mach-id-path) /etc/machine-id")
|
||||
'';
|
||||
}
|
||||
)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ./make-test.nix ({pkgs, lib, ...}:
|
||||
import ./make-test-python.nix ({pkgs, lib, ...}:
|
||||
let
|
||||
gpgKeyring = (pkgs.runCommand "gpg-keyring" { buildInputs = [ pkgs.gnupg ]; } ''
|
||||
mkdir -p $out
|
||||
|
@ -32,7 +32,7 @@ let
|
|||
gpg --batch --sign --detach-sign --output SHA256SUMS.gpg SHA256SUMS
|
||||
'');
|
||||
in {
|
||||
name = "opensmtpd";
|
||||
name = "systemd-nspawn";
|
||||
|
||||
nodes = {
|
||||
server = { pkgs, ... }: {
|
||||
|
@ -48,11 +48,13 @@ in {
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
start_all()
|
||||
|
||||
$server->waitForUnit("nginx.service");
|
||||
$client->waitForUnit("network-online.target");
|
||||
$client->succeed("machinectl pull-raw --verify=signature http://server/testimage.raw");
|
||||
$client->succeed("cmp /var/lib/machines/testimage.raw ${nspawnImages}/testimage.raw");
|
||||
server.wait_for_unit("nginx.service")
|
||||
client.wait_for_unit("network-online.target")
|
||||
client.succeed("machinectl pull-raw --verify=signature http://server/testimage.raw")
|
||||
client.succeed(
|
||||
"cmp /var/lib/machines/testimage.raw ${nspawnImages}/testimage.raw"
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
import ./make-test.nix ({ pkgs, ... }:
|
||||
import ./make-test-python.nix ({ pkgs, ... }:
|
||||
|
||||
{
|
||||
name = "wordpress";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ grahamc ]; # under duress!
|
||||
maintainers = [
|
||||
flokli
|
||||
grahamc # under duress!
|
||||
mmilata
|
||||
];
|
||||
};
|
||||
|
||||
machine =
|
||||
|
@ -23,19 +27,31 @@ import ./make-test.nix ({ pkgs, ... }:
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
import re
|
||||
|
||||
$machine->waitForUnit("httpd");
|
||||
$machine->waitForUnit("phpfpm-wordpress-site1.local");
|
||||
$machine->waitForUnit("phpfpm-wordpress-site2.local");
|
||||
start_all()
|
||||
|
||||
$machine->succeed("curl -L site1.local | grep 'Welcome to the famous'");
|
||||
$machine->succeed("curl -L site2.local | grep 'Welcome to the famous'");
|
||||
machine.wait_for_unit("httpd")
|
||||
|
||||
$machine->succeed("systemctl --no-pager show wordpress-init-site1.local.service | grep 'ExecStart=.*status=0'");
|
||||
$machine->succeed("systemctl --no-pager show wordpress-init-site2.local.service | grep 'ExecStart=.*status=0'");
|
||||
$machine->succeed("grep -E '^define.*NONCE_SALT.{64,};\$' /var/lib/wordpress/site1.local/secret-keys.php");
|
||||
$machine->succeed("grep -E '^define.*NONCE_SALT.{64,};\$' /var/lib/wordpress/site2.local/secret-keys.php");
|
||||
machine.wait_for_unit("phpfpm-wordpress-site1.local")
|
||||
machine.wait_for_unit("phpfpm-wordpress-site2.local")
|
||||
|
||||
site_names = ["site1.local", "site2.local"]
|
||||
|
||||
with subtest("website returns welcome screen"):
|
||||
for site_name in site_names:
|
||||
assert "Welcome to the famous" in machine.succeed(f"curl -L {site_name}")
|
||||
|
||||
with subtest("wordpress-init went through"):
|
||||
for site_name in site_names:
|
||||
info = machine.get_unit_info(f"wordpress-init-{site_name}")
|
||||
assert info.Result == "success"
|
||||
|
||||
with subtest("secret keys are set"):
|
||||
re.compile(r"^define.*NONCE_SALT.{64,};$")
|
||||
for site_name in site_names:
|
||||
assert r.match(
|
||||
machine.succeed(f"cat /var/lib/wordpress/{site_name}/secret-keys.php")
|
||||
)
|
||||
'';
|
||||
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ../make-test.nix {
|
||||
import ../make-test-python.nix {
|
||||
name = "prosody-mysql";
|
||||
|
||||
nodes = {
|
||||
|
@ -57,21 +57,21 @@ import ../make-test.nix {
|
|||
};
|
||||
|
||||
testScript = { nodes, ... }: ''
|
||||
$mysql->waitForUnit('mysql.service');
|
||||
$server->waitForUnit('prosody.service');
|
||||
$server->succeed('prosodyctl status') =~ /Prosody is running/;
|
||||
mysql.wait_for_unit("mysql.service")
|
||||
server.wait_for_unit("prosody.service")
|
||||
server.succeed('prosodyctl status | grep "Prosody is running"')
|
||||
|
||||
# set password to 'nothunter2' (it's asked twice)
|
||||
$server->succeed('yes nothunter2 | prosodyctl adduser cthon98@example.com');
|
||||
server.succeed("yes nothunter2 | prosodyctl adduser cthon98@example.com")
|
||||
# set password to 'y'
|
||||
$server->succeed('yes | prosodyctl adduser azurediamond@example.com');
|
||||
server.succeed("yes | prosodyctl adduser azurediamond@example.com")
|
||||
# correct password to 'hunter2'
|
||||
$server->succeed('yes hunter2 | prosodyctl passwd azurediamond@example.com');
|
||||
server.succeed("yes hunter2 | prosodyctl passwd azurediamond@example.com")
|
||||
|
||||
$client->succeed("send-message");
|
||||
client.succeed("send-message")
|
||||
|
||||
$server->succeed('prosodyctl deluser cthon98@example.com');
|
||||
$server->succeed('prosodyctl deluser azurediamond@example.com');
|
||||
server.succeed("prosodyctl deluser cthon98@example.com")
|
||||
server.succeed("prosodyctl deluser azurediamond@example.com")
|
||||
'';
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ../make-test.nix {
|
||||
import ../make-test-python.nix {
|
||||
name = "prosody";
|
||||
|
||||
nodes = {
|
||||
|
@ -28,19 +28,19 @@ import ../make-test.nix {
|
|||
};
|
||||
|
||||
testScript = { nodes, ... }: ''
|
||||
$server->waitForUnit('prosody.service');
|
||||
$server->succeed('prosodyctl status') =~ /Prosody is running/;
|
||||
server.wait_for_unit("prosody.service")
|
||||
server.succeed('prosodyctl status | grep "Prosody is running"')
|
||||
|
||||
# set password to 'nothunter2' (it's asked twice)
|
||||
$server->succeed('yes nothunter2 | prosodyctl adduser cthon98@example.com');
|
||||
server.succeed("yes nothunter2 | prosodyctl adduser cthon98@example.com")
|
||||
# set password to 'y'
|
||||
$server->succeed('yes | prosodyctl adduser azurediamond@example.com');
|
||||
# correct password to 'hunter2'
|
||||
$server->succeed('yes hunter2 | prosodyctl passwd azurediamond@example.com');
|
||||
server.succeed("yes | prosodyctl adduser azurediamond@example.com")
|
||||
# correct password to "hunter2"
|
||||
server.succeed("yes hunter2 | prosodyctl passwd azurediamond@example.com")
|
||||
|
||||
$client->succeed("send-message");
|
||||
client.succeed("send-message")
|
||||
|
||||
$server->succeed('prosodyctl deluser cthon98@example.com');
|
||||
$server->succeed('prosodyctl deluser azurediamond@example.com');
|
||||
server.succeed("prosodyctl deluser cthon98@example.com")
|
||||
server.succeed("prosodyctl deluser azurediamond@example.com")
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{ stdenv, fetchFromGitHub, cmake, pkgconfig, alsaLib ? null, fftwFloat, fltk13
|
||||
, fluidsynth_1 ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null
|
||||
, libsamplerate, libsoundio ? null, libsndfile, libvorbis ? null, portaudio ? null
|
||||
, qtbase, qtx11extras, qttools, SDL ? null }:
|
||||
, qtbase, qtx11extras, qttools, SDL ? null, mkDerivation }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
mkDerivation rec {
|
||||
pname = "lmms";
|
||||
version = "1.2.0-rc7";
|
||||
|
||||
|
@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
|
|||
description = "DAW similar to FL Studio (music production software)";
|
||||
homepage = https://lmms.io;
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||
maintainers = with maintainers; [ goibhniu yegortimoshenko ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ mkDerivation rec {
|
|||
# https://cgit.kde.org/kdevelop.git/commit/?id=716372ae2e8dff9c51e94d33443536786e4bd85b
|
||||
# required as nixos seems to be unable to find CLANG_BUILTIN_DIR
|
||||
cmakeFlags = [
|
||||
"-DCLANG_BUILTIN_DIR=${llvmPackages.clang-unwrapped}/lib/clang/${(builtins.parseDrvName llvmPackages.clang.name).version}/include"
|
||||
"-DCLANG_BUILTIN_DIR=${llvmPackages.clang-unwrapped}/lib/clang/${lib.getVersion llvmPackages.clang}/include"
|
||||
];
|
||||
|
||||
dontWrapQtApps = true;
|
||||
|
|
|
@ -30,14 +30,14 @@ let
|
|||
license_dir = "~/.config/houdini";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
version = "17.0.352";
|
||||
version = "17.5.327";
|
||||
pname = "houdini-runtime";
|
||||
src = requireFile rec {
|
||||
name = "houdini-${version}-linux_x86_64_gcc6.3.tar.gz";
|
||||
sha256 = "0cl5fkgaplb0cvv7mli06ffc9j4ngpy8hl5zqabj3d645gcgafjg";
|
||||
sha256 = "1byigmhmby8lgi2vmgxy9jlrrqk7jyr507zqkihq5bv8kfsanv1x";
|
||||
message = ''
|
||||
This nix expression requires that ${name} is already part of the store.
|
||||
Download it from https://sidefx.com and add it to the nix store with:
|
||||
Download it from https://www.sidefx.com and add it to the nix store with:
|
||||
|
||||
nix-prefetch-url <URL>
|
||||
|
||||
|
@ -78,7 +78,7 @@ stdenv.mkDerivation rec {
|
|||
'';
|
||||
meta = {
|
||||
description = "3D animation application software";
|
||||
homepage = https://sidefx.com;
|
||||
homepage = https://www.sidefx.com;
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
maintainers = [ stdenv.lib.maintainers.canndrew ];
|
||||
|
|
|
@ -1,17 +1,27 @@
|
|||
{ stdenv, fetchurl, pkgconfig, neon, libusb, openssl, udev, avahi, freeipmi
|
||||
, libtool, makeWrapper, nss }:
|
||||
, libtool, makeWrapper, autoreconfHook, fetchpatch
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "nut-2.7.4";
|
||||
pname = "nut";
|
||||
version = "2.7.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.networkupstools.org/source/2.7/${name}.tar.gz";
|
||||
url = "https://networkupstools.org/source/2.7/${pname}-${version}.tar.gz";
|
||||
sha256 = "19r5dm07sfz495ckcgbfy0pasx0zy3faa0q7bih69lsjij8q43lq";
|
||||
};
|
||||
|
||||
buildInputs = [ neon libusb openssl udev avahi freeipmi libtool nss ];
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
# Fix build with openssl >= 1.1.0
|
||||
url = "https://github.com/networkupstools/nut/commit/612c05efb3c3b243da603a3a050993281888b6e3.patch";
|
||||
sha256 = "0jdbii1z5sqyv24286j5px65j7b3gp8zk3ahbph83pig6g46m3hs";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig makeWrapper ];
|
||||
buildInputs = [ neon libusb openssl udev avahi freeipmi ];
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook libtool pkgconfig makeWrapper ];
|
||||
|
||||
configureFlags =
|
||||
[ "--with-all"
|
||||
|
@ -26,7 +36,6 @@ stdenv.mkDerivation rec {
|
|||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/nut-scanner --prefix LD_LIBRARY_PATH : \
|
||||
"$out/lib:${neon}/lib:${libusb.out}/lib:${avahi}/lib:${freeipmi}/lib"
|
||||
|
@ -39,7 +48,7 @@ stdenv.mkDerivation rec {
|
|||
interface for monitoring and administering UPS, PDU and SCD hardware.
|
||||
It uses a layered approach to connect all of the parts.
|
||||
'';
|
||||
homepage = http://www.networkupstools.org/;
|
||||
homepage = https://networkupstools.org/;
|
||||
repositories.git = https://github.com/networkupstools/nut.git;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.pierron ];
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
let
|
||||
|
||||
getDesktopFileName = drvName: (builtins.parseDrvName drvName).name;
|
||||
|
||||
# TODO: Should we move this to `lib`? Seems like its would be useful in many cases.
|
||||
extensionOf = filePath:
|
||||
lib.concatStringsSep "." (lib.tail (lib.splitString "." (builtins.baseNameOf filePath)));
|
||||
|
@ -15,15 +13,15 @@ let
|
|||
'') icons);
|
||||
|
||||
mkSweetHome3D =
|
||||
{ name, module, version, src, license, description, desktopName, icons }:
|
||||
{ pname, module, version, src, license, description, desktopName, icons }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
inherit name version src description;
|
||||
inherit pname version src description;
|
||||
exec = stdenv.lib.toLower module;
|
||||
sweethome3dItem = makeDesktopItem {
|
||||
inherit exec desktopName;
|
||||
name = getDesktopFileName name;
|
||||
icon = getDesktopFileName name;
|
||||
name = pname;
|
||||
icon = pname;
|
||||
comment = description;
|
||||
genericName = "Computer Aided (Interior) Design";
|
||||
categories = "Application;Graphics;2DGraphics;3DGraphics;";
|
||||
|
@ -49,7 +47,7 @@ let
|
|||
mkdir -p $out/bin
|
||||
cp install/${module}-${version}.jar $out/share/java/.
|
||||
|
||||
${installIcons (getDesktopFileName name) icons}
|
||||
${installIcons pname icons}
|
||||
|
||||
cp "${sweethome3dItem}/share/applications/"* $out/share/applications
|
||||
|
||||
|
@ -74,9 +72,9 @@ let
|
|||
in {
|
||||
|
||||
application = mkSweetHome3D rec {
|
||||
pname = stdenv.lib.toLower module + "-application";
|
||||
version = "6.2";
|
||||
module = "SweetHome3D";
|
||||
name = stdenv.lib.toLower module + "-application-" + version;
|
||||
description = "Design and visualize your future home";
|
||||
license = stdenv.lib.licenses.gpl2Plus;
|
||||
src = fetchsvn {
|
||||
|
|
|
@ -7,20 +7,17 @@ let
|
|||
m: "sweethome3d-"
|
||||
+ removeSuffix "libraryeditor" (toLower m)
|
||||
+ "-editor";
|
||||
sweetName = m: v: sweetExec m + "-" + v;
|
||||
|
||||
getDesktopFileName = drvName: (builtins.parseDrvName drvName).name;
|
||||
|
||||
mkEditorProject =
|
||||
{ name, module, version, src, license, description, desktopName }:
|
||||
{ pname, module, version, src, license, description, desktopName }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
application = sweethome3dApp;
|
||||
inherit name module version src description;
|
||||
inherit pname module version src description;
|
||||
exec = sweetExec module;
|
||||
editorItem = makeDesktopItem {
|
||||
inherit exec desktopName;
|
||||
name = getDesktopFileName name;
|
||||
name = pname;
|
||||
comment = description;
|
||||
genericName = "Computer Aided (Interior) Design";
|
||||
categories = "Application;Graphics;2DGraphics;3DGraphics;";
|
||||
|
@ -66,7 +63,7 @@ in {
|
|||
textures-editor = mkEditorProject rec {
|
||||
version = "1.5";
|
||||
module = "TexturesLibraryEditor";
|
||||
name = sweetName module version;
|
||||
pname = module;
|
||||
description = "Easily create SH3T files and edit the properties of the texture images it contain";
|
||||
license = stdenv.lib.licenses.gpl2Plus;
|
||||
src = fetchcvs {
|
||||
|
@ -81,7 +78,7 @@ in {
|
|||
furniture-editor = mkEditorProject rec {
|
||||
version = "1.19";
|
||||
module = "FurnitureLibraryEditor";
|
||||
name = sweetName module version;
|
||||
pname = module;
|
||||
description = "Quickly create SH3F files and edit the properties of the 3D models it contain";
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
src = fetchcvs {
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
{ stdenv, fetchurl, cmake }:
|
||||
{ stdenv, fetchFromGitHub, cmake }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "timewarrior";
|
||||
version = "1.1.1";
|
||||
version = "1.2.0";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://taskwarrior.org/download/timew-${version}.tar.gz";
|
||||
sha256 = "1jfcfzdwk5qqhxznj1bgy0sx3lnp3z5lqr9kch9a7iazwmi9lz8z";
|
||||
src = fetchFromGitHub {
|
||||
owner = "GothenburgBitFactory";
|
||||
repo = "timewarrior";
|
||||
rev = "v${version}";
|
||||
sha256 = "0ci8kb7gdp1dsv6xj30nbz8lidrmn50pbriw26wv8mdhs17rfk7w";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{ stdenv, fetchFromGitHub, autoreconfHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.4.17";
|
||||
version = "1.4.18";
|
||||
pname = "tnef";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "verdammelt";
|
||||
repo = "tnef";
|
||||
rev = version;
|
||||
sha256 = "0cq2xh5wd74qn6k2nnw5rayxgqhjl3jbzf4zlc4babcwxrv32ldh";
|
||||
sha256 = "104g48mcm00bgiyzas2vf86331w7bnw7h3bc11ib4lp7rz6zqfck";
|
||||
};
|
||||
|
||||
doCheck = true;
|
||||
|
|
28
pkgs/applications/misc/zola/cargo-lock.patch
Normal file
28
pkgs/applications/misc/zola/cargo-lock.patch
Normal file
|
@ -0,0 +1,28 @@
|
|||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index df5fef3..80f071a 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -2158,12 +2158,12 @@ version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "sass-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "sass-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sass-sys"
|
||||
-version = "0.4.13"
|
||||
+version = "0.4.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -3410,7 +3410,7 @@ dependencies = [
|
||||
"checksum safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b08423011dae9a5ca23f07cf57dac3857f5c885d352b76f6d95f4aea9434d0"
|
||||
"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421"
|
||||
"checksum sass-rs 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cabcf7c6e55053f359911187ac401409aad2dc14338cae972dec266fee486abd"
|
||||
-"checksum sass-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6e16ac97c2335bc367e2d675f54c1823558f1b19a6c67671d48b70e30ae22972"
|
||||
+"checksum sass-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)" = "304b6f9501d1da13f17404aeee85486d7383d06074906669b3ea032f81e83d22"
|
||||
"checksum schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021"
|
||||
"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
|
||||
"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
|
|
@ -8,10 +8,11 @@ rustPlatform.buildRustPackage rec {
|
|||
owner = "getzola";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0dbj2rkn4k5glnwdazsvjhah5pj9cbdb8hwlvm5q4njsmrgpyaw5";
|
||||
sha256 = "13kbgxh7r6124d1fjdf0x599j1kpgixp1y9d299zb5vrd6rf5wy5";
|
||||
};
|
||||
cargoPatches = [ ./cargo-lock.patch ];
|
||||
|
||||
cargoSha256 = "0i0xqbpbv3md42d2853cfzkhfwlkvxahhz5dldla5x96rm1i2hr8";
|
||||
cargoSha256 = "03rwf5l1l3ap03qi0xqcxsbyvpg3cqmr50j8ql6c5v55xl0ki9w8";
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
buildInputs = [ openssl ]
|
||||
|
|
|
@ -150,8 +150,8 @@ let
|
|||
# ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
|
||||
# ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
|
||||
] ++ optionals (useVaapi) [
|
||||
# source: https://aur.archlinux.org/cgit/aur.git/plain/chromium-vaapi.patch?h=chromium-vaapi
|
||||
./patches/chromium-vaapi.patch
|
||||
# source: https://aur.archlinux.org/cgit/aur.git/tree/vaapi-fix.patch?h=chromium-vaapi
|
||||
./patches/vaapi-fix.patch
|
||||
] ++ optional stdenv.isAarch64 (fetchpatch {
|
||||
url = https://raw.githubusercontent.com/OSSystems/meta-browser/e4a667deaaf9a26a3a1aeb355770d1f29da549ad/recipes-browser/chromium/files/aarch64-skia-build-fix.patch;
|
||||
postFetch = "substituteInPlace $out --replace __aarch64__ SK_CPU_ARM64";
|
||||
|
|
|
@ -1,117 +0,0 @@
|
|||
From abc7295ca1653c85472916909f0eb76e28e79a58 Mon Sep 17 00:00:00 2001
|
||||
From: Akarshan Biswas <akarshan.biswas@gmail.com>
|
||||
Date: Thu, 24 Jan 2019 12:45:29 +0530
|
||||
Subject: [PATCH] Enable mojo with VDA2 on Linux
|
||||
|
||||
---
|
||||
chrome/browser/about_flags.cc | 8 ++++----
|
||||
chrome/browser/flag_descriptions.cc | 9 +++++++--
|
||||
chrome/browser/flag_descriptions.h | 10 ++++++++--
|
||||
gpu/config/software_rendering_list.json | 3 ++-
|
||||
media/media_options.gni | 9 ++++++---
|
||||
media/mojo/services/gpu_mojo_media_client.cc | 4 ++--
|
||||
6 files changed, 29 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
index 0a84c6ac1..be2aa1d8b 100644
|
||||
--- a/chrome/browser/about_flags.cc
|
||||
+++ b/chrome/browser/about_flags.cc
|
||||
@@ -1714,7 +1714,7 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
"disable-accelerated-video-decode",
|
||||
flag_descriptions::kAcceleratedVideoDecodeName,
|
||||
flag_descriptions::kAcceleratedVideoDecodeDescription,
|
||||
- kOsMac | kOsWin | kOsCrOS | kOsAndroid,
|
||||
+ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux,
|
||||
SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
|
||||
},
|
||||
#if defined(OS_WIN)
|
||||
@@ -2345,12 +2345,12 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)},
|
||||
#endif // ENABLE_ISOLATED_XR_SERVICE
|
||||
#endif // ENABLE_VR
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
{"disable-accelerated-mjpeg-decode",
|
||||
flag_descriptions::kAcceleratedMjpegDecodeName,
|
||||
- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS,
|
||||
+ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux,
|
||||
SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
|
||||
-#endif // OS_CHROMEOS
|
||||
+#endif // OS_CHROMEOS // OS_LINUX
|
||||
{"v8-cache-options", flag_descriptions::kV8CacheOptionsName,
|
||||
flag_descriptions::kV8CacheOptionsDescription, kOsAll,
|
||||
MULTI_VALUE_TYPE(kV8CacheOptionsChoices)},
|
||||
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
|
||||
index 62637e092..86f89fc6e 100644
|
||||
--- a/chrome/browser/flag_descriptions.cc
|
||||
+++ b/chrome/browser/flag_descriptions.cc
|
||||
@@ -3085,15 +3085,20 @@ const char kTextSuggestionsTouchBarDescription[] =
|
||||
|
||||
#endif
|
||||
|
||||
-// Chrome OS -------------------------------------------------------------------
|
||||
+// Chrome OS Linux-------------------------------------------------------------------
|
||||
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
|
||||
|
||||
const char kAcceleratedMjpegDecodeName[] =
|
||||
"Hardware-accelerated mjpeg decode for captured frame";
|
||||
const char kAcceleratedMjpegDecodeDescription[] =
|
||||
"Enable hardware-accelerated mjpeg decode for captured frame where "
|
||||
"available.";
|
||||
+#endif
|
||||
+
|
||||
+// Chrome OS --------------------------------------------------
|
||||
+
|
||||
+#if defined(OS_CHROMEOS)
|
||||
|
||||
const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click";
|
||||
const char kAllowTouchpadThreeFingerClickDescription[] =
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
index 5dac660bb..6cc4115da 100644
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -1846,13 +1846,19 @@ extern const char kPermissionPromptPersistenceToggleDescription[];
|
||||
|
||||
#endif // defined(OS_MACOSX)
|
||||
|
||||
-// Chrome OS ------------------------------------------------------------------
|
||||
+// Chrome OS and Linux ------------------------------------------------------------------
|
||||
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
|
||||
|
||||
extern const char kAcceleratedMjpegDecodeName[];
|
||||
extern const char kAcceleratedMjpegDecodeDescription[];
|
||||
|
||||
+#endif // defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
|
||||
+
|
||||
+// Chrome OS ------------------------------------------------------------------------
|
||||
+
|
||||
+#if defined(OS_CHROMEOS)
|
||||
+
|
||||
extern const char kAllowTouchpadThreeFingerClickName[];
|
||||
extern const char kAllowTouchpadThreeFingerClickDescription[];
|
||||
|
||||
diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
|
||||
index 65f37b3f1..ae8a1718f 100644
|
||||
--- a/gpu/config/software_rendering_list.json
|
||||
+++ b/gpu/config/software_rendering_list.json
|
||||
@@ -371,11 +371,12 @@
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
- "description": "Accelerated video decode is unavailable on Linux",
|
||||
+ "description": "Accelerated VA-API video decode is not supported on NVIDIA platforms",
|
||||
"cr_bugs": [137247],
|
||||
"os": {
|
||||
"type": "linux"
|
||||
},
|
||||
+ "vendor_id": "0x10de",
|
||||
"features": [
|
||||
"accelerated_video_decode"
|
||||
]
|
||||
--
|
||||
2.20.1
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
|
||||
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
|
||||
@@ -635,6 +635,7 @@
|
||||
// |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
|
||||
// internal decoded frame.
|
||||
if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
|
||||
+ buffer_allocation_mode_ != BufferAllocationMode::kWrapVdpau &&
|
||||
!vpp_vaapi_wrapper_) {
|
||||
vpp_vaapi_wrapper_ = VaapiWrapper::Create(
|
||||
VaapiWrapper::kVideoProcess, VAProfileNone,
|
||||
@@ -650,7 +651,8 @@
|
||||
// only used as a copy destination. Therefore, the VaapiWrapper used and
|
||||
// owned by |picture| is |vpp_vaapi_wrapper_|.
|
||||
std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
|
||||
- (buffer_allocation_mode_ == BufferAllocationMode::kNone)
|
||||
+ ((buffer_allocation_mode_ == BufferAllocationMode::kNone) ||
|
||||
+ (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau))
|
||||
? vaapi_wrapper_
|
||||
: vpp_vaapi_wrapper_,
|
||||
make_context_current_cb_, bind_image_cb_, buffers[i]);
|
||||
@@ -1077,6 +1079,14 @@
|
||||
|
||||
VaapiVideoDecodeAccelerator::BufferAllocationMode
|
||||
VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
|
||||
+ // NVIDIA blobs use VDPAU
|
||||
+ if (base::StartsWith(VaapiWrapper::GetVendorStringForTesting(),
|
||||
+ "Splitted-Desktop Systems VDPAU",
|
||||
+ base::CompareCase::SENSITIVE)) {
|
||||
+ LOG(INFO) << "VA-API driver on VDPAU backend";
|
||||
+ return BufferAllocationMode::kWrapVdpau;
|
||||
+ }
|
||||
+
|
||||
// TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
|
||||
// |output_mode_| as well.
|
||||
if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
|
||||
@@ -1089,7 +1099,7 @@
|
||||
// depends on the bitstream and sometimes it's not enough to cover the amount
|
||||
// of frames needed by the client pipeline (see b/133733739).
|
||||
// TODO(crbug.com/911754): Enable for VP9 Profile 2.
|
||||
- if (IsGeminiLakeOrLater() &&
|
||||
+ if (false && IsGeminiLakeOrLater() &&
|
||||
(profile_ == VP9PROFILE_PROFILE0 || profile_ == VP8PROFILE_ANY)) {
|
||||
// Add one to the reference frames for the one being currently egressed, and
|
||||
// an extra allocation for both |client_| and |decoder_|, see
|
||||
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
|
||||
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
|
||||
@@ -204,6 +204,7 @@
|
||||
// Using |client_|s provided PictureBuffers and as many internally
|
||||
// allocated.
|
||||
kNormal,
|
||||
+ kWrapVdpau,
|
||||
};
|
||||
|
||||
// Decides the concrete buffer allocation mode, depending on the hardware
|
|
@ -18,8 +18,9 @@ browser:
|
|||
|
||||
let
|
||||
wrapper =
|
||||
{ browserName ? browser.browserName or (builtins.parseDrvName browser.name).name
|
||||
, name ? (browserName + "-" + (builtins.parseDrvName browser.name).version)
|
||||
{ browserName ? browser.browserName or (lib.getName browser)
|
||||
, pname ? browserName
|
||||
, version ? lib.getVersion browser
|
||||
, desktopName ? # browserName with first letter capitalized
|
||||
(lib.toUpper (lib.substring 0 1 browserName) + lib.substring 1 (-1) browserName)
|
||||
, nameSuffix ? ""
|
||||
|
@ -83,7 +84,7 @@ let
|
|||
gtk_modules = [ libcanberra-gtk2 ];
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
inherit name;
|
||||
inherit pname version;
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = browserName;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
set -eu -o pipefail
|
||||
|
||||
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; slack-theme-black.version or (builtins.parseDrvName slack-theme-black.name).version" | tr -d '"')"
|
||||
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion slack-theme-black" | tr -d '"')"
|
||||
latestSha="$(curl -L -s https://api.github.com/repos/laCour/slack-night-mode/commits\?sha\=master\&since\=${oldVersion} | jq -r '.[0].sha')"
|
||||
|
||||
if [ ! "null" = "${latestSha}" ]; then
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
set -eu -o pipefail
|
||||
|
||||
oldVersion=$(nix-instantiate --eval -E "with import ./. {}; zoom-us.version or (builtins.parseDrvName zoom-us.name).version" | tr -d '"')
|
||||
oldVersion=$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion zoom-us" | tr -d '"')
|
||||
version="$(curl -sI https://zoom.us/client/latest/zoom_x86_64.tar.xz | grep -Fi 'Location:' | pcregrep -o1 '/(([0-9]\.?)+)/')"
|
||||
|
||||
if [ ! "${oldVersion}" = "${version}" ]; then
|
||||
|
|
|
@ -103,6 +103,8 @@ let
|
|||
|
||||
git-imerge = callPackage ./git-imerge { };
|
||||
|
||||
git-machete = python3Packages.callPackage ./git-machete { };
|
||||
|
||||
git-octopus = callPackage ./git-octopus { };
|
||||
|
||||
git-open = callPackage ./git-open { };
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
{ lib, buildPythonApplication, fetchPypi
|
||||
, installShellFiles, pbr
|
||||
, flake8, mock, pycodestyle, pylint, tox }:
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "git-machete";
|
||||
version = "2.12.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "114kq396zq45jlibn1lp0nk4lmanj4w1bcn48gi7xzdm0y1nkzfq";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles pbr ];
|
||||
|
||||
# TODO: Add missing check inputs (2019-11-22):
|
||||
# - stestr
|
||||
doCheck = false;
|
||||
checkInputs = [ flake8 mock pycodestyle pylint tox ];
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion --bash --name git-machete completion/git-machete.completion.bash
|
||||
installShellCompletion --zsh --name _git-machete completion/git-machete.completion.zsh
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = https://github.com/VirtusLab/git-machete;
|
||||
description = "Git repository organizer and rebase workflow automation tool";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.all;
|
||||
maintainers = [ maintainers.blitz ];
|
||||
};
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
set -eu -o pipefail
|
||||
|
||||
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; git.version or (builtins.parseDrvName git.name).version" | tr -d '"')"
|
||||
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion git" | tr -d '"')"
|
||||
latestTag="$(git ls-remote --tags --sort="v:refname" git://github.com/git/git.git | grep -v '\{\}' | grep -v '\-rc' | tail -1 | sed 's|^.*/v\(.*\)|\1|')"
|
||||
|
||||
if [ ! "${oldVersion}" = "${latestTag}" ]; then
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
let
|
||||
version = "1.1";
|
||||
perlVersion = (builtins.parseDrvName perl.name).version;
|
||||
perlVersion = stdenv.lib.getVersion perl;
|
||||
in
|
||||
|
||||
assert perlVersion != "";
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
in symlinkJoin {
|
||||
|
||||
name = "vdr-with-plugins-${(builtins.parseDrvName vdr.name).version}";
|
||||
name = "vdr-with-plugins-${lib.getVersion vdr}";
|
||||
|
||||
paths = [ vdr ] ++ plugins;
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ let
|
|||
else
|
||||
throw "Unsupported architecture";
|
||||
|
||||
version = (builtins.parseDrvName edk2.name).version;
|
||||
version = lib.getVersion edk2;
|
||||
in
|
||||
|
||||
edk2.mkDerivation projectDscPath {
|
||||
|
|
|
@ -34,8 +34,8 @@ let
|
|||
targetPrefix = stdenv.lib.optionalString (targetPlatform != hostPlatform)
|
||||
(targetPlatform.config + "-");
|
||||
|
||||
bintoolsVersion = (builtins.parseDrvName bintools.name).version;
|
||||
bintoolsName = (builtins.parseDrvName bintools.name).name;
|
||||
bintoolsVersion = stdenv.lib.getVersion bintools;
|
||||
bintoolsName = stdenv.lib.removePrefix targetPrefix (stdenv.lib.getName bintools);
|
||||
|
||||
libc_bin = if libc == null then null else getBin libc;
|
||||
libc_dev = if libc == null then null else getDev libc;
|
||||
|
@ -74,7 +74,7 @@ in
|
|||
|
||||
stdenv.mkDerivation {
|
||||
name = targetPrefix
|
||||
+ (if name != "" then name else stdenv.lib.removePrefix targetPrefix "${bintoolsName}-wrapper")
|
||||
+ (if name != "" then name else "${bintoolsName}-wrapper")
|
||||
+ (stdenv.lib.optionalString (bintools != null && bintoolsVersion != "") "-${bintoolsVersion}");
|
||||
|
||||
preferLocalBuild = true;
|
||||
|
|
|
@ -35,8 +35,8 @@ let
|
|||
targetPrefix = stdenv.lib.optionalString (targetPlatform != hostPlatform)
|
||||
(targetPlatform.config + "-");
|
||||
|
||||
ccVersion = (builtins.parseDrvName cc.name).version;
|
||||
ccName = (builtins.parseDrvName cc.name).name;
|
||||
ccVersion = stdenv.lib.getVersion cc;
|
||||
ccName = stdenv.lib.removePrefix targetPrefix (stdenv.lib.getName cc);
|
||||
|
||||
libc_bin = if libc == null then null else getBin libc;
|
||||
libc_dev = if libc == null then null else getDev libc;
|
||||
|
@ -94,7 +94,7 @@ assert nativePrefix == bintools.nativePrefix;
|
|||
|
||||
stdenv.mkDerivation {
|
||||
name = targetPrefix
|
||||
+ (if name != "" then name else stdenv.lib.removePrefix targetPrefix "${ccName}-wrapper")
|
||||
+ (if name != "" then name else "${ccName}-wrapper")
|
||||
+ (stdenv.lib.optionalString (cc != null && ccVersion != "") "-${ccVersion}");
|
||||
|
||||
preferLocalBuild = true;
|
||||
|
|
|
@ -92,8 +92,8 @@ if [ -z "$oldUrl" ]; then
|
|||
die "Couldn't evaluate source url from '$attr.src'!"
|
||||
fi
|
||||
|
||||
drvName=$(nix-instantiate $systemArg --eval -E "with import ./. {}; (builtins.parseDrvName $attr.name).name" | tr -d '"')
|
||||
oldVersion=$(nix-instantiate $systemArg --eval -E "with import ./. {}; $attr.${versionKey} or (builtins.parseDrvName $attr.name).version" | tr -d '"')
|
||||
drvName=$(nix-instantiate $systemArg --eval -E "with import ./. {}; lib.getName $attr" | tr -d '"')
|
||||
oldVersion=$(nix-instantiate $systemArg --eval -E "with import ./. {}; $attr.${versionKey} or lib.getVersion $attr" | tr -d '"')
|
||||
|
||||
if [ -z "$drvName" -o -z "$oldVersion" ]; then
|
||||
die "Couldn't evaluate name and version from '$attr.name'!"
|
||||
|
|
|
@ -14,10 +14,9 @@ lib.makeScope pkgs.newScope (self: with self; {
|
|||
*/
|
||||
removePackagesByName = packages: packagesToRemove:
|
||||
let
|
||||
pkgName = drv: (builtins.parseDrvName drv.name).name;
|
||||
namesToRemove = map pkgName packagesToRemove;
|
||||
namesToRemove = map lib.getName packagesToRemove;
|
||||
in
|
||||
lib.filter (x: !(builtins.elem (pkgName x) namesToRemove)) packages;
|
||||
lib.filter (x: !(builtins.elem (lib.getName x) namesToRemove)) packages;
|
||||
|
||||
maintainers = with pkgs.lib.maintainers; [ lethalman jtojnar hedning worldofpeace ];
|
||||
|
||||
|
|
|
@ -28,9 +28,6 @@ let cpuName = stdenv.hostPlatform.parsed.cpu.name;
|
|||
# Remove some broken manpages.
|
||||
rm -rf $out/Home/man/ja*
|
||||
|
||||
# for backward compatibility
|
||||
ln -s $out/Contents/Home $out/jre
|
||||
|
||||
ln -s $out/Contents/Home/* $out/
|
||||
|
||||
mkdir -p $out/nix-support
|
||||
|
|
|
@ -10,34 +10,34 @@
|
|||
"version": "11.0.4"
|
||||
},
|
||||
"armv6l": {
|
||||
"build": "7",
|
||||
"sha256": "3fbe418368e6d5888d0f15c4751139eb60d9785b864158a001386537fa46f67e",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_arm_linux_hotspot_11.0.3_7.tar.gz",
|
||||
"version": "11.0.3"
|
||||
"build": "10",
|
||||
"sha256": "c6b1fda3f8807028cbfcc34a4ded2e8a5a6b6239d2bcc1f06673ea6b1530df94",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jdk_arm_linux_hotspot_11.0.5_10.tar.gz",
|
||||
"version": "11.0.5"
|
||||
},
|
||||
"armv7l": {
|
||||
"build": "7",
|
||||
"sha256": "3fbe418368e6d5888d0f15c4751139eb60d9785b864158a001386537fa46f67e",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_arm_linux_hotspot_11.0.3_7.tar.gz",
|
||||
"version": "11.0.3"
|
||||
"build": "10",
|
||||
"sha256": "c6b1fda3f8807028cbfcc34a4ded2e8a5a6b6239d2bcc1f06673ea6b1530df94",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jdk_arm_linux_hotspot_11.0.5_10.tar.gz",
|
||||
"version": "11.0.5"
|
||||
},
|
||||
"packageType": "jdk",
|
||||
"vmType": "hotspot",
|
||||
"x86_64": {
|
||||
"build": "11",
|
||||
"sha256": "90c33cf3f2ed0bd773f648815de7347e69cfbb3416ef3bf41616ab1c4aa0f5a8",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz",
|
||||
"version": "11.0.4"
|
||||
"build": "10",
|
||||
"sha256": "6dd0c9c8a740e6c19149e98034fba8e368fd9aa16ab417aa636854d40db1a161",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jdk_x64_linux_hotspot_11.0.5_10.tar.gz",
|
||||
"version": "11.0.5"
|
||||
}
|
||||
},
|
||||
"openj9": {
|
||||
"packageType": "jdk",
|
||||
"vmType": "openj9",
|
||||
"x86_64": {
|
||||
"build": "11",
|
||||
"sha256": "b1099cccc80a3f434728c9bc3b8a90395793b625f4680ca05267cf635143d64d",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11_openj9-0.15.1/OpenJDK11U-jdk_x64_linux_openj9_11.0.4_11_openj9-0.15.1.tar.gz",
|
||||
"version": "11.0.4"
|
||||
"build": "10",
|
||||
"sha256": "6ead0515aecb24c6a8f5f3800a070b7d20a66c8f26cba5dad137824da590a532",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10_openj9-0.17.0/OpenJDK11U-jdk_x64_linux_openj9_11.0.5_10_openj9-0.17.0.tar.gz",
|
||||
"version": "11.0.5"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -52,20 +52,20 @@
|
|||
"packageType": "jre",
|
||||
"vmType": "hotspot",
|
||||
"x86_64": {
|
||||
"build": "11",
|
||||
"sha256": "70d2cc675155476f1d8516a7ae6729d44681e4fad5a6fc8dfa65cab36a67b7e0",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jre_x64_linux_hotspot_11.0.4_11.tar.gz",
|
||||
"version": "11.0.4"
|
||||
"build": "10",
|
||||
"sha256": "2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jre_x64_linux_hotspot_11.0.5_10.tar.gz",
|
||||
"version": "11.0.5"
|
||||
}
|
||||
},
|
||||
"openj9": {
|
||||
"packageType": "jre",
|
||||
"vmType": "openj9",
|
||||
"x86_64": {
|
||||
"build": "11",
|
||||
"sha256": "c2601e7cb22af7a910e03883280cee805074656104d6d3dcaaf30e3bbb832690",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11_openj9-0.15.1/OpenJDK11U-jre_x64_linux_openj9_11.0.4_11_openj9-0.15.1.tar.gz",
|
||||
"version": "11.0.4"
|
||||
"build": "10",
|
||||
"sha256": "2b68ea68d41281238a9dbe494cec762bd97fe34cf4fb6ba44ee1ce66bcec9d38",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10_openj9-0.17.0/OpenJDK11U-jre_x64_linux_openj9_11.0.5_10_openj9-0.17.0.tar.gz",
|
||||
"version": "11.0.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -76,20 +76,20 @@
|
|||
"packageType": "jdk",
|
||||
"vmType": "hotspot",
|
||||
"x86_64": {
|
||||
"build": "11",
|
||||
"sha256": "a50b211f475b9497311c9b65594764d7b852b1653f249582bb20fc3c302846a5",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x64_mac_hotspot_11.0.4_11.tar.gz",
|
||||
"version": "11.0.4"
|
||||
"build": "10",
|
||||
"sha256": "0825d0d3177832320b697944cd8e7b2e7fe3893fafe8bfcf33ee3631aa5ca96b",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.5_10.tar.gz",
|
||||
"version": "11.0.5"
|
||||
}
|
||||
},
|
||||
"openj9": {
|
||||
"packageType": "jdk",
|
||||
"vmType": "openj9",
|
||||
"x86_64": {
|
||||
"build": "11",
|
||||
"sha256": "7c09678d9c2d9dd0366693c6ab27bed39c76a23e7ac69b8a25c794e99dcf3ba7",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11_openj9-0.15.1/OpenJDK11U-jdk_x64_mac_openj9_11.0.4_11_openj9-0.15.1.tar.gz",
|
||||
"version": "11.0.4"
|
||||
"build": "10",
|
||||
"sha256": "97dc8234b73e233316b5dfdca75af9a0d54aa23b1309b1a68fd0a5d2fa928e05",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10.1_openj9-0.17.0/OpenJDK11U-jdk_x64_mac_openj9_11.0.5_10_openj9-0.17.0.tar.gz",
|
||||
"version": "11.0.5"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -98,20 +98,20 @@
|
|||
"packageType": "jre",
|
||||
"vmType": "hotspot",
|
||||
"x86_64": {
|
||||
"build": "11",
|
||||
"sha256": "1647fded28d25e562811f7bce2092eb9c21d30608843b04250c023b40604ff26",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jre_x64_mac_hotspot_11.0.4_11.tar.gz",
|
||||
"version": "11.0.4"
|
||||
"build": "10",
|
||||
"sha256": "dfd212023321ebb41bce8cced15b4668001e86ecff6bffdd4f2591ccaae41566",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jre_x64_mac_hotspot_11.0.5_10.tar.gz",
|
||||
"version": "11.0.5"
|
||||
}
|
||||
},
|
||||
"openj9": {
|
||||
"packageType": "jre",
|
||||
"vmType": "openj9",
|
||||
"x86_64": {
|
||||
"build": "11",
|
||||
"sha256": "1a8e84bae517a848aa5f25c7b04f26ab3a3bfffaa7fdf9be24e1f83325e46766",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11_openj9-0.15.1/OpenJDK11U-jre_x64_mac_openj9_11.0.4_11_openj9-0.15.1.tar.gz",
|
||||
"version": "11.0.4"
|
||||
"build": "10",
|
||||
"sha256": "ea6bd0be4562e766c035b997447c059d10d5d2e58ca464c57f9078858da1c967",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10.1_openj9-0.17.0/OpenJDK11U-jre_x64_mac_openj9_11.0.5_10_openj9-0.17.0.tar.gz",
|
||||
"version": "11.0.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -122,56 +122,56 @@
|
|||
"jdk": {
|
||||
"hotspot": {
|
||||
"aarch64": {
|
||||
"build": "10",
|
||||
"sha256": "652776586ede124189dc218174b5922cc97feac81021ad81905900b349a352d2",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_aarch64_linux_hotspot_8u222b10.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "35799a2fd4b467115aff1bc3a54853b5131ba9068e53e1ab0fbe5521a3f2ba83",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jdk_aarch64_linux_hotspot_8u232b09.tar.gz",
|
||||
"version": "8.0.232"
|
||||
},
|
||||
"packageType": "jdk",
|
||||
"vmType": "hotspot",
|
||||
"x86_64": {
|
||||
"build": "10",
|
||||
"sha256": "37356281345b93feb4212e6267109b4409b55b06f107619dde4960e402bafa77",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u222b10.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "7b7884f2eb2ba2d47f4c0bf3bb1a2a95b73a3a7734bd47ebf9798483a7bcc423",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jdk_x64_linux_hotspot_8u232b09.tar.gz",
|
||||
"version": "8.0.232"
|
||||
}
|
||||
},
|
||||
"openj9": {
|
||||
"packageType": "jdk",
|
||||
"vmType": "openj9",
|
||||
"x86_64": {
|
||||
"build": "10",
|
||||
"sha256": "20cff719c6de43f8bb58c7f59e251da7c1fa2207897c9a4768c8c669716dc819",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10_openj9-0.15.1/OpenJDK8U-jdk_x64_linux_openj9_8u222b10_openj9-0.15.1.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "abea758c7e102f3c4a3be8757ee0ce039a70e2d498c160400dfb83c6f7004dbf",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09_openj9-0.17.0/OpenJDK8U-jdk_x64_linux_openj9_8u232b09_openj9-0.17.0.tar.gz",
|
||||
"version": "8.0.232"
|
||||
}
|
||||
}
|
||||
},
|
||||
"jre": {
|
||||
"hotspot": {
|
||||
"aarch64": {
|
||||
"build": "10",
|
||||
"sha256": "dfaf5a121f7606c54bd6232793677a4267eddf65d29cde352b84d84edbccbb51",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_aarch64_linux_hotspot_8u222b10.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "4540db665260fdc84ae2f191e21beec9168a70a4227718bee5edd317707e2fda",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jre_aarch64_linux_hotspot_8u232b09.tar.gz",
|
||||
"version": "8.0.232"
|
||||
},
|
||||
"packageType": "jre",
|
||||
"vmType": "hotspot",
|
||||
"x86_64": {
|
||||
"build": "10",
|
||||
"sha256": "a418ce895c8bf3ca2e7b2f423f038b8b093941684c9430f2e40da0982e12b52d",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_x64_linux_hotspot_8u222b10.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "bd06b84a1fc10e0a555431bc49a84e86df45de0be93c8ee4d09d13513219843b",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jre_x64_linux_hotspot_8u232b09.tar.gz",
|
||||
"version": "8.0.232"
|
||||
}
|
||||
},
|
||||
"openj9": {
|
||||
"packageType": "jre",
|
||||
"vmType": "openj9",
|
||||
"x86_64": {
|
||||
"build": "10",
|
||||
"sha256": "ae56994a7c8e8c19939c0c2ff8fe5a850eb2f23845c499aa5ede26deb3d5ad28",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10_openj9-0.15.1/OpenJDK8U-jre_x64_linux_openj9_8u222b10_openj9-0.15.1.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "30bdfdb38901d4807d96a72a33b83f7a4f40255e11a88853c1e8732acc4644a7",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09_openj9-0.17.0/OpenJDK8U-jre_x64_linux_openj9_8u232b09_openj9-0.17.0.tar.gz",
|
||||
"version": "8.0.232"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -182,20 +182,20 @@
|
|||
"packageType": "jdk",
|
||||
"vmType": "hotspot",
|
||||
"x86_64": {
|
||||
"build": "10",
|
||||
"sha256": "9605fd00d2960934422437f601c7a9a1c5537309b9199d5bc75f84f20cd29a76",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_x64_mac_hotspot_8u222b10.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "c237b2c2c32c893e4ee60cdac8c4bcc34ca731a5445986c03b95cf79918e40c3",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jdk_x64_mac_hotspot_8u232b09.tar.gz",
|
||||
"version": "8.0.232"
|
||||
}
|
||||
},
|
||||
"openj9": {
|
||||
"packageType": "jdk",
|
||||
"vmType": "openj9",
|
||||
"x86_64": {
|
||||
"build": "10",
|
||||
"sha256": "df185e167756332163633a826b329db067f8a721f7d5d27f0b353a35fc415de0",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10_openj9-0.15.1/OpenJDK8U-jdk_x64_mac_openj9_8u222b10_openj9-0.15.1.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "168079dcc20f62ac4409800c78d23a63ba7c665e58cd7ac8bde21ebbbb2b6d48",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09.1_openj9-0.17.0/OpenJDK8U-jdk_x64_mac_openj9_8u232b09_openj9-0.17.0.tar.gz",
|
||||
"version": "8.0.232"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -204,20 +204,20 @@
|
|||
"packageType": "jre",
|
||||
"vmType": "hotspot",
|
||||
"x86_64": {
|
||||
"build": "10",
|
||||
"sha256": "b3ac2436534cea932ccf665b317dbf5ffc0ee065efca808b22b6c2d795ca1b90",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_x64_mac_hotspot_8u222b10.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "5ec5f11dbc81ab65641b765e1ef2f924736c0d1cc797cb95b078598d9d863afd",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jre_x64_mac_hotspot_8u232b09.tar.gz",
|
||||
"version": "8.0.232"
|
||||
}
|
||||
},
|
||||
"openj9": {
|
||||
"packageType": "jre",
|
||||
"vmType": "openj9",
|
||||
"x86_64": {
|
||||
"build": "10",
|
||||
"sha256": "d5754413d7bc3a3233aaa7f8465451fbdabaf2a0c2a91743155bf135a3047ec8",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10_openj9-0.15.1/OpenJDK8U-jre_x64_mac_openj9_8u222b10_openj9-0.15.1.tar.gz",
|
||||
"version": "8.0.222"
|
||||
"build": "9",
|
||||
"sha256": "60b70aa16c8ca38b96c305003f3d9871897555d0b4039b8e1f8db9ceeab16d53",
|
||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09.1_openj9-0.17.0/OpenJDK8U-jre_x64_mac_openj9_8u232b09_openj9-0.17.0.tar.gz",
|
||||
"version": "8.0.232"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
let
|
||||
libPath = "${chicken}/var/lib/chicken/${toString chicken.binaryVersion}/";
|
||||
overrides = import ./overrides.nix;
|
||||
baseName = (builtins.parseDrvName name).name;
|
||||
baseName = lib.getName name;
|
||||
override = if builtins.hasAttr baseName overrides
|
||||
then
|
||||
builtins.getAttr baseName overrides
|
||||
|
|
|
@ -102,8 +102,8 @@ let majorVersion = "4";
|
|||
|
||||
/* Cross-gcc settings (build == host != target) */
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
||||
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||
|
||||
in
|
||||
|
||||
|
@ -111,7 +111,7 @@ in
|
|||
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
||||
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||
|
||||
builder = ../builder.sh;
|
||||
|
||||
|
|
|
@ -107,8 +107,8 @@ let majorVersion = "4";
|
|||
|
||||
/* Cross-gcc settings (build == host != target) */
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
||||
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||
|
||||
in
|
||||
|
||||
|
@ -116,7 +116,7 @@ in
|
|||
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
||||
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||
|
||||
builder = ../builder.sh;
|
||||
|
||||
|
|
|
@ -98,8 +98,8 @@ let majorVersion = "5";
|
|||
|
||||
/* Cross-gcc settings (build == host != target) */
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
||||
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||
|
||||
in
|
||||
|
||||
|
@ -107,7 +107,7 @@ in
|
|||
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
||||
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||
|
||||
builder = ../builder.sh;
|
||||
|
||||
|
|
|
@ -94,8 +94,8 @@ let majorVersion = "6";
|
|||
|
||||
/* Cross-gcc settings (build == host != target) */
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
||||
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||
|
||||
in
|
||||
|
||||
|
@ -103,7 +103,7 @@ in
|
|||
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
||||
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||
|
||||
builder = ../builder.sh;
|
||||
|
||||
|
|
|
@ -72,13 +72,13 @@ let majorVersion = "7";
|
|||
|
||||
/* Cross-gcc settings (build == host != target) */
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
||||
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
||||
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||
|
||||
builder = ../builder.sh;
|
||||
|
||||
|
|
|
@ -64,13 +64,13 @@ let majorVersion = "8";
|
|||
|
||||
/* Cross-gcc settings (build == host != target) */
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
||||
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
||||
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||
|
||||
builder = ../builder.sh;
|
||||
|
||||
|
|
|
@ -63,13 +63,13 @@ let majorVersion = "9";
|
|||
|
||||
/* Cross-gcc settings (build == host != target) */
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
||||
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
||||
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||
|
||||
builder = ../builder.sh;
|
||||
|
||||
|
|
|
@ -60,13 +60,13 @@ let majorVersion = "7";
|
|||
|
||||
/* Cross-gcc settings (build == host != target) */
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
||||
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
||||
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||
|
||||
builder = ../builder.sh;
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@ pkgs.stdenv.mkDerivation (
|
|||
args //
|
||||
{
|
||||
|
||||
pname = "emscripten-${args.pname or (builtins.parseDrvName args.name).name}";
|
||||
version = args.version or (builtins.parseDrvName args.name).version;
|
||||
pname = "emscripten-${lib.getName args}";
|
||||
version = lib.getVersion args;
|
||||
buildInputs = [ emscripten python ] ++ buildInputs;
|
||||
nativeBuildInputs = [ emscripten python ] ++ nativeBuildInputs;
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps"] // {
|
|||
|
||||
# enabled only for src.rock
|
||||
setSourceRoot= let
|
||||
name_only=(builtins.parseDrvName name).name;
|
||||
name_only= lib.getName name;
|
||||
in
|
||||
lib.optionalString (knownRockspec == null) ''
|
||||
# format is rockspec_basename/source_basename
|
||||
|
|
|
@ -20,5 +20,6 @@ mkDerivation {
|
|||
kbookmarks kcompletion kconfig kcoreaddons kitemviews kjobwidgets kservice
|
||||
kxmlgui qtbase qttools solid
|
||||
];
|
||||
outputs = [ "out" "dev" ];
|
||||
patches = (copyPathsToStore (lib.readPathsFromFile ./. ./series));
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ let
|
|||
dst = "pybind11";
|
||||
};
|
||||
|
||||
ccVersion = (builtins.parseDrvName stdenv.cc.name).version;
|
||||
ccVersion = lib.getVersion stdenv.cc;
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
|
|
@ -2,7 +2,7 @@ with import ../../../default.nix {};
|
|||
runCommand "openssl-lib-marked" {} ''
|
||||
mkdir -p "$out/lib"
|
||||
for lib in ssl crypto; do
|
||||
version="${(builtins.parseDrvName openssl.name).version}"
|
||||
version="${lib.getVersion openssl}"
|
||||
ln -s "${lib.getLib openssl}/lib/lib$lib.so" "$out/lib/lib$lib.so.$version"
|
||||
version="$(echo "$version" | sed -re 's/[a-z]+$//')"
|
||||
while test -n "$version"; do
|
||||
|
|
|
@ -31,15 +31,15 @@ toPerlModule(stdenv.mkDerivation (
|
|||
# https://metacpan.org/pod/release/XSAWYERX/perl-5.26.0/pod/perldelta.pod#Removal-of-the-current-directory-%28%22.%22%29-from-@INC
|
||||
PERL_USE_UNSAFE_INC = "1";
|
||||
|
||||
meta.homepage = "https://metacpan.org/release/${attrs.pname or (builtins.parseDrvName attrs.name).name}"; # TODO: phase-out `attrs.name`
|
||||
meta.homepage = "https://metacpan.org/release/${lib.getName attrs}"; # TODO: phase-out `attrs.name`
|
||||
meta.platforms = perl.meta.platforms;
|
||||
}
|
||||
attrs
|
||||
)
|
||||
//
|
||||
{
|
||||
pname = "perl${perl.version}-${attrs.pname or (builtins.parseDrvName attrs.name).name}"; # TODO: phase-out `attrs.name`
|
||||
version = attrs.version or (builtins.parseDrvName attrs.name).version; # TODO: phase-out `attrs.name`
|
||||
pname = "perl${perl.version}-${lib.getName attrs}"; # TODO: phase-out `attrs.name`
|
||||
version = lib.getVersion attrs; # TODO: phase-out `attrs.name`
|
||||
builder = ./builder.sh;
|
||||
buildInputs = buildInputs ++ [ perl ];
|
||||
nativeBuildInputs = nativeBuildInputs ++ [ (perl.dev or perl) ];
|
||||
|
|
|
@ -38,7 +38,7 @@ def get_radare2_rev() -> str:
|
|||
|
||||
def get_cutter_version() -> str:
|
||||
version_expr = """
|
||||
(with import <nixpkgs> {}; (builtins.parseDrvName (qt5.callPackage <radare2/cutter.nix> {}).name).version)
|
||||
(with import <nixpkgs> {}; lib.getVersion (qt5.callPackage <radare2/cutter.nix> {}))
|
||||
"""
|
||||
return sh("nix", "eval", "--raw", version_expr.strip(), "-I", "radare2={0}".format(SCRIPT_DIR))
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
set -eu -o pipefail
|
||||
|
||||
core_json="$(curl -s --fail --location https://updates.jenkins.io/stable/update-center.actual.json | jq .core)"
|
||||
oldVersion=$(nix-instantiate --eval -E "with import ./. {}; jenkins.version or (builtins.parseDrvName jenkins.name).version" | tr -d '"')
|
||||
oldVersion=$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion jenkins" | tr -d '"')
|
||||
|
||||
version="$(jq -r .version <<<$core_json)"
|
||||
sha256="$(jq -r .sha256 <<<$core_json)"
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
{ stdenv, nodePackages_10_x }:
|
||||
|
||||
let
|
||||
drvName = drv: (builtins.parseDrvName drv).name;
|
||||
linkNodeDeps = ({ pkg, deps, name ? "" }:
|
||||
let
|
||||
targetModule = if name != "" then name else drvName pkg;
|
||||
targetModule = if name != "" then name else stdenv.lib.getName pkg;
|
||||
in nodePackages_10_x.${pkg}.override (oldAttrs: {
|
||||
postInstall = ''
|
||||
mkdir -p $out/lib/node_modules/${targetModule}/node_modules
|
||||
${stdenv.lib.concatStringsSep "\n" (map (dep: ''
|
||||
ln -s ${nodePackages_10_x.${dep}}/lib/node_modules/${drvName dep} \
|
||||
$out/lib/node_modules/${targetModule}/node_modules/${drvName dep}
|
||||
ln -s ${nodePackages_10_x.${dep}}/lib/node_modules/${stdenv.lib.getName dep} \
|
||||
$out/lib/node_modules/${targetModule}/node_modules/${stdenv.lib.getName dep}
|
||||
'') deps
|
||||
)}
|
||||
'';
|
||||
|
|
|
@ -1,21 +1,24 @@
|
|||
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
||||
{ stdenv, buildGoModule, fetchFromGitHub }:
|
||||
|
||||
buildGoPackage rec {
|
||||
buildGoModule rec {
|
||||
pname = "richgo";
|
||||
version = "0.2.8";
|
||||
goPackagePath = "github.com/kyoh86/richgo";
|
||||
version = "0.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kyoh86";
|
||||
repo = "richgo";
|
||||
rev = "v${version}";
|
||||
sha256 = "0kbwl3a2gima23zmahk0jxp7wga91bs927a1rp5xl889ikng1n4j";
|
||||
sha256 = "07ipa54c4mzm6yizgvkm6x5yim1xgv3f0xdxg35qziacdfcwd6m4";
|
||||
};
|
||||
|
||||
modSha256 = "12wbjfqy6qnapm3f2pz1ci1gvc0y8kzr8c99kihyh1jv9r3zy1wz";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Enrich `go test` outputs with text decorations.";
|
||||
homepage = https://github.com/kyoh86/richgo;
|
||||
license = licenses.unlicense; # NOTE: The project switched to MIT in https://git.io/fA1ik
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ rvolosatovs ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,23 +2,27 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-generate";
|
||||
version = "0.4.0";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ashleygwilliams";
|
||||
repo = "cargo-generate";
|
||||
rev = "v${version}";
|
||||
sha256 = "09276jrb0a735v6p06wz94kbk8bblwpca13vpvy8n0jjmqack2xb";
|
||||
sha256 = "07hklya22ixklb44f3qp6yyh5d03a7rjcn0g76icqr36hvcjyjjh";
|
||||
};
|
||||
|
||||
cargoSha256 = "1gbxfmhwzpxm0gs3zwzs010j0ndi5aw6xsvvngg0h1lpwg9ypnbr";
|
||||
cargoSha256 = "1rsk9j1ij53dz4gakxwdppgmv12lmyj0ihh9qypdbgskvyq3a2j9";
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
|
||||
buildInputs = [ openssl ]
|
||||
++ stdenv.lib.optionals stdenv.isDarwin [ Security libiconv curl ];
|
||||
|
||||
doCheck = false;
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d) USER=nixbld
|
||||
git config --global user.name Nixbld
|
||||
git config --global user.email nixbld@localhost.localnet
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "cargo, make me a project";
|
||||
|
|
34
pkgs/development/tools/wally-cli/default.nix
Normal file
34
pkgs/development/tools/wally-cli/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{ lib, buildGoPackage, fetchFromGitHub, pkg-config, libusb1 }:
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "wally-cli";
|
||||
version = "1.1.1";
|
||||
|
||||
goPackagePath = "github.com/zsa/wally";
|
||||
subPackages = [ "cli" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
libusb1
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zsa";
|
||||
repo = "wally";
|
||||
rev = "68960e452ee0f6c7142f5008d4b1cdc6284d3de7";
|
||||
sha256 = "122m5v7s5wqlshyk2salmd848lqs4rrz54d2ap11ay61kijm0bs2";
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
mv $bin/bin/cli $bin/bin/wally
|
||||
'';
|
||||
|
||||
goDeps = ./deps.nix;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A tool to flash firmware to mechanical keyboards";
|
||||
homepage = https://ergodox-ez.com/pages/wally-planck;
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.spacekookie ];
|
||||
};
|
||||
}
|
66
pkgs/development/tools/wally-cli/deps.nix
generated
Normal file
66
pkgs/development/tools/wally-cli/deps.nix
generated
Normal file
|
@ -0,0 +1,66 @@
|
|||
# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
|
||||
[
|
||||
{
|
||||
goPackagePath = "github.com/caarlos0/spin";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/caarlos0/spin";
|
||||
rev = "950231d3237faf48da965375e65a00c224bcb4dc";
|
||||
sha256 = "1yz987f86qwx2avyp1bmi5y35h8bbfgp3z1fipqpjlvfq8m7lf8w";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/google/gousb";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/google/gousb";
|
||||
rev = "18f4c1d8a750878c4f86ac3d7319b8aa462a79f9";
|
||||
sha256 = "1i7ffkq395x0v1186j9bhfgy67wlq6s840xkyx8wn87w55yd05rh";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/logrusorgru/aurora";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/logrusorgru/aurora";
|
||||
rev = "66b7ad493a23a2523bac50571522bbfe5b90a835";
|
||||
sha256 = "06allslr29qdapv5j3fpyw9xklmb9fmya5jzybmakz9mwczm76nq";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/marcinbor85/gohex";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/marcinbor85/gohex";
|
||||
rev = "7a43cd876e46e0f6ddc553f10f91731a78e6e949";
|
||||
sha256 = "1nzy1hk7blawq4skycj330ac3kfwh0xr6xd7s3y09hsxfzcv4p9v";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "github.com/mattn/go-runewidth";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://github.com/mattn/go-runewidth";
|
||||
rev = "f93a0d58d5fd95e53f82782d07bb0c79d23e1290";
|
||||
sha256 = "1sq97q71vgwnbg1fphsmqrzkbfn6mjal6d8a3qgwv4nbgppwaz25";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "golang.org/x/sys";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://go.googlesource.com/sys";
|
||||
rev = "f068ffe820e46336f56dfca7777430582d6e507b";
|
||||
sha256 = "14qvaq9wcrm7mgyra4h9jl8ssfcxyygi1hraq3cmf118961m90zn";
|
||||
};
|
||||
}
|
||||
{
|
||||
goPackagePath = "gopkg.in/cheggaaa/pb.v1";
|
||||
fetch = {
|
||||
type = "git";
|
||||
url = "https://gopkg.in/cheggaaa/pb.v1";
|
||||
rev = "f907f6f5dd81f77c2bbc1cde92e4c5a04720cb11";
|
||||
sha256 = "13a66cqbpdif804qj12z9ad8r24va9q41gfk71qbc4zg1wsxs3rh";
|
||||
};
|
||||
}
|
||||
]
|
|
@ -1,8 +1,16 @@
|
|||
{ stdenv, pkgconfig, zlib, qtbase, qtsvg, qttools, qtmultimedia, qmake, fetchurl, makeWrapper
|
||||
, lib
|
||||
{ mkDerivation
|
||||
, stdenv
|
||||
, pkgconfig
|
||||
, zlib
|
||||
, qtbase
|
||||
, qtsvg
|
||||
, qttools
|
||||
, qtmultimedia
|
||||
, qmake
|
||||
, fetchurl
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
mkDerivation rec {
|
||||
pname = "chessx";
|
||||
version = "1.5.0";
|
||||
|
||||
|
@ -11,15 +19,18 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtsvg
|
||||
qttools
|
||||
qtmultimedia
|
||||
zlib
|
||||
nativeBuildInputs = [
|
||||
pkgconfig
|
||||
qmake
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig qmake makeWrapper ];
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtmultimedia
|
||||
qtsvg
|
||||
qttools
|
||||
zlib
|
||||
];
|
||||
|
||||
# RCC: Error in 'resources.qrc': Cannot find file 'i18n/chessx_da.qm'
|
||||
enableParallelBuilding = false;
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
{ stdenv, fetchFromGitHub, cmake, glew, freeimage, liblockfile
|
||||
, openal, cryptopp, libtheora, SDL2, lzo, libjpeg, libogg, tbb
|
||||
, openal, libtheora, SDL2, lzo, libjpeg, libogg, tbb
|
||||
, pcre, makeWrapper }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "OpenXRay";
|
||||
let
|
||||
version = "558";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
|
@ -14,6 +13,31 @@ stdenv.mkDerivation rec {
|
|||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
# https://github.com/OpenXRay/xray-16/issues/518
|
||||
cryptopp = stdenv.mkDerivation {
|
||||
pname = "cryptopp";
|
||||
version = "5.6.5";
|
||||
|
||||
inherit src;
|
||||
|
||||
postUnpack = "sourceRoot+=/Externals/cryptopp";
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
enableParallelBuilding = true;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Crypto++, a free C++ class library of cryptographic schemes";
|
||||
homepage = "https://cryptopp.com/";
|
||||
license = with licenses; [ boost publicDomain ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
};
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "OpenXRay";
|
||||
inherit version src;
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
cmakeFlags = [ "-DCMAKE_INCLUDE_PATH=${cryptopp}/include/cryptopp" ];
|
||||
installFlags = [ "DESTDIR=${placeholder "out"}" ];
|
||||
|
|
|
@ -1,14 +1,8 @@
|
|||
{ stdenv, lib, makeWrapper, retroarch, cores }:
|
||||
|
||||
let
|
||||
|
||||
p = builtins.parseDrvName retroarch.name;
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "retroarch-" + p.version;
|
||||
version = p.version;
|
||||
pname = "retroarch";
|
||||
version = lib.getVersion retroarch;
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ with callPackage ./util.nix {};
|
|||
let patch = (callPackage ./sources.nix {}).staging;
|
||||
build-inputs = pkgNames: extra:
|
||||
(mkBuildInputs wineUnstable.pkgArches pkgNames) ++ extra;
|
||||
in assert (builtins.parseDrvName wineUnstable.name).version == patch.version;
|
||||
in assert stdenv.lib.getVersion wineUnstable == patch.version;
|
||||
|
||||
stdenv.lib.overrideDerivation wineUnstable (self: {
|
||||
buildInputs = build-inputs [ "perl" "utillinux" "autoconf" libtxc_dxtn_Name ] self.buildInputs;
|
||||
|
|
|
@ -25,7 +25,7 @@ let
|
|||
addonInfo ? null,
|
||||
preInstall ? "",
|
||||
postInstall ? "",
|
||||
path ? (builtins.parseDrvName pluginName).name,
|
||||
path ? lib.getName pluginName,
|
||||
dependencies ? [],
|
||||
...
|
||||
}:
|
||||
|
|
|
@ -90,15 +90,12 @@ in {
|
|||
inherit buildUBoot;
|
||||
|
||||
ubootTools = buildUBoot {
|
||||
defconfig = "allnoconfig";
|
||||
defconfig = "tools-only_defconfig";
|
||||
installDir = "$out/bin";
|
||||
hardeningDisable = [];
|
||||
dontStrip = false;
|
||||
extraMeta.platforms = lib.platforms.linux;
|
||||
extraMakeFlags = [ "HOST_TOOLS_ALL=y" "CROSS_BUILD_TOOLS=1" "NO_SDL=1" "tools" ];
|
||||
postConfigure = ''
|
||||
sed -i '/CONFIG_SYS_TEXT_BASE/c\CONFIG_SYS_TEXT_BASE=0x00000000' .config
|
||||
'';
|
||||
filesToInstall = [
|
||||
"tools/dumpimage"
|
||||
"tools/fdtgrep"
|
||||
|
|
|
@ -18,7 +18,7 @@ rec {
|
|||
buildPhase ? "",
|
||||
preInstall ? "",
|
||||
postInstall ? "",
|
||||
path ? (builtins.parseDrvName name).name,
|
||||
path ? stdenv.lib.getName name,
|
||||
addonInfo ? null,
|
||||
...
|
||||
}:
|
||||
|
|
|
@ -457,12 +457,12 @@ let
|
|||
|
||||
coc-python = buildVimPluginFrom2Nix {
|
||||
pname = "coc-python";
|
||||
version = "2019-11-07";
|
||||
version = "2019-11-21";
|
||||
src = fetchFromGitHub {
|
||||
owner = "neoclide";
|
||||
repo = "coc-python";
|
||||
rev = "01cf6f3833d44fb83c38655b496212625329c90b";
|
||||
sha256 = "0vn9fjhhlgciv7kwda4hn2lg7fisxgdsg47sbqz75qirnixw8mjv";
|
||||
rev = "756c9f623f6a82ad902e2bdfe3f0c77fba96c18e";
|
||||
sha256 = "1fab8bzj386zkgn7551l58q4ykqakjbx92afx30i1861y8m1a4p1";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -567,12 +567,12 @@ let
|
|||
|
||||
coc-tsserver = buildVimPluginFrom2Nix {
|
||||
pname = "coc-tsserver";
|
||||
version = "2019-11-13";
|
||||
version = "2019-11-20";
|
||||
src = fetchFromGitHub {
|
||||
owner = "neoclide";
|
||||
repo = "coc-tsserver";
|
||||
rev = "3d537937a6ce74cdf08d3109dc14af9baeff9af7";
|
||||
sha256 = "1nfnlirdb91x835hk2h30vnjc940mnw94p2wgp28p80mcbrk4s4v";
|
||||
rev = "d48cc4a31217af3e0d2fa91159972ea7a9575b21";
|
||||
sha256 = "0zmzyqp8nw99ajzxr8469yfm9zgi53zggxsp6k6b9m6x8c9rqly9";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -843,23 +843,23 @@ let
|
|||
|
||||
denite-nvim = buildVimPluginFrom2Nix {
|
||||
pname = "denite-nvim";
|
||||
version = "2019-11-18";
|
||||
version = "2019-11-19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Shougo";
|
||||
repo = "denite.nvim";
|
||||
rev = "2f8e00266f2958a02eb870b69f4ab0ef1d91c022";
|
||||
sha256 = "1n5h1ys0pb3lfg7zbyfdkshcy05kxd7f4d81qcr69k7n1ni44fvq";
|
||||
rev = "7712a251e172b2dc6a41d36504c0392797484ab1";
|
||||
sha256 = "0n696hjri23s9janar3k9la85apzl5kn51jgrjjf3p9xbx8h3ljk";
|
||||
};
|
||||
};
|
||||
|
||||
deol-nvim = buildVimPluginFrom2Nix {
|
||||
pname = "deol-nvim";
|
||||
version = "2019-09-08";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Shougo";
|
||||
repo = "deol.nvim";
|
||||
rev = "474b72a8541e529a1628084c277e6e0aa7f80fda";
|
||||
sha256 = "00kwij67csk9yp64r8lfrc9m0jm5mqckf4c9a3489azfjn8da097";
|
||||
rev = "6457c49bb90ea955755c6a47a561f04312a28ed8";
|
||||
sha256 = "0bmw6xw0qa25dix4lp82447w3ffl49vf431wz90j6xa0swaxifkj";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -934,12 +934,12 @@ let
|
|||
|
||||
deoplete-lsp = buildVimPluginFrom2Nix {
|
||||
pname = "deoplete-lsp";
|
||||
version = "2019-09-20";
|
||||
version = "2019-11-21";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Shougo";
|
||||
repo = "deoplete-lsp";
|
||||
rev = "335e8a03d5741aa42bd7ce64d79e31d7de570ab5";
|
||||
sha256 = "0jn4fn9vkxf3av6mdmzixz20l9ca8n2sql7j9mcmh06mn86949bs";
|
||||
rev = "44185b8c477b1ba5a299f157569f842a5f2ed1ec";
|
||||
sha256 = "0y7ibagw5hj10qjrkqa8vq1a0h50xdnrirz2lnpyy8wyk9l5l2lc";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -967,23 +967,23 @@ let
|
|||
|
||||
deoplete-ternjs = buildVimPluginFrom2Nix {
|
||||
pname = "deoplete-ternjs";
|
||||
version = "2019-09-22";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "carlitux";
|
||||
repo = "deoplete-ternjs";
|
||||
rev = "307f9c3beb178026d122d9ab3825e4640dd1c29a";
|
||||
sha256 = "039qbcg9fanrs7dc52n987rhd0xdyvsmjdrfd1dcrr6ys990n64d";
|
||||
rev = "ca0ee77276bc688f847b566d64b32e4bb62691d8";
|
||||
sha256 = "0980fwr931dqyp032gcg4mwk2iv3inywa8w3m73zcr082xc0crp7";
|
||||
};
|
||||
};
|
||||
|
||||
deoplete-nvim = buildVimPluginFrom2Nix {
|
||||
pname = "deoplete-nvim";
|
||||
version = "2019-11-17";
|
||||
version = "2019-11-20";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Shougo";
|
||||
repo = "deoplete.nvim";
|
||||
rev = "edbc7b721e45f1eaa9e1ebe695f4f363f14a7a67";
|
||||
sha256 = "1l33wxdsyvhksnbkv1k924qvgdy9s3rksmqsa1yv7zrssl8xdmjn";
|
||||
rev = "57cf7710a8dd51797bbbe5a45e67aef44caa126f";
|
||||
sha256 = "1wmlx2nx3bciv9mhws04ryix0sp33j945mn09cm8vvipbq0bk2q2";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1598,23 +1598,23 @@ let
|
|||
|
||||
lh-brackets = buildVimPluginFrom2Nix {
|
||||
pname = "lh-brackets";
|
||||
version = "2019-11-16";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "LucHermitte";
|
||||
repo = "lh-brackets";
|
||||
rev = "941444938a7effce57ddd2706f6fd2455d74a8c5";
|
||||
sha256 = "1pkpjz0j2n1b1qdbmp4lj43qk2ddr55001yjg6cpznsl7b8rq095";
|
||||
rev = "88548effe90b6b980e1320656231eaff57952d83";
|
||||
sha256 = "1xmsmvkbxqh0ib30qzkk5km5mjdr4f64mxll79x2x0wn8ldwjz9g";
|
||||
};
|
||||
};
|
||||
|
||||
lh-vim-lib = buildVimPluginFrom2Nix {
|
||||
pname = "lh-vim-lib";
|
||||
version = "2019-11-15";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "LucHermitte";
|
||||
repo = "lh-vim-lib";
|
||||
rev = "76432c08d570a30f6d2d4c246756a3eb6e898ee3";
|
||||
sha256 = "1wwr5yjvzv1xc0f5qbjfqclrpvx9vnrg8dkybf95lwgp9a8v7xxv";
|
||||
rev = "ae9d7cf976143a43af11d350ca3406733549b883";
|
||||
sha256 = "1jziwz9mp6jsfd0jkvj4s6n4fw1kg0zgbd5j5rjz2jgp1akqnz2l";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1730,12 +1730,12 @@ let
|
|||
|
||||
ncm2-jedi = buildVimPluginFrom2Nix {
|
||||
pname = "ncm2-jedi";
|
||||
version = "2019-06-07";
|
||||
version = "2019-11-19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ncm2";
|
||||
repo = "ncm2-jedi";
|
||||
rev = "86744a7641ce11e22d01778c310e5015f85ef412";
|
||||
sha256 = "16h17cqy76iwd9b3wsmmzjg6j465mjd5kjybmk6dilxmq07q24c9";
|
||||
rev = "b28bf6d054051cc1c7a6b148323d3adb9baa4ed5";
|
||||
sha256 = "07pq8akzvlb8hzksgxx1c50j09ia0xnszq1f83x75kqsjg5f6nhy";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1785,12 +1785,12 @@ let
|
|||
|
||||
neco-look = buildVimPluginFrom2Nix {
|
||||
pname = "neco-look";
|
||||
version = "2018-11-09";
|
||||
version = "2019-11-19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ujihisa";
|
||||
repo = "neco-look";
|
||||
rev = "8c3951acb93b72dda4572859928ef7b372485596";
|
||||
sha256 = "1gd692yc1x3753rxg58hwc7nwmm4rjr03y1xaczy1qahq1bm9a40";
|
||||
rev = "4d7f1fd7e406c302fba2a1358017c5a76d0f9fc1";
|
||||
sha256 = "1brvzg15ni5j60wncpvxhs5k36wz83lhvfcnvja2l9yrngcgh6vr";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1972,12 +1972,12 @@ let
|
|||
|
||||
nerdtree = buildVimPluginFrom2Nix {
|
||||
pname = "nerdtree";
|
||||
version = "2019-11-13";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "scrooloose";
|
||||
repo = "nerdtree";
|
||||
rev = "8d9b8dae67c5a6affbfd0304e0949ce9e79065ea";
|
||||
sha256 = "1jgjw0lm1znf530mfa9iniwb3j35hpgz49ccykg5q6lrbscchc7h";
|
||||
rev = "82b1649f2e1c79ff17730fe0a3750bbec203dd29";
|
||||
sha256 = "07viagjyd5bdnal7m6k0yschdnr2yxmxcg7zlgz7s7inn80blv79";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -2566,12 +2566,12 @@ let
|
|||
|
||||
syntastic = buildVimPluginFrom2Nix {
|
||||
pname = "syntastic";
|
||||
version = "2019-10-23";
|
||||
version = "2019-11-20";
|
||||
src = fetchFromGitHub {
|
||||
owner = "scrooloose";
|
||||
repo = "syntastic";
|
||||
rev = "28bb72adbe5c610bdc07407ddb83898919e4645c";
|
||||
sha256 = "1hhpd01vc9377fvqdh30pqack0i0sxxz2qdzz2i6x4snabga2zqj";
|
||||
rev = "39b35b23b952d620b8ec7cabb13110f586663837";
|
||||
sha256 = "1nc3019c969ms6m0hrj5k1kggcvsywn6j7kz0scdwzvfd6bcla6h";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -2765,12 +2765,12 @@ let
|
|||
|
||||
ultisnips = buildVimPluginFrom2Nix {
|
||||
pname = "ultisnips";
|
||||
version = "2019-11-13";
|
||||
version = "2019-11-19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "SirVer";
|
||||
repo = "ultisnips";
|
||||
rev = "f7b9b3b1100b3b2883ed2d0ac3627708a10dc469";
|
||||
sha256 = "08g1h9ra807d19rhaf5l6g7pryq07cyy4g1ab0ycwyb0whlr6m57";
|
||||
rev = "c309637e0243b71f7e3265ebe3cffdfe9674cfbc";
|
||||
sha256 = "1q2miwd56k2l7lfwmw3khqnfry9izaca91dcf32p0xp06bc3ah28";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -3084,23 +3084,23 @@ let
|
|||
|
||||
vim-airline = buildVimPluginFrom2Nix {
|
||||
pname = "vim-airline";
|
||||
version = "2019-11-15";
|
||||
version = "2019-11-21";
|
||||
src = fetchFromGitHub {
|
||||
owner = "vim-airline";
|
||||
repo = "vim-airline";
|
||||
rev = "29549aa55a5f20317eb63b8cd0c08c68a1336f3e";
|
||||
sha256 = "1z2chmvxqq5s7a9qjam9j46m7dyfh80z62411swlc9py4aqm91ci";
|
||||
rev = "b9eb94120133a3be4cee77e9bedf68c4200f4b04";
|
||||
sha256 = "0x9z67i8g4p6iik110nfcnsdpny74gi6arx2yvwssa6vzdv2rh9f";
|
||||
};
|
||||
};
|
||||
|
||||
vim-airline-themes = buildVimPluginFrom2Nix {
|
||||
pname = "vim-airline-themes";
|
||||
version = "2019-10-31";
|
||||
version = "2019-11-21";
|
||||
src = fetchFromGitHub {
|
||||
owner = "vim-airline";
|
||||
repo = "vim-airline-themes";
|
||||
rev = "650701f08fa49abca607f5a69ddf0a8157bcd8cf";
|
||||
sha256 = "0kk21x1g27gsy29ikfh8iayjgnm7vs2zllgwglqfjmlqvkqajmr0";
|
||||
rev = "935dffc6ff96f7282db93e40e024c942056aedaa";
|
||||
sha256 = "0mx3w41sxvrvk4n4sv1zswlnxmkk93wy9wmc1gmc70yrd9q9jfbx";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -3271,12 +3271,12 @@ let
|
|||
|
||||
vim-codefmt = buildVimPluginFrom2Nix {
|
||||
pname = "vim-codefmt";
|
||||
version = "2019-08-14";
|
||||
version = "2019-11-20";
|
||||
src = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "vim-codefmt";
|
||||
rev = "18f47c3ac563b60f71103b1e1d29b349ff9d8549";
|
||||
sha256 = "0z36jjj1bxb4xz9lyjrbv769797g3x475ncamflfj6yj72vvhfy4";
|
||||
rev = "dae6dd82a98eda68af83a1f725cc570ef3b1ae7d";
|
||||
sha256 = "0w2djjs29dgd5jcfglvgb4mb60vb1bj34mxzbx2sidp3lb15xn4y";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -3733,12 +3733,12 @@ let
|
|||
|
||||
vim-gitgutter = buildVimPluginFrom2Nix {
|
||||
pname = "vim-gitgutter";
|
||||
version = "2019-10-24";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "airblade";
|
||||
repo = "vim-gitgutter";
|
||||
rev = "af20a9fcfff9b5277fc8482e802c4dec291ea589";
|
||||
sha256 = "0jakfv1b1kc8mq1izj7bzd83d55z38igl7xl1c7n1vb9m2dy0nn3";
|
||||
rev = "fa8d0feb4103f15b97e2abb4e76cbaaf03495d1d";
|
||||
sha256 = "0ki46g0xl6gn75hh9p13any17x5v703bc86ya2nfqwyp2w0gapyg";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -3766,12 +3766,12 @@ let
|
|||
|
||||
vim-go = buildVimPluginFrom2Nix {
|
||||
pname = "vim-go";
|
||||
version = "2019-11-18";
|
||||
version = "2019-11-20";
|
||||
src = fetchFromGitHub {
|
||||
owner = "fatih";
|
||||
repo = "vim-go";
|
||||
rev = "6d9cabbfa2ed92ef764f87041b60fcab010f7bc7";
|
||||
sha256 = "0621mh4vh92dp4jhcklgghppncbvpbzzwx9xpxs7b6917hmsxp8g";
|
||||
rev = "d4a9cc72469927202fadf14600253a35240c993e";
|
||||
sha256 = "061qzzldh796lagnk1blpkvx5f55rc8h7vgzgffxg9dhc73my5a3";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -3788,12 +3788,12 @@ let
|
|||
|
||||
vim-grepper = buildVimPluginFrom2Nix {
|
||||
pname = "vim-grepper";
|
||||
version = "2019-10-09";
|
||||
version = "2019-11-19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mhinz";
|
||||
repo = "vim-grepper";
|
||||
rev = "8b783474b64fa01b813f9c4a24f240c7c3378726";
|
||||
sha256 = "1mrqdg0hq4gvzng959dk6hbgh19sxzgg959i6k39c7phdd1f1fm9";
|
||||
rev = "d8fa51d4fa99221511dc8b9e2eb1cba23a9b0c20";
|
||||
sha256 = "1wb4g5g1phixqwpj9nd261f690ziimy80w12pjivrik20bj17ipd";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -3953,12 +3953,12 @@ let
|
|||
|
||||
vim-illuminate = buildVimPluginFrom2Nix {
|
||||
pname = "vim-illuminate";
|
||||
version = "2019-08-04";
|
||||
version = "2019-11-21";
|
||||
src = fetchFromGitHub {
|
||||
owner = "RRethy";
|
||||
repo = "vim-illuminate";
|
||||
rev = "0c37ddf0dfbe069b9f2cf1d4a341efe7b373f133";
|
||||
sha256 = "11zjm9a6x57s5rs080p1gcj86l01765ayn3k9yx6mx8d48n8zr3k";
|
||||
rev = "4929d19cc8483d9d9872cb3669915e6a8cc381a2";
|
||||
sha256 = "1rbhnmqrw8gdpf60lx4akhadz3q80fykal1a9c4mnn5nrqymv9va";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -4130,12 +4130,12 @@ let
|
|||
|
||||
vim-jsx-pretty = buildVimPluginFrom2Nix {
|
||||
pname = "vim-jsx-pretty";
|
||||
version = "2019-11-18";
|
||||
version = "2019-11-19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MaxMEllon";
|
||||
repo = "vim-jsx-pretty";
|
||||
rev = "70586430c0f05c91ed2832db2c65769501978d94";
|
||||
sha256 = "1b2qssdzc0b7pzr1ws86zybvwnwby987xsa7sfizsjqslb14xw4w";
|
||||
rev = "8b96cea873612b35ddfd7aef4b6c21f991103f0f";
|
||||
sha256 = "18ilra7s29jl7k3nda2z3r7bvixk5b8bbfn9d3nvfz7l26n8s6i6";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -4493,12 +4493,12 @@ let
|
|||
|
||||
vim-pandoc = buildVimPluginFrom2Nix {
|
||||
pname = "vim-pandoc";
|
||||
version = "2019-11-07";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "vim-pandoc";
|
||||
repo = "vim-pandoc";
|
||||
rev = "9275cdb54b55eda88f3f0066783ea72410ccf678";
|
||||
sha256 = "0532bq9667dfz79fg4blrzc6d9y1cz2xr5h7jda3psrj27adrlxk";
|
||||
rev = "524d05885d0fdd176d3da06fd2befff9a22353e2";
|
||||
sha256 = "1ngsqyjcsav3k2dcr4anhdm5ycnlfiwykqx3v15ds3j2prsn9hkd";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -4570,12 +4570,12 @@ let
|
|||
|
||||
vim-pencil = buildVimPluginFrom2Nix {
|
||||
pname = "vim-pencil";
|
||||
version = "2019-11-16";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "reedes";
|
||||
repo = "vim-pencil";
|
||||
rev = "236380f1afcc1df10ae78cbf2c6e958d29183eaa";
|
||||
sha256 = "1yxc03pmf0wr104mxy2ssln16jm3kkylivmhh47jk5iv2xw8i38q";
|
||||
rev = "9aead49ecfd0640e07fdf30fb149dc7d072051eb";
|
||||
sha256 = "189mqxsawdpb68vs9gpkh6flm00m3zhh744awwjd433dhyhz07fx";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -5351,12 +5351,12 @@ let
|
|||
|
||||
vim-wordy = buildVimPluginFrom2Nix {
|
||||
pname = "vim-wordy";
|
||||
version = "2019-08-29";
|
||||
version = "2019-11-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "reedes";
|
||||
repo = "vim-wordy";
|
||||
rev = "87a77cb293ed1193c01e0f93c4dd70cddde76b08";
|
||||
sha256 = "19wvm1al41ys429rb2agb7d3xfv1kh2287r8sgiy1f6whjn236z6";
|
||||
rev = "f0391713fa83771d64b065868331ef4754d861ed";
|
||||
sha256 = "0v5cl3rrg2vrdb2al67hbh730rw8m2zvhb1vippv64k65mknkgp5";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -5415,6 +5415,17 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
vimagit = buildVimPluginFrom2Nix {
|
||||
pname = "vimagit";
|
||||
version = "2019-07-24";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jreybert";
|
||||
repo = "vimagit";
|
||||
rev = "94762b1356ebdcb8ec486a86f45e69ef77a69465";
|
||||
sha256 = "1p8izqdkx8g1aqmq9a2qm506bs4mvc4xdbzkh2k5xprm5vc14z0s";
|
||||
};
|
||||
};
|
||||
|
||||
vimelette = buildVimPluginFrom2Nix {
|
||||
pname = "vimelette";
|
||||
version = "2019-05-02";
|
||||
|
@ -5494,12 +5505,12 @@ let
|
|||
|
||||
vimtex = buildVimPluginFrom2Nix {
|
||||
pname = "vimtex";
|
||||
version = "2019-11-18";
|
||||
version = "2019-11-19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "lervag";
|
||||
repo = "vimtex";
|
||||
rev = "e555f48c131088fd66a9f7822c24e6edba8bfd03";
|
||||
sha256 = "1l3a6isf4r46yn8kawlm11b5i1vpdpdnbwfi8kch7z90j7dmwlg6";
|
||||
rev = "ed45b8b8ff5a61f05dea081d3eae98dcaee28857";
|
||||
sha256 = "1sd1315lg6sxydvwhk58kyp5hhdbrzqvkfgy0hvpy7c5h1rlfcjm";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -5649,12 +5660,12 @@ let
|
|||
|
||||
youcompleteme = buildVimPluginFrom2Nix {
|
||||
pname = "youcompleteme";
|
||||
version = "2019-11-18";
|
||||
version = "2019-11-19";
|
||||
src = fetchFromGitHub {
|
||||
owner = "valloric";
|
||||
repo = "youcompleteme";
|
||||
rev = "25fbeadba44be998667ba47a1bce16219d01148c";
|
||||
sha256 = "02hl0gyx189q6k3z9dvnwpgn5sw76rz4j9y0hrj8yqzaqk7xv7fw";
|
||||
rev = "a7fd70cf7213c75088a47967c3e28aa4f6c47872";
|
||||
sha256 = "0knn6j85k6rpis3riv6j9nvxw7114ddz1fr1p6ayv4mhnyj669rc";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -156,6 +156,7 @@ jonsmithers/vim-html-template-literals
|
|||
joonty/vim-xdebug
|
||||
josa42/coc-go
|
||||
jpalardy/vim-slime
|
||||
jreybert/vimagit
|
||||
JuliaEditorSupport/deoplete-julia
|
||||
JuliaEditorSupport/julia-vim
|
||||
Julian/vim-textobj-variable-segment
|
||||
|
|
|
@ -45,13 +45,13 @@ in
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "anbox";
|
||||
version = "unstable-2019-05-03";
|
||||
version = "unstable-2019-11-15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "ea2b7a3dea34a6803134f4adc16c276f4c2479eb";
|
||||
sha256 = "00x772nbrbx7ma0scr24m65g50pmi4v6d6q3cwbbi55r8qiy2yz7";
|
||||
rev = "0a49ae08f76de7f886a3dbed4422711c2fa39d10";
|
||||
sha256 = "09l56nv9cnyhykclfmvam6bkcxlamwbql6nrz9n022553w92hkjf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation {
|
||||
pname = "anbox-modules";
|
||||
version = "2019-07-13-" + kernel.version;
|
||||
version = "2019-11-15-" + kernel.version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "anbox";
|
||||
repo = "anbox-modules";
|
||||
rev = "816dd4d6e702cf77a44cfe208659af6c39e02b57";
|
||||
sha256 = "115xrv3fz5bk51hz8cwb61h0xnrsnv217fxmbpw35a6hjrk7gslc";
|
||||
rev = "e0a237e571989987806b32881044c539db25e3e1";
|
||||
sha256 = "1km1nslp4f5znwskh4bb1b61r1inw1dlbwiyyq3rrh0f0agf8d0v";
|
||||
};
|
||||
|
||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||
|
|
|
@ -1,167 +0,0 @@
|
|||
{ stdenv, fetchurl, pkgconfig, unzip, which
|
||||
, libuuid, attr, xfsprogs, cppunit, rdma-core
|
||||
, zlib, openssl, sqlite, jre, openjdk, ant
|
||||
, openssh, perl, gfortran, influxdb, curl
|
||||
} :
|
||||
|
||||
let
|
||||
version = "7.0";
|
||||
|
||||
subdirs = [
|
||||
"beeond_thirdparty/build"
|
||||
"beeond_thirdparty_gpl/build"
|
||||
"thirdparty/build"
|
||||
"opentk_lib/build"
|
||||
"common/build"
|
||||
"admon/build"
|
||||
"java_lib/build"
|
||||
"ctl/build"
|
||||
"fsck/build"
|
||||
"helperd/build"
|
||||
"meta/build"
|
||||
"mgmtd/build"
|
||||
"storage/build"
|
||||
"utils/build"
|
||||
"mon/build"
|
||||
"upgrade/beegfs_mirror_md/build"
|
||||
];
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
pname = "beegfs";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://git.beegfs.com/pub/v7/repository/archive.tar.bz2?ref=${version}";
|
||||
sha256 = "1wsljd5ybyhl94aqrdfvcs8a0l8w4pr0bs1vhjrf4y7ldhw35m3k";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ which unzip pkgconfig cppunit openjdk ant perl ];
|
||||
|
||||
buildInputs = [
|
||||
libuuid
|
||||
attr
|
||||
xfsprogs
|
||||
zlib
|
||||
openssl
|
||||
sqlite
|
||||
jre
|
||||
rdma-core
|
||||
openssh
|
||||
gfortran
|
||||
influxdb
|
||||
curl
|
||||
];
|
||||
|
||||
hardeningDisable = [ "format" ]; # required for building beeond
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs ./
|
||||
find -type f -name Makefile -exec sed -i "s:/bin/bash:${stdenv.shell}:" \{} \;
|
||||
find -type f -name Makefile -exec sed -i "s:/bin/true:true:" \{} \;
|
||||
find -type f -name "*.mk" -exec sed -i "s:/bin/true:true:" \{} \;
|
||||
|
||||
# unpack manually and patch variable name
|
||||
sed -i '/tar -C $(SOURCE_PATH) -xzf $(PCOPY_TAR)/d' beeond_thirdparty/build/Makefile
|
||||
cd beeond_thirdparty/source
|
||||
tar xf pcopy-0.96.tar.gz
|
||||
sed -i 's/\([^_]\)rank/\1grank/' pcopy-0.96/src/pcp.cpp
|
||||
cd ../..
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
for i in ${toString subdirs}; do
|
||||
make -C $i BEEGFS_OPENTK_IBVERBS=1 ''${enableParallelBuilding:+-j''${NIX_BUILD_CORES} -l''${NIX_BUILD_CORES}}
|
||||
done
|
||||
make -C admon/build admon_gui BEEGFS_OPENTK_IBVERBS=1
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
installPhase = ''
|
||||
binDir=$out/bin
|
||||
docDir=$out/share/doc/beegfs
|
||||
includeDir=$out/include/beegfs
|
||||
libDir=$out/lib
|
||||
libDirPkg=$out/lib/beegfs
|
||||
|
||||
mkdir -p $binDir $libDir $libDirPkg $docDir $includeDir
|
||||
|
||||
cp admon/build/beegfs-admon $binDir
|
||||
cp admon/build/dist/usr/bin/beegfs-admon-gui $binDir
|
||||
cp admon_gui/dist/beegfs-admon-gui.jar $libDirPkg
|
||||
cp admon/build/dist/etc/beegfs-admon.conf $docDir
|
||||
|
||||
cp java_lib/build/jbeegfs.jar $libDirPkg
|
||||
cp java_lib/build/libjbeegfs.so $libDir
|
||||
|
||||
cp ctl/build/beegfs-ctl $binDir
|
||||
cp fsck/build/beegfs-fsck $binDir
|
||||
|
||||
cp utils/scripts/beegfs-check-servers $binDir
|
||||
cp utils/scripts/beegfs-df $binDir
|
||||
cp utils/scripts/beegfs-net $binDir
|
||||
|
||||
cp helperd/build/beegfs-helperd $binDir
|
||||
cp helperd/build/dist/etc/beegfs-helperd.conf $docDir
|
||||
|
||||
cp client_module/build/dist/sbin/beegfs-setup-client $binDir
|
||||
cp client_module/build/dist/etc/beegfs-client.conf $docDir
|
||||
|
||||
cp meta/build/beegfs-meta $binDir
|
||||
cp meta/build/dist/sbin/beegfs-setup-meta $binDir
|
||||
cp meta/build/dist/etc/beegfs-meta.conf $docDir
|
||||
|
||||
cp mgmtd/build/beegfs-mgmtd $binDir
|
||||
cp mgmtd/build/dist/sbin/beegfs-setup-mgmtd $binDir
|
||||
cp mgmtd/build/dist/etc/beegfs-mgmtd.conf $docDir
|
||||
|
||||
cp storage/build/beegfs-storage $binDir
|
||||
cp storage/build/dist/sbin/beegfs-setup-storage $binDir
|
||||
cp storage/build/dist/etc/beegfs-storage.conf $docDir
|
||||
|
||||
cp opentk_lib/build/libbeegfs-opentk.so $libDir
|
||||
|
||||
cp upgrade/beegfs_mirror_md/build/beegfs-mirror-md $binDir
|
||||
|
||||
cp client_devel/build/dist/usr/share/doc/beegfs-client-devel/examples/* $docDir
|
||||
cp -r client_devel/include/* $includeDir
|
||||
|
||||
cp beeond_thirdparty_gpl/build/parallel $out/bin
|
||||
cp beeond_thirdparty/build/pcopy/p* $out/bin
|
||||
cp beeond_thirdparty/build/pcopy/s* $out/bin
|
||||
cp -r beeond/scripts/* $out
|
||||
cp beeond/source/* $out/bin
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
substituteInPlace $out/bin/beegfs-admon-gui \
|
||||
--replace " java " " ${jre}/bin/java " \
|
||||
--replace "/opt/beegfs/beegfs-admon-gui/beegfs-admon-gui.jar" \
|
||||
"$libDirPkg/beegfs-admon-gui.jar"
|
||||
|
||||
substituteInPlace $out/bin/beeond \
|
||||
--replace /opt/beegfs/sbin "$out/bin"
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
checkPhase = ''
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/opentk_lib/build/ \
|
||||
common/build/test-runner --text
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "High performance distributed filesystem with RDMA support";
|
||||
homepage = "https://www.beegfs.io";
|
||||
platforms = [ "i686-linux" "x86_64-linux" ];
|
||||
license = {
|
||||
fullName = "BeeGFS_EULA";
|
||||
url = "https://www.beegfs.io/docs/BeeGFS_EULA.txt";
|
||||
free = false;
|
||||
};
|
||||
maintainers = with maintainers; [ markuskowa ];
|
||||
# 2019-08-09
|
||||
# fails to build and had stability issues earlier
|
||||
broken = true;
|
||||
};
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
{ stdenv, fetchurl, which
|
||||
, kmod, kernel
|
||||
} :
|
||||
|
||||
let
|
||||
version = "7.0";
|
||||
in stdenv.mkDerivation {
|
||||
name = "beegfs-module-${version}-${kernel.version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://git.beegfs.com/pub/v7/repository/archive.tar.bz2?ref=${version}";
|
||||
sha256 = "1wsljd5ybyhl94aqrdfvcs8a0l8w4pr0bs1vhjrf4y7ldhw35m3k";
|
||||
};
|
||||
|
||||
hardeningDisable = [ "fortify" "pic" "stackprotector" ];
|
||||
|
||||
nativeBuildInputs = [ which kmod ];
|
||||
|
||||
buildInputs = kernel.moduleBuildDependencies;
|
||||
|
||||
makeFlags = [ "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build/" ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs ./
|
||||
find -type f -name Makefile -exec sed -i "s:/bin/bash:${stdenv.shell}:" \{} \;
|
||||
find -type f -name Makefile -exec sed -i "s:/bin/true:true:" \{} \;
|
||||
find -type f -name "*.mk" -exec sed -i "s:/bin/true:true:" \{} \;
|
||||
'';
|
||||
|
||||
preBuild = "cd client_module/build";
|
||||
|
||||
installPhase = ''
|
||||
instdir=$out/lib/modules/${kernel.modDirVersion}/extras/fs/beegfs
|
||||
mkdir -p $instdir
|
||||
cp beegfs.ko $instdir
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "High performance distributed filesystem with RDMA support";
|
||||
homepage = "https://www.beegfs.io";
|
||||
platforms = [ "i686-linux" "x86_64-linux" ];
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ markuskowa ];
|
||||
broken = stdenv.lib.versionAtLeast kernel.version "4.18";
|
||||
};
|
||||
}
|
|
@ -1,9 +1,13 @@
|
|||
{ stdenv, lib, kernel, fetchurl, pkgconfig, numactl, shared ? false }:
|
||||
{ stdenv, lib
|
||||
, kernel
|
||||
, fetchurl
|
||||
, pkgconfig, meson, ninja
|
||||
, libbsd, numactl, libbpf, zlib, libelf, jansson, openssl, libpcap
|
||||
, doxygen, python3
|
||||
, shared ? false }:
|
||||
|
||||
let
|
||||
|
||||
kver = kernel.modDirVersion or null;
|
||||
|
||||
mod = kernel != null;
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
|
@ -15,40 +19,38 @@ in stdenv.mkDerivation rec {
|
|||
sha256 = "141bqqy4w6nzs9z70x7yv94a4gmxjfal46pxry9bwdh3zi1jwnyd";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ numactl ] ++ lib.optional mod kernel.moduleBuildDependencies;
|
||||
|
||||
RTE_KERNELDIR = if mod then "${kernel.dev}/lib/modules/${kver}/build" else "/var/empty";
|
||||
RTE_TARGET = "x86_64-native-linuxapp-gcc";
|
||||
|
||||
# we need sse3 instructions to build
|
||||
NIX_CFLAGS_COMPILE = [ "-msse3" ];
|
||||
hardeningDisable = [ "pic" ];
|
||||
nativeBuildInputs = [
|
||||
doxygen
|
||||
meson
|
||||
ninja
|
||||
pkgconfig
|
||||
python3
|
||||
python3.pkgs.sphinx
|
||||
];
|
||||
buildInputs = [
|
||||
jansson
|
||||
libbpf
|
||||
libbsd
|
||||
libelf
|
||||
libpcap
|
||||
numactl
|
||||
openssl.dev
|
||||
zlib
|
||||
] ++ lib.optionals mod kernel.moduleBuildDependencies;
|
||||
|
||||
postPatch = ''
|
||||
cat >>config/defconfig_$RTE_TARGET <<EOF
|
||||
# Build static or shared libraries.
|
||||
CONFIG_RTE_BUILD_SHARED_LIB=${if shared then "y" else "n"}
|
||||
EOF
|
||||
'' + lib.optionalString (!mod) ''
|
||||
cat >>config/defconfig_$RTE_TARGET <<EOF
|
||||
# Do not build kernel modules.
|
||||
CONFIG_RTE_EAL_IGB_UIO=n
|
||||
CONFIG_RTE_KNI_KMOD=n
|
||||
EOF
|
||||
patchShebangs config/arm
|
||||
'';
|
||||
|
||||
configurePhase = ''
|
||||
make T=${RTE_TARGET} config
|
||||
'';
|
||||
|
||||
installTargets = [ "install-runtime" "install-sdk" "install-kmod" ]; # skip install-doc
|
||||
|
||||
installFlags = [
|
||||
"prefix=$(out)"
|
||||
] ++ lib.optionals mod [
|
||||
"kerneldir=$(kmod)/lib/modules/${kver}"
|
||||
];
|
||||
mesonFlags = [
|
||||
"-Denable_docs=true"
|
||||
"-Denable_kmods=${if kernel != null then "true" else "false"}"
|
||||
]
|
||||
++ lib.optionals (shared == false) [
|
||||
"-Ddefault_library=static"
|
||||
]
|
||||
++ lib.optional stdenv.isx86_64 "-Dmachine=nehalem"
|
||||
++ lib.optional (kernel != null) "-Dkernel_dir=${kernel.dev}/lib/modules/${kernel.modDirVersion}";
|
||||
|
||||
outputs = [ "out" ] ++ lib.optional mod "kmod";
|
||||
|
||||
|
@ -58,7 +60,7 @@ EOF
|
|||
description = "Set of libraries and drivers for fast packet processing";
|
||||
homepage = http://dpdk.org/;
|
||||
license = with licenses; [ lgpl21 gpl2 bsd2 ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ domenkozar magenbluten orivej ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,42 +1,56 @@
|
|||
{ stdenv, fetchurl, autoreconfHook, pkgconfig
|
||||
, dpdk, libconfig, libpcap, numactl, openssl
|
||||
, dpdk, libconfig, libpcap, numactl, openssl, zlib, libbsd, libelf, jansson
|
||||
}: let
|
||||
|
||||
dpdk_17_11 = dpdk.overrideAttrs (old: rec {
|
||||
version = "17.11.9";
|
||||
dpdk_18_11 = dpdk.overrideAttrs (old: rec {
|
||||
version = "18.11.5";
|
||||
src = fetchurl {
|
||||
url = "https://fast.dpdk.org/rel/dpdk-${version}.tar.xz";
|
||||
sha256 = "0vrcc9mdjs5fk69lh7bigsk9208dfmjsz3jxaddkjlvk2hds1id6";
|
||||
sha256 = "0000000000000000000000000000000000000000000000000000";
|
||||
};
|
||||
});
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "odp-dpdk";
|
||||
version = "1.19.0.0_DPDK_17.11";
|
||||
version = "1.22.0.0_DPDK_18.11";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://git.linaro.org/lng/odp-dpdk.git/snapshot/${pname}-${version}.tar.gz";
|
||||
sha256 = "05bwjaxl9hqc6fbkp95nniq11g3kvzmlxw0bq55i7p2v35nv38px";
|
||||
sha256 = "1m8xhmfjqlj2gkkigq5ka3yh0xgzrcpfpaxp1pnh8d1g99094vbx";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
buildInputs = [ dpdk_17_11 libconfig libpcap numactl openssl ];
|
||||
|
||||
RTE_SDK = "${dpdk_17_11}/share/dpdk";
|
||||
RTE_TARGET = "x86_64-native-linuxapp-gcc";
|
||||
|
||||
dontDisableStatic = true;
|
||||
|
||||
configureFlags = [
|
||||
"--disable-shared"
|
||||
"--with-dpdk-path=${dpdk_17_11}"
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
pkgconfig
|
||||
];
|
||||
buildInputs = [
|
||||
dpdk_18_11
|
||||
libconfig
|
||||
libpcap
|
||||
numactl
|
||||
openssl
|
||||
zlib
|
||||
libbsd
|
||||
libelf
|
||||
jansson
|
||||
];
|
||||
|
||||
# for some reason, /build/odp-dpdk-1.22.0.0_DPDK_18.11/lib/.libs ends up in all binaries,
|
||||
# while it should be $out/lib instead.
|
||||
# prepend rpath with the proper location, the /build will get removed during rpath shrinking
|
||||
preFixup = ''
|
||||
for prog in $out/bin/*; do
|
||||
patchelf --set-rpath $out/lib:`patchelf --print-rpath $prog` $prog
|
||||
done
|
||||
'';
|
||||
|
||||
# binaries will segfault otherwise
|
||||
dontStrip = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Open Data Plane optimized for DPDK";
|
||||
homepage = https://www.opendataplane.org;
|
||||
license = licenses.bsd3;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.abuibrahim ];
|
||||
};
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue