Merge remote-tracking branch 'upstream/master' into staging
This commit is contained in:
commit
4f1261134e
@ -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:
|
For a more useful example, try the following. This configuration only allows unfree packages named flash player and visual studio code:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{
|
{
|
||||||
allowUnfreePredicate = (pkg: builtins.elem
|
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||||
(pkg.pname or (builtins.parseDrvName pkg.name).name) [
|
"flashplayer"
|
||||||
"flashplayer"
|
"vscode"
|
||||||
"vscode"
|
];
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
@ -217,7 +216,7 @@
|
|||||||
The following configuration example only allows insecure packages with very short names:
|
The following configuration example only allows insecure packages with very short names:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
{
|
{
|
||||||
allowInsecurePredicate = (pkg: (builtins.stringLength (builtins.parseDrvName pkg.name).name) <= 5);
|
allowInsecurePredicate = pkg: builtins.stringLength (lib.getName pkg) <= 5;
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
|
@ -84,7 +84,8 @@ let
|
|||||||
hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
|
hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
|
||||||
escapeShellArg escapeShellArgs replaceChars lowerChars
|
escapeShellArg escapeShellArgs replaceChars lowerChars
|
||||||
upperChars toLower toUpper addContextFrom splitString
|
upperChars toLower toUpper addContextFrom splitString
|
||||||
removePrefix removeSuffix versionOlder versionAtLeast getVersion
|
removePrefix removeSuffix versionOlder versionAtLeast
|
||||||
|
getName getVersion
|
||||||
nameFromURL enableFeature enableFeatureAs withFeature
|
nameFromURL enableFeature enableFeatureAs withFeature
|
||||||
withFeatureAs fixedWidthString fixedWidthNumber isStorePath
|
withFeatureAs fixedWidthString fixedWidthNumber isStorePath
|
||||||
toInt readPathsFromFile fileContents;
|
toInt readPathsFromFile fileContents;
|
||||||
|
@ -472,6 +472,23 @@ rec {
|
|||||||
*/
|
*/
|
||||||
versionAtLeast = v1: v2: !versionOlder v1 v2;
|
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
|
/* This function takes an argument that's either a derivation or a
|
||||||
derivation's "name" attribute and extracts the version part from that
|
derivation's "name" attribute and extracts the version part from that
|
||||||
argument.
|
argument.
|
||||||
|
@ -4524,6 +4524,12 @@
|
|||||||
githubId = 117842;
|
githubId = 117842;
|
||||||
name = "Henri Bourcereau";
|
name = "Henri Bourcereau";
|
||||||
};
|
};
|
||||||
|
mmilata = {
|
||||||
|
email = "martin@martinmilata.cz";
|
||||||
|
github = "mmilata";
|
||||||
|
gitHubId = 85857;
|
||||||
|
name = "Martin Milata";
|
||||||
|
};
|
||||||
mmlb = {
|
mmlb = {
|
||||||
email = "me.mmlb@mmlb.me";
|
email = "me.mmlb@mmlb.me";
|
||||||
github = "mmlb";
|
github = "mmlb";
|
||||||
@ -6727,6 +6733,12 @@
|
|||||||
githubId = 42933;
|
githubId = 42933;
|
||||||
name = "Andrew Childs";
|
name = "Andrew Childs";
|
||||||
};
|
};
|
||||||
|
thefenriswolf = {
|
||||||
|
email = "stefan.rohrbacher97@gmail.com";
|
||||||
|
github = "thefenriswolf";
|
||||||
|
githubId = "8547242";
|
||||||
|
name = "Stefan Rohrbacher";
|
||||||
|
};
|
||||||
thesola10 = {
|
thesola10 = {
|
||||||
email = "thesola10@bobile.fr";
|
email = "thesola10@bobile.fr";
|
||||||
github = "thesola10";
|
github = "thesola10";
|
||||||
|
@ -126,7 +126,7 @@ let
|
|||||||
|
|
||||||
packageData = package: {
|
packageData = package: {
|
||||||
name = package.name;
|
name = package.name;
|
||||||
pname = (builtins.parseDrvName package.name).name;
|
pname = lib.getName package;
|
||||||
updateScript = map builtins.toString (pkgs.lib.toList package.updateScript);
|
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.
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The BeeGFS module has been removed.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</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/terminfo.nix
|
||||||
./config/unix-odbc-drivers.nix
|
./config/unix-odbc-drivers.nix
|
||||||
./config/users-groups.nix
|
./config/users-groups.nix
|
||||||
./config/vpnc.nix
|
|
||||||
./config/vte.nix
|
./config/vte.nix
|
||||||
./config/zram.nix
|
./config/zram.nix
|
||||||
./hardware/acpilight.nix
|
./hardware/acpilight.nix
|
||||||
@ -539,7 +538,6 @@
|
|||||||
./services/monitoring/zabbix-agent.nix
|
./services/monitoring/zabbix-agent.nix
|
||||||
./services/monitoring/zabbix-proxy.nix
|
./services/monitoring/zabbix-proxy.nix
|
||||||
./services/monitoring/zabbix-server.nix
|
./services/monitoring/zabbix-server.nix
|
||||||
./services/network-filesystems/beegfs.nix
|
|
||||||
./services/network-filesystems/cachefilesd.nix
|
./services/network-filesystems/cachefilesd.nix
|
||||||
./services/network-filesystems/davfs2.nix
|
./services/network-filesystems/davfs2.nix
|
||||||
./services/network-filesystems/drbd.nix
|
./services/network-filesystems/drbd.nix
|
||||||
|
@ -235,6 +235,7 @@ with lib;
|
|||||||
(mkRemovedOptionModule [ "services" "zabbixServer" "dbPassword" ] "Use services.zabbixServer.database.passwordFile instead.")
|
(mkRemovedOptionModule [ "services" "zabbixServer" "dbPassword" ] "Use services.zabbixServer.database.passwordFile instead.")
|
||||||
(mkRemovedOptionModule [ "systemd" "generator-packages" ] "Use systemd.packages instead.")
|
(mkRemovedOptionModule [ "systemd" "generator-packages" ] "Use systemd.packages instead.")
|
||||||
(mkRemovedOptionModule [ "fonts" "enableCoreFonts" ] "Use fonts.fonts = [ pkgs.corefonts ]; instead.")
|
(mkRemovedOptionModule [ "fonts" "enableCoreFonts" ] "Use fonts.fonts = [ pkgs.corefonts ]; instead.")
|
||||||
|
(mkRemovedOptionModule [ "networking" "vpnc" ] "Use environment.etc.\"vpnc/service.conf\" instead.")
|
||||||
|
|
||||||
# ZSH
|
# ZSH
|
||||||
(mkRenamedOptionModule [ "programs" "zsh" "enableSyntaxHighlighting" ] [ "programs" "zsh" "syntaxHighlighting" "enable" ])
|
(mkRenamedOptionModule [ "programs" "zsh" "enableSyntaxHighlighting" ] [ "programs" "zsh" "syntaxHighlighting" "enable" ])
|
||||||
@ -279,6 +280,10 @@ with lib;
|
|||||||
# BLCR
|
# BLCR
|
||||||
(mkRemovedOptionModule [ "environment.blcr.enable" ] "The BLCR module has been removed")
|
(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
|
# Redis
|
||||||
(mkRemovedOptionModule [ "services" "redis" "user" ] "The redis module now is hardcoded to the redis user.")
|
(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.")
|
(mkRemovedOptionModule [ "services" "redis" "dbpath" ] "The redis module now uses /var/lib/redis as data directory.")
|
||||||
|
@ -8,15 +8,11 @@ let
|
|||||||
|
|
||||||
mysql = cfg.package;
|
mysql = cfg.package;
|
||||||
|
|
||||||
isMariaDB =
|
isMariaDB = lib.getName mysql == lib.getName pkgs.mariadb;
|
||||||
let
|
|
||||||
pName = _p: (builtins.parseDrvName (_p.name)).name;
|
|
||||||
in pName mysql == pName pkgs.mariadb;
|
|
||||||
isMysqlAtLeast57 =
|
isMysqlAtLeast57 =
|
||||||
let
|
(lib.getName mysql == lib.getName pkgs.mysql57)
|
||||||
pName = _p: (builtins.parseDrvName (_p.name)).name;
|
&& (builtins.compareVersions mysql.version "5.7" >= 0);
|
||||||
in (pName mysql == pName pkgs.mysql57)
|
|
||||||
&& ((builtins.compareVersions mysql.version "5.7") >= 0);
|
|
||||||
|
|
||||||
mysqldOptions =
|
mysqldOptions =
|
||||||
"--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${mysql}";
|
"--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${mysql}";
|
||||||
|
@ -43,7 +43,7 @@ in
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
StateDirectory = "openarena";
|
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";
|
Restart = "on-failure";
|
||||||
|
|
||||||
# Hardening
|
# 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 = {
|
services.znc = {
|
||||||
configFile = mkDefault (pkgs.writeText "znc-generated.conf" semanticString);
|
configFile = mkDefault (pkgs.writeText "znc-generated.conf" semanticString);
|
||||||
config = {
|
config = {
|
||||||
Version = (builtins.parseDrvName pkgs.znc.name).version;
|
Version = lib.getVersion pkgs.znc;
|
||||||
Listener.l.Port = mkDefault 5000;
|
Listener.l.Port = mkDefault 5000;
|
||||||
Listener.l.SSL = mkDefault true;
|
Listener.l.SSL = mkDefault true;
|
||||||
};
|
};
|
||||||
|
@ -47,8 +47,8 @@ let
|
|||||||
grub = f grub;
|
grub = f grub;
|
||||||
grubTarget = f (grub.grubTarget or "");
|
grubTarget = f (grub.grubTarget or "");
|
||||||
shell = "${pkgs.runtimeShell}";
|
shell = "${pkgs.runtimeShell}";
|
||||||
fullName = (builtins.parseDrvName realGrub.name).name;
|
fullName = lib.getName realGrub;
|
||||||
fullVersion = (builtins.parseDrvName realGrub.name).version;
|
fullVersion = lib.getVersion realGrub;
|
||||||
grubEfi = f grubEfi;
|
grubEfi = f grubEfi;
|
||||||
grubTargetEfi = if cfg.efiSupport && (cfg.version == 2) then f (grubEfi.grubTarget or "") else "";
|
grubTargetEfi = if cfg.efiSupport && (cfg.version == 2) then f (grubEfi.grubTarget or "") else "";
|
||||||
bootPath = args.path;
|
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 {};
|
babeld = handleTest ./babeld.nix {};
|
||||||
bcachefs = handleTestOn ["x86_64-linux"] ./bcachefs.nix {}; # linux-4.18.2018.10.12 is unsupported on aarch64
|
bcachefs = handleTestOn ["x86_64-linux"] ./bcachefs.nix {}; # linux-4.18.2018.10.12 is unsupported on aarch64
|
||||||
beanstalkd = handleTest ./beanstalkd.nix {};
|
beanstalkd = handleTest ./beanstalkd.nix {};
|
||||||
beegfs = handleTestOn ["x86_64-linux"] ./beegfs.nix {}; # beegfs is unsupported on aarch64
|
bees = handleTest ./bees.nix {};
|
||||||
bind = handleTest ./bind.nix {};
|
bind = handleTest ./bind.nix {};
|
||||||
bittorrent = handleTest ./bittorrent.nix {};
|
bittorrent = handleTest ./bittorrent.nix {};
|
||||||
#blivet = handleTest ./blivet.nix {}; # broken since 2017-07024
|
#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";
|
name = "bees";
|
||||||
|
|
||||||
@ -29,27 +29,34 @@ import ./make-test.nix ({ lib, ... }:
|
|||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
let
|
let
|
||||||
withRetry = content: maxTests: sleepTime: ''
|
someContentIsShared = loc: pkgs.writeShellScript "some-content-is-shared" ''
|
||||||
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;
|
[[ $(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 ''
|
in ''
|
||||||
# shut down the instance started by systemd at boot, so we can test our test procedure
|
# 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(
|
||||||
$machine->succeed("cp --reflink=never /aux1/dedup-me-1 /aux1/dedup-me-2");
|
"dd if=/dev/urandom of=/aux1/dedup-me-1 bs=1M count=8",
|
||||||
$machine->succeed("cp --reflink=never /aux1/* /aux2/");
|
"cp --reflink=never /aux1/dedup-me-1 /aux1/dedup-me-2",
|
||||||
$machine->succeed("sync");
|
"cp --reflink=never /aux1/* /aux2/",
|
||||||
$machine->fail(q(${someContentIsShared "/aux1"}));
|
"sync",
|
||||||
$machine->fail(q(${someContentIsShared "/aux2"}));
|
)
|
||||||
$machine->succeed("systemctl start beesd\@aux1.service");
|
machine.fail(
|
||||||
|
"${someContentIsShared "/aux1"}",
|
||||||
|
"${someContentIsShared "/aux2"}",
|
||||||
|
)
|
||||||
|
machine.succeed("systemctl start beesd@aux1.service")
|
||||||
|
|
||||||
# assert that "Set Shared" column is nonzero
|
# assert that "Set Shared" column is nonzero
|
||||||
$machine->succeed(q(${withRetry (someContentIsShared "/aux1") 20 2}));
|
machine.wait_until_succeeds(
|
||||||
$machine->fail(q(${someContentIsShared "/aux2"}));
|
"${someContentIsShared "/aux1"}",
|
||||||
|
)
|
||||||
|
machine.fail("${someContentIsShared "/aux2"}")
|
||||||
|
|
||||||
# assert that 16MB hash table size requested was honored
|
# 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";
|
name = "codimd";
|
||||||
|
|
||||||
@ -35,20 +35,18 @@ import ./make-test.nix ({ pkgs, lib, ... }:
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll();
|
start_all()
|
||||||
|
|
||||||
subtest "CodiMD sqlite", sub {
|
with subtest("CodiMD sqlite"):
|
||||||
$codimdSqlite->waitForUnit("codimd.service");
|
codimdSqlite.wait_for_unit("codimd.service")
|
||||||
$codimdSqlite->waitForOpenPort(3000);
|
codimdSqlite.wait_for_open_port(3000)
|
||||||
$codimdSqlite->waitUntilSucceeds("curl -sSf http://localhost:3000/new");
|
codimdSqlite.wait_until_succeeds("curl -sSf http://localhost:3000/new")
|
||||||
};
|
|
||||||
|
|
||||||
subtest "CodiMD postgres", sub {
|
with subtest("CodiMD postgres"):
|
||||||
$codimdPostgres->waitForUnit("postgresql.service");
|
codimdPostgres.wait_for_unit("postgresql.service")
|
||||||
$codimdPostgres->waitForUnit("codimd.service");
|
codimdPostgres.wait_for_unit("codimd.service")
|
||||||
$codimdPostgres->waitForOpenPort(5432);
|
codimdPostgres.wait_for_open_port(5432)
|
||||||
$codimdPostgres->waitForOpenPort(3000);
|
codimdPostgres.wait_for_open_port(3000)
|
||||||
$codimdPostgres->waitUntilSucceeds("curl -sSf http://localhost:3000/new");
|
codimdPostgres.wait_until_succeeds("curl -sSf http://localhost:3000/new")
|
||||||
};
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# This test runs docker-registry and check if it works
|
# This test runs docker-registry and check if it works
|
||||||
|
|
||||||
import ./make-test.nix ({ pkgs, ...} : {
|
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
name = "docker-registry";
|
name = "docker-registry";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ globin ma27 ironpinguin ];
|
maintainers = [ globin ma27 ironpinguin ];
|
||||||
@ -28,36 +28,34 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$client1->start();
|
client1.start()
|
||||||
$client1->waitForUnit("docker.service");
|
client1.wait_for_unit("docker.service")
|
||||||
$client1->succeed("tar cv --files-from /dev/null | docker import - scratch");
|
client1.succeed("tar cv --files-from /dev/null | docker import - scratch")
|
||||||
$client1->succeed("docker tag scratch registry:8080/scratch");
|
client1.succeed("docker tag scratch registry:8080/scratch")
|
||||||
|
|
||||||
$registry->start();
|
registry.start()
|
||||||
$registry->waitForUnit("docker-registry.service");
|
registry.wait_for_unit("docker-registry.service")
|
||||||
$registry->waitForOpenPort("8080");
|
registry.wait_for_open_port("8080")
|
||||||
$client1->succeed("docker push registry:8080/scratch");
|
client1.succeed("docker push registry:8080/scratch")
|
||||||
|
|
||||||
$client2->start();
|
client2.start()
|
||||||
$client2->waitForUnit("docker.service");
|
client2.wait_for_unit("docker.service")
|
||||||
$client2->succeed("docker pull registry:8080/scratch");
|
client2.succeed("docker pull registry:8080/scratch")
|
||||||
$client2->succeed("docker images | grep scratch");
|
client2.succeed("docker images | grep scratch")
|
||||||
|
|
||||||
$client2->succeed(
|
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\')'
|
"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.systemctl("start docker-registry-garbage-collect.service")
|
||||||
$registry->waitUntilFails("systemctl status docker-registry-garbage-collect.service");
|
registry.wait_until_fails("systemctl status docker-registry-garbage-collect.service")
|
||||||
$registry->waitForUnit("docker-registry.service");
|
registry.wait_for_unit("docker-registry.service")
|
||||||
|
|
||||||
$registry->fail(
|
registry.fail("ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data")
|
||||||
'ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data'
|
|
||||||
);
|
|
||||||
|
|
||||||
$client1->succeed("docker push registry:8080/scratch");
|
client1.succeed("docker push registry:8080/scratch")
|
||||||
$registry->succeed(
|
registry.succeed(
|
||||||
'ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data'
|
"ls -l /var/lib/docker-registry/docker/registry/v2/blobs/sha256/*/*/data"
|
||||||
);
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# This test runs simple etcd cluster
|
# 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 {
|
runWithOpenSSL = file: cmd: pkgs.runCommand file {
|
||||||
buildInputs = [ pkgs.openssl ];
|
buildInputs = [ pkgs.openssl ];
|
||||||
@ -129,29 +129,26 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
subtest "should start etcd cluster", sub {
|
with subtest("should start etcd cluster"):
|
||||||
$node1->start();
|
node1.start()
|
||||||
$node2->start();
|
node2.start()
|
||||||
$node1->waitForUnit("etcd.service");
|
node1.wait_for_unit("etcd.service")
|
||||||
$node2->waitForUnit("etcd.service");
|
node2.wait_for_unit("etcd.service")
|
||||||
$node2->waitUntilSucceeds("etcdctl cluster-health");
|
node2.wait_until_succeeds("etcdctl cluster-health")
|
||||||
$node1->succeed("etcdctl set /foo/bar 'Hello world'");
|
node1.succeed("etcdctl set /foo/bar 'Hello world'")
|
||||||
$node2->succeed("etcdctl get /foo/bar | grep 'Hello world'");
|
node2.succeed("etcdctl get /foo/bar | grep 'Hello world'")
|
||||||
};
|
|
||||||
|
|
||||||
subtest "should add another member", sub {
|
with subtest("should add another member"):
|
||||||
$node1->waitUntilSucceeds("etcdctl member add node3 https://node3:2380");
|
node1.wait_until_succeeds("etcdctl member add node3 https://node3:2380")
|
||||||
$node3->start();
|
node3.start()
|
||||||
$node3->waitForUnit("etcd.service");
|
node3.wait_for_unit("etcd.service")
|
||||||
$node3->waitUntilSucceeds("etcdctl member list | grep 'node3'");
|
node3.wait_until_succeeds("etcdctl member list | grep 'node3'")
|
||||||
$node3->succeed("etcdctl cluster-health");
|
node3.succeed("etcdctl cluster-health")
|
||||||
};
|
|
||||||
|
|
||||||
subtest "should survive member crash", sub {
|
with subtest("should survive member crash"):
|
||||||
$node3->crash;
|
node3.crash()
|
||||||
$node1->succeed("etcdctl cluster-health");
|
node1.succeed("etcdctl cluster-health")
|
||||||
$node1->succeed("etcdctl set /foo/bar 'Hello degraded world'");
|
node1.succeed("etcdctl set /foo/bar 'Hello degraded world'")
|
||||||
$node1->succeed("etcdctl get /foo/bar | grep 'Hello degraded world'");
|
node1.succeed("etcdctl get /foo/bar | grep 'Hello degraded world'")
|
||||||
};
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# This test runs simple etcd node
|
# This test runs simple etcd node
|
||||||
|
|
||||||
import ./make-test.nix ({ pkgs, ... } : {
|
import ./make-test-python.nix ({ pkgs, ... } : {
|
||||||
name = "etcd";
|
name = "etcd";
|
||||||
|
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
@ -14,14 +14,12 @@ import ./make-test.nix ({ pkgs, ... } : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
subtest "should start etcd node", sub {
|
with subtest("should start etcd node"):
|
||||||
$node->start();
|
node.start()
|
||||||
$node->waitForUnit("etcd.service");
|
node.wait_for_unit("etcd.service")
|
||||||
};
|
|
||||||
|
|
||||||
subtest "should write and read some values to etcd", sub {
|
with subtest("should write and read some values to etcd"):
|
||||||
$node->succeed("etcdctl set /foo/bar 'Hello world'");
|
node.succeed("etcdctl set /foo/bar 'Hello world'")
|
||||||
$node->succeed("etcdctl get /foo/bar | grep '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
|
let
|
||||||
inherit (import ./../ssh-keys.nix pkgs)
|
inherit (import ./../ssh-keys.nix pkgs)
|
||||||
snakeOilPrivateKey snakeOilPublicKey;
|
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 {
|
in {
|
||||||
name = "google-oslogin";
|
name = "google-oslogin";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
@ -15,38 +22,49 @@ in {
|
|||||||
client = { ... }: {};
|
client = { ... }: {};
|
||||||
};
|
};
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$server->waitForUnit("mock-google-metadata.service");
|
server.wait_for_unit("mock-google-metadata.service")
|
||||||
$server->waitForOpenPort(80);
|
server.wait_for_open_port(80)
|
||||||
|
|
||||||
# mockserver should return a non-expired ssh key for both mockuser and mockadmin
|
# 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(
|
||||||
$server->succeed('${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockadmin | grep -q "${snakeOilPublicKey}"');
|
'${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
|
# install snakeoil ssh key on the client, and provision .ssh/config file
|
||||||
$client->succeed("mkdir -p ~/.ssh");
|
client.succeed("mkdir -p ~/.ssh")
|
||||||
$client->succeed("cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil");
|
client.succeed(
|
||||||
$client->succeed("chmod 600 ~/.ssh/id_snakeoil");
|
"cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil"
|
||||||
|
)
|
||||||
|
client.succeed("chmod 600 ~/.ssh/id_snakeoil")
|
||||||
|
client.succeed("cp ${ssh-config} ~/.ssh/config")
|
||||||
|
|
||||||
$client->waitForUnit("network.target");
|
client.wait_for_unit("network.target")
|
||||||
$server->waitForUnit("sshd.service");
|
server.wait_for_unit("sshd.service")
|
||||||
|
|
||||||
# we should not be able to connect as non-existing user
|
# 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
|
# 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
|
# 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
|
# 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
|
# 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
|
# 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";
|
name = "gotify-server";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ ma27 ];
|
maintainers = [ ma27 ];
|
||||||
@ -14,32 +14,32 @@ import ./make-test.nix ({ pkgs, lib, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
machine.start()
|
||||||
|
|
||||||
$machine->waitForUnit("gotify-server");
|
machine.wait_for_unit("gotify-server.service")
|
||||||
$machine->waitForOpenPort(3000);
|
machine.wait_for_open_port(3000)
|
||||||
|
|
||||||
my $token = $machine->succeed(
|
token = machine.succeed(
|
||||||
"curl --fail -sS -X POST localhost:3000/application -F name=nixos " .
|
"curl --fail -sS -X POST localhost:3000/application -F name=nixos "
|
||||||
'-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" ' .
|
+ '-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" '
|
||||||
'| jq .token | xargs echo -n'
|
+ "| jq .token | xargs echo -n"
|
||||||
);
|
)
|
||||||
|
|
||||||
my $usertoken = $machine->succeed(
|
usertoken = machine.succeed(
|
||||||
"curl --fail -sS -X POST localhost:3000/client -F name=nixos " .
|
"curl --fail -sS -X POST localhost:3000/client -F name=nixos "
|
||||||
'-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" ' .
|
+ '-H "Authorization: Basic $(echo -ne "admin:admin" | base64 --wrap 0)" '
|
||||||
'| jq .token | xargs echo -n'
|
+ "| jq .token | xargs echo -n"
|
||||||
);
|
)
|
||||||
|
|
||||||
$machine->succeed(
|
machine.succeed(
|
||||||
"curl --fail -sS -X POST 'localhost:3000/message?token=$token' -H 'Accept: application/json' " .
|
f"curl --fail -sS -X POST 'localhost:3000/message?token={token}' -H 'Accept: application/json' "
|
||||||
'-F title=Gotify -F message=Works'
|
+ "-F title=Gotify -F message=Works"
|
||||||
);
|
)
|
||||||
|
|
||||||
my $title = $machine->succeed(
|
title = machine.succeed(
|
||||||
"curl --fail -sS 'localhost:3000/message?since=0&token=$usertoken' | jq '.messages|.[0]|.title' | xargs echo -n"
|
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";
|
name = "graylog";
|
||||||
meta.maintainers = with lib.maintainers; [ ma27 ];
|
meta.maintainers = with lib.maintainers; [ ma27 ];
|
||||||
|
|
||||||
@ -64,48 +64,52 @@ import ./make-test.nix ({ pkgs, lib, ... }: {
|
|||||||
facility = "Test";
|
facility = "Test";
|
||||||
});
|
});
|
||||||
in ''
|
in ''
|
||||||
$machine->start;
|
machine.start()
|
||||||
$machine->waitForUnit("graylog.service");
|
machine.wait_for_unit("graylog.service")
|
||||||
$machine->waitForOpenPort(9000);
|
machine.wait_for_open_port(9000)
|
||||||
$machine->succeed("curl -sSfL http://127.0.0.1:9000/");
|
machine.succeed("curl -sSfL http://127.0.0.1:9000/")
|
||||||
|
|
||||||
my $session = $machine->succeed("curl -X POST "
|
session = machine.succeed(
|
||||||
. "-sSfL http://127.0.0.1:9000/api/system/sessions "
|
"curl -X POST "
|
||||||
. "-d \$(cat ${payloads.login}) "
|
+ "-sSfL http://127.0.0.1:9000/api/system/sessions "
|
||||||
. "-H 'Content-Type: application/json' "
|
+ "-d $(cat ${payloads.login}) "
|
||||||
. "-H 'Accept: application/json' "
|
+ "-H 'Content-Type: application/json' "
|
||||||
. "-H 'x-requested-by: cli' "
|
+ "-H 'Accept: application/json' "
|
||||||
. "| jq .session_id | xargs echo"
|
+ "-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 "
|
machine.wait_until_succeeds(
|
||||||
. "-sSfL http://127.0.0.1:9000/api/system/inputs -u $session:session "
|
"test \"$(curl -sSfL 'http://127.0.0.1:9000/api/cluster/inputstates' "
|
||||||
. "-d \$(cat ${payloads.input} | sed -e \"s,\@node\@,\$(cat /var/lib/graylog/server/node-id),\") "
|
+ f"-u {session}:session "
|
||||||
. "-H 'Accept: application/json' "
|
+ "-H 'Accept: application/json' "
|
||||||
. "-H 'Content-Type: application/json' "
|
+ "-H 'Content-Type: application/json' "
|
||||||
. "-H 'x-requested-by: cli' "
|
+ "-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' "
|
machine.succeed(
|
||||||
. "-u $session:session "
|
"echo -n $(cat ${payloads.gelf_message}) | nc -w10 -u 127.0.0.1 12201"
|
||||||
. "-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(
|
||||||
|
'test "$(curl -X GET '
|
||||||
$machine->succeed("test \"\$(curl -X GET "
|
+ "-sSfL 'http://127.0.0.1:9000/api/search/universal/relative?query=*' "
|
||||||
. "-sSfL 'http://127.0.0.1:9000/api/search/universal/relative?query=*' "
|
+ f"-u {session}:session "
|
||||||
. "-u $session:session "
|
+ "-H 'Accept: application/json' "
|
||||||
. "-H 'Accept: application/json' "
|
+ "-H 'Content-Type: application/json' "
|
||||||
. "-H 'Content-Type: application/json' "
|
+ "-H 'x-requested-by: cli'"
|
||||||
. "-H 'x-requested-by: cli'"
|
+ ' | jq \'.total_results\' | xargs echo)" = "1"'
|
||||||
. " | jq '.total_results' | xargs echo)\" = \"1\""
|
)
|
||||||
);
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Test whether mysqlBackup option works
|
# Test whether mysqlBackup option works
|
||||||
import ./make-test.nix ({ pkgs, ... } : {
|
import ./make-test-python.nix ({ pkgs, ... } : {
|
||||||
name = "mysql-backup";
|
name = "mysql-backup";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ rvl ];
|
maintainers = [ rvl ];
|
||||||
@ -20,31 +20,37 @@ import ./make-test.nix ({ pkgs, ... } : {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript =
|
testScript = ''
|
||||||
'' startAll;
|
start_all()
|
||||||
|
|
||||||
# Delete backup file that may be left over from a previous test run.
|
# 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.
|
# 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.
|
# 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).
|
# 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
|
# Do a backup and wait for it to start
|
||||||
$master->startJob("mysql-backup.service");
|
master.start_job("mysql-backup.service")
|
||||||
$master->waitForJob("mysql-backup.service");
|
master.wait_for_unit("mysql-backup.service")
|
||||||
|
|
||||||
# wait for backup to fail, because of database 'doesnotexist'
|
# 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
|
# wait for backup file and check that data appears in backup
|
||||||
$master->waitForFile("/var/backup/mysql/testdb.gz");
|
master.wait_for_file("/var/backup/mysql/testdb.gz")
|
||||||
$master->succeed("${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello");
|
master.succeed(
|
||||||
|
"${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello"
|
||||||
|
)
|
||||||
|
|
||||||
# Check that a failed backup is logged
|
# 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
|
let
|
||||||
replicateUser = "replicate";
|
replicateUser = "replicate";
|
||||||
@ -54,28 +54,36 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$master->start;
|
master.start()
|
||||||
$master->waitForUnit("mysql");
|
master.wait_for_unit("mysql")
|
||||||
$master->waitForOpenPort(3306);
|
master.wait_for_open_port(3306)
|
||||||
# Wait for testdb to be fully populated (5 rows).
|
# 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;
|
slave1.start()
|
||||||
$slave2->start;
|
slave2.start()
|
||||||
$slave1->waitForUnit("mysql");
|
slave1.wait_for_unit("mysql")
|
||||||
$slave1->waitForOpenPort(3306);
|
slave1.wait_for_open_port(3306)
|
||||||
$slave2->waitForUnit("mysql");
|
slave2.wait_for_unit("mysql")
|
||||||
$slave2->waitForOpenPort(3306);
|
slave2.wait_for_open_port(3306)
|
||||||
|
|
||||||
# wait for replications to finish
|
# wait for replications to finish
|
||||||
$slave1->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
slave1.wait_until_succeeds(
|
||||||
$slave2->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
"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");
|
slave2.succeed("systemctl stop mysql")
|
||||||
$master->succeed("echo 'insert into testdb.tests values (123, 456);' | mysql -u root -N");
|
master.succeed("echo 'insert into testdb.tests values (123, 456);' | mysql -u root -N")
|
||||||
$slave2->succeed("systemctl start mysql");
|
slave2.succeed("systemctl start mysql")
|
||||||
$slave2->waitForUnit("mysql");
|
slave2.wait_for_unit("mysql")
|
||||||
$slave2->waitForOpenPort(3306);
|
slave2.wait_for_open_port(3306)
|
||||||
$slave2->waitUntilSucceeds("echo 'select * from testdb.tests where Id = 123;' | mysql -u root -N | grep 456");
|
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";
|
name = "mysql";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ eelco shlevy ];
|
maintainers = [ eelco shlevy ];
|
||||||
@ -47,17 +47,23 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all
|
||||||
|
|
||||||
$mysql->waitForUnit("mysql");
|
mysql.wait_for_unit("mysql")
|
||||||
$mysql->succeed("echo 'use empty_testdb;' | mysql -u root");
|
mysql.succeed("echo 'use empty_testdb;' | mysql -u root")
|
||||||
$mysql->succeed("echo 'use testdb; select * from tests;' | mysql -u root -N | grep 4");
|
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
|
# ';' 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.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(
|
||||||
$mariadb->succeed("echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser");
|
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | 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.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)
|
let inherit (import ./ssh-keys.nix pkgs)
|
||||||
snakeOilPrivateKey snakeOilPublicKey;
|
snakeOilPrivateKey snakeOilPublicKey;
|
||||||
ssh-config = builtins.toFile "ssh.conf" ''
|
ssh-config = builtins.toFile "ssh.conf" ''
|
||||||
@ -18,22 +18,28 @@ in
|
|||||||
client.nix.package = pkgs.nix;
|
client.nix.package = pkgs.nix;
|
||||||
};
|
};
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$client->succeed("mkdir -m 700 /root/.ssh");
|
client.succeed("mkdir -m 700 /root/.ssh")
|
||||||
$client->copyFileFromHost("${ssh-config}", "/root/.ssh/config");
|
client.succeed(
|
||||||
$client->succeed("cat ${snakeOilPrivateKey} > /root/.ssh/id_ecdsa");
|
"cat ${ssh-config} > /root/.ssh/config"
|
||||||
$client->succeed("chmod 600 /root/.ssh/id_ecdsa");
|
)
|
||||||
|
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 :(
|
# 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 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(
|
||||||
$client->succeed("diff /root/other-store\$(cat mach-id-path) /etc/machine-id");
|
"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
|
let
|
||||||
gpgKeyring = (pkgs.runCommand "gpg-keyring" { buildInputs = [ pkgs.gnupg ]; } ''
|
gpgKeyring = (pkgs.runCommand "gpg-keyring" { buildInputs = [ pkgs.gnupg ]; } ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
@ -32,7 +32,7 @@ let
|
|||||||
gpg --batch --sign --detach-sign --output SHA256SUMS.gpg SHA256SUMS
|
gpg --batch --sign --detach-sign --output SHA256SUMS.gpg SHA256SUMS
|
||||||
'');
|
'');
|
||||||
in {
|
in {
|
||||||
name = "opensmtpd";
|
name = "systemd-nspawn";
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
server = { pkgs, ... }: {
|
server = { pkgs, ... }: {
|
||||||
@ -48,11 +48,13 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$server->waitForUnit("nginx.service");
|
server.wait_for_unit("nginx.service")
|
||||||
$client->waitForUnit("network-online.target");
|
client.wait_for_unit("network-online.target")
|
||||||
$client->succeed("machinectl pull-raw --verify=signature http://server/testimage.raw");
|
client.succeed("machinectl pull-raw --verify=signature http://server/testimage.raw")
|
||||||
$client->succeed("cmp /var/lib/machines/testimage.raw ${nspawnImages}/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";
|
name = "wordpress";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ grahamc ]; # under duress!
|
maintainers = [
|
||||||
|
flokli
|
||||||
|
grahamc # under duress!
|
||||||
|
mmilata
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
machine =
|
machine =
|
||||||
@ -23,19 +27,31 @@ import ./make-test.nix ({ pkgs, ... }:
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
import re
|
||||||
|
|
||||||
$machine->waitForUnit("httpd");
|
start_all()
|
||||||
$machine->waitForUnit("phpfpm-wordpress-site1.local");
|
|
||||||
$machine->waitForUnit("phpfpm-wordpress-site2.local");
|
|
||||||
|
|
||||||
$machine->succeed("curl -L site1.local | grep 'Welcome to the famous'");
|
machine.wait_for_unit("httpd")
|
||||||
$machine->succeed("curl -L site2.local | grep 'Welcome to the famous'");
|
|
||||||
|
|
||||||
$machine->succeed("systemctl --no-pager show wordpress-init-site1.local.service | grep 'ExecStart=.*status=0'");
|
machine.wait_for_unit("phpfpm-wordpress-site1.local")
|
||||||
$machine->succeed("systemctl --no-pager show wordpress-init-site2.local.service | grep 'ExecStart=.*status=0'");
|
machine.wait_for_unit("phpfpm-wordpress-site2.local")
|
||||||
$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");
|
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";
|
name = "prosody-mysql";
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
@ -57,21 +57,21 @@ import ../make-test.nix {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = { nodes, ... }: ''
|
testScript = { nodes, ... }: ''
|
||||||
$mysql->waitForUnit('mysql.service');
|
mysql.wait_for_unit("mysql.service")
|
||||||
$server->waitForUnit('prosody.service');
|
server.wait_for_unit("prosody.service")
|
||||||
$server->succeed('prosodyctl status') =~ /Prosody is running/;
|
server.succeed('prosodyctl status | grep "Prosody is running"')
|
||||||
|
|
||||||
# set password to 'nothunter2' (it's asked twice)
|
# 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'
|
# set password to 'y'
|
||||||
$server->succeed('yes | prosodyctl adduser azurediamond@example.com');
|
server.succeed("yes | prosodyctl adduser azurediamond@example.com")
|
||||||
# correct password to 'hunter2'
|
# 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 cthon98@example.com")
|
||||||
$server->succeed('prosodyctl deluser azurediamond@example.com');
|
server.succeed("prosodyctl deluser azurediamond@example.com")
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ../make-test.nix {
|
import ../make-test-python.nix {
|
||||||
name = "prosody";
|
name = "prosody";
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
@ -28,19 +28,19 @@ import ../make-test.nix {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = { nodes, ... }: ''
|
testScript = { nodes, ... }: ''
|
||||||
$server->waitForUnit('prosody.service');
|
server.wait_for_unit("prosody.service")
|
||||||
$server->succeed('prosodyctl status') =~ /Prosody is running/;
|
server.succeed('prosodyctl status | grep "Prosody is running"')
|
||||||
|
|
||||||
# set password to 'nothunter2' (it's asked twice)
|
# 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'
|
# set password to 'y'
|
||||||
$server->succeed('yes | prosodyctl adduser azurediamond@example.com');
|
server.succeed("yes | prosodyctl adduser azurediamond@example.com")
|
||||||
# correct password to 'hunter2'
|
# 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 cthon98@example.com")
|
||||||
$server->succeed('prosodyctl deluser azurediamond@example.com');
|
server.succeed("prosodyctl deluser azurediamond@example.com")
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{ stdenv, fetchFromGitHub, cmake, pkgconfig, alsaLib ? null, fftwFloat, fltk13
|
{ stdenv, fetchFromGitHub, cmake, pkgconfig, alsaLib ? null, fftwFloat, fltk13
|
||||||
, fluidsynth_1 ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null
|
, fluidsynth_1 ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null
|
||||||
, libsamplerate, libsoundio ? null, libsndfile, libvorbis ? null, portaudio ? 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";
|
pname = "lmms";
|
||||||
version = "1.2.0-rc7";
|
version = "1.2.0-rc7";
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
|
|||||||
description = "DAW similar to FL Studio (music production software)";
|
description = "DAW similar to FL Studio (music production software)";
|
||||||
homepage = https://lmms.io;
|
homepage = https://lmms.io;
|
||||||
license = licenses.gpl2Plus;
|
license = licenses.gpl2Plus;
|
||||||
platforms = platforms.linux;
|
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||||
maintainers = with maintainers; [ goibhniu yegortimoshenko ];
|
maintainers = with maintainers; [ goibhniu yegortimoshenko ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ mkDerivation rec {
|
|||||||
# https://cgit.kde.org/kdevelop.git/commit/?id=716372ae2e8dff9c51e94d33443536786e4bd85b
|
# https://cgit.kde.org/kdevelop.git/commit/?id=716372ae2e8dff9c51e94d33443536786e4bd85b
|
||||||
# required as nixos seems to be unable to find CLANG_BUILTIN_DIR
|
# required as nixos seems to be unable to find CLANG_BUILTIN_DIR
|
||||||
cmakeFlags = [
|
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;
|
dontWrapQtApps = true;
|
||||||
|
@ -30,14 +30,14 @@ let
|
|||||||
license_dir = "~/.config/houdini";
|
license_dir = "~/.config/houdini";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "17.0.352";
|
version = "17.5.327";
|
||||||
pname = "houdini-runtime";
|
pname = "houdini-runtime";
|
||||||
src = requireFile rec {
|
src = requireFile rec {
|
||||||
name = "houdini-${version}-linux_x86_64_gcc6.3.tar.gz";
|
name = "houdini-${version}-linux_x86_64_gcc6.3.tar.gz";
|
||||||
sha256 = "0cl5fkgaplb0cvv7mli06ffc9j4ngpy8hl5zqabj3d645gcgafjg";
|
sha256 = "1byigmhmby8lgi2vmgxy9jlrrqk7jyr507zqkihq5bv8kfsanv1x";
|
||||||
message = ''
|
message = ''
|
||||||
This nix expression requires that ${name} is already part of the store.
|
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>
|
nix-prefetch-url <URL>
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ stdenv.mkDerivation rec {
|
|||||||
'';
|
'';
|
||||||
meta = {
|
meta = {
|
||||||
description = "3D animation application software";
|
description = "3D animation application software";
|
||||||
homepage = https://sidefx.com;
|
homepage = https://www.sidefx.com;
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = stdenv.lib.platforms.linux;
|
||||||
maintainers = [ stdenv.lib.maintainers.canndrew ];
|
maintainers = [ stdenv.lib.maintainers.canndrew ];
|
||||||
|
@ -1,17 +1,27 @@
|
|||||||
{ stdenv, fetchurl, pkgconfig, neon, libusb, openssl, udev, avahi, freeipmi
|
{ stdenv, fetchurl, pkgconfig, neon, libusb, openssl, udev, avahi, freeipmi
|
||||||
, libtool, makeWrapper, nss }:
|
, libtool, makeWrapper, autoreconfHook, fetchpatch
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "nut-2.7.4";
|
pname = "nut";
|
||||||
|
version = "2.7.4";
|
||||||
|
|
||||||
src = fetchurl {
|
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";
|
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 =
|
configureFlags =
|
||||||
[ "--with-all"
|
[ "--with-all"
|
||||||
@ -26,7 +36,6 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
wrapProgram $out/bin/nut-scanner --prefix LD_LIBRARY_PATH : \
|
wrapProgram $out/bin/nut-scanner --prefix LD_LIBRARY_PATH : \
|
||||||
"$out/lib:${neon}/lib:${libusb.out}/lib:${avahi}/lib:${freeipmi}/lib"
|
"$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.
|
interface for monitoring and administering UPS, PDU and SCD hardware.
|
||||||
It uses a layered approach to connect all of the parts.
|
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;
|
repositories.git = https://github.com/networkupstools/nut.git;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = [ maintainers.pierron ];
|
maintainers = [ maintainers.pierron ];
|
||||||
|
@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
getDesktopFileName = drvName: (builtins.parseDrvName drvName).name;
|
|
||||||
|
|
||||||
# TODO: Should we move this to `lib`? Seems like its would be useful in many cases.
|
# TODO: Should we move this to `lib`? Seems like its would be useful in many cases.
|
||||||
extensionOf = filePath:
|
extensionOf = filePath:
|
||||||
lib.concatStringsSep "." (lib.tail (lib.splitString "." (builtins.baseNameOf filePath)));
|
lib.concatStringsSep "." (lib.tail (lib.splitString "." (builtins.baseNameOf filePath)));
|
||||||
@ -15,15 +13,15 @@ let
|
|||||||
'') icons);
|
'') icons);
|
||||||
|
|
||||||
mkSweetHome3D =
|
mkSweetHome3D =
|
||||||
{ name, module, version, src, license, description, desktopName, icons }:
|
{ pname, module, version, src, license, description, desktopName, icons }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
inherit name version src description;
|
inherit pname version src description;
|
||||||
exec = stdenv.lib.toLower module;
|
exec = stdenv.lib.toLower module;
|
||||||
sweethome3dItem = makeDesktopItem {
|
sweethome3dItem = makeDesktopItem {
|
||||||
inherit exec desktopName;
|
inherit exec desktopName;
|
||||||
name = getDesktopFileName name;
|
name = pname;
|
||||||
icon = getDesktopFileName name;
|
icon = pname;
|
||||||
comment = description;
|
comment = description;
|
||||||
genericName = "Computer Aided (Interior) Design";
|
genericName = "Computer Aided (Interior) Design";
|
||||||
categories = "Application;Graphics;2DGraphics;3DGraphics;";
|
categories = "Application;Graphics;2DGraphics;3DGraphics;";
|
||||||
@ -49,7 +47,7 @@ let
|
|||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp install/${module}-${version}.jar $out/share/java/.
|
cp install/${module}-${version}.jar $out/share/java/.
|
||||||
|
|
||||||
${installIcons (getDesktopFileName name) icons}
|
${installIcons pname icons}
|
||||||
|
|
||||||
cp "${sweethome3dItem}/share/applications/"* $out/share/applications
|
cp "${sweethome3dItem}/share/applications/"* $out/share/applications
|
||||||
|
|
||||||
@ -74,9 +72,9 @@ let
|
|||||||
in {
|
in {
|
||||||
|
|
||||||
application = mkSweetHome3D rec {
|
application = mkSweetHome3D rec {
|
||||||
|
pname = stdenv.lib.toLower module + "-application";
|
||||||
version = "6.2";
|
version = "6.2";
|
||||||
module = "SweetHome3D";
|
module = "SweetHome3D";
|
||||||
name = stdenv.lib.toLower module + "-application-" + version;
|
|
||||||
description = "Design and visualize your future home";
|
description = "Design and visualize your future home";
|
||||||
license = stdenv.lib.licenses.gpl2Plus;
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
src = fetchsvn {
|
src = fetchsvn {
|
||||||
|
@ -7,20 +7,17 @@ let
|
|||||||
m: "sweethome3d-"
|
m: "sweethome3d-"
|
||||||
+ removeSuffix "libraryeditor" (toLower m)
|
+ removeSuffix "libraryeditor" (toLower m)
|
||||||
+ "-editor";
|
+ "-editor";
|
||||||
sweetName = m: v: sweetExec m + "-" + v;
|
|
||||||
|
|
||||||
getDesktopFileName = drvName: (builtins.parseDrvName drvName).name;
|
|
||||||
|
|
||||||
mkEditorProject =
|
mkEditorProject =
|
||||||
{ name, module, version, src, license, description, desktopName }:
|
{ pname, module, version, src, license, description, desktopName }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
application = sweethome3dApp;
|
application = sweethome3dApp;
|
||||||
inherit name module version src description;
|
inherit pname module version src description;
|
||||||
exec = sweetExec module;
|
exec = sweetExec module;
|
||||||
editorItem = makeDesktopItem {
|
editorItem = makeDesktopItem {
|
||||||
inherit exec desktopName;
|
inherit exec desktopName;
|
||||||
name = getDesktopFileName name;
|
name = pname;
|
||||||
comment = description;
|
comment = description;
|
||||||
genericName = "Computer Aided (Interior) Design";
|
genericName = "Computer Aided (Interior) Design";
|
||||||
categories = "Application;Graphics;2DGraphics;3DGraphics;";
|
categories = "Application;Graphics;2DGraphics;3DGraphics;";
|
||||||
@ -66,7 +63,7 @@ in {
|
|||||||
textures-editor = mkEditorProject rec {
|
textures-editor = mkEditorProject rec {
|
||||||
version = "1.5";
|
version = "1.5";
|
||||||
module = "TexturesLibraryEditor";
|
module = "TexturesLibraryEditor";
|
||||||
name = sweetName module version;
|
pname = module;
|
||||||
description = "Easily create SH3T files and edit the properties of the texture images it contain";
|
description = "Easily create SH3T files and edit the properties of the texture images it contain";
|
||||||
license = stdenv.lib.licenses.gpl2Plus;
|
license = stdenv.lib.licenses.gpl2Plus;
|
||||||
src = fetchcvs {
|
src = fetchcvs {
|
||||||
@ -81,7 +78,7 @@ in {
|
|||||||
furniture-editor = mkEditorProject rec {
|
furniture-editor = mkEditorProject rec {
|
||||||
version = "1.19";
|
version = "1.19";
|
||||||
module = "FurnitureLibraryEditor";
|
module = "FurnitureLibraryEditor";
|
||||||
name = sweetName module version;
|
pname = module;
|
||||||
description = "Quickly create SH3F files and edit the properties of the 3D models it contain";
|
description = "Quickly create SH3F files and edit the properties of the 3D models it contain";
|
||||||
license = stdenv.lib.licenses.gpl2;
|
license = stdenv.lib.licenses.gpl2;
|
||||||
src = fetchcvs {
|
src = fetchcvs {
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
{ stdenv, fetchurl, cmake }:
|
{ stdenv, fetchFromGitHub, cmake }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "timewarrior";
|
pname = "timewarrior";
|
||||||
version = "1.1.1";
|
version = "1.2.0";
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitHub {
|
||||||
url = "https://taskwarrior.org/download/timew-${version}.tar.gz";
|
owner = "GothenburgBitFactory";
|
||||||
sha256 = "1jfcfzdwk5qqhxznj1bgy0sx3lnp3z5lqr9kch9a7iazwmi9lz8z";
|
repo = "timewarrior";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0ci8kb7gdp1dsv6xj30nbz8lidrmn50pbriw26wv8mdhs17rfk7w";
|
||||||
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
{ stdenv, fetchFromGitHub, autoreconfHook }:
|
{ stdenv, fetchFromGitHub, autoreconfHook }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "1.4.17";
|
version = "1.4.18";
|
||||||
pname = "tnef";
|
pname = "tnef";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "verdammelt";
|
owner = "verdammelt";
|
||||||
repo = "tnef";
|
repo = "tnef";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0cq2xh5wd74qn6k2nnw5rayxgqhjl3jbzf4zlc4babcwxrv32ldh";
|
sha256 = "104g48mcm00bgiyzas2vf86331w7bnw7h3bc11ib4lp7rz6zqfck";
|
||||||
};
|
};
|
||||||
|
|
||||||
doCheck = true;
|
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";
|
owner = "getzola";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0dbj2rkn4k5glnwdazsvjhah5pj9cbdb8hwlvm5q4njsmrgpyaw5";
|
sha256 = "13kbgxh7r6124d1fjdf0x599j1kpgixp1y9d299zb5vrd6rf5wy5";
|
||||||
};
|
};
|
||||||
|
cargoPatches = [ ./cargo-lock.patch ];
|
||||||
|
|
||||||
cargoSha256 = "0i0xqbpbv3md42d2853cfzkhfwlkvxahhz5dldla5x96rm1i2hr8";
|
cargoSha256 = "03rwf5l1l3ap03qi0xqcxsbyvpg3cqmr50j8ql6c5v55xl0ki9w8";
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkgconfig ];
|
nativeBuildInputs = [ cmake pkgconfig ];
|
||||||
buildInputs = [ openssl ]
|
buildInputs = [ openssl ]
|
||||||
|
@ -150,8 +150,8 @@ let
|
|||||||
# ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
|
# ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
|
||||||
# ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
|
# ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
|
||||||
] ++ optionals (useVaapi) [
|
] ++ optionals (useVaapi) [
|
||||||
# source: https://aur.archlinux.org/cgit/aur.git/plain/chromium-vaapi.patch?h=chromium-vaapi
|
# source: https://aur.archlinux.org/cgit/aur.git/tree/vaapi-fix.patch?h=chromium-vaapi
|
||||||
./patches/chromium-vaapi.patch
|
./patches/vaapi-fix.patch
|
||||||
] ++ optional stdenv.isAarch64 (fetchpatch {
|
] ++ optional stdenv.isAarch64 (fetchpatch {
|
||||||
url = https://raw.githubusercontent.com/OSSystems/meta-browser/e4a667deaaf9a26a3a1aeb355770d1f29da549ad/recipes-browser/chromium/files/aarch64-skia-build-fix.patch;
|
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";
|
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
|
let
|
||||||
wrapper =
|
wrapper =
|
||||||
{ browserName ? browser.browserName or (builtins.parseDrvName browser.name).name
|
{ browserName ? browser.browserName or (lib.getName browser)
|
||||||
, name ? (browserName + "-" + (builtins.parseDrvName browser.name).version)
|
, pname ? browserName
|
||||||
|
, version ? lib.getVersion browser
|
||||||
, desktopName ? # browserName with first letter capitalized
|
, desktopName ? # browserName with first letter capitalized
|
||||||
(lib.toUpper (lib.substring 0 1 browserName) + lib.substring 1 (-1) browserName)
|
(lib.toUpper (lib.substring 0 1 browserName) + lib.substring 1 (-1) browserName)
|
||||||
, nameSuffix ? ""
|
, nameSuffix ? ""
|
||||||
@ -83,7 +84,7 @@ let
|
|||||||
gtk_modules = [ libcanberra-gtk2 ];
|
gtk_modules = [ libcanberra-gtk2 ];
|
||||||
|
|
||||||
in stdenv.mkDerivation {
|
in stdenv.mkDerivation {
|
||||||
inherit name;
|
inherit pname version;
|
||||||
|
|
||||||
desktopItem = makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
name = browserName;
|
name = browserName;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
set -eu -o pipefail
|
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')"
|
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
|
if [ ! "null" = "${latestSha}" ]; then
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
set -eu -o pipefail
|
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]\.?)+)/')"
|
version="$(curl -sI https://zoom.us/client/latest/zoom_x86_64.tar.xz | grep -Fi 'Location:' | pcregrep -o1 '/(([0-9]\.?)+)/')"
|
||||||
|
|
||||||
if [ ! "${oldVersion}" = "${version}" ]; then
|
if [ ! "${oldVersion}" = "${version}" ]; then
|
||||||
|
@ -103,6 +103,8 @@ let
|
|||||||
|
|
||||||
git-imerge = callPackage ./git-imerge { };
|
git-imerge = callPackage ./git-imerge { };
|
||||||
|
|
||||||
|
git-machete = python3Packages.callPackage ./git-machete { };
|
||||||
|
|
||||||
git-octopus = callPackage ./git-octopus { };
|
git-octopus = callPackage ./git-octopus { };
|
||||||
|
|
||||||
git-open = callPackage ./git-open { };
|
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
|
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|')"
|
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
|
if [ ! "${oldVersion}" = "${latestTag}" ]; then
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
version = "1.1";
|
version = "1.1";
|
||||||
perlVersion = (builtins.parseDrvName perl.name).version;
|
perlVersion = stdenv.lib.getVersion perl;
|
||||||
in
|
in
|
||||||
|
|
||||||
assert perlVersion != "";
|
assert perlVersion != "";
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
in symlinkJoin {
|
in symlinkJoin {
|
||||||
|
|
||||||
name = "vdr-with-plugins-${(builtins.parseDrvName vdr.name).version}";
|
name = "vdr-with-plugins-${lib.getVersion vdr}";
|
||||||
|
|
||||||
paths = [ vdr ] ++ plugins;
|
paths = [ vdr ] ++ plugins;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ let
|
|||||||
else
|
else
|
||||||
throw "Unsupported architecture";
|
throw "Unsupported architecture";
|
||||||
|
|
||||||
version = (builtins.parseDrvName edk2.name).version;
|
version = lib.getVersion edk2;
|
||||||
in
|
in
|
||||||
|
|
||||||
edk2.mkDerivation projectDscPath {
|
edk2.mkDerivation projectDscPath {
|
||||||
|
@ -34,8 +34,8 @@ let
|
|||||||
targetPrefix = stdenv.lib.optionalString (targetPlatform != hostPlatform)
|
targetPrefix = stdenv.lib.optionalString (targetPlatform != hostPlatform)
|
||||||
(targetPlatform.config + "-");
|
(targetPlatform.config + "-");
|
||||||
|
|
||||||
bintoolsVersion = (builtins.parseDrvName bintools.name).version;
|
bintoolsVersion = stdenv.lib.getVersion bintools;
|
||||||
bintoolsName = (builtins.parseDrvName bintools.name).name;
|
bintoolsName = stdenv.lib.removePrefix targetPrefix (stdenv.lib.getName bintools);
|
||||||
|
|
||||||
libc_bin = if libc == null then null else getBin libc;
|
libc_bin = if libc == null then null else getBin libc;
|
||||||
libc_dev = if libc == null then null else getDev libc;
|
libc_dev = if libc == null then null else getDev libc;
|
||||||
@ -74,7 +74,7 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = targetPrefix
|
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}");
|
+ (stdenv.lib.optionalString (bintools != null && bintoolsVersion != "") "-${bintoolsVersion}");
|
||||||
|
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
|
@ -35,8 +35,8 @@ let
|
|||||||
targetPrefix = stdenv.lib.optionalString (targetPlatform != hostPlatform)
|
targetPrefix = stdenv.lib.optionalString (targetPlatform != hostPlatform)
|
||||||
(targetPlatform.config + "-");
|
(targetPlatform.config + "-");
|
||||||
|
|
||||||
ccVersion = (builtins.parseDrvName cc.name).version;
|
ccVersion = stdenv.lib.getVersion cc;
|
||||||
ccName = (builtins.parseDrvName cc.name).name;
|
ccName = stdenv.lib.removePrefix targetPrefix (stdenv.lib.getName cc);
|
||||||
|
|
||||||
libc_bin = if libc == null then null else getBin libc;
|
libc_bin = if libc == null then null else getBin libc;
|
||||||
libc_dev = if libc == null then null else getDev libc;
|
libc_dev = if libc == null then null else getDev libc;
|
||||||
@ -94,7 +94,7 @@ assert nativePrefix == bintools.nativePrefix;
|
|||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = targetPrefix
|
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}");
|
+ (stdenv.lib.optionalString (cc != null && ccVersion != "") "-${ccVersion}");
|
||||||
|
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
|
@ -92,8 +92,8 @@ if [ -z "$oldUrl" ]; then
|
|||||||
die "Couldn't evaluate source url from '$attr.src'!"
|
die "Couldn't evaluate source url from '$attr.src'!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
drvName=$(nix-instantiate $systemArg --eval -E "with import ./. {}; (builtins.parseDrvName $attr.name).name" | 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 (builtins.parseDrvName $attr.name).version" | 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
|
if [ -z "$drvName" -o -z "$oldVersion" ]; then
|
||||||
die "Couldn't evaluate name and version from '$attr.name'!"
|
die "Couldn't evaluate name and version from '$attr.name'!"
|
||||||
|
@ -14,10 +14,9 @@ lib.makeScope pkgs.newScope (self: with self; {
|
|||||||
*/
|
*/
|
||||||
removePackagesByName = packages: packagesToRemove:
|
removePackagesByName = packages: packagesToRemove:
|
||||||
let
|
let
|
||||||
pkgName = drv: (builtins.parseDrvName drv.name).name;
|
namesToRemove = map lib.getName packagesToRemove;
|
||||||
namesToRemove = map pkgName packagesToRemove;
|
|
||||||
in
|
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 ];
|
maintainers = with pkgs.lib.maintainers; [ lethalman jtojnar hedning worldofpeace ];
|
||||||
|
|
||||||
|
@ -28,9 +28,6 @@ let cpuName = stdenv.hostPlatform.parsed.cpu.name;
|
|||||||
# Remove some broken manpages.
|
# Remove some broken manpages.
|
||||||
rm -rf $out/Home/man/ja*
|
rm -rf $out/Home/man/ja*
|
||||||
|
|
||||||
# for backward compatibility
|
|
||||||
ln -s $out/Contents/Home $out/jre
|
|
||||||
|
|
||||||
ln -s $out/Contents/Home/* $out/
|
ln -s $out/Contents/Home/* $out/
|
||||||
|
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
|
@ -10,34 +10,34 @@
|
|||||||
"version": "11.0.4"
|
"version": "11.0.4"
|
||||||
},
|
},
|
||||||
"armv6l": {
|
"armv6l": {
|
||||||
"build": "7",
|
"build": "10",
|
||||||
"sha256": "3fbe418368e6d5888d0f15c4751139eb60d9785b864158a001386537fa46f67e",
|
"sha256": "c6b1fda3f8807028cbfcc34a4ded2e8a5a6b6239d2bcc1f06673ea6b1530df94",
|
||||||
"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",
|
"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.3"
|
"version": "11.0.5"
|
||||||
},
|
},
|
||||||
"armv7l": {
|
"armv7l": {
|
||||||
"build": "7",
|
"build": "10",
|
||||||
"sha256": "3fbe418368e6d5888d0f15c4751139eb60d9785b864158a001386537fa46f67e",
|
"sha256": "c6b1fda3f8807028cbfcc34a4ded2e8a5a6b6239d2bcc1f06673ea6b1530df94",
|
||||||
"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",
|
"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.3"
|
"version": "11.0.5"
|
||||||
},
|
},
|
||||||
"packageType": "jdk",
|
"packageType": "jdk",
|
||||||
"vmType": "hotspot",
|
"vmType": "hotspot",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "11",
|
"build": "10",
|
||||||
"sha256": "90c33cf3f2ed0bd773f648815de7347e69cfbb3416ef3bf41616ab1c4aa0f5a8",
|
"sha256": "6dd0c9c8a740e6c19149e98034fba8e368fd9aa16ab417aa636854d40db1a161",
|
||||||
"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",
|
"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.4"
|
"version": "11.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openj9": {
|
"openj9": {
|
||||||
"packageType": "jdk",
|
"packageType": "jdk",
|
||||||
"vmType": "openj9",
|
"vmType": "openj9",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "11",
|
"build": "10",
|
||||||
"sha256": "b1099cccc80a3f434728c9bc3b8a90395793b625f4680ca05267cf635143d64d",
|
"sha256": "6ead0515aecb24c6a8f5f3800a070b7d20a66c8f26cba5dad137824da590a532",
|
||||||
"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",
|
"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.4"
|
"version": "11.0.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -52,20 +52,20 @@
|
|||||||
"packageType": "jre",
|
"packageType": "jre",
|
||||||
"vmType": "hotspot",
|
"vmType": "hotspot",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "11",
|
"build": "10",
|
||||||
"sha256": "70d2cc675155476f1d8516a7ae6729d44681e4fad5a6fc8dfa65cab36a67b7e0",
|
"sha256": "2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b",
|
||||||
"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",
|
"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.4"
|
"version": "11.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openj9": {
|
"openj9": {
|
||||||
"packageType": "jre",
|
"packageType": "jre",
|
||||||
"vmType": "openj9",
|
"vmType": "openj9",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "11",
|
"build": "10",
|
||||||
"sha256": "c2601e7cb22af7a910e03883280cee805074656104d6d3dcaaf30e3bbb832690",
|
"sha256": "2b68ea68d41281238a9dbe494cec762bd97fe34cf4fb6ba44ee1ce66bcec9d38",
|
||||||
"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",
|
"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.4"
|
"version": "11.0.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -76,20 +76,20 @@
|
|||||||
"packageType": "jdk",
|
"packageType": "jdk",
|
||||||
"vmType": "hotspot",
|
"vmType": "hotspot",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "11",
|
"build": "10",
|
||||||
"sha256": "a50b211f475b9497311c9b65594764d7b852b1653f249582bb20fc3c302846a5",
|
"sha256": "0825d0d3177832320b697944cd8e7b2e7fe3893fafe8bfcf33ee3631aa5ca96b",
|
||||||
"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",
|
"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.4"
|
"version": "11.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openj9": {
|
"openj9": {
|
||||||
"packageType": "jdk",
|
"packageType": "jdk",
|
||||||
"vmType": "openj9",
|
"vmType": "openj9",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "11",
|
"build": "10",
|
||||||
"sha256": "7c09678d9c2d9dd0366693c6ab27bed39c76a23e7ac69b8a25c794e99dcf3ba7",
|
"sha256": "97dc8234b73e233316b5dfdca75af9a0d54aa23b1309b1a68fd0a5d2fa928e05",
|
||||||
"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",
|
"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.4"
|
"version": "11.0.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -98,20 +98,20 @@
|
|||||||
"packageType": "jre",
|
"packageType": "jre",
|
||||||
"vmType": "hotspot",
|
"vmType": "hotspot",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "11",
|
"build": "10",
|
||||||
"sha256": "1647fded28d25e562811f7bce2092eb9c21d30608843b04250c023b40604ff26",
|
"sha256": "dfd212023321ebb41bce8cced15b4668001e86ecff6bffdd4f2591ccaae41566",
|
||||||
"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",
|
"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.4"
|
"version": "11.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openj9": {
|
"openj9": {
|
||||||
"packageType": "jre",
|
"packageType": "jre",
|
||||||
"vmType": "openj9",
|
"vmType": "openj9",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "11",
|
"build": "10",
|
||||||
"sha256": "1a8e84bae517a848aa5f25c7b04f26ab3a3bfffaa7fdf9be24e1f83325e46766",
|
"sha256": "ea6bd0be4562e766c035b997447c059d10d5d2e58ca464c57f9078858da1c967",
|
||||||
"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",
|
"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.4"
|
"version": "11.0.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -122,56 +122,56 @@
|
|||||||
"jdk": {
|
"jdk": {
|
||||||
"hotspot": {
|
"hotspot": {
|
||||||
"aarch64": {
|
"aarch64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "652776586ede124189dc218174b5922cc97feac81021ad81905900b349a352d2",
|
"sha256": "35799a2fd4b467115aff1bc3a54853b5131ba9068e53e1ab0fbe5521a3f2ba83",
|
||||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_aarch64_linux_hotspot_8u222b10.tar.gz",
|
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jdk_aarch64_linux_hotspot_8u232b09.tar.gz",
|
||||||
"version": "8.0.222"
|
"version": "8.0.232"
|
||||||
},
|
},
|
||||||
"packageType": "jdk",
|
"packageType": "jdk",
|
||||||
"vmType": "hotspot",
|
"vmType": "hotspot",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "37356281345b93feb4212e6267109b4409b55b06f107619dde4960e402bafa77",
|
"sha256": "7b7884f2eb2ba2d47f4c0bf3bb1a2a95b73a3a7734bd47ebf9798483a7bcc423",
|
||||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u222b10.tar.gz",
|
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jdk_x64_linux_hotspot_8u232b09.tar.gz",
|
||||||
"version": "8.0.222"
|
"version": "8.0.232"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openj9": {
|
"openj9": {
|
||||||
"packageType": "jdk",
|
"packageType": "jdk",
|
||||||
"vmType": "openj9",
|
"vmType": "openj9",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "20cff719c6de43f8bb58c7f59e251da7c1fa2207897c9a4768c8c669716dc819",
|
"sha256": "abea758c7e102f3c4a3be8757ee0ce039a70e2d498c160400dfb83c6f7004dbf",
|
||||||
"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",
|
"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.222"
|
"version": "8.0.232"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jre": {
|
"jre": {
|
||||||
"hotspot": {
|
"hotspot": {
|
||||||
"aarch64": {
|
"aarch64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "dfaf5a121f7606c54bd6232793677a4267eddf65d29cde352b84d84edbccbb51",
|
"sha256": "4540db665260fdc84ae2f191e21beec9168a70a4227718bee5edd317707e2fda",
|
||||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_aarch64_linux_hotspot_8u222b10.tar.gz",
|
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jre_aarch64_linux_hotspot_8u232b09.tar.gz",
|
||||||
"version": "8.0.222"
|
"version": "8.0.232"
|
||||||
},
|
},
|
||||||
"packageType": "jre",
|
"packageType": "jre",
|
||||||
"vmType": "hotspot",
|
"vmType": "hotspot",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "a418ce895c8bf3ca2e7b2f423f038b8b093941684c9430f2e40da0982e12b52d",
|
"sha256": "bd06b84a1fc10e0a555431bc49a84e86df45de0be93c8ee4d09d13513219843b",
|
||||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_x64_linux_hotspot_8u222b10.tar.gz",
|
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jre_x64_linux_hotspot_8u232b09.tar.gz",
|
||||||
"version": "8.0.222"
|
"version": "8.0.232"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openj9": {
|
"openj9": {
|
||||||
"packageType": "jre",
|
"packageType": "jre",
|
||||||
"vmType": "openj9",
|
"vmType": "openj9",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "ae56994a7c8e8c19939c0c2ff8fe5a850eb2f23845c499aa5ede26deb3d5ad28",
|
"sha256": "30bdfdb38901d4807d96a72a33b83f7a4f40255e11a88853c1e8732acc4644a7",
|
||||||
"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",
|
"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.222"
|
"version": "8.0.232"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -182,20 +182,20 @@
|
|||||||
"packageType": "jdk",
|
"packageType": "jdk",
|
||||||
"vmType": "hotspot",
|
"vmType": "hotspot",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "9605fd00d2960934422437f601c7a9a1c5537309b9199d5bc75f84f20cd29a76",
|
"sha256": "c237b2c2c32c893e4ee60cdac8c4bcc34ca731a5445986c03b95cf79918e40c3",
|
||||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_x64_mac_hotspot_8u222b10.tar.gz",
|
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jdk_x64_mac_hotspot_8u232b09.tar.gz",
|
||||||
"version": "8.0.222"
|
"version": "8.0.232"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openj9": {
|
"openj9": {
|
||||||
"packageType": "jdk",
|
"packageType": "jdk",
|
||||||
"vmType": "openj9",
|
"vmType": "openj9",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "df185e167756332163633a826b329db067f8a721f7d5d27f0b353a35fc415de0",
|
"sha256": "168079dcc20f62ac4409800c78d23a63ba7c665e58cd7ac8bde21ebbbb2b6d48",
|
||||||
"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",
|
"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.222"
|
"version": "8.0.232"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -204,20 +204,20 @@
|
|||||||
"packageType": "jre",
|
"packageType": "jre",
|
||||||
"vmType": "hotspot",
|
"vmType": "hotspot",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "b3ac2436534cea932ccf665b317dbf5ffc0ee065efca808b22b6c2d795ca1b90",
|
"sha256": "5ec5f11dbc81ab65641b765e1ef2f924736c0d1cc797cb95b078598d9d863afd",
|
||||||
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_x64_mac_hotspot_8u222b10.tar.gz",
|
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jre_x64_mac_hotspot_8u232b09.tar.gz",
|
||||||
"version": "8.0.222"
|
"version": "8.0.232"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openj9": {
|
"openj9": {
|
||||||
"packageType": "jre",
|
"packageType": "jre",
|
||||||
"vmType": "openj9",
|
"vmType": "openj9",
|
||||||
"x86_64": {
|
"x86_64": {
|
||||||
"build": "10",
|
"build": "9",
|
||||||
"sha256": "d5754413d7bc3a3233aaa7f8465451fbdabaf2a0c2a91743155bf135a3047ec8",
|
"sha256": "60b70aa16c8ca38b96c305003f3d9871897555d0b4039b8e1f8db9ceeab16d53",
|
||||||
"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",
|
"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.222"
|
"version": "8.0.232"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
let
|
let
|
||||||
libPath = "${chicken}/var/lib/chicken/${toString chicken.binaryVersion}/";
|
libPath = "${chicken}/var/lib/chicken/${toString chicken.binaryVersion}/";
|
||||||
overrides = import ./overrides.nix;
|
overrides = import ./overrides.nix;
|
||||||
baseName = (builtins.parseDrvName name).name;
|
baseName = lib.getName name;
|
||||||
override = if builtins.hasAttr baseName overrides
|
override = if builtins.hasAttr baseName overrides
|
||||||
then
|
then
|
||||||
builtins.getAttr baseName overrides
|
builtins.getAttr baseName overrides
|
||||||
|
@ -102,8 +102,8 @@ let majorVersion = "4";
|
|||||||
|
|
||||||
/* Cross-gcc settings (build == host != target) */
|
/* Cross-gcc settings (build == host != target) */
|
||||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ in
|
|||||||
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||||
|
|
||||||
builder = ../builder.sh;
|
builder = ../builder.sh;
|
||||||
|
|
||||||
|
@ -107,8 +107,8 @@ let majorVersion = "4";
|
|||||||
|
|
||||||
/* Cross-gcc settings (build == host != target) */
|
/* Cross-gcc settings (build == host != target) */
|
||||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ in
|
|||||||
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||||
|
|
||||||
builder = ../builder.sh;
|
builder = ../builder.sh;
|
||||||
|
|
||||||
|
@ -98,8 +98,8 @@ let majorVersion = "5";
|
|||||||
|
|
||||||
/* Cross-gcc settings (build == host != target) */
|
/* Cross-gcc settings (build == host != target) */
|
||||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ in
|
|||||||
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||||
|
|
||||||
builder = ../builder.sh;
|
builder = ../builder.sh;
|
||||||
|
|
||||||
|
@ -94,8 +94,8 @@ let majorVersion = "6";
|
|||||||
|
|
||||||
/* Cross-gcc settings (build == host != target) */
|
/* Cross-gcc settings (build == host != target) */
|
||||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ in
|
|||||||
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||||
|
|
||||||
builder = ../builder.sh;
|
builder = ../builder.sh;
|
||||||
|
|
||||||
|
@ -72,13 +72,13 @@ let majorVersion = "7";
|
|||||||
|
|
||||||
/* Cross-gcc settings (build == host != target) */
|
/* Cross-gcc settings (build == host != target) */
|
||||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||||
|
|
||||||
builder = ../builder.sh;
|
builder = ../builder.sh;
|
||||||
|
|
||||||
|
@ -64,13 +64,13 @@ let majorVersion = "8";
|
|||||||
|
|
||||||
/* Cross-gcc settings (build == host != target) */
|
/* Cross-gcc settings (build == host != target) */
|
||||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||||
|
|
||||||
builder = ../builder.sh;
|
builder = ../builder.sh;
|
||||||
|
|
||||||
|
@ -63,13 +63,13 @@ let majorVersion = "9";
|
|||||||
|
|
||||||
/* Cross-gcc settings (build == host != target) */
|
/* Cross-gcc settings (build == host != target) */
|
||||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||||
|
|
||||||
builder = ../builder.sh;
|
builder = ../builder.sh;
|
||||||
|
|
||||||
|
@ -60,13 +60,13 @@ let majorVersion = "7";
|
|||||||
|
|
||||||
/* Cross-gcc settings (build == host != target) */
|
/* Cross-gcc settings (build == host != target) */
|
||||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
stageNameAddon = if crossStageStatic then "stage-static" else "stage-final";
|
||||||
crossNameAddon = if targetPlatform != hostPlatform then "-${targetPlatform.config}" + stageNameAddon else "";
|
crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = crossNameAddon + "${name}${if stripped then "" else "-debug"}-${version}";
|
name = "${crossNameAddon}${name}${if stripped then "" else "-debug"}-${version}";
|
||||||
|
|
||||||
builder = ../builder.sh;
|
builder = ../builder.sh;
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@ pkgs.stdenv.mkDerivation (
|
|||||||
args //
|
args //
|
||||||
{
|
{
|
||||||
|
|
||||||
pname = "emscripten-${args.pname or (builtins.parseDrvName args.name).name}";
|
pname = "emscripten-${lib.getName args}";
|
||||||
version = args.version or (builtins.parseDrvName args.name).version;
|
version = lib.getVersion args;
|
||||||
buildInputs = [ emscripten python ] ++ buildInputs;
|
buildInputs = [ emscripten python ] ++ buildInputs;
|
||||||
nativeBuildInputs = [ emscripten python ] ++ nativeBuildInputs;
|
nativeBuildInputs = [ emscripten python ] ++ nativeBuildInputs;
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps"] // {
|
|||||||
|
|
||||||
# enabled only for src.rock
|
# enabled only for src.rock
|
||||||
setSourceRoot= let
|
setSourceRoot= let
|
||||||
name_only=(builtins.parseDrvName name).name;
|
name_only= lib.getName name;
|
||||||
in
|
in
|
||||||
lib.optionalString (knownRockspec == null) ''
|
lib.optionalString (knownRockspec == null) ''
|
||||||
# format is rockspec_basename/source_basename
|
# format is rockspec_basename/source_basename
|
||||||
|
@ -20,5 +20,6 @@ mkDerivation {
|
|||||||
kbookmarks kcompletion kconfig kcoreaddons kitemviews kjobwidgets kservice
|
kbookmarks kcompletion kconfig kcoreaddons kitemviews kjobwidgets kservice
|
||||||
kxmlgui qtbase qttools solid
|
kxmlgui qtbase qttools solid
|
||||||
];
|
];
|
||||||
|
outputs = [ "out" "dev" ];
|
||||||
patches = (copyPathsToStore (lib.readPathsFromFile ./. ./series));
|
patches = (copyPathsToStore (lib.readPathsFromFile ./. ./series));
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ let
|
|||||||
dst = "pybind11";
|
dst = "pybind11";
|
||||||
};
|
};
|
||||||
|
|
||||||
ccVersion = (builtins.parseDrvName stdenv.cc.name).version;
|
ccVersion = lib.getVersion stdenv.cc;
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -2,7 +2,7 @@ with import ../../../default.nix {};
|
|||||||
runCommand "openssl-lib-marked" {} ''
|
runCommand "openssl-lib-marked" {} ''
|
||||||
mkdir -p "$out/lib"
|
mkdir -p "$out/lib"
|
||||||
for lib in ssl crypto; do
|
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"
|
ln -s "${lib.getLib openssl}/lib/lib$lib.so" "$out/lib/lib$lib.so.$version"
|
||||||
version="$(echo "$version" | sed -re 's/[a-z]+$//')"
|
version="$(echo "$version" | sed -re 's/[a-z]+$//')"
|
||||||
while test -n "$version"; do
|
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
|
# 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";
|
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;
|
meta.platforms = perl.meta.platforms;
|
||||||
}
|
}
|
||||||
attrs
|
attrs
|
||||||
)
|
)
|
||||||
//
|
//
|
||||||
{
|
{
|
||||||
pname = "perl${perl.version}-${attrs.pname or (builtins.parseDrvName attrs.name).name}"; # TODO: phase-out `attrs.name`
|
pname = "perl${perl.version}-${lib.getName attrs}"; # TODO: phase-out `attrs.name`
|
||||||
version = attrs.version or (builtins.parseDrvName attrs.name).version; # TODO: phase-out `attrs.name`
|
version = lib.getVersion attrs; # TODO: phase-out `attrs.name`
|
||||||
builder = ./builder.sh;
|
builder = ./builder.sh;
|
||||||
buildInputs = buildInputs ++ [ perl ];
|
buildInputs = buildInputs ++ [ perl ];
|
||||||
nativeBuildInputs = nativeBuildInputs ++ [ (perl.dev or perl) ];
|
nativeBuildInputs = nativeBuildInputs ++ [ (perl.dev or perl) ];
|
||||||
|
@ -38,7 +38,7 @@ def get_radare2_rev() -> str:
|
|||||||
|
|
||||||
def get_cutter_version() -> str:
|
def get_cutter_version() -> str:
|
||||||
version_expr = """
|
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))
|
return sh("nix", "eval", "--raw", version_expr.strip(), "-I", "radare2={0}".format(SCRIPT_DIR))
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
set -eu -o pipefail
|
set -eu -o pipefail
|
||||||
|
|
||||||
core_json="$(curl -s --fail --location https://updates.jenkins.io/stable/update-center.actual.json | jq .core)"
|
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)"
|
version="$(jq -r .version <<<$core_json)"
|
||||||
sha256="$(jq -r .sha256 <<<$core_json)"
|
sha256="$(jq -r .sha256 <<<$core_json)"
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
{ stdenv, nodePackages_10_x }:
|
{ stdenv, nodePackages_10_x }:
|
||||||
|
|
||||||
let
|
let
|
||||||
drvName = drv: (builtins.parseDrvName drv).name;
|
|
||||||
linkNodeDeps = ({ pkg, deps, name ? "" }:
|
linkNodeDeps = ({ pkg, deps, name ? "" }:
|
||||||
let
|
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: {
|
in nodePackages_10_x.${pkg}.override (oldAttrs: {
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/lib/node_modules/${targetModule}/node_modules
|
mkdir -p $out/lib/node_modules/${targetModule}/node_modules
|
||||||
${stdenv.lib.concatStringsSep "\n" (map (dep: ''
|
${stdenv.lib.concatStringsSep "\n" (map (dep: ''
|
||||||
ln -s ${nodePackages_10_x.${dep}}/lib/node_modules/${drvName dep} \
|
ln -s ${nodePackages_10_x.${dep}}/lib/node_modules/${stdenv.lib.getName dep} \
|
||||||
$out/lib/node_modules/${targetModule}/node_modules/${drvName dep}
|
$out/lib/node_modules/${targetModule}/node_modules/${stdenv.lib.getName dep}
|
||||||
'') deps
|
'') deps
|
||||||
)}
|
)}
|
||||||
'';
|
'';
|
||||||
|
@ -1,21 +1,24 @@
|
|||||||
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
{ stdenv, buildGoModule, fetchFromGitHub }:
|
||||||
|
|
||||||
buildGoPackage rec {
|
buildGoModule rec {
|
||||||
pname = "richgo";
|
pname = "richgo";
|
||||||
version = "0.2.8";
|
version = "0.3.3";
|
||||||
goPackagePath = "github.com/kyoh86/richgo";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kyoh86";
|
owner = "kyoh86";
|
||||||
repo = "richgo";
|
repo = "richgo";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0kbwl3a2gima23zmahk0jxp7wga91bs927a1rp5xl889ikng1n4j";
|
sha256 = "07ipa54c4mzm6yizgvkm6x5yim1xgv3f0xdxg35qziacdfcwd6m4";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
modSha256 = "12wbjfqy6qnapm3f2pz1ci1gvc0y8kzr8c99kihyh1jv9r3zy1wz";
|
||||||
|
|
||||||
|
subPackages = [ "." ];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Enrich `go test` outputs with text decorations.";
|
description = "Enrich `go test` outputs with text decorations.";
|
||||||
homepage = https://github.com/kyoh86/richgo;
|
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 ];
|
maintainers = with maintainers; [ rvolosatovs ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,23 +2,27 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "cargo-generate";
|
pname = "cargo-generate";
|
||||||
version = "0.4.0";
|
version = "0.5.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ashleygwilliams";
|
owner = "ashleygwilliams";
|
||||||
repo = "cargo-generate";
|
repo = "cargo-generate";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "09276jrb0a735v6p06wz94kbk8bblwpca13vpvy8n0jjmqack2xb";
|
sha256 = "07hklya22ixklb44f3qp6yyh5d03a7rjcn0g76icqr36hvcjyjjh";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoSha256 = "1gbxfmhwzpxm0gs3zwzs010j0ndi5aw6xsvvngg0h1lpwg9ypnbr";
|
cargoSha256 = "1rsk9j1ij53dz4gakxwdppgmv12lmyj0ihh9qypdbgskvyq3a2j9";
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
||||||
buildInputs = [ openssl ]
|
buildInputs = [ openssl ]
|
||||||
++ stdenv.lib.optionals stdenv.isDarwin [ Security libiconv curl ];
|
++ 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; {
|
meta = with stdenv.lib; {
|
||||||
description = "cargo, make me a project";
|
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
|
{ mkDerivation
|
||||||
, lib
|
, stdenv
|
||||||
|
, pkgconfig
|
||||||
|
, zlib
|
||||||
|
, qtbase
|
||||||
|
, qtsvg
|
||||||
|
, qttools
|
||||||
|
, qtmultimedia
|
||||||
|
, qmake
|
||||||
|
, fetchurl
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "chessx";
|
pname = "chessx";
|
||||||
version = "1.5.0";
|
version = "1.5.0";
|
||||||
|
|
||||||
@ -11,15 +19,18 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 = "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i";
|
sha256 = "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
nativeBuildInputs = [
|
||||||
qtbase
|
pkgconfig
|
||||||
qtsvg
|
qmake
|
||||||
qttools
|
|
||||||
qtmultimedia
|
|
||||||
zlib
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig qmake makeWrapper ];
|
buildInputs = [
|
||||||
|
qtbase
|
||||||
|
qtmultimedia
|
||||||
|
qtsvg
|
||||||
|
qttools
|
||||||
|
zlib
|
||||||
|
];
|
||||||
|
|
||||||
# RCC: Error in 'resources.qrc': Cannot find file 'i18n/chessx_da.qm'
|
# RCC: Error in 'resources.qrc': Cannot find file 'i18n/chessx_da.qm'
|
||||||
enableParallelBuilding = false;
|
enableParallelBuilding = false;
|
||||||
@ -39,7 +50,7 @@ stdenv.mkDerivation rec {
|
|||||||
homepage = http://chessx.sourceforge.net/;
|
homepage = http://chessx.sourceforge.net/;
|
||||||
description = "ChessX allows you to browse and analyse chess games";
|
description = "ChessX allows you to browse and analyse chess games";
|
||||||
license = licenses.gpl2;
|
license = licenses.gpl2;
|
||||||
maintainers = [maintainers.luispedro];
|
maintainers = [ maintainers.luispedro ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
{ stdenv, fetchFromGitHub, cmake, glew, freeimage, liblockfile
|
{ stdenv, fetchFromGitHub, cmake, glew, freeimage, liblockfile
|
||||||
, openal, cryptopp, libtheora, SDL2, lzo, libjpeg, libogg, tbb
|
, openal, libtheora, SDL2, lzo, libjpeg, libogg, tbb
|
||||||
, pcre, makeWrapper }:
|
, pcre, makeWrapper }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
let
|
||||||
pname = "OpenXRay";
|
|
||||||
version = "558";
|
version = "558";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
@ -14,6 +13,31 @@ stdenv.mkDerivation rec {
|
|||||||
fetchSubmodules = true;
|
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" ];
|
hardeningDisable = [ "format" ];
|
||||||
cmakeFlags = [ "-DCMAKE_INCLUDE_PATH=${cryptopp}/include/cryptopp" ];
|
cmakeFlags = [ "-DCMAKE_INCLUDE_PATH=${cryptopp}/include/cryptopp" ];
|
||||||
installFlags = [ "DESTDIR=${placeholder "out"}" ];
|
installFlags = [ "DESTDIR=${placeholder "out"}" ];
|
||||||
@ -47,6 +71,6 @@ stdenv.mkDerivation rec {
|
|||||||
url = https://github.com/OpenXRay/xray-16/blob/xd_dev/License.txt;
|
url = https://github.com/OpenXRay/xray-16/blob/xd_dev/License.txt;
|
||||||
};
|
};
|
||||||
maintainers = [ maintainers.gnidorah ];
|
maintainers = [ maintainers.gnidorah ];
|
||||||
platforms = ["x86_64-linux" "i686-linux" ];
|
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,8 @@
|
|||||||
{ stdenv, lib, makeWrapper, retroarch, cores }:
|
{ stdenv, lib, makeWrapper, retroarch, cores }:
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
p = builtins.parseDrvName retroarch.name;
|
|
||||||
|
|
||||||
in
|
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "retroarch-" + p.version;
|
pname = "retroarch";
|
||||||
version = p.version;
|
version = lib.getVersion retroarch;
|
||||||
|
|
||||||
buildInputs = [ makeWrapper ];
|
buildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ with callPackage ./util.nix {};
|
|||||||
let patch = (callPackage ./sources.nix {}).staging;
|
let patch = (callPackage ./sources.nix {}).staging;
|
||||||
build-inputs = pkgNames: extra:
|
build-inputs = pkgNames: extra:
|
||||||
(mkBuildInputs wineUnstable.pkgArches 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: {
|
stdenv.lib.overrideDerivation wineUnstable (self: {
|
||||||
buildInputs = build-inputs [ "perl" "utillinux" "autoconf" libtxc_dxtn_Name ] self.buildInputs;
|
buildInputs = build-inputs [ "perl" "utillinux" "autoconf" libtxc_dxtn_Name ] self.buildInputs;
|
||||||
|
@ -25,7 +25,7 @@ let
|
|||||||
addonInfo ? null,
|
addonInfo ? null,
|
||||||
preInstall ? "",
|
preInstall ? "",
|
||||||
postInstall ? "",
|
postInstall ? "",
|
||||||
path ? (builtins.parseDrvName pluginName).name,
|
path ? lib.getName pluginName,
|
||||||
dependencies ? [],
|
dependencies ? [],
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
@ -90,15 +90,12 @@ in {
|
|||||||
inherit buildUBoot;
|
inherit buildUBoot;
|
||||||
|
|
||||||
ubootTools = buildUBoot {
|
ubootTools = buildUBoot {
|
||||||
defconfig = "allnoconfig";
|
defconfig = "tools-only_defconfig";
|
||||||
installDir = "$out/bin";
|
installDir = "$out/bin";
|
||||||
hardeningDisable = [];
|
hardeningDisable = [];
|
||||||
dontStrip = false;
|
dontStrip = false;
|
||||||
extraMeta.platforms = lib.platforms.linux;
|
extraMeta.platforms = lib.platforms.linux;
|
||||||
extraMakeFlags = [ "HOST_TOOLS_ALL=y" "CROSS_BUILD_TOOLS=1" "NO_SDL=1" "tools" ];
|
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 = [
|
filesToInstall = [
|
||||||
"tools/dumpimage"
|
"tools/dumpimage"
|
||||||
"tools/fdtgrep"
|
"tools/fdtgrep"
|
||||||
|
@ -18,7 +18,7 @@ rec {
|
|||||||
buildPhase ? "",
|
buildPhase ? "",
|
||||||
preInstall ? "",
|
preInstall ? "",
|
||||||
postInstall ? "",
|
postInstall ? "",
|
||||||
path ? (builtins.parseDrvName name).name,
|
path ? stdenv.lib.getName name,
|
||||||
addonInfo ? null,
|
addonInfo ? null,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
@ -457,12 +457,12 @@ let
|
|||||||
|
|
||||||
coc-python = buildVimPluginFrom2Nix {
|
coc-python = buildVimPluginFrom2Nix {
|
||||||
pname = "coc-python";
|
pname = "coc-python";
|
||||||
version = "2019-11-07";
|
version = "2019-11-21";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "neoclide";
|
owner = "neoclide";
|
||||||
repo = "coc-python";
|
repo = "coc-python";
|
||||||
rev = "01cf6f3833d44fb83c38655b496212625329c90b";
|
rev = "756c9f623f6a82ad902e2bdfe3f0c77fba96c18e";
|
||||||
sha256 = "0vn9fjhhlgciv7kwda4hn2lg7fisxgdsg47sbqz75qirnixw8mjv";
|
sha256 = "1fab8bzj386zkgn7551l58q4ykqakjbx92afx30i1861y8m1a4p1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -567,12 +567,12 @@ let
|
|||||||
|
|
||||||
coc-tsserver = buildVimPluginFrom2Nix {
|
coc-tsserver = buildVimPluginFrom2Nix {
|
||||||
pname = "coc-tsserver";
|
pname = "coc-tsserver";
|
||||||
version = "2019-11-13";
|
version = "2019-11-20";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "neoclide";
|
owner = "neoclide";
|
||||||
repo = "coc-tsserver";
|
repo = "coc-tsserver";
|
||||||
rev = "3d537937a6ce74cdf08d3109dc14af9baeff9af7";
|
rev = "d48cc4a31217af3e0d2fa91159972ea7a9575b21";
|
||||||
sha256 = "1nfnlirdb91x835hk2h30vnjc940mnw94p2wgp28p80mcbrk4s4v";
|
sha256 = "0zmzyqp8nw99ajzxr8469yfm9zgi53zggxsp6k6b9m6x8c9rqly9";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -843,23 +843,23 @@ let
|
|||||||
|
|
||||||
denite-nvim = buildVimPluginFrom2Nix {
|
denite-nvim = buildVimPluginFrom2Nix {
|
||||||
pname = "denite-nvim";
|
pname = "denite-nvim";
|
||||||
version = "2019-11-18";
|
version = "2019-11-19";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Shougo";
|
owner = "Shougo";
|
||||||
repo = "denite.nvim";
|
repo = "denite.nvim";
|
||||||
rev = "2f8e00266f2958a02eb870b69f4ab0ef1d91c022";
|
rev = "7712a251e172b2dc6a41d36504c0392797484ab1";
|
||||||
sha256 = "1n5h1ys0pb3lfg7zbyfdkshcy05kxd7f4d81qcr69k7n1ni44fvq";
|
sha256 = "0n696hjri23s9janar3k9la85apzl5kn51jgrjjf3p9xbx8h3ljk";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
deol-nvim = buildVimPluginFrom2Nix {
|
deol-nvim = buildVimPluginFrom2Nix {
|
||||||
pname = "deol-nvim";
|
pname = "deol-nvim";
|
||||||
version = "2019-09-08";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Shougo";
|
owner = "Shougo";
|
||||||
repo = "deol.nvim";
|
repo = "deol.nvim";
|
||||||
rev = "474b72a8541e529a1628084c277e6e0aa7f80fda";
|
rev = "6457c49bb90ea955755c6a47a561f04312a28ed8";
|
||||||
sha256 = "00kwij67csk9yp64r8lfrc9m0jm5mqckf4c9a3489azfjn8da097";
|
sha256 = "0bmw6xw0qa25dix4lp82447w3ffl49vf431wz90j6xa0swaxifkj";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -934,12 +934,12 @@ let
|
|||||||
|
|
||||||
deoplete-lsp = buildVimPluginFrom2Nix {
|
deoplete-lsp = buildVimPluginFrom2Nix {
|
||||||
pname = "deoplete-lsp";
|
pname = "deoplete-lsp";
|
||||||
version = "2019-09-20";
|
version = "2019-11-21";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Shougo";
|
owner = "Shougo";
|
||||||
repo = "deoplete-lsp";
|
repo = "deoplete-lsp";
|
||||||
rev = "335e8a03d5741aa42bd7ce64d79e31d7de570ab5";
|
rev = "44185b8c477b1ba5a299f157569f842a5f2ed1ec";
|
||||||
sha256 = "0jn4fn9vkxf3av6mdmzixz20l9ca8n2sql7j9mcmh06mn86949bs";
|
sha256 = "0y7ibagw5hj10qjrkqa8vq1a0h50xdnrirz2lnpyy8wyk9l5l2lc";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -967,23 +967,23 @@ let
|
|||||||
|
|
||||||
deoplete-ternjs = buildVimPluginFrom2Nix {
|
deoplete-ternjs = buildVimPluginFrom2Nix {
|
||||||
pname = "deoplete-ternjs";
|
pname = "deoplete-ternjs";
|
||||||
version = "2019-09-22";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "carlitux";
|
owner = "carlitux";
|
||||||
repo = "deoplete-ternjs";
|
repo = "deoplete-ternjs";
|
||||||
rev = "307f9c3beb178026d122d9ab3825e4640dd1c29a";
|
rev = "ca0ee77276bc688f847b566d64b32e4bb62691d8";
|
||||||
sha256 = "039qbcg9fanrs7dc52n987rhd0xdyvsmjdrfd1dcrr6ys990n64d";
|
sha256 = "0980fwr931dqyp032gcg4mwk2iv3inywa8w3m73zcr082xc0crp7";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
deoplete-nvim = buildVimPluginFrom2Nix {
|
deoplete-nvim = buildVimPluginFrom2Nix {
|
||||||
pname = "deoplete-nvim";
|
pname = "deoplete-nvim";
|
||||||
version = "2019-11-17";
|
version = "2019-11-20";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Shougo";
|
owner = "Shougo";
|
||||||
repo = "deoplete.nvim";
|
repo = "deoplete.nvim";
|
||||||
rev = "edbc7b721e45f1eaa9e1ebe695f4f363f14a7a67";
|
rev = "57cf7710a8dd51797bbbe5a45e67aef44caa126f";
|
||||||
sha256 = "1l33wxdsyvhksnbkv1k924qvgdy9s3rksmqsa1yv7zrssl8xdmjn";
|
sha256 = "1wmlx2nx3bciv9mhws04ryix0sp33j945mn09cm8vvipbq0bk2q2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1598,23 +1598,23 @@ let
|
|||||||
|
|
||||||
lh-brackets = buildVimPluginFrom2Nix {
|
lh-brackets = buildVimPluginFrom2Nix {
|
||||||
pname = "lh-brackets";
|
pname = "lh-brackets";
|
||||||
version = "2019-11-16";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "LucHermitte";
|
owner = "LucHermitte";
|
||||||
repo = "lh-brackets";
|
repo = "lh-brackets";
|
||||||
rev = "941444938a7effce57ddd2706f6fd2455d74a8c5";
|
rev = "88548effe90b6b980e1320656231eaff57952d83";
|
||||||
sha256 = "1pkpjz0j2n1b1qdbmp4lj43qk2ddr55001yjg6cpznsl7b8rq095";
|
sha256 = "1xmsmvkbxqh0ib30qzkk5km5mjdr4f64mxll79x2x0wn8ldwjz9g";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
lh-vim-lib = buildVimPluginFrom2Nix {
|
lh-vim-lib = buildVimPluginFrom2Nix {
|
||||||
pname = "lh-vim-lib";
|
pname = "lh-vim-lib";
|
||||||
version = "2019-11-15";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "LucHermitte";
|
owner = "LucHermitte";
|
||||||
repo = "lh-vim-lib";
|
repo = "lh-vim-lib";
|
||||||
rev = "76432c08d570a30f6d2d4c246756a3eb6e898ee3";
|
rev = "ae9d7cf976143a43af11d350ca3406733549b883";
|
||||||
sha256 = "1wwr5yjvzv1xc0f5qbjfqclrpvx9vnrg8dkybf95lwgp9a8v7xxv";
|
sha256 = "1jziwz9mp6jsfd0jkvj4s6n4fw1kg0zgbd5j5rjz2jgp1akqnz2l";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1730,12 +1730,12 @@ let
|
|||||||
|
|
||||||
ncm2-jedi = buildVimPluginFrom2Nix {
|
ncm2-jedi = buildVimPluginFrom2Nix {
|
||||||
pname = "ncm2-jedi";
|
pname = "ncm2-jedi";
|
||||||
version = "2019-06-07";
|
version = "2019-11-19";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ncm2";
|
owner = "ncm2";
|
||||||
repo = "ncm2-jedi";
|
repo = "ncm2-jedi";
|
||||||
rev = "86744a7641ce11e22d01778c310e5015f85ef412";
|
rev = "b28bf6d054051cc1c7a6b148323d3adb9baa4ed5";
|
||||||
sha256 = "16h17cqy76iwd9b3wsmmzjg6j465mjd5kjybmk6dilxmq07q24c9";
|
sha256 = "07pq8akzvlb8hzksgxx1c50j09ia0xnszq1f83x75kqsjg5f6nhy";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1785,12 +1785,12 @@ let
|
|||||||
|
|
||||||
neco-look = buildVimPluginFrom2Nix {
|
neco-look = buildVimPluginFrom2Nix {
|
||||||
pname = "neco-look";
|
pname = "neco-look";
|
||||||
version = "2018-11-09";
|
version = "2019-11-19";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ujihisa";
|
owner = "ujihisa";
|
||||||
repo = "neco-look";
|
repo = "neco-look";
|
||||||
rev = "8c3951acb93b72dda4572859928ef7b372485596";
|
rev = "4d7f1fd7e406c302fba2a1358017c5a76d0f9fc1";
|
||||||
sha256 = "1gd692yc1x3753rxg58hwc7nwmm4rjr03y1xaczy1qahq1bm9a40";
|
sha256 = "1brvzg15ni5j60wncpvxhs5k36wz83lhvfcnvja2l9yrngcgh6vr";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1972,12 +1972,12 @@ let
|
|||||||
|
|
||||||
nerdtree = buildVimPluginFrom2Nix {
|
nerdtree = buildVimPluginFrom2Nix {
|
||||||
pname = "nerdtree";
|
pname = "nerdtree";
|
||||||
version = "2019-11-13";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "scrooloose";
|
owner = "scrooloose";
|
||||||
repo = "nerdtree";
|
repo = "nerdtree";
|
||||||
rev = "8d9b8dae67c5a6affbfd0304e0949ce9e79065ea";
|
rev = "82b1649f2e1c79ff17730fe0a3750bbec203dd29";
|
||||||
sha256 = "1jgjw0lm1znf530mfa9iniwb3j35hpgz49ccykg5q6lrbscchc7h";
|
sha256 = "07viagjyd5bdnal7m6k0yschdnr2yxmxcg7zlgz7s7inn80blv79";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2566,12 +2566,12 @@ let
|
|||||||
|
|
||||||
syntastic = buildVimPluginFrom2Nix {
|
syntastic = buildVimPluginFrom2Nix {
|
||||||
pname = "syntastic";
|
pname = "syntastic";
|
||||||
version = "2019-10-23";
|
version = "2019-11-20";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "scrooloose";
|
owner = "scrooloose";
|
||||||
repo = "syntastic";
|
repo = "syntastic";
|
||||||
rev = "28bb72adbe5c610bdc07407ddb83898919e4645c";
|
rev = "39b35b23b952d620b8ec7cabb13110f586663837";
|
||||||
sha256 = "1hhpd01vc9377fvqdh30pqack0i0sxxz2qdzz2i6x4snabga2zqj";
|
sha256 = "1nc3019c969ms6m0hrj5k1kggcvsywn6j7kz0scdwzvfd6bcla6h";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2765,12 +2765,12 @@ let
|
|||||||
|
|
||||||
ultisnips = buildVimPluginFrom2Nix {
|
ultisnips = buildVimPluginFrom2Nix {
|
||||||
pname = "ultisnips";
|
pname = "ultisnips";
|
||||||
version = "2019-11-13";
|
version = "2019-11-19";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "SirVer";
|
owner = "SirVer";
|
||||||
repo = "ultisnips";
|
repo = "ultisnips";
|
||||||
rev = "f7b9b3b1100b3b2883ed2d0ac3627708a10dc469";
|
rev = "c309637e0243b71f7e3265ebe3cffdfe9674cfbc";
|
||||||
sha256 = "08g1h9ra807d19rhaf5l6g7pryq07cyy4g1ab0ycwyb0whlr6m57";
|
sha256 = "1q2miwd56k2l7lfwmw3khqnfry9izaca91dcf32p0xp06bc3ah28";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3084,23 +3084,23 @@ let
|
|||||||
|
|
||||||
vim-airline = buildVimPluginFrom2Nix {
|
vim-airline = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-airline";
|
pname = "vim-airline";
|
||||||
version = "2019-11-15";
|
version = "2019-11-21";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "vim-airline";
|
owner = "vim-airline";
|
||||||
repo = "vim-airline";
|
repo = "vim-airline";
|
||||||
rev = "29549aa55a5f20317eb63b8cd0c08c68a1336f3e";
|
rev = "b9eb94120133a3be4cee77e9bedf68c4200f4b04";
|
||||||
sha256 = "1z2chmvxqq5s7a9qjam9j46m7dyfh80z62411swlc9py4aqm91ci";
|
sha256 = "0x9z67i8g4p6iik110nfcnsdpny74gi6arx2yvwssa6vzdv2rh9f";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
vim-airline-themes = buildVimPluginFrom2Nix {
|
vim-airline-themes = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-airline-themes";
|
pname = "vim-airline-themes";
|
||||||
version = "2019-10-31";
|
version = "2019-11-21";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "vim-airline";
|
owner = "vim-airline";
|
||||||
repo = "vim-airline-themes";
|
repo = "vim-airline-themes";
|
||||||
rev = "650701f08fa49abca607f5a69ddf0a8157bcd8cf";
|
rev = "935dffc6ff96f7282db93e40e024c942056aedaa";
|
||||||
sha256 = "0kk21x1g27gsy29ikfh8iayjgnm7vs2zllgwglqfjmlqvkqajmr0";
|
sha256 = "0mx3w41sxvrvk4n4sv1zswlnxmkk93wy9wmc1gmc70yrd9q9jfbx";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3271,12 +3271,12 @@ let
|
|||||||
|
|
||||||
vim-codefmt = buildVimPluginFrom2Nix {
|
vim-codefmt = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-codefmt";
|
pname = "vim-codefmt";
|
||||||
version = "2019-08-14";
|
version = "2019-11-20";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "google";
|
owner = "google";
|
||||||
repo = "vim-codefmt";
|
repo = "vim-codefmt";
|
||||||
rev = "18f47c3ac563b60f71103b1e1d29b349ff9d8549";
|
rev = "dae6dd82a98eda68af83a1f725cc570ef3b1ae7d";
|
||||||
sha256 = "0z36jjj1bxb4xz9lyjrbv769797g3x475ncamflfj6yj72vvhfy4";
|
sha256 = "0w2djjs29dgd5jcfglvgb4mb60vb1bj34mxzbx2sidp3lb15xn4y";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3733,12 +3733,12 @@ let
|
|||||||
|
|
||||||
vim-gitgutter = buildVimPluginFrom2Nix {
|
vim-gitgutter = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-gitgutter";
|
pname = "vim-gitgutter";
|
||||||
version = "2019-10-24";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "airblade";
|
owner = "airblade";
|
||||||
repo = "vim-gitgutter";
|
repo = "vim-gitgutter";
|
||||||
rev = "af20a9fcfff9b5277fc8482e802c4dec291ea589";
|
rev = "fa8d0feb4103f15b97e2abb4e76cbaaf03495d1d";
|
||||||
sha256 = "0jakfv1b1kc8mq1izj7bzd83d55z38igl7xl1c7n1vb9m2dy0nn3";
|
sha256 = "0ki46g0xl6gn75hh9p13any17x5v703bc86ya2nfqwyp2w0gapyg";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3766,12 +3766,12 @@ let
|
|||||||
|
|
||||||
vim-go = buildVimPluginFrom2Nix {
|
vim-go = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-go";
|
pname = "vim-go";
|
||||||
version = "2019-11-18";
|
version = "2019-11-20";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "fatih";
|
owner = "fatih";
|
||||||
repo = "vim-go";
|
repo = "vim-go";
|
||||||
rev = "6d9cabbfa2ed92ef764f87041b60fcab010f7bc7";
|
rev = "d4a9cc72469927202fadf14600253a35240c993e";
|
||||||
sha256 = "0621mh4vh92dp4jhcklgghppncbvpbzzwx9xpxs7b6917hmsxp8g";
|
sha256 = "061qzzldh796lagnk1blpkvx5f55rc8h7vgzgffxg9dhc73my5a3";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3788,12 +3788,12 @@ let
|
|||||||
|
|
||||||
vim-grepper = buildVimPluginFrom2Nix {
|
vim-grepper = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-grepper";
|
pname = "vim-grepper";
|
||||||
version = "2019-10-09";
|
version = "2019-11-19";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mhinz";
|
owner = "mhinz";
|
||||||
repo = "vim-grepper";
|
repo = "vim-grepper";
|
||||||
rev = "8b783474b64fa01b813f9c4a24f240c7c3378726";
|
rev = "d8fa51d4fa99221511dc8b9e2eb1cba23a9b0c20";
|
||||||
sha256 = "1mrqdg0hq4gvzng959dk6hbgh19sxzgg959i6k39c7phdd1f1fm9";
|
sha256 = "1wb4g5g1phixqwpj9nd261f690ziimy80w12pjivrik20bj17ipd";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3953,12 +3953,12 @@ let
|
|||||||
|
|
||||||
vim-illuminate = buildVimPluginFrom2Nix {
|
vim-illuminate = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-illuminate";
|
pname = "vim-illuminate";
|
||||||
version = "2019-08-04";
|
version = "2019-11-21";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "RRethy";
|
owner = "RRethy";
|
||||||
repo = "vim-illuminate";
|
repo = "vim-illuminate";
|
||||||
rev = "0c37ddf0dfbe069b9f2cf1d4a341efe7b373f133";
|
rev = "4929d19cc8483d9d9872cb3669915e6a8cc381a2";
|
||||||
sha256 = "11zjm9a6x57s5rs080p1gcj86l01765ayn3k9yx6mx8d48n8zr3k";
|
sha256 = "1rbhnmqrw8gdpf60lx4akhadz3q80fykal1a9c4mnn5nrqymv9va";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4130,12 +4130,12 @@ let
|
|||||||
|
|
||||||
vim-jsx-pretty = buildVimPluginFrom2Nix {
|
vim-jsx-pretty = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-jsx-pretty";
|
pname = "vim-jsx-pretty";
|
||||||
version = "2019-11-18";
|
version = "2019-11-19";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "MaxMEllon";
|
owner = "MaxMEllon";
|
||||||
repo = "vim-jsx-pretty";
|
repo = "vim-jsx-pretty";
|
||||||
rev = "70586430c0f05c91ed2832db2c65769501978d94";
|
rev = "8b96cea873612b35ddfd7aef4b6c21f991103f0f";
|
||||||
sha256 = "1b2qssdzc0b7pzr1ws86zybvwnwby987xsa7sfizsjqslb14xw4w";
|
sha256 = "18ilra7s29jl7k3nda2z3r7bvixk5b8bbfn9d3nvfz7l26n8s6i6";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4493,12 +4493,12 @@ let
|
|||||||
|
|
||||||
vim-pandoc = buildVimPluginFrom2Nix {
|
vim-pandoc = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-pandoc";
|
pname = "vim-pandoc";
|
||||||
version = "2019-11-07";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "vim-pandoc";
|
owner = "vim-pandoc";
|
||||||
repo = "vim-pandoc";
|
repo = "vim-pandoc";
|
||||||
rev = "9275cdb54b55eda88f3f0066783ea72410ccf678";
|
rev = "524d05885d0fdd176d3da06fd2befff9a22353e2";
|
||||||
sha256 = "0532bq9667dfz79fg4blrzc6d9y1cz2xr5h7jda3psrj27adrlxk";
|
sha256 = "1ngsqyjcsav3k2dcr4anhdm5ycnlfiwykqx3v15ds3j2prsn9hkd";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4570,12 +4570,12 @@ let
|
|||||||
|
|
||||||
vim-pencil = buildVimPluginFrom2Nix {
|
vim-pencil = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-pencil";
|
pname = "vim-pencil";
|
||||||
version = "2019-11-16";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "reedes";
|
owner = "reedes";
|
||||||
repo = "vim-pencil";
|
repo = "vim-pencil";
|
||||||
rev = "236380f1afcc1df10ae78cbf2c6e958d29183eaa";
|
rev = "9aead49ecfd0640e07fdf30fb149dc7d072051eb";
|
||||||
sha256 = "1yxc03pmf0wr104mxy2ssln16jm3kkylivmhh47jk5iv2xw8i38q";
|
sha256 = "189mqxsawdpb68vs9gpkh6flm00m3zhh744awwjd433dhyhz07fx";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -5351,12 +5351,12 @@ let
|
|||||||
|
|
||||||
vim-wordy = buildVimPluginFrom2Nix {
|
vim-wordy = buildVimPluginFrom2Nix {
|
||||||
pname = "vim-wordy";
|
pname = "vim-wordy";
|
||||||
version = "2019-08-29";
|
version = "2019-11-22";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "reedes";
|
owner = "reedes";
|
||||||
repo = "vim-wordy";
|
repo = "vim-wordy";
|
||||||
rev = "87a77cb293ed1193c01e0f93c4dd70cddde76b08";
|
rev = "f0391713fa83771d64b065868331ef4754d861ed";
|
||||||
sha256 = "19wvm1al41ys429rb2agb7d3xfv1kh2287r8sgiy1f6whjn236z6";
|
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 {
|
vimelette = buildVimPluginFrom2Nix {
|
||||||
pname = "vimelette";
|
pname = "vimelette";
|
||||||
version = "2019-05-02";
|
version = "2019-05-02";
|
||||||
@ -5494,12 +5505,12 @@ let
|
|||||||
|
|
||||||
vimtex = buildVimPluginFrom2Nix {
|
vimtex = buildVimPluginFrom2Nix {
|
||||||
pname = "vimtex";
|
pname = "vimtex";
|
||||||
version = "2019-11-18";
|
version = "2019-11-19";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "lervag";
|
owner = "lervag";
|
||||||
repo = "vimtex";
|
repo = "vimtex";
|
||||||
rev = "e555f48c131088fd66a9f7822c24e6edba8bfd03";
|
rev = "ed45b8b8ff5a61f05dea081d3eae98dcaee28857";
|
||||||
sha256 = "1l3a6isf4r46yn8kawlm11b5i1vpdpdnbwfi8kch7z90j7dmwlg6";
|
sha256 = "1sd1315lg6sxydvwhk58kyp5hhdbrzqvkfgy0hvpy7c5h1rlfcjm";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -5649,12 +5660,12 @@ let
|
|||||||
|
|
||||||
youcompleteme = buildVimPluginFrom2Nix {
|
youcompleteme = buildVimPluginFrom2Nix {
|
||||||
pname = "youcompleteme";
|
pname = "youcompleteme";
|
||||||
version = "2019-11-18";
|
version = "2019-11-19";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "valloric";
|
owner = "valloric";
|
||||||
repo = "youcompleteme";
|
repo = "youcompleteme";
|
||||||
rev = "25fbeadba44be998667ba47a1bce16219d01148c";
|
rev = "a7fd70cf7213c75088a47967c3e28aa4f6c47872";
|
||||||
sha256 = "02hl0gyx189q6k3z9dvnwpgn5sw76rz4j9y0hrj8yqzaqk7xv7fw";
|
sha256 = "0knn6j85k6rpis3riv6j9nvxw7114ddz1fr1p6ayv4mhnyj669rc";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -156,6 +156,7 @@ jonsmithers/vim-html-template-literals
|
|||||||
joonty/vim-xdebug
|
joonty/vim-xdebug
|
||||||
josa42/coc-go
|
josa42/coc-go
|
||||||
jpalardy/vim-slime
|
jpalardy/vim-slime
|
||||||
|
jreybert/vimagit
|
||||||
JuliaEditorSupport/deoplete-julia
|
JuliaEditorSupport/deoplete-julia
|
||||||
JuliaEditorSupport/julia-vim
|
JuliaEditorSupport/julia-vim
|
||||||
Julian/vim-textobj-variable-segment
|
Julian/vim-textobj-variable-segment
|
||||||
|
@ -45,13 +45,13 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "anbox";
|
pname = "anbox";
|
||||||
version = "unstable-2019-05-03";
|
version = "unstable-2019-11-15";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = pname;
|
owner = pname;
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "ea2b7a3dea34a6803134f4adc16c276f4c2479eb";
|
rev = "0a49ae08f76de7f886a3dbed4422711c2fa39d10";
|
||||||
sha256 = "00x772nbrbx7ma0scr24m65g50pmi4v6d6q3cwbbi55r8qiy2yz7";
|
sha256 = "09l56nv9cnyhykclfmvam6bkcxlamwbql6nrz9n022553w92hkjf";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "anbox-modules";
|
pname = "anbox-modules";
|
||||||
version = "2019-07-13-" + kernel.version;
|
version = "2019-11-15-" + kernel.version;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "anbox";
|
owner = "anbox";
|
||||||
repo = "anbox-modules";
|
repo = "anbox-modules";
|
||||||
rev = "816dd4d6e702cf77a44cfe208659af6c39e02b57";
|
rev = "e0a237e571989987806b32881044c539db25e3e1";
|
||||||
sha256 = "115xrv3fz5bk51hz8cwb61h0xnrsnv217fxmbpw35a6hjrk7gslc";
|
sha256 = "1km1nslp4f5znwskh4bb1b61r1inw1dlbwiyyq3rrh0f0agf8d0v";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
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
|
let
|
||||||
|
|
||||||
kver = kernel.modDirVersion or null;
|
kver = kernel.modDirVersion or null;
|
||||||
|
|
||||||
mod = kernel != null;
|
mod = kernel != null;
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
@ -15,40 +19,38 @@ in stdenv.mkDerivation rec {
|
|||||||
sha256 = "141bqqy4w6nzs9z70x7yv94a4gmxjfal46pxry9bwdh3zi1jwnyd";
|
sha256 = "141bqqy4w6nzs9z70x7yv94a4gmxjfal46pxry9bwdh3zi1jwnyd";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [
|
||||||
buildInputs = [ numactl ] ++ lib.optional mod kernel.moduleBuildDependencies;
|
doxygen
|
||||||
|
meson
|
||||||
RTE_KERNELDIR = if mod then "${kernel.dev}/lib/modules/${kver}/build" else "/var/empty";
|
ninja
|
||||||
RTE_TARGET = "x86_64-native-linuxapp-gcc";
|
pkgconfig
|
||||||
|
python3
|
||||||
# we need sse3 instructions to build
|
python3.pkgs.sphinx
|
||||||
NIX_CFLAGS_COMPILE = [ "-msse3" ];
|
];
|
||||||
hardeningDisable = [ "pic" ];
|
buildInputs = [
|
||||||
|
jansson
|
||||||
|
libbpf
|
||||||
|
libbsd
|
||||||
|
libelf
|
||||||
|
libpcap
|
||||||
|
numactl
|
||||||
|
openssl.dev
|
||||||
|
zlib
|
||||||
|
] ++ lib.optionals mod kernel.moduleBuildDependencies;
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
cat >>config/defconfig_$RTE_TARGET <<EOF
|
patchShebangs config/arm
|
||||||
# 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
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configurePhase = ''
|
mesonFlags = [
|
||||||
make T=${RTE_TARGET} config
|
"-Denable_docs=true"
|
||||||
'';
|
"-Denable_kmods=${if kernel != null then "true" else "false"}"
|
||||||
|
]
|
||||||
installTargets = [ "install-runtime" "install-sdk" "install-kmod" ]; # skip install-doc
|
++ lib.optionals (shared == false) [
|
||||||
|
"-Ddefault_library=static"
|
||||||
installFlags = [
|
]
|
||||||
"prefix=$(out)"
|
++ lib.optional stdenv.isx86_64 "-Dmachine=nehalem"
|
||||||
] ++ lib.optionals mod [
|
++ lib.optional (kernel != null) "-Dkernel_dir=${kernel.dev}/lib/modules/${kernel.modDirVersion}";
|
||||||
"kerneldir=$(kmod)/lib/modules/${kver}"
|
|
||||||
];
|
|
||||||
|
|
||||||
outputs = [ "out" ] ++ lib.optional mod "kmod";
|
outputs = [ "out" ] ++ lib.optional mod "kmod";
|
||||||
|
|
||||||
@ -58,7 +60,7 @@ EOF
|
|||||||
description = "Set of libraries and drivers for fast packet processing";
|
description = "Set of libraries and drivers for fast packet processing";
|
||||||
homepage = http://dpdk.org/;
|
homepage = http://dpdk.org/;
|
||||||
license = with licenses; [ lgpl21 gpl2 bsd2 ];
|
license = with licenses; [ lgpl21 gpl2 bsd2 ];
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = platforms.linux;
|
||||||
maintainers = with maintainers; [ domenkozar magenbluten orivej ];
|
maintainers = with maintainers; [ domenkozar magenbluten orivej ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,42 +1,56 @@
|
|||||||
{ stdenv, fetchurl, autoreconfHook, pkgconfig
|
{ stdenv, fetchurl, autoreconfHook, pkgconfig
|
||||||
, dpdk, libconfig, libpcap, numactl, openssl
|
, dpdk, libconfig, libpcap, numactl, openssl, zlib, libbsd, libelf, jansson
|
||||||
}: let
|
}: let
|
||||||
|
dpdk_18_11 = dpdk.overrideAttrs (old: rec {
|
||||||
dpdk_17_11 = dpdk.overrideAttrs (old: rec {
|
version = "18.11.5";
|
||||||
version = "17.11.9";
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://fast.dpdk.org/rel/dpdk-${version}.tar.xz";
|
url = "https://fast.dpdk.org/rel/dpdk-${version}.tar.xz";
|
||||||
sha256 = "0vrcc9mdjs5fk69lh7bigsk9208dfmjsz3jxaddkjlvk2hds1id6";
|
sha256 = "0000000000000000000000000000000000000000000000000000";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "odp-dpdk";
|
pname = "odp-dpdk";
|
||||||
version = "1.19.0.0_DPDK_17.11";
|
version = "1.22.0.0_DPDK_18.11";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://git.linaro.org/lng/odp-dpdk.git/snapshot/${pname}-${version}.tar.gz";
|
url = "https://git.linaro.org/lng/odp-dpdk.git/snapshot/${pname}-${version}.tar.gz";
|
||||||
sha256 = "05bwjaxl9hqc6fbkp95nniq11g3kvzmlxw0bq55i7p2v35nv38px";
|
sha256 = "1m8xhmfjqlj2gkkigq5ka3yh0xgzrcpfpaxp1pnh8d1g99094vbx";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
nativeBuildInputs = [
|
||||||
buildInputs = [ dpdk_17_11 libconfig libpcap numactl openssl ];
|
autoreconfHook
|
||||||
|
pkgconfig
|
||||||
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}"
|
|
||||||
];
|
];
|
||||||
|
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; {
|
meta = with stdenv.lib; {
|
||||||
description = "Open Data Plane optimized for DPDK";
|
description = "Open Data Plane optimized for DPDK";
|
||||||
homepage = https://www.opendataplane.org;
|
homepage = https://www.opendataplane.org;
|
||||||
license = licenses.bsd3;
|
license = licenses.bsd3;
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = platforms.linux;
|
||||||
maintainers = [ maintainers.abuibrahim ];
|
maintainers = [ maintainers.abuibrahim ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user