Merge master into staging-next
This commit is contained in:
commit
2622221e95
82 changed files with 1510 additions and 428 deletions
|
@ -19228,6 +19228,12 @@
|
||||||
githubId = 118959;
|
githubId = 118959;
|
||||||
name = "VinyMeuh";
|
name = "VinyMeuh";
|
||||||
};
|
};
|
||||||
|
viperML = {
|
||||||
|
email = "ayatsfer@gmail.com";
|
||||||
|
github = "viperML";
|
||||||
|
githubId = 11395853;
|
||||||
|
name = "Fernando Ayats";
|
||||||
|
};
|
||||||
viraptor = {
|
viraptor = {
|
||||||
email = "nix@viraptor.info";
|
email = "nix@viraptor.info";
|
||||||
github = "viraptor";
|
github = "viraptor";
|
||||||
|
|
|
@ -27,6 +27,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||||
|
|
||||||
|
- The `power.ups` module now generates `upsd.conf`, `upsd.users` and `upsmon.conf` automatically from a set of new configuration options. This breaks compatibility with existing `power.ups` setups where these files were created manually. Back up these files before upgrading NixOS.
|
||||||
|
|
||||||
- `mkosi` was updated to v19. Parts of the user interface have changed. Consult the
|
- `mkosi` was updated to v19. Parts of the user interface have changed. Consult the
|
||||||
[release notes](https://github.com/systemd/mkosi/releases/tag/v19) for a list of changes.
|
[release notes](https://github.com/systemd/mkosi/releases/tag/v19) for a list of changes.
|
||||||
|
|
||||||
|
|
|
@ -27,31 +27,37 @@ var ${bucket:=nixos-amis}
|
||||||
var ${service_role_name:=vmimport}
|
var ${service_role_name:=vmimport}
|
||||||
|
|
||||||
# Output of the command:
|
# Output of the command:
|
||||||
# > aws ec2 describe-regions --all-regions --query "Regions[].{Name:RegionName}" --output text | sort
|
# $ nix-shell -I nixpkgs=. -p awscli --run 'aws ec2 describe-regions --region us-east-1 --all-regions --query "Regions[].{Name:RegionName}" --output text | sort | sed -e s/^/\ \ /'
|
||||||
var ${regions:=
|
var ${regions:=
|
||||||
af-south-1
|
af-south-1
|
||||||
ap-east-1
|
ap-east-1
|
||||||
ap-northeast-1
|
ap-northeast-1
|
||||||
ap-northeast-2
|
ap-northeast-2
|
||||||
ap-northeast-3
|
ap-northeast-3
|
||||||
ap-south-1
|
ap-south-1
|
||||||
ap-southeast-1
|
ap-south-2
|
||||||
ap-southeast-2
|
ap-southeast-1
|
||||||
ap-southeast-3
|
ap-southeast-2
|
||||||
ca-central-1
|
ap-southeast-3
|
||||||
eu-central-1
|
ap-southeast-4
|
||||||
eu-north-1
|
ca-central-1
|
||||||
eu-south-1
|
eu-central-1
|
||||||
eu-west-1
|
eu-central-2
|
||||||
eu-west-2
|
eu-north-1
|
||||||
eu-west-3
|
eu-south-1
|
||||||
me-south-1
|
eu-south-2
|
||||||
sa-east-1
|
eu-west-1
|
||||||
us-east-1
|
eu-west-2
|
||||||
us-east-2
|
eu-west-3
|
||||||
us-west-1
|
il-central-1
|
||||||
us-west-2
|
me-central-1
|
||||||
}
|
me-south-1
|
||||||
|
sa-east-1
|
||||||
|
us-east-1
|
||||||
|
us-east-2
|
||||||
|
us-west-1
|
||||||
|
us-west-2
|
||||||
|
}
|
||||||
|
|
||||||
regions=($regions)
|
regions=($regions)
|
||||||
|
|
||||||
|
|
|
@ -1334,6 +1334,7 @@
|
||||||
./services/web-apps/vikunja.nix
|
./services/web-apps/vikunja.nix
|
||||||
./services/web-apps/whitebophir.nix
|
./services/web-apps/whitebophir.nix
|
||||||
./services/web-apps/wiki-js.nix
|
./services/web-apps/wiki-js.nix
|
||||||
|
./services/web-apps/windmill.nix
|
||||||
./services/web-apps/wordpress.nix
|
./services/web-apps/wordpress.nix
|
||||||
./services/web-apps/writefreely.nix
|
./services/web-apps/writefreely.nix
|
||||||
./services/web-apps/youtrack.nix
|
./services/web-apps/youtrack.nix
|
||||||
|
|
|
@ -6,9 +6,83 @@ with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.power.ups;
|
cfg = config.power.ups;
|
||||||
in
|
defaultPort = 3493;
|
||||||
|
|
||||||
|
nutFormat = {
|
||||||
|
|
||||||
|
type = with lib.types; let
|
||||||
|
|
||||||
|
singleAtom = nullOr (oneOf [
|
||||||
|
bool
|
||||||
|
int
|
||||||
|
float
|
||||||
|
str
|
||||||
|
]) // {
|
||||||
|
description = "atom (null, bool, int, float or string)";
|
||||||
|
};
|
||||||
|
|
||||||
|
in attrsOf (oneOf [
|
||||||
|
singleAtom
|
||||||
|
(listOf (nonEmptyListOf singleAtom))
|
||||||
|
]);
|
||||||
|
|
||||||
|
generate = name: value:
|
||||||
|
let
|
||||||
|
normalizedValue =
|
||||||
|
lib.mapAttrs (key: val:
|
||||||
|
if lib.isList val
|
||||||
|
then forEach val (elem: if lib.isList elem then elem else [elem])
|
||||||
|
else
|
||||||
|
if val == null
|
||||||
|
then []
|
||||||
|
else [[val]]
|
||||||
|
) value;
|
||||||
|
|
||||||
|
mkValueString = concatMapStringsSep " " (v:
|
||||||
|
let str = generators.mkValueStringDefault {} v;
|
||||||
|
in
|
||||||
|
# Quote the value if it has spaces and isn't already quoted.
|
||||||
|
if (hasInfix " " str) && !(hasPrefix "\"" str && hasSuffix "\"" str)
|
||||||
|
then "\"${str}\""
|
||||||
|
else str
|
||||||
|
);
|
||||||
|
|
||||||
|
in pkgs.writeText name (lib.generators.toKeyValue {
|
||||||
|
mkKeyValue = generators.mkKeyValueDefault { inherit mkValueString; } " ";
|
||||||
|
listsAsDuplicateKeys = true;
|
||||||
|
} normalizedValue);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
installSecrets = source: target: secrets:
|
||||||
|
pkgs.writeShellScript "installSecrets.sh" ''
|
||||||
|
install -m0600 -D ${source} "${target}"
|
||||||
|
${concatLines (forEach secrets (name: ''
|
||||||
|
${pkgs.replace-secret}/bin/replace-secret \
|
||||||
|
'@${name}@' \
|
||||||
|
"$CREDENTIALS_DIRECTORY/${name}" \
|
||||||
|
"${target}"
|
||||||
|
''))}
|
||||||
|
chmod u-w "${target}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
upsmonConf = nutFormat.generate "upsmon.conf" cfg.upsmon.settings;
|
||||||
|
|
||||||
|
upsdUsers = pkgs.writeText "upsd.users" (let
|
||||||
|
# This looks like INI, but it's not quite because the
|
||||||
|
# 'upsmon' option lacks a '='. See: man upsd.users
|
||||||
|
userConfig = name: user: concatStringsSep "\n " (concatLists [
|
||||||
|
[
|
||||||
|
"[${name}]"
|
||||||
|
"password = \"@upsdusers_password_${name}@\""
|
||||||
|
]
|
||||||
|
(optional (user.upsmon != null) "upsmon ${user.upsmon}")
|
||||||
|
(forEach user.actions (action: "actions = ${action}"))
|
||||||
|
(forEach user.instcmds (instcmd: "instcmds = ${instcmd}"))
|
||||||
|
]);
|
||||||
|
in concatStringsSep "\n\n" (mapAttrsToList userConfig cfg.users));
|
||||||
|
|
||||||
|
|
||||||
let
|
|
||||||
upsOptions = {name, config, ...}:
|
upsOptions = {name, config, ...}:
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
|
@ -95,6 +169,213 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
listenOptions = {
|
||||||
|
options = {
|
||||||
|
address = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Address of the interface for `upsd` to listen on.
|
||||||
|
See `man upsd.conf` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = defaultPort;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
TCP port for `upsd` to listen on.
|
||||||
|
See `man upsd.conf` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
upsdOptions = {
|
||||||
|
options = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
defaultText = literalMD "`true` if `mode` is one of `standalone`, `netserver`";
|
||||||
|
description = mdDoc "Whether to enable `upsd`.";
|
||||||
|
};
|
||||||
|
|
||||||
|
listen = mkOption {
|
||||||
|
type = with types; listOf (submodule listenOptions);
|
||||||
|
default = [];
|
||||||
|
example = [
|
||||||
|
{
|
||||||
|
address = "192.168.50.1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
address = "::1";
|
||||||
|
port = 5923;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Address of the interface for `upsd` to listen on.
|
||||||
|
See `man upsd` for details`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Additional lines to add to `upsd.conf`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
enable = mkDefault (elem cfg.mode [ "standalone" "netserver" ]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
monitorOptions = { name, config, ... }: {
|
||||||
|
options = {
|
||||||
|
system = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = name;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Identifier of the UPS to monitor, in this form: `<upsname>[@<hostname>[:<port>]]`
|
||||||
|
See `upsmon.conf` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
powerValue = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 1;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Number of power supplies that the UPS feeds on this system.
|
||||||
|
See `upsmon.conf` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Username from `upsd.users` for accessing this UPS.
|
||||||
|
See `upsmon.conf` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
passwordFile = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
defaultText = literalMD "power.ups.users.\${user}.passwordFile";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
The full path to a file containing the password from
|
||||||
|
`upsd.users` for accessing this UPS. The password file
|
||||||
|
is read on service start.
|
||||||
|
See `upsmon.conf` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
type = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "master";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
The relationship with `upsd`.
|
||||||
|
See `upsmon.conf` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
passwordFile = mkDefault cfg.users.${config.user}.passwordFile;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
upsmonOptions = {
|
||||||
|
options = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
defaultText = literalMD "`true` if `mode` is one of `standalone`, `netserver`, `netclient`";
|
||||||
|
description = mdDoc "Whether to enable `upsmon`.";
|
||||||
|
};
|
||||||
|
|
||||||
|
monitor = mkOption {
|
||||||
|
type = with types; attrsOf (submodule monitorOptions);
|
||||||
|
default = {};
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Set of UPS to monitor. See `man upsmon.conf` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
type = nutFormat.type;
|
||||||
|
default = {};
|
||||||
|
defaultText = literalMD ''
|
||||||
|
{
|
||||||
|
MINSUPPLIES = 1;
|
||||||
|
RUN_AS_USER = "root";
|
||||||
|
NOTIFYCMD = "''${pkgs.nut}/bin/upssched";
|
||||||
|
SHUTDOWNCMD = "''${pkgs.systemd}/bin/shutdown now";
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
description = mdDoc "Additional settings to add to `upsmon.conf`.";
|
||||||
|
example = literalMD ''
|
||||||
|
{
|
||||||
|
MINSUPPLIES = 2;
|
||||||
|
NOTIFYFLAG = [
|
||||||
|
[ "ONLINE" "SYSLOG+EXEC" ]
|
||||||
|
[ "ONBATT" "SYSLOG+EXEC" ]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
enable = mkDefault (elem cfg.mode [ "standalone" "netserver" "netclient" ]);
|
||||||
|
settings = {
|
||||||
|
RUN_AS_USER = "root"; # TODO: replace 'root' by another username.
|
||||||
|
MINSUPPLIES = mkDefault 1;
|
||||||
|
NOTIFYCMD = mkDefault "${pkgs.nut}/bin/upssched";
|
||||||
|
SHUTDOWNCMD = mkDefault "${pkgs.systemd}/bin/shutdown now";
|
||||||
|
MONITOR = flip mapAttrsToList cfg.upsmon.monitor (name: monitor: with monitor; [ system powerValue user "\"@upsmon_password_${name}@\"" type ]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
userOptions = {
|
||||||
|
options = {
|
||||||
|
passwordFile = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
The full path to a file that contains the user's (clear text)
|
||||||
|
password. The password file is read on service start.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
actions = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [];
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Allow the user to do certain things with upsd.
|
||||||
|
See `man upsd.users` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
instcmds = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [];
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Let the user initiate specific instant commands. Use "ALL" to grant all commands automatically. For the full list of what your UPS supports, use "upscmd -l".
|
||||||
|
See `man upsd.users` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
upsmon = mkOption {
|
||||||
|
type = with types; nullOr str;
|
||||||
|
default = null;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Add the necessary actions for a upsmon process to work.
|
||||||
|
See `man upsd.users` for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
|
||||||
|
@ -103,19 +384,14 @@ in
|
||||||
# powerManagement.powerDownCommands
|
# powerManagement.powerDownCommands
|
||||||
|
|
||||||
power.ups = {
|
power.ups = {
|
||||||
enable = mkOption {
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
default = false;
|
Enables support for Power Devices, such as Uninterruptible Power
|
||||||
type = with types; bool;
|
Supplies, Power Distribution Units and Solar Controllers.
|
||||||
description = lib.mdDoc ''
|
'');
|
||||||
Enables support for Power Devices, such as Uninterruptible Power
|
|
||||||
Supplies, Power Distribution Units and Solar Controllers.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# This option is not used yet.
|
|
||||||
mode = mkOption {
|
mode = mkOption {
|
||||||
default = "standalone";
|
default = "standalone";
|
||||||
type = types.str;
|
type = types.enum [ "none" "standalone" "netserver" "netclient" ];
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
The MODE determines which part of the NUT is to be started, and
|
The MODE determines which part of the NUT is to be started, and
|
||||||
which configuration files must be modified.
|
which configuration files must be modified.
|
||||||
|
@ -148,6 +424,13 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
openFirewall = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Open ports in the firewall for `upsd`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
maxStartDelay = mkOption {
|
maxStartDelay = mkOption {
|
||||||
default = 45;
|
default = 45;
|
||||||
|
@ -161,6 +444,22 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
upsmon = mkOption {
|
||||||
|
default = {};
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Options for the `upsmon.conf` configuration file.
|
||||||
|
'';
|
||||||
|
type = types.submodule upsmonOptions;
|
||||||
|
};
|
||||||
|
|
||||||
|
upsd = mkOption {
|
||||||
|
default = {};
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Options for the `upsd.conf` configuration file.
|
||||||
|
'';
|
||||||
|
type = types.submodule upsdOptions;
|
||||||
|
};
|
||||||
|
|
||||||
ups = mkOption {
|
ups = mkOption {
|
||||||
default = {};
|
default = {};
|
||||||
# see nut/etc/ups.conf.sample
|
# see nut/etc/ups.conf.sample
|
||||||
|
@ -172,46 +471,95 @@ in
|
||||||
type = with types; attrsOf (submodule upsOptions);
|
type = with types; attrsOf (submodule upsOptions);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
users = mkOption {
|
||||||
|
default = {};
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Users that can access upsd. See `man upsd.users`.
|
||||||
|
'';
|
||||||
|
type = with types; attrsOf (submodule userOptions);
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
(let
|
||||||
|
totalPowerValue = foldl' add 0 (map (monitor: monitor.powerValue) (attrValues cfg.upsmon.monitor));
|
||||||
|
minSupplies = cfg.upsmon.settings.MINSUPPLIES;
|
||||||
|
in mkIf cfg.upsmon.enable {
|
||||||
|
assertion = totalPowerValue >= minSupplies;
|
||||||
|
message = ''
|
||||||
|
`power.ups.upsmon`: Total configured power value (${toString totalPowerValue}) must be at least MINSUPPLIES (${toString minSupplies}).
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.nut ];
|
environment.systemPackages = [ pkgs.nut ];
|
||||||
|
|
||||||
systemd.services.upsmon = {
|
networking.firewall = mkIf cfg.openFirewall {
|
||||||
|
allowedTCPPorts =
|
||||||
|
if cfg.upsd.listen == []
|
||||||
|
then [ defaultPort ]
|
||||||
|
else unique (forEach cfg.upsd.listen (listen: listen.port));
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.upsmon = let
|
||||||
|
secrets = mapAttrsToList (name: monitor: "upsmon_password_${name}") cfg.upsmon.monitor;
|
||||||
|
createUpsmonConf = installSecrets upsmonConf "/run/nut/upsmon.conf" secrets;
|
||||||
|
in {
|
||||||
|
enable = cfg.upsmon.enable;
|
||||||
description = "Uninterruptible Power Supplies (Monitor)";
|
description = "Uninterruptible Power Supplies (Monitor)";
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig.Type = "forking";
|
serviceConfig = {
|
||||||
script = "${pkgs.nut}/sbin/upsmon";
|
Type = "forking";
|
||||||
environment.NUT_CONFPATH = "/etc/nut/";
|
ExecStartPre = "${createUpsmonConf}";
|
||||||
environment.NUT_STATEPATH = "/var/lib/nut/";
|
ExecStart = "${pkgs.nut}/sbin/upsmon";
|
||||||
|
ExecReload = "${pkgs.nut}/sbin/upsmon -c reload";
|
||||||
|
LoadCredential = mapAttrsToList (name: monitor: "upsmon_password_${name}:${monitor.passwordFile}") cfg.upsmon.monitor;
|
||||||
|
};
|
||||||
|
environment.NUT_CONFPATH = "/etc/nut";
|
||||||
|
environment.NUT_STATEPATH = "/var/lib/nut";
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.upsd = {
|
systemd.services.upsd = let
|
||||||
|
secrets = mapAttrsToList (name: user: "upsdusers_password_${name}") cfg.users;
|
||||||
|
createUpsdUsers = installSecrets upsdUsers "/run/nut/upsd.users" secrets;
|
||||||
|
in {
|
||||||
|
enable = cfg.upsd.enable;
|
||||||
description = "Uninterruptible Power Supplies (Daemon)";
|
description = "Uninterruptible Power Supplies (Daemon)";
|
||||||
after = [ "network.target" "upsmon.service" ];
|
after = [ "network.target" "upsmon.service" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig.Type = "forking";
|
serviceConfig = {
|
||||||
# TODO: replace 'root' by another username.
|
Type = "forking";
|
||||||
script = "${pkgs.nut}/sbin/upsd -u root";
|
ExecStartPre = "${createUpsdUsers}";
|
||||||
environment.NUT_CONFPATH = "/etc/nut/";
|
# TODO: replace 'root' by another username.
|
||||||
environment.NUT_STATEPATH = "/var/lib/nut/";
|
ExecStart = "${pkgs.nut}/sbin/upsd -u root";
|
||||||
|
ExecReload = "${pkgs.nut}/sbin/upsd -c reload";
|
||||||
|
LoadCredential = mapAttrsToList (name: user: "upsdusers_password_${name}:${user.passwordFile}") cfg.users;
|
||||||
|
};
|
||||||
|
environment.NUT_CONFPATH = "/etc/nut";
|
||||||
|
environment.NUT_STATEPATH = "/var/lib/nut";
|
||||||
|
restartTriggers = [
|
||||||
|
config.environment.etc."nut/upsd.conf".source
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.upsdrv = {
|
systemd.services.upsdrv = {
|
||||||
|
enable = cfg.upsd.enable;
|
||||||
description = "Uninterruptible Power Supplies (Register all UPS)";
|
description = "Uninterruptible Power Supplies (Register all UPS)";
|
||||||
after = [ "upsd.service" ];
|
after = [ "upsd.service" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
# TODO: replace 'root' by another username.
|
|
||||||
script = "${pkgs.nut}/bin/upsdrvctl -u root start";
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
RemainAfterExit = true;
|
RemainAfterExit = true;
|
||||||
|
# TODO: replace 'root' by another username.
|
||||||
|
ExecStart = "${pkgs.nut}/bin/upsdrvctl -u root start";
|
||||||
};
|
};
|
||||||
environment.NUT_CONFPATH = "/etc/nut/";
|
environment.NUT_CONFPATH = "/etc/nut";
|
||||||
environment.NUT_STATEPATH = "/var/lib/nut/";
|
environment.NUT_STATEPATH = "/var/lib/nut";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
|
@ -223,24 +571,23 @@ in
|
||||||
''
|
''
|
||||||
maxstartdelay = ${toString cfg.maxStartDelay}
|
maxstartdelay = ${toString cfg.maxStartDelay}
|
||||||
|
|
||||||
${flip concatStringsSep (forEach (attrValues cfg.ups) (ups: ups.summary)) "
|
${concatStringsSep "\n\n" (forEach (attrValues cfg.ups) (ups: ups.summary))}
|
||||||
|
'';
|
||||||
"}
|
"nut/upsd.conf".source = pkgs.writeText "upsd.conf"
|
||||||
|
''
|
||||||
|
${concatStringsSep "\n" (forEach cfg.upsd.listen (listen: "LISTEN ${listen.address} ${toString listen.port}"))}
|
||||||
|
${cfg.upsd.extraConfig}
|
||||||
'';
|
'';
|
||||||
"nut/upssched.conf".source = cfg.schedulerRules;
|
"nut/upssched.conf".source = cfg.schedulerRules;
|
||||||
# These file are containing private information and thus should not
|
"nut/upsd.users".source = "/run/nut/upsd.users";
|
||||||
# be stored inside the Nix store.
|
"nut/upsmon.conf".source = "/run/nut/upsmon.conf";
|
||||||
/*
|
|
||||||
"nut/upsd.conf".source = "";
|
|
||||||
"nut/upsd.users".source = "";
|
|
||||||
"nut/upsmon.conf".source = "";
|
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
|
|
||||||
power.ups.schedulerRules = mkDefault "${pkgs.nut}/etc/upssched.conf.sample";
|
power.ups.schedulerRules = mkDefault "${pkgs.nut}/etc/upssched.conf.sample";
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"d /var/state/ups -"
|
"d /var/state/ups -"
|
||||||
|
"d /var/lib/nut 700"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@ with lib;
|
||||||
let
|
let
|
||||||
clamavUser = "clamav";
|
clamavUser = "clamav";
|
||||||
stateDir = "/var/lib/clamav";
|
stateDir = "/var/lib/clamav";
|
||||||
runDir = "/run/clamav";
|
|
||||||
clamavGroup = clamavUser;
|
clamavGroup = clamavUser;
|
||||||
cfg = config.services.clamav;
|
cfg = config.services.clamav;
|
||||||
pkg = pkgs.clamav;
|
pkg = pkgs.clamav;
|
||||||
|
@ -99,6 +98,29 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
scanner = {
|
||||||
|
enable = mkEnableOption (lib.mdDoc "ClamAV scanner");
|
||||||
|
|
||||||
|
interval = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "*-*-* 04:00:00";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
How often clamdscan is invoked. See systemd.time(7) for more
|
||||||
|
information about the format.
|
||||||
|
By default this runs using 10 cores at most, be sure to run it at a time of low traffic.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
scanDirectories = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [ "/home" "/var/lib" "/tmp" "/etc" "/var/tmp" ];
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
List of directories to scan.
|
||||||
|
The default includes everything I could think of that is valid for nixos. Feel free to contribute a PR to add to the default if you see something missing.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -117,9 +139,8 @@ in
|
||||||
|
|
||||||
services.clamav.daemon.settings = {
|
services.clamav.daemon.settings = {
|
||||||
DatabaseDirectory = stateDir;
|
DatabaseDirectory = stateDir;
|
||||||
LocalSocket = "${runDir}/clamd.ctl";
|
LocalSocket = "/run/clamav/clamd.ctl";
|
||||||
PidFile = "${runDir}/clamd.pid";
|
PidFile = "/run/clamav/clamd.pid";
|
||||||
TemporaryDirectory = "/tmp";
|
|
||||||
User = "clamav";
|
User = "clamav";
|
||||||
Foreground = true;
|
Foreground = true;
|
||||||
};
|
};
|
||||||
|
@ -182,7 +203,6 @@ in
|
||||||
ExecStart = "${pkg}/bin/freshclam";
|
ExecStart = "${pkg}/bin/freshclam";
|
||||||
SuccessExitStatus = "1"; # if databases are up to date
|
SuccessExitStatus = "1"; # if databases are up to date
|
||||||
StateDirectory = "clamav";
|
StateDirectory = "clamav";
|
||||||
RuntimeDirectory = "clamav";
|
|
||||||
User = clamavUser;
|
User = clamavUser;
|
||||||
Group = clamavGroup;
|
Group = clamavGroup;
|
||||||
PrivateTmp = "yes";
|
PrivateTmp = "yes";
|
||||||
|
@ -204,7 +224,6 @@ in
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
StateDirectory = "clamav";
|
StateDirectory = "clamav";
|
||||||
RuntimeDirectory = "clamav";
|
|
||||||
User = clamavUser;
|
User = clamavUser;
|
||||||
Group = clamavGroup;
|
Group = clamavGroup;
|
||||||
PrivateTmp = "yes";
|
PrivateTmp = "yes";
|
||||||
|
@ -230,12 +249,31 @@ in
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${pkgs.fangfrisch}/bin/fangfrisch --conf ${fangfrischConfigFile} refresh";
|
ExecStart = "${pkgs.fangfrisch}/bin/fangfrisch --conf ${fangfrischConfigFile} refresh";
|
||||||
StateDirectory = "clamav";
|
StateDirectory = "clamav";
|
||||||
RuntimeDirectory = "clamav";
|
|
||||||
User = clamavUser;
|
User = clamavUser;
|
||||||
Group = clamavGroup;
|
Group = clamavGroup;
|
||||||
PrivateTmp = "yes";
|
PrivateTmp = "yes";
|
||||||
PrivateDevices = "yes";
|
PrivateDevices = "yes";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.timers.clamdscan = mkIf cfg.scanner.enable {
|
||||||
|
description = "Timer for ClamAV virus scanner";
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = cfg.scanner.interval;
|
||||||
|
Unit = "clamdscan.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.clamdscan = mkIf cfg.scanner.enable {
|
||||||
|
description = "ClamAV virus scanner";
|
||||||
|
after = optionals cfg.updater.enable [ "clamav-freshclam.service" ];
|
||||||
|
wants = optionals cfg.updater.enable [ "clamav-freshclam.service" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${pkg}/bin/clamdscan --multiscan --fdpass --infected --allmatch ${lib.concatStringsSep " " cfg.scanner.scanDirectories}";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
177
nixos/modules/services/web-apps/windmill.nix
Normal file
177
nixos/modules/services/web-apps/windmill.nix
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.windmill;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.windmill = {
|
||||||
|
enable = lib.mkEnableOption (lib.mdDoc "windmill service");
|
||||||
|
|
||||||
|
serverPort = lib.mkOption {
|
||||||
|
type = lib.types.port;
|
||||||
|
default = 8001;
|
||||||
|
description = lib.mdDoc "Port the windmill server listens on.";
|
||||||
|
};
|
||||||
|
|
||||||
|
lspPort = lib.mkOption {
|
||||||
|
type = lib.types.port;
|
||||||
|
default = 3001;
|
||||||
|
description = lib.mdDoc "Port the windmill lsp listens on.";
|
||||||
|
};
|
||||||
|
|
||||||
|
database = {
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
# the simplest database setup is to have the database named like the user.
|
||||||
|
default = "windmill";
|
||||||
|
description = lib.mdDoc "Database name.";
|
||||||
|
};
|
||||||
|
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
# the simplest database setup is to have the database user like the name.
|
||||||
|
default = "windmill";
|
||||||
|
description = lib.mdDoc "Database user.";
|
||||||
|
};
|
||||||
|
|
||||||
|
urlPath = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Path to the file containing the database url windmill should connect to. This is not deducted from database user and name as it might contain a secret
|
||||||
|
'';
|
||||||
|
example = "config.age.secrets.DATABASE_URL_FILE.path";
|
||||||
|
};
|
||||||
|
createLocally = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = lib.mdDoc "Whether to create a local database automatically.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
baseUrl = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
The base url that windmill will be served on.
|
||||||
|
'';
|
||||||
|
example = "https://windmill.example.com";
|
||||||
|
};
|
||||||
|
|
||||||
|
logLevel = lib.mkOption {
|
||||||
|
type = lib.types.enum [ "error" "warn" "info" "debug" "trace" ];
|
||||||
|
default = "info";
|
||||||
|
description = lib.mdDoc "Log level";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
services.postgresql = lib.optionalAttrs (cfg.database.createLocally) {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
ensureDatabases = [ cfg.database.name ];
|
||||||
|
ensureUsers = [
|
||||||
|
{ name = cfg.database.user;
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services =
|
||||||
|
let
|
||||||
|
serviceConfig = {
|
||||||
|
DynamicUser = true;
|
||||||
|
# using the same user to simplify db connection
|
||||||
|
User = cfg.database.user;
|
||||||
|
ExecStart = "${pkgs.windmill}/bin/windmill";
|
||||||
|
|
||||||
|
Restart = "always";
|
||||||
|
LoadCredential = [
|
||||||
|
"DATABASE_URL_FILE:${cfg.database.urlPath}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
# coming from https://github.com/windmill-labs/windmill/blob/main/init-db-as-superuser.sql
|
||||||
|
# modified to not grant priviledges on all tables
|
||||||
|
# create role windmill_user and windmill_admin only if they don't exist
|
||||||
|
postgresql.postStart = lib.mkIf cfg.database.createLocally (lib.mkAfter ''
|
||||||
|
$PSQL -tA <<"EOF"
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT FROM pg_catalog.pg_roles
|
||||||
|
WHERE rolname = 'windmill_user'
|
||||||
|
) THEN
|
||||||
|
CREATE ROLE windmill_user;
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE ${cfg.database.name} TO windmill_user;
|
||||||
|
ELSE
|
||||||
|
RAISE NOTICE 'Role "windmill_user" already exists. Skipping.';
|
||||||
|
END IF;
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT FROM pg_catalog.pg_roles
|
||||||
|
WHERE rolname = 'windmill_admin'
|
||||||
|
) THEN
|
||||||
|
CREATE ROLE windmill_admin WITH BYPASSRLS;
|
||||||
|
GRANT windmill_user TO windmill_admin;
|
||||||
|
ELSE
|
||||||
|
RAISE NOTICE 'Role "windmill_admin" already exists. Skipping.';
|
||||||
|
END IF;
|
||||||
|
GRANT windmill_admin TO windmill;
|
||||||
|
END
|
||||||
|
$$;
|
||||||
|
EOF
|
||||||
|
'');
|
||||||
|
|
||||||
|
windmill-server = {
|
||||||
|
description = "Windmill server";
|
||||||
|
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
serviceConfig = serviceConfig // { StateDirectory = "windmill";};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
DATABASE_URL_FILE = "%d/DATABASE_URL_FILE";
|
||||||
|
PORT = builtins.toString cfg.serverPort;
|
||||||
|
WM_BASE_URL = cfg.baseUrl;
|
||||||
|
RUST_LOG = cfg.logLevel;
|
||||||
|
MODE = "server";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
windmill-worker = {
|
||||||
|
description = "Windmill worker";
|
||||||
|
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
serviceConfig = serviceConfig // { StateDirectory = "windmill-worker";};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
DATABASE_URL_FILE = "%d/DATABASE_URL_FILE";
|
||||||
|
WM_BASE_URL = cfg.baseUrl;
|
||||||
|
RUST_LOG = cfg.logLevel;
|
||||||
|
MODE = "worker";
|
||||||
|
WORKER_GROUP = "default";
|
||||||
|
KEEP_JOB_DIR = "false";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
windmill-worker-native = {
|
||||||
|
description = "Windmill worker native";
|
||||||
|
after = [ "network.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
serviceConfig = serviceConfig // { StateDirectory = "windmill-worker-native";};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
DATABASE_URL_FILE = "%d/DATABASE_URL_FILE";
|
||||||
|
WM_BASE_URL = cfg.baseUrl;
|
||||||
|
RUST_LOG = cfg.logLevel;
|
||||||
|
MODE = "worker";
|
||||||
|
WORKER_GROUP = "native";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1612,7 +1612,7 @@ let
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
`[WireGuardPeer]` section of the unit. See
|
`[WireGuardPeer]` section of the unit. See
|
||||||
{manpage}`systemd.network(5)` for details.
|
{manpage}`systemd.netdev(5)` for details.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -52,7 +52,10 @@ stdenv.mkDerivation (finalAttrs: rec {
|
||||||
nativeBuildInputs =
|
nativeBuildInputs =
|
||||||
[ cmake makeWrapper python310Packages.wrapPython llvmPackages.llvm.dev
|
[ cmake makeWrapper python310Packages.wrapPython llvmPackages.llvm.dev
|
||||||
]
|
]
|
||||||
++ lib.optionals cudaSupport [ addOpenGLRunpath ]
|
++ lib.optionals cudaSupport [
|
||||||
|
addOpenGLRunpath
|
||||||
|
cudaPackages.cuda_nvcc
|
||||||
|
]
|
||||||
++ lib.optionals waylandSupport [ pkg-config ];
|
++ lib.optionals waylandSupport [ pkg-config ];
|
||||||
buildInputs =
|
buildInputs =
|
||||||
[ boost ffmpeg gettext glew ilmbase
|
[ boost ffmpeg gettext glew ilmbase
|
||||||
|
@ -87,7 +90,7 @@ stdenv.mkDerivation (finalAttrs: rec {
|
||||||
llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL
|
llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL
|
||||||
])
|
])
|
||||||
++ lib.optional jackaudioSupport libjack2
|
++ lib.optional jackaudioSupport libjack2
|
||||||
++ lib.optional cudaSupport cudaPackages.cudatoolkit
|
++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]
|
||||||
++ lib.optional colladaSupport opencollada
|
++ lib.optional colladaSupport opencollada
|
||||||
++ lib.optional spaceNavSupport libspnav;
|
++ lib.optional spaceNavSupport libspnav;
|
||||||
pythonPath = with python310Packages; [ numpy requests zstandard ];
|
pythonPath = with python310Packages; [ numpy requests zstandard ];
|
||||||
|
|
|
@ -24,13 +24,13 @@ let
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "mediaelch";
|
pname = "mediaelch";
|
||||||
version = "2.10.4";
|
version = "2.10.6";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Komet";
|
owner = "Komet";
|
||||||
repo = "MediaElch";
|
repo = "MediaElch";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-gNpnmyUKDXf40+1JmJzNyEPIv/DO8b3CdJAphheEvTU=";
|
hash = "sha256-qc7HaCMAmALY9MoIKmaCWF0cnwBBFDAXwqiBzwzu2bU=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "cni-plugins";
|
pname = "cni-plugins";
|
||||||
version = "1.3.0";
|
version = "1.4.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "containernetworking";
|
owner = "containernetworking";
|
||||||
repo = "plugins";
|
repo = "plugins";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-cbmG9wK3yd79jCiNAKcSSx0COyh6CxR1bgIiCO3i++g=";
|
hash = "sha256-goXpNpb5tVOHeskRLw3CivYett3RxYBREAI+S74CMFQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = null;
|
vendorHash = null;
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "warp";
|
pname = "warp";
|
||||||
version = "0.6.1";
|
version = "0.6.2";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
owner = "World";
|
owner = "World";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-Uc9N2kRTpi9cCFskngkiclLpEcp4dtI2mhldG4s/GFY=";
|
hash = "sha256-pntHIY0cScDKhWR6kXp6YrEbBQiQjUId3MrJzy5l+K8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
|
||||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||||
inherit src;
|
inherit src;
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
hash = "sha256-GN9TjsGBU3D/mc6/XtRAk5pliKRPTQ9f3fMdS6weCaE=";
|
hash = "sha256-Go/a7aVHF1Yt3yIccKJIVeFy5rckXhSKfd13hdhlLUQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Fast and secure file transfer";
|
description = "Fast and secure file transfer";
|
||||||
homepage = "https://apps.gnome.org/app/app.drey.Warp";
|
homepage = "https://apps.gnome.org/Warp/";
|
||||||
license = lib.licenses.gpl3Only;
|
license = lib.licenses.gpl3Only;
|
||||||
maintainers = with lib.maintainers; [ dotlambda foo-dogsquared ];
|
maintainers = with lib.maintainers; [ dotlambda foo-dogsquared ];
|
||||||
platforms = lib.platforms.all;
|
platforms = lib.platforms.all;
|
||||||
|
|
|
@ -9,13 +9,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "last";
|
pname = "last";
|
||||||
version = "1499";
|
version = "1518";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
owner = "mcfrith";
|
owner = "mcfrith";
|
||||||
repo = "last";
|
repo = "last";
|
||||||
rev = "refs/tags/${version}";
|
rev = "refs/tags/${version}";
|
||||||
hash = "sha256-uofXtGGDloM1FxW0PYKKwfDOPlAJiapGVKwd1clFzp8=";
|
hash = "sha256-a6i5BfJhVHkXTLd7SVFxISEB+Kwl7BhjUUkF8ItMOak=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -1,4 +1,14 @@
|
||||||
{ lib, stdenv, fetchurl, cmake, hwloc, fftw, perl, blas, lapack, mpi, cudatoolkit
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchurl
|
||||||
|
, cmake
|
||||||
|
, hwloc
|
||||||
|
, fftw
|
||||||
|
, perl
|
||||||
|
, blas
|
||||||
|
, lapack
|
||||||
|
, mpi
|
||||||
|
, cudaPackages
|
||||||
, plumed
|
, plumed
|
||||||
, singlePrec ? true
|
, singlePrec ? true
|
||||||
, config
|
, config
|
||||||
|
@ -9,6 +19,8 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (cudaPackages.cudaFlags) cudaCapabilities dropDot;
|
||||||
|
|
||||||
# Select reasonable defaults for all major platforms
|
# Select reasonable defaults for all major platforms
|
||||||
# The possible values are defined in CMakeLists.txt:
|
# The possible values are defined in CMakeLists.txt:
|
||||||
# AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256
|
# AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256
|
||||||
|
@ -52,7 +64,7 @@ in stdenv.mkDerivation rec {
|
||||||
nativeBuildInputs =
|
nativeBuildInputs =
|
||||||
[ cmake ]
|
[ cmake ]
|
||||||
++ lib.optional enablePlumed plumed
|
++ lib.optional enablePlumed plumed
|
||||||
;
|
++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
fftw
|
fftw
|
||||||
|
@ -61,13 +73,17 @@ in stdenv.mkDerivation rec {
|
||||||
blas
|
blas
|
||||||
lapack
|
lapack
|
||||||
] ++ lib.optional enableMpi mpi
|
] ++ lib.optional enableMpi mpi
|
||||||
++ lib.optional enableCuda cudatoolkit
|
++ lib.optionals enableCuda [
|
||||||
;
|
cudaPackages.cuda_cudart
|
||||||
|
cudaPackages.libcufft
|
||||||
|
cudaPackages.cuda_profiler_api
|
||||||
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = lib.optional enableMpi mpi;
|
propagatedBuildInputs = lib.optional enableMpi mpi;
|
||||||
propagatedUserEnvPkgs = lib.optional enableMpi mpi;
|
propagatedUserEnvPkgs = lib.optional enableMpi mpi;
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
|
(lib.cmakeBool "GMX_HWLOC" true)
|
||||||
"-DGMX_SIMD:STRING=${SIMD cpuAcceleration}"
|
"-DGMX_SIMD:STRING=${SIMD cpuAcceleration}"
|
||||||
"-DGMX_OPENMP:BOOL=TRUE"
|
"-DGMX_OPENMP:BOOL=TRUE"
|
||||||
"-DBUILD_SHARED_LIBS=ON"
|
"-DBUILD_SHARED_LIBS=ON"
|
||||||
|
@ -87,7 +103,13 @@ in stdenv.mkDerivation rec {
|
||||||
else [
|
else [
|
||||||
"-DGMX_MPI:BOOL=FALSE"
|
"-DGMX_MPI:BOOL=FALSE"
|
||||||
]
|
]
|
||||||
) ++ lib.optional enableCuda "-DGMX_GPU=CUDA";
|
) ++ lib.optionals enableCuda [
|
||||||
|
"-DGMX_GPU=CUDA"
|
||||||
|
(lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" (builtins.concatStringsSep ";" (map dropDot cudaCapabilities)))
|
||||||
|
|
||||||
|
# Gromacs seems to ignore and override the normal variables, so we add this ad hoc:
|
||||||
|
(lib.cmakeFeature "GMX_CUDA_TARGET_COMPUTE" (builtins.concatStringsSep ";" (map dropDot cudaCapabilities)))
|
||||||
|
];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
moveToOutput share/cmake $dev
|
moveToOutput share/cmake $dev
|
||||||
|
|
|
@ -5,16 +5,14 @@ npmInstallHook() {
|
||||||
|
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
# `npm pack` writes to cache
|
|
||||||
npm config delete cache
|
|
||||||
|
|
||||||
local -r packageOut="$out/lib/node_modules/$(@jq@ --raw-output '.name' package.json)"
|
local -r packageOut="$out/lib/node_modules/$(@jq@ --raw-output '.name' package.json)"
|
||||||
|
|
||||||
|
# `npm pack` writes to cache so temporarily override it
|
||||||
while IFS= read -r file; do
|
while IFS= read -r file; do
|
||||||
local dest="$packageOut/$(dirname "$file")"
|
local dest="$packageOut/$(dirname "$file")"
|
||||||
mkdir -p "$dest"
|
mkdir -p "$dest"
|
||||||
cp "${npmWorkspace-.}/$file" "$dest"
|
cp "${npmWorkspace-.}/$file" "$dest"
|
||||||
done < <(@jq@ --raw-output '.[0].files | map(.path) | join("\n")' <<< "$(npm pack --json --dry-run --loglevel=warn --no-foreground-scripts ${npmWorkspace+--workspace=$npmWorkspace} $npmPackFlags "${npmPackFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}")")
|
done < <(@jq@ --raw-output '.[0].files | map(.path) | join("\n")' <<< "$(npm_config_cache="$HOME/.npm" npm pack --json --dry-run --loglevel=warn --no-foreground-scripts ${npmWorkspace+--workspace=$npmWorkspace} $npmPackFlags "${npmPackFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}")")
|
||||||
|
|
||||||
# Based on code from Python's buildPythonPackage wrap.sh script, for
|
# Based on code from Python's buildPythonPackage wrap.sh script, for
|
||||||
# supporting both the case when makeWrapperArgs is an array and a
|
# supporting both the case when makeWrapperArgs is an array and a
|
||||||
|
|
|
@ -246,7 +246,9 @@ fn main() -> anyhow::Result<()> {
|
||||||
packages.into_par_iter().try_for_each(|package| {
|
packages.into_par_iter().try_for_each(|package| {
|
||||||
eprintln!("{}", package.name);
|
eprintln!("{}", package.name);
|
||||||
|
|
||||||
let tarball = package.tarball()?;
|
let tarball = package
|
||||||
|
.tarball()
|
||||||
|
.map_err(|e| anyhow!("couldn't fetch {} at {}: {e:?}", package.name, package.url))?;
|
||||||
let integrity = package.integrity().map(ToString::to_string);
|
let integrity = package.integrity().map(ToString::to_string);
|
||||||
|
|
||||||
cache
|
cache
|
||||||
|
|
|
@ -214,29 +214,35 @@ fn to_new_packages(
|
||||||
}
|
}
|
||||||
|
|
||||||
if let UrlOrString::Url(v) = &package.version {
|
if let UrlOrString::Url(v) = &package.version {
|
||||||
for (scheme, host) in [
|
if v.scheme() == "npm" {
|
||||||
("github", "github.com"),
|
if let Some(UrlOrString::Url(ref url)) = &package.resolved {
|
||||||
("bitbucket", "bitbucket.org"),
|
package.version = UrlOrString::Url(url.clone());
|
||||||
("gitlab", "gitlab.com"),
|
}
|
||||||
] {
|
} else {
|
||||||
if v.scheme() == scheme {
|
for (scheme, host) in [
|
||||||
package.version = {
|
("github", "github.com"),
|
||||||
let mut new_url = initial_url.clone();
|
("bitbucket", "bitbucket.org"),
|
||||||
|
("gitlab", "gitlab.com"),
|
||||||
|
] {
|
||||||
|
if v.scheme() == scheme {
|
||||||
|
package.version = {
|
||||||
|
let mut new_url = initial_url.clone();
|
||||||
|
|
||||||
new_url.set_host(Some(host))?;
|
new_url.set_host(Some(host))?;
|
||||||
|
|
||||||
if v.path().ends_with(".git") {
|
if v.path().ends_with(".git") {
|
||||||
new_url.set_path(v.path());
|
new_url.set_path(v.path());
|
||||||
} else {
|
} else {
|
||||||
new_url.set_path(&format!("{}.git", v.path()));
|
new_url.set_path(&format!("{}.git", v.path()));
|
||||||
}
|
}
|
||||||
|
|
||||||
new_url.set_fragment(v.fragment());
|
new_url.set_fragment(v.fragment());
|
||||||
|
|
||||||
UrlOrString::Url(new_url)
|
UrlOrString::Url(new_url)
|
||||||
};
|
};
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -266,7 +272,8 @@ fn get_initial_url() -> anyhow::Result<Url> {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::{
|
use super::{
|
||||||
get_initial_url, to_new_packages, Hash, HashCollection, OldPackage, Package, UrlOrString,
|
get_initial_url, packages, to_new_packages, Hash, HashCollection, OldPackage, Package,
|
||||||
|
UrlOrString,
|
||||||
};
|
};
|
||||||
use std::{
|
use std::{
|
||||||
cmp::Ordering,
|
cmp::Ordering,
|
||||||
|
@ -328,4 +335,36 @@ mod tests {
|
||||||
Some(Hash(String::from("sha512-foo")))
|
Some(Hash(String::from("sha512-foo")))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_lockfile_correctly() {
|
||||||
|
let packages = packages(
|
||||||
|
r#"{
|
||||||
|
"name": "node-ddr",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"string-width-cjs": {
|
||||||
|
"version": "npm:string-width@4.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||||
|
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||||
|
"requires": {
|
||||||
|
"emoji-regex": "^8.0.0",
|
||||||
|
"is-fullwidth-code-point": "^3.0.0",
|
||||||
|
"strip-ansi": "^6.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}"#).unwrap();
|
||||||
|
|
||||||
|
assert_eq!(packages.len(), 1);
|
||||||
|
assert_eq!(
|
||||||
|
packages[0].resolved,
|
||||||
|
Some(UrlOrString::Url(
|
||||||
|
Url::parse("https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz")
|
||||||
|
.unwrap()
|
||||||
|
))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
3
pkgs/by-name/ma/maid/Gemfile
Normal file
3
pkgs/by-name/ma/maid/Gemfile
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
source 'https://rubygems.org'
|
||||||
|
gem 'maid', '~> 0.10.0'
|
||||||
|
gem 'rake'
|
55
pkgs/by-name/ma/maid/Gemfile.lock
Normal file
55
pkgs/by-name/ma/maid/Gemfile.lock
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
concurrent-ruby (1.2.2)
|
||||||
|
deprecated (3.0.1)
|
||||||
|
dimensions (1.3.0)
|
||||||
|
escape (0.0.4)
|
||||||
|
et-orbi (1.2.7)
|
||||||
|
tzinfo
|
||||||
|
exifr (1.3.10)
|
||||||
|
ffi (1.15.5)
|
||||||
|
fugit (1.8.1)
|
||||||
|
et-orbi (~> 1, >= 1.2.7)
|
||||||
|
raabro (~> 1.4)
|
||||||
|
geocoder (1.8.2)
|
||||||
|
listen (3.8.0)
|
||||||
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||||
|
rb-inotify (~> 0.9, >= 0.9.10)
|
||||||
|
maid (0.10.0)
|
||||||
|
deprecated (~> 3.0.0)
|
||||||
|
dimensions (>= 1.0.0, < 2.0)
|
||||||
|
escape (>= 0.0.1, < 0.1.0)
|
||||||
|
exifr (~> 1.3.10)
|
||||||
|
geocoder (~> 1.8.1)
|
||||||
|
listen (~> 3.8.0)
|
||||||
|
mime-types (~> 3.0, < 4.0)
|
||||||
|
rubyzip (~> 2.3.2)
|
||||||
|
rufus-scheduler (~> 3.8.2)
|
||||||
|
thor (~> 1.2.1)
|
||||||
|
xdg (~> 2.2.3)
|
||||||
|
mime-types (3.5.1)
|
||||||
|
mime-types-data (~> 3.2015)
|
||||||
|
mime-types-data (3.2023.0808)
|
||||||
|
raabro (1.4.0)
|
||||||
|
rake (13.0.6)
|
||||||
|
rb-fsevent (0.11.2)
|
||||||
|
rb-inotify (0.10.1)
|
||||||
|
ffi (~> 1.0)
|
||||||
|
rubyzip (2.3.2)
|
||||||
|
rufus-scheduler (3.8.2)
|
||||||
|
fugit (~> 1.1, >= 1.1.6)
|
||||||
|
thor (1.2.2)
|
||||||
|
tzinfo (2.0.6)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
|
xdg (2.2.5)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
maid (~> 0.10.0)
|
||||||
|
rake
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.3.26
|
230
pkgs/by-name/ma/maid/gemset.nix
Normal file
230
pkgs/by-name/ma/maid/gemset.nix
Normal file
|
@ -0,0 +1,230 @@
|
||||||
|
{
|
||||||
|
concurrent-ruby = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.2.2";
|
||||||
|
};
|
||||||
|
deprecated = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1ky20wy29jdhfy4xdw1lgxggciq4ywizmh265fyvwxbj6svw6b03";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "3.0.1";
|
||||||
|
};
|
||||||
|
dimensions = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1jlkyfqk14291wbw8ly46jvp8vrcvswlns4078y1m44bb3rgm123";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.3.0";
|
||||||
|
};
|
||||||
|
escape = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "0sa1xkfc9jvkwyw1jbz3jhkq0ms1zrvswi6mmfiwcisg5fp497z4";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.0.4";
|
||||||
|
};
|
||||||
|
et-orbi = {
|
||||||
|
dependencies = ["tzinfo"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1d2z4ky2v15dpcz672i2p7lb2nc793dasq3yq3660h2az53kss9v";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.2.7";
|
||||||
|
};
|
||||||
|
exifr = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "08fmmswa9fwymwsa2gzlm856ak3y9kjxdzm4zdrcrfyxs2p8yqwc";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.3.10";
|
||||||
|
};
|
||||||
|
ffi = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.15.5";
|
||||||
|
};
|
||||||
|
fugit = {
|
||||||
|
dependencies = ["et-orbi" "raabro"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1cm2lrvhrpqq19hbdsxf4lq2nkb2qdldbdxh3gvi15l62dlb5zqq";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.8.1";
|
||||||
|
};
|
||||||
|
geocoder = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "120lqyq308q8hg8ykawd7cp3k2ck8z9g5f9ffijp8dn2k9f21fjc";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.8.2";
|
||||||
|
};
|
||||||
|
listen = {
|
||||||
|
dependencies = ["rb-fsevent" "rb-inotify"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "13rgkfar8pp31z1aamxf5y7cfq88wv6rxxcwy7cmm177qq508ycn";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "3.8.0";
|
||||||
|
};
|
||||||
|
maid = {
|
||||||
|
dependencies = ["deprecated" "dimensions" "escape" "exifr" "geocoder" "listen" "mime-types" "rubyzip" "rufus-scheduler" "thor" "xdg"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "0v1lhwgxyli10rinw6h33ikhskx9j3b20h7plrx8c69z05sfsdd9";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.10.0";
|
||||||
|
};
|
||||||
|
mime-types = {
|
||||||
|
dependencies = ["mime-types-data"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "0q8d881k1b3rbsfcdi3fx0b5vpdr5wcrhn88r2d9j7zjdkxp5mw5";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "3.5.1";
|
||||||
|
};
|
||||||
|
mime-types-data = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "17zdim7kzrh5j8c97vjqp4xp78wbyz7smdp4hi5iyzk0s9imdn5a";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "3.2023.0808";
|
||||||
|
};
|
||||||
|
raabro = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "10m8bln9d00dwzjil1k42i5r7l82x25ysbi45fwyv4932zsrzynl";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.4.0";
|
||||||
|
};
|
||||||
|
rake = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "13.0.6";
|
||||||
|
};
|
||||||
|
rb-fsevent = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1zmf31rnpm8553lqwibvv3kkx0v7majm1f341xbxc0bk5sbhp423";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.11.2";
|
||||||
|
};
|
||||||
|
rb-inotify = {
|
||||||
|
dependencies = ["ffi"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.10.1";
|
||||||
|
};
|
||||||
|
rubyzip = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "2.3.2";
|
||||||
|
};
|
||||||
|
rufus-scheduler = {
|
||||||
|
dependencies = ["fugit"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1as4yrb8y5lq49div8p3vqgwrrhdgwnvx4m73y3712nmnlpx6cws";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "3.8.2";
|
||||||
|
};
|
||||||
|
thor = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "0k7j2wn14h1pl4smibasw0bp66kg626drxb59z7rzflch99cd4rg";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.2.2";
|
||||||
|
};
|
||||||
|
tzinfo = {
|
||||||
|
dependencies = ["concurrent-ruby"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "2.0.6";
|
||||||
|
};
|
||||||
|
xdg = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "04xr4cavnzxlk926pkji7b5yiqy4qsd3gdvv8mg6jliq6sczg9gk";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "2.2.5";
|
||||||
|
};
|
||||||
|
}
|
23
pkgs/by-name/ma/maid/package.nix
Normal file
23
pkgs/by-name/ma/maid/package.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ bundlerApp
|
||||||
|
, bundlerUpdateScript
|
||||||
|
, callPackage
|
||||||
|
, lib
|
||||||
|
}:
|
||||||
|
|
||||||
|
bundlerApp {
|
||||||
|
pname = "maid";
|
||||||
|
gemdir = ./.;
|
||||||
|
exes = [ "maid" ];
|
||||||
|
|
||||||
|
passthru.updateScript = bundlerUpdateScript "maid";
|
||||||
|
|
||||||
|
passthru.tests.run = callPackage ./test.nix { };
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Rule-based file mover and cleaner in Ruby";
|
||||||
|
homepage = "https://github.com/maid/maid";
|
||||||
|
license = licenses.gpl2Only;
|
||||||
|
maintainers = with maintainers; [ alanpearce ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
20
pkgs/by-name/ma/maid/test.nix
Normal file
20
pkgs/by-name/ma/maid/test.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ runCommandLocal, maid }:
|
||||||
|
|
||||||
|
runCommandLocal "test-maid-run" {
|
||||||
|
nativeBuildInputs = [ maid ];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
mkdir -p $out/test
|
||||||
|
export HOME=$out
|
||||||
|
cd $out
|
||||||
|
touch test/a.iso test/b.txt
|
||||||
|
cat > rules.rb <<EOF
|
||||||
|
Maid.rules do
|
||||||
|
rule 'ISO' do
|
||||||
|
trash(dir('test/*.iso'))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
EOF
|
||||||
|
maid clean --rules rules.rb --force
|
||||||
|
[ -f test/b.txt ] && [ ! -f test/a.iso ]
|
||||||
|
''
|
59
pkgs/by-name/nh/nh/package.nix
Normal file
59
pkgs/by-name/nh/nh/package.nix
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
{ lib
|
||||||
|
, rustPlatform
|
||||||
|
, installShellFiles
|
||||||
|
, makeWrapper
|
||||||
|
, fetchFromGitHub
|
||||||
|
, nvd
|
||||||
|
, use-nom ? true
|
||||||
|
, nix-output-monitor ? null
|
||||||
|
}:
|
||||||
|
|
||||||
|
assert use-nom -> nix-output-monitor != null;
|
||||||
|
|
||||||
|
let
|
||||||
|
version = "3.4.12";
|
||||||
|
runtimeDeps = [ nvd ] ++ lib.optionals use-nom [ nix-output-monitor ];
|
||||||
|
in
|
||||||
|
rustPlatform.buildRustPackage {
|
||||||
|
inherit version;
|
||||||
|
pname = "nh";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ViperML";
|
||||||
|
repo = "nh";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-V5TQ/1loQnegDjfLh61DxBWEQZivYEBq2kQpT0fn2cQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
installShellFiles
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
preFixup = ''
|
||||||
|
mkdir completions
|
||||||
|
$out/bin/nh completions --shell bash > completions/nh.bash
|
||||||
|
$out/bin/nh completions --shell zsh > completions/nh.zsh
|
||||||
|
$out/bin/nh completions --shell fish > completions/nh.fish
|
||||||
|
|
||||||
|
installShellCompletion completions/*
|
||||||
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
wrapProgram $out/bin/nh \
|
||||||
|
--prefix PATH : ${lib.makeBinPath runtimeDeps} \
|
||||||
|
${lib.optionalString use-nom "--set-default NH_NOM 1"}
|
||||||
|
'';
|
||||||
|
|
||||||
|
cargoHash = "sha256-Ul4DM8WmKvKG32zBXzpdzHZknpTQAVvrxFcEd/C1buA=";
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Yet another nix cli helper";
|
||||||
|
homepage = "https://github.com/ViperML/nh";
|
||||||
|
license = lib.licenses.eupl12;
|
||||||
|
mainProgram = "nh";
|
||||||
|
maintainers = with lib.maintainers; [ drupol viperML ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -18,6 +18,7 @@ php.buildComposerProject (finalAttrs: {
|
||||||
description = "PHP Unit Testing framework";
|
description = "PHP Unit Testing framework";
|
||||||
homepage = "https://phpunit.de";
|
homepage = "https://phpunit.de";
|
||||||
license = lib.licenses.bsd3;
|
license = lib.licenses.bsd3;
|
||||||
|
mainProgram = "phpunit";
|
||||||
maintainers = [ lib.maintainers.onny ] ++ lib.teams.php.members;
|
maintainers = [ lib.maintainers.onny ] ++ lib.teams.php.members;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
|
@ -146,7 +146,7 @@ rustPlatform.buildRustPackage {
|
||||||
|
|
||||||
wrapProgram "$out/bin/windmill" \
|
wrapProgram "$out/bin/windmill" \
|
||||||
--prefix PATH : ${lib.makeBinPath [go pythonEnv deno nsjail bash]} \
|
--prefix PATH : ${lib.makeBinPath [go pythonEnv deno nsjail bash]} \
|
||||||
--prefix LD_LIBRARY_PATH : "${stdenv.cc.cc.lib}/lib" \
|
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [stdenv.cc.cc.lib]} \
|
||||||
--set PYTHON_PATH "${pythonEnv}/bin/python3" \
|
--set PYTHON_PATH "${pythonEnv}/bin/python3" \
|
||||||
--set GO_PATH "${go}/bin/go" \
|
--set GO_PATH "${go}/bin/go" \
|
||||||
--set DENO_PATH "${deno}/bin/deno" \
|
--set DENO_PATH "${deno}/bin/deno" \
|
||||||
|
|
|
@ -166,7 +166,7 @@ rec {
|
||||||
|
|
||||||
noto-fonts-color-emoji =
|
noto-fonts-color-emoji =
|
||||||
let
|
let
|
||||||
version = "2.038";
|
version = "2.042";
|
||||||
emojiPythonEnv =
|
emojiPythonEnv =
|
||||||
buildPackages.python3.withPackages (p: with p; [ fonttools nototools ]);
|
buildPackages.python3.withPackages (p: with p; [ fonttools nototools ]);
|
||||||
in
|
in
|
||||||
|
@ -178,7 +178,7 @@ rec {
|
||||||
owner = "googlefonts";
|
owner = "googlefonts";
|
||||||
repo = "noto-emoji";
|
repo = "noto-emoji";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1rgmcc6nqq805iqr8kvxxlk5cf50q714xaxk3ld6rjrd69kb8ix9";
|
hash = "sha256-otJQMXrBIPrxD1vCdgcrZ2h1a9XAMbqEBFumjz1XJ54=";
|
||||||
};
|
};
|
||||||
|
|
||||||
depsBuildBuild = [
|
depsBuildBuild = [
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
, vte
|
, vte
|
||||||
, wrapGAppsHook
|
, wrapGAppsHook
|
||||||
, xdg-utils
|
, xdg-utils
|
||||||
, xprop
|
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
# Helper method to reduce redundancy
|
# Helper method to reduce redundancy
|
||||||
|
@ -137,12 +136,6 @@ super: lib.trivial.pipe super [
|
||||||
];
|
];
|
||||||
}))
|
}))
|
||||||
|
|
||||||
(patchExtension "unite@hardpixel.eu" (old: {
|
|
||||||
buildInputs = [ xprop ];
|
|
||||||
|
|
||||||
meta.maintainers = with lib.maintainers; [ rhoriguchi ];
|
|
||||||
}))
|
|
||||||
|
|
||||||
(patchExtension "x11gestures@joseexposito.github.io" (old: {
|
(patchExtension "x11gestures@joseexposito.github.io" (old: {
|
||||||
# Extension can't find Touchegg
|
# Extension can't find Touchegg
|
||||||
# https://github.com/NixOS/nixpkgs/issues/137621
|
# https://github.com/NixOS/nixpkgs/issues/137621
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
"taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { };
|
"taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { };
|
||||||
"tilingnome@rliang.github.com" = callPackage ./tilingnome { };
|
"tilingnome@rliang.github.com" = callPackage ./tilingnome { };
|
||||||
"TopIcons@phocean.net" = callPackage ./topicons-plus { };
|
"TopIcons@phocean.net" = callPackage ./topicons-plus { };
|
||||||
|
# Can be removed when https://github.com/hardpixel/unite-shell/issues/353 resolved
|
||||||
|
"unite@hardpixel.eu" = callPackage ./unite { };
|
||||||
"valent@andyholmes.ca" = callPackage ./valent { };
|
"valent@andyholmes.ca" = callPackage ./valent { };
|
||||||
"window-corner-preview@fabiomereu.it" = callPackage ./window-corner-preview { };
|
"window-corner-preview@fabiomereu.it" = callPackage ./window-corner-preview { };
|
||||||
}
|
}
|
||||||
|
|
43
pkgs/desktops/gnome/extensions/unite/default.nix
Normal file
43
pkgs/desktops/gnome/extensions/unite/default.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{ lib, stdenv, gnome, fetchFromGitHub, xprop, glib }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "gnome-shell-extension-unite";
|
||||||
|
version = "77";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "hardpixel";
|
||||||
|
repo = "unite-shell";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-5PClGWOxqwTVaqBySu5I+qavaV1vcKHUvoYJ3Qgcq2o=";
|
||||||
|
};
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
extensionUuid = "unite@hardpixel.eu";
|
||||||
|
extensionPortalSlug = "unite";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ glib ];
|
||||||
|
|
||||||
|
buildInputs = [ xprop ];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
glib-compile-schemas --strict --targetdir="unite@hardpixel.eu/schemas/" "unite@hardpixel.eu/schemas"
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/share/gnome-shell/extensions
|
||||||
|
cp -r "unite@hardpixel.eu" $out/share/gnome-shell/extensions
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Unite is a GNOME Shell extension which makes a few layout tweaks to the top panel and removes window decorations to make it look like Ubuntu Unity Shell";
|
||||||
|
license = licenses.gpl3Only;
|
||||||
|
maintainers = with maintainers; [ rhoriguchi ];
|
||||||
|
homepage = "https://github.com/hardpixel/unite-shell";
|
||||||
|
broken = versionOlder gnome.gnome-shell.version "3.32";
|
||||||
|
};
|
||||||
|
}
|
|
@ -14,10 +14,10 @@
|
||||||
mkXfceDerivation rec {
|
mkXfceDerivation rec {
|
||||||
category = "panel-plugins";
|
category = "panel-plugins";
|
||||||
pname = "xfce4-cpugraph-plugin";
|
pname = "xfce4-cpugraph-plugin";
|
||||||
version = "1.2.8";
|
version = "1.2.10";
|
||||||
rev-prefix = "xfce4-cpugraph-plugin-";
|
rev-prefix = "xfce4-cpugraph-plugin-";
|
||||||
odd-unstable = false;
|
odd-unstable = false;
|
||||||
sha256 = "sha256-GNoODnw9Z9MTlvxCOTeZt61A/0AGhMwjrRGdM35XU+M=";
|
sha256 = "sha256-VPelWTtFHmU4ZgWLTzZKbtmQ4LOtVwJvpLG9rHtGoNs=";
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
exo
|
exo
|
||||||
|
|
|
@ -54,11 +54,28 @@ final: prev: let
|
||||||
{
|
{
|
||||||
name = "setup-cuda-hook";
|
name = "setup-cuda-hook";
|
||||||
|
|
||||||
|
# Point NVCC at a compatible compiler
|
||||||
substitutions.ccRoot = "${backendStdenv.cc}";
|
substitutions.ccRoot = "${backendStdenv.cc}";
|
||||||
|
|
||||||
# Required in addition to ccRoot as otherwise bin/gcc is looked up
|
# Required in addition to ccRoot as otherwise bin/gcc is looked up
|
||||||
# when building CMakeCUDACompilerId.cu
|
# when building CMakeCUDACompilerId.cu
|
||||||
substitutions.ccFullPath = "${backendStdenv.cc}/bin/${backendStdenv.cc.targetPrefix}c++";
|
substitutions.ccFullPath = "${backendStdenv.cc}/bin/${backendStdenv.cc.targetPrefix}c++";
|
||||||
|
|
||||||
|
# Required by cmake's enable_language(CUDA) to build a test program
|
||||||
|
# When implementing cross-compilation support: this is
|
||||||
|
# final.pkgs.targetPackages.cudaPackages.cuda_cudart
|
||||||
|
# Given the multiple-outputs each CUDA redist has, we can specify the exact components we
|
||||||
|
# need from the package. CMake requires:
|
||||||
|
# - the cuda_runtime.h header, which is in the dev output
|
||||||
|
# - the dynamic library, which is in the lib output
|
||||||
|
# - the static library, which is in the static output
|
||||||
|
substitutions.cudartFlags = let cudart = final.cuda_cudart; in
|
||||||
|
builtins.concatStringsSep " " (final.lib.optionals (final ? cuda_cudart) ([
|
||||||
|
"-I${final.lib.getDev cudart}/include"
|
||||||
|
"-L${final.lib.getLib cudart}/lib"
|
||||||
|
] ++ final.lib.optionals (builtins.elem "static" cudart.outputs) [
|
||||||
|
"-L${cudart.static}/lib"
|
||||||
|
]));
|
||||||
}
|
}
|
||||||
./hooks/setup-cuda-hook.sh)
|
./hooks/setup-cuda-hook.sh)
|
||||||
{ });
|
{ });
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# Only run the hook from nativeBuildInputs
|
||||||
|
(( "$hostOffset" == -1 && "$targetOffset" == 0)) || return 0
|
||||||
|
|
||||||
echo Sourcing setup-cuda-hook >&2
|
echo Sourcing setup-cuda-hook >&2
|
||||||
|
|
||||||
extendCUDAToolkit_ROOT() {
|
extendCUDAToolkit_ROOT() {
|
||||||
|
@ -55,8 +58,9 @@ setupCUDAToolkitCompilers() {
|
||||||
|
|
||||||
# CMake's enable_language(CUDA) runs a compiler test and it doesn't account for
|
# CMake's enable_language(CUDA) runs a compiler test and it doesn't account for
|
||||||
# CUDAToolkit_ROOT. We have to help it locate libcudart
|
# CUDAToolkit_ROOT. We have to help it locate libcudart
|
||||||
if [[ -z "${nvccDontPrependCudartFlags-}" ]] ; then
|
local cudartFlags="@cudartFlags@"
|
||||||
export NVCC_APPEND_FLAGS+=" -L@cudartLib@/lib -L@cudartStatic@/lib -I@cudartInclude@/include"
|
if [[ -z "${nvccDontPrependCudartFlags-}" ]] && [[ -n "${cudartFlags:-}" ]] ; then
|
||||||
|
export NVCC_APPEND_FLAGS+=" $cudartFlags"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,37 +51,14 @@ in
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
cuda_nvcc = prev.cuda_nvcc.overrideAttrs (_: {
|
cuda_nvcc = prev.cuda_nvcc.overrideAttrs (oldAttrs: {
|
||||||
# Required by cmake's enable_language(CUDA) to build a test program
|
propagatedBuildInputs = [
|
||||||
# When implementing cross-compilation support: this is
|
|
||||||
# final.pkgs.targetPackages.cudaPackages.cuda_cudart
|
|
||||||
env = {
|
|
||||||
# Given the multiple-outputs each CUDA redist has, we can specify the exact components we
|
|
||||||
# need from the package. CMake requires:
|
|
||||||
# - the cuda_runtime.h header, which is in the dev output
|
|
||||||
# - the dynamic library, which is in the lib output
|
|
||||||
# - the static library, which is in the static output
|
|
||||||
cudartInclude = "${final.cuda_cudart.dev}";
|
|
||||||
cudartLib = "${final.cuda_cudart.lib}";
|
|
||||||
cudartStatic = "${final.cuda_cudart.static}";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Point NVCC at a compatible compiler
|
|
||||||
|
|
||||||
# Desiredata: whenever a package (e.g. magma) adds cuda_nvcc to
|
|
||||||
# nativeBuildInputs (offsets `(-1, 0)`), magma should also source the
|
|
||||||
# setupCudaHook, i.e. we want it the hook to be propagated into the
|
|
||||||
# same nativeBuildInputs.
|
|
||||||
#
|
|
||||||
# Logically, cuda_nvcc should include the hook in depsHostHostPropagated,
|
|
||||||
# so that the final offsets for the propagated hook would be `(-1, 0) +
|
|
||||||
# (0, 0) = (-1, 0)`.
|
|
||||||
#
|
|
||||||
# In practice, TargetTarget appears to work:
|
|
||||||
# https://gist.github.com/fd80ff142cd25e64603618a3700e7f82
|
|
||||||
depsTargetTargetPropagated = [
|
|
||||||
final.setupCudaHook
|
final.setupCudaHook
|
||||||
];
|
];
|
||||||
|
|
||||||
|
meta = (oldAttrs.meta or { }) // {
|
||||||
|
mainProgram = "nvcc";
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
cuda_nvprof = prev.cuda_nvprof.overrideAttrs (oldAttrs: {
|
cuda_nvprof = prev.cuda_nvprof.overrideAttrs (oldAttrs: {
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
{ autoAddOpenGLRunpathHook
|
{ autoAddOpenGLRunpathHook
|
||||||
, backendStdenv
|
, backendStdenv
|
||||||
, cmake
|
, cmake
|
||||||
, cuda_cccl
|
, cuda_cccl ? null
|
||||||
, cuda_cudart
|
, cuda_cudart ? null
|
||||||
, cudaFlags
|
, cudaFlags
|
||||||
, cuda_nvcc
|
, cuda_nvcc ? null
|
||||||
|
, cudatoolkit ? null
|
||||||
, lib
|
, lib
|
||||||
, libcublas
|
, libcublas ? null
|
||||||
, setupCudaHook
|
, setupCudaHook
|
||||||
, stdenv
|
, stdenv
|
||||||
}:
|
}:
|
||||||
|
@ -17,23 +18,24 @@ backendStdenv.mkDerivation {
|
||||||
|
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = lib.optionals (cuda_cudart != null) [
|
||||||
libcublas
|
libcublas
|
||||||
cuda_cudart
|
cuda_cudart
|
||||||
cuda_cccl
|
cuda_cccl
|
||||||
|
] ++ lib.optionals (cuda_cudart == null) [
|
||||||
|
cudatoolkit
|
||||||
];
|
];
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
cmake
|
cmake
|
||||||
|
|
||||||
# NOTE: this needs to be pkgs.buildPackages.cudaPackages_XX_Y.cuda_nvcc for
|
|
||||||
# cross-compilation to work. This should work automatically once we move to
|
|
||||||
# spliced scopes. Delete this comment once that happens
|
|
||||||
cuda_nvcc
|
|
||||||
|
|
||||||
# Alternatively, we could remove the propagated hook from cuda_nvcc and add
|
# Alternatively, we could remove the propagated hook from cuda_nvcc and add
|
||||||
# directly:
|
# directly:
|
||||||
# setupCudaHook
|
# setupCudaHook
|
||||||
autoAddOpenGLRunpathHook
|
autoAddOpenGLRunpathHook
|
||||||
|
] ++ lib.optionals (cuda_nvcc != null) [
|
||||||
|
cuda_nvcc
|
||||||
|
] ++ lib.optionals (cuda_nvcc == null) [
|
||||||
|
cudatoolkit
|
||||||
];
|
];
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
|
|
|
@ -57,6 +57,7 @@ stdenv.mkDerivation rec {
|
||||||
buildInputs = lib.optionals withMkl [
|
buildInputs = lib.optionals withMkl [
|
||||||
mkl
|
mkl
|
||||||
] ++ lib.optionals withCUDA [
|
] ++ lib.optionals withCUDA [
|
||||||
|
cudaPackages.cuda_cccl # <nv/target> required by the fp16 headers in cudart
|
||||||
cudaPackages.cuda_cudart
|
cudaPackages.cuda_cudart
|
||||||
cudaPackages.libcublas
|
cudaPackages.libcublas
|
||||||
cudaPackages.libcurand
|
cudaPackages.libcurand
|
||||||
|
|
|
@ -22,12 +22,13 @@ stdenv.mkDerivation rec {
|
||||||
];
|
];
|
||||||
|
|
||||||
# XXX: libX11 is not directly needed, but needed as a propagated dep of Cairo.
|
# XXX: libX11 is not directly needed, but needed as a propagated dep of Cairo.
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ]
|
||||||
|
++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
|
||||||
|
|
||||||
buildInputs = [ expat ncurses ]
|
buildInputs = [ expat ncurses ]
|
||||||
++ lib.optionals x11Support [ cairo libX11 ]
|
++ lib.optionals x11Support [ cairo libX11 ]
|
||||||
++ lib.optionals stdenv.isLinux [ numactl ]
|
++ lib.optionals stdenv.isLinux [ numactl ]
|
||||||
++ lib.optional enableCuda cudaPackages.cudatoolkit;
|
++ lib.optionals enableCuda [ cudaPackages.cuda_cudart ];
|
||||||
|
|
||||||
# Since `libpci' appears in `hwloc.pc', it must be propagated.
|
# Since `libpci' appears in `hwloc.pc', it must be propagated.
|
||||||
propagatedBuildInputs = lib.optional stdenv.isLinux pciutils;
|
propagatedBuildInputs = lib.optional stdenv.isLinux pciutils;
|
||||||
|
|
|
@ -1,102 +0,0 @@
|
||||||
{ lib
|
|
||||||
, config
|
|
||||||
, fetchFromGitHub
|
|
||||||
, stdenv
|
|
||||||
, cmake
|
|
||||||
, pkg-config
|
|
||||||
, cudaPackages ? { }
|
|
||||||
, symlinkJoin
|
|
||||||
, tbb
|
|
||||||
, hostSystem ? "CPP"
|
|
||||||
, deviceSystem ? if config.cudaSupport then "CUDA" else "OMP"
|
|
||||||
}:
|
|
||||||
|
|
||||||
# Policy for device_vector<T>
|
|
||||||
assert builtins.elem deviceSystem [
|
|
||||||
"CPP" # Serial on CPU
|
|
||||||
"OMP" # Parallel with OpenMP
|
|
||||||
"TBB" # Parallel with Intel TBB
|
|
||||||
"CUDA" # Parallel on GPU
|
|
||||||
];
|
|
||||||
|
|
||||||
# Policy for host_vector<T>
|
|
||||||
# Always lives on CPU, but execution can be made parallel
|
|
||||||
assert builtins.elem hostSystem [ "CPP" "OMP" "TBB" ];
|
|
||||||
|
|
||||||
let
|
|
||||||
pname = "nvidia-thrust";
|
|
||||||
version = "1.16.0";
|
|
||||||
|
|
||||||
inherit (cudaPackages) backendStdenv cudaFlags;
|
|
||||||
cudaCapabilities = map cudaFlags.dropDot cudaFlags.cudaCapabilities;
|
|
||||||
|
|
||||||
tbbSupport = builtins.elem "TBB" [ deviceSystem hostSystem ];
|
|
||||||
cudaSupport = deviceSystem == "CUDA";
|
|
||||||
|
|
||||||
# TODO: Would like to use this:
|
|
||||||
cudaJoined = symlinkJoin {
|
|
||||||
name = "cuda-packages-unsplit";
|
|
||||||
paths = with cudaPackages; [
|
|
||||||
cuda_nvcc
|
|
||||||
cuda_nvrtc # symbols: cudaLaunchDevice, &c; notice postBuild
|
|
||||||
cuda_cudart # cuda_runtime.h
|
|
||||||
libcublas
|
|
||||||
];
|
|
||||||
postBuild = ''
|
|
||||||
ln -s $out/lib $out/lib64
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
inherit pname version;
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "NVIDIA";
|
|
||||||
repo = "thrust";
|
|
||||||
rev = version;
|
|
||||||
fetchSubmodules = true;
|
|
||||||
hash = "sha256-/EyznxWKuHuvHNjq+SQg27IaRbtkjXR2zlo2YgCWmUQ=";
|
|
||||||
};
|
|
||||||
|
|
||||||
# NVIDIA's "compiler hacks" seem like work-arounds for legacy toolchains and
|
|
||||||
# cause us errors such as:
|
|
||||||
# > Thrust's test harness uses CMAKE_CXX_COMPILER for the CUDA host compiler.
|
|
||||||
# > Refusing to overwrite specified CMAKE_CUDA_HOST_COMPILER
|
|
||||||
# So we un-fix cmake after them:
|
|
||||||
postPatch = ''
|
|
||||||
echo > cmake/ThrustCompilerHacks.cmake
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildInputs = lib.optionals tbbSupport [ tbb ];
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
cmake
|
|
||||||
pkg-config
|
|
||||||
] ++ lib.optionals cudaSupport [
|
|
||||||
# Goes in native build inputs because thrust looks for headers
|
|
||||||
# in a path relative to nvcc...
|
|
||||||
cudaJoined
|
|
||||||
];
|
|
||||||
|
|
||||||
cmakeFlags = [
|
|
||||||
"-DTHRUST_INCLUDE_CUB_CMAKE=${if cudaSupport then "ON" else "OFF"}"
|
|
||||||
"-DTHRUST_DEVICE_SYSTEM=${deviceSystem}"
|
|
||||||
"-DTHRUST_HOST_SYSTEM=${hostSystem}"
|
|
||||||
"-DTHRUST_AUTO_DETECT_COMPUTE_ARCHS=OFF"
|
|
||||||
"-DTHRUST_DISABLE_ARCH_BY_DEFAULT=ON"
|
|
||||||
] ++ lib.optionals cudaFlags.enableForwardCompat [
|
|
||||||
"-DTHRUST_ENABLE_COMPUTE_FUTURE=ON"
|
|
||||||
] ++ map (sm: "THRUST_ENABLE_COMPUTE_${sm}") cudaCapabilities;
|
|
||||||
|
|
||||||
passthru = {
|
|
||||||
inherit cudaSupport cudaPackages cudaJoined;
|
|
||||||
};
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "A high-level C++ parallel algorithms library that builds on top of CUDA, TBB, OpenMP, etc";
|
|
||||||
homepage = "https://github.com/NVIDIA/thrust";
|
|
||||||
license = licenses.asl20;
|
|
||||||
platforms = platforms.unix;
|
|
||||||
maintainers = with maintainers; [ SomeoneSerge ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -476,6 +476,8 @@ effectiveStdenv.mkDerivation {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
|
cudaSupport = enableCuda;
|
||||||
|
|
||||||
tests = {
|
tests = {
|
||||||
inherit (gst_all_1) gst-plugins-bad;
|
inherit (gst_all_1) gst-plugins-bad;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
, libpsm2, libfabric, pmix, ucx, ucc
|
, libpsm2, libfabric, pmix, ucx, ucc
|
||||||
, config
|
, config
|
||||||
# Enable CUDA support
|
# Enable CUDA support
|
||||||
, cudaSupport ? config.cudaSupport, cudatoolkit
|
, cudaSupport ? config.cudaSupport, cudaPackages
|
||||||
|
|
||||||
# Enable the Sun Grid Engine bindings
|
# Enable the Sun Grid Engine bindings
|
||||||
, enableSGE ? false
|
, enableSGE ? false
|
||||||
|
@ -18,12 +18,7 @@
|
||||||
, fortranSupport ? true
|
, fortranSupport ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
stdenv.mkDerivation rec {
|
||||||
cudatoolkit_joined = symlinkJoin {
|
|
||||||
name = "${cudatoolkit.name}-unsplit";
|
|
||||||
paths = [ cudatoolkit.out cudatoolkit.lib ];
|
|
||||||
};
|
|
||||||
in stdenv.mkDerivation rec {
|
|
||||||
pname = "openmpi";
|
pname = "openmpi";
|
||||||
version = "4.1.6";
|
version = "4.1.6";
|
||||||
|
|
||||||
|
@ -47,12 +42,13 @@ in stdenv.mkDerivation rec {
|
||||||
|
|
||||||
buildInputs = [ zlib ]
|
buildInputs = [ zlib ]
|
||||||
++ lib.optionals stdenv.isLinux [ libnl numactl pmix ucx ucc ]
|
++ lib.optionals stdenv.isLinux [ libnl numactl pmix ucx ucc ]
|
||||||
++ lib.optionals cudaSupport [ cudatoolkit ]
|
++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]
|
||||||
++ [ libevent hwloc ]
|
++ [ libevent hwloc ]
|
||||||
++ lib.optional (stdenv.isLinux || stdenv.isFreeBSD) rdma-core
|
++ lib.optional (stdenv.isLinux || stdenv.isFreeBSD) rdma-core
|
||||||
++ lib.optionals fabricSupport [ libpsm2 libfabric ];
|
++ lib.optionals fabricSupport [ libpsm2 libfabric ];
|
||||||
|
|
||||||
nativeBuildInputs = [ perl ]
|
nativeBuildInputs = [ perl ]
|
||||||
|
++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ]
|
||||||
++ lib.optionals fortranSupport [ gfortran ];
|
++ lib.optionals fortranSupport [ gfortran ];
|
||||||
|
|
||||||
configureFlags = lib.optional (!cudaSupport) "--disable-mca-dso"
|
configureFlags = lib.optional (!cudaSupport) "--disable-mca-dso"
|
||||||
|
@ -67,7 +63,7 @@ in stdenv.mkDerivation rec {
|
||||||
# TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build
|
# TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build
|
||||||
# https://github.com/openucx/ucx
|
# https://github.com/openucx/ucx
|
||||||
# https://www.open-mpi.org/faq/?category=buildcuda
|
# https://www.open-mpi.org/faq/?category=buildcuda
|
||||||
++ lib.optionals cudaSupport [ "--with-cuda=${cudatoolkit_joined}" "--enable-dlopen" ]
|
++ lib.optionals cudaSupport [ "--with-cuda=${cudaPackages.cuda_cudart}" "--enable-dlopen" ]
|
||||||
++ lib.optionals fabricSupport [ "--with-psm2=${lib.getDev libpsm2}" "--with-libfabric=${lib.getDev libfabric}" ]
|
++ lib.optionals fabricSupport [ "--with-psm2=${lib.getDev libpsm2}" "--with-libfabric=${lib.getDev libfabric}" ]
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -98,7 +94,8 @@ in stdenv.mkDerivation rec {
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit cudaSupport cudatoolkit;
|
inherit cudaSupport;
|
||||||
|
cudatoolkit = cudaPackages.cudatoolkit; # For backward compatibility only
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
{ config, lib, stdenv, fetchFromGitHub, cmake, pkg-config, xorg, libGLU
|
{ config, lib, stdenv, fetchFromGitHub, cmake, pkg-config, xorg, libGLU
|
||||||
, libGL, glew, ocl-icd, python3
|
, libGL, glew, ocl-icd, python3
|
||||||
, cudaSupport ? config.cudaSupport, cudatoolkit
|
, cudaSupport ? config.cudaSupport
|
||||||
# For visibility mostly. The whole approach to cuda architectures and capabilities
|
, cudaPackages
|
||||||
# will be reworked soon.
|
|
||||||
, cudaArch ? "compute_37"
|
|
||||||
, openclSupport ? !cudaSupport
|
, openclSupport ? !cudaSupport
|
||||||
, darwin
|
, darwin
|
||||||
}:
|
}:
|
||||||
|
@ -21,7 +19,11 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkg-config ];
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
pkg-config
|
||||||
|
cudaPackages.cuda_nvcc
|
||||||
|
];
|
||||||
buildInputs =
|
buildInputs =
|
||||||
[ libGLU libGL python3
|
[ libGLU libGL python3
|
||||||
# FIXME: these are not actually needed, but the configure script wants them.
|
# FIXME: these are not actually needed, but the configure script wants them.
|
||||||
|
@ -30,21 +32,31 @@ stdenv.mkDerivation rec {
|
||||||
]
|
]
|
||||||
++ lib.optional (openclSupport && !stdenv.isDarwin) ocl-icd
|
++ lib.optional (openclSupport && !stdenv.isDarwin) ocl-icd
|
||||||
++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [OpenCL Cocoa CoreVideo IOKit AppKit AGL ])
|
++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [OpenCL Cocoa CoreVideo IOKit AppKit AGL ])
|
||||||
++ lib.optional cudaSupport cudatoolkit;
|
++ lib.optional cudaSupport [
|
||||||
|
cudaPackages.cuda_cudart
|
||||||
|
];
|
||||||
|
|
||||||
|
# It's important to set OSD_CUDA_NVCC_FLAGS,
|
||||||
|
# because otherwise OSD might piggyback unwanted architectures:
|
||||||
|
# https://github.com/PixarAnimationStudios/OpenSubdiv/blob/7d0ab5530feef693ac0a920585b5c663b80773b3/CMakeLists.txt#L602
|
||||||
|
preConfigure = lib.optionalString cudaSupport ''
|
||||||
|
cmakeFlagsArray+=(
|
||||||
|
-DOSD_CUDA_NVCC_FLAGS="${lib.concatStringsSep " " cudaPackages.cudaFlags.gencode}"
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
|
||||||
cmakeFlags =
|
cmakeFlags =
|
||||||
[ "-DNO_TUTORIALS=1"
|
[ "-DNO_TUTORIALS=1"
|
||||||
"-DNO_REGRESSION=1"
|
"-DNO_REGRESSION=1"
|
||||||
"-DNO_EXAMPLES=1"
|
"-DNO_EXAMPLES=1"
|
||||||
"-DNO_METAL=1" # don’t have metal in apple sdk
|
"-DNO_METAL=1" # don’t have metal in apple sdk
|
||||||
|
(lib.cmakeBool "NO_OPENCL" (!openclSupport))
|
||||||
|
(lib.cmakeBool "NO_CUDA" (!cudaSupport))
|
||||||
] ++ lib.optionals (!stdenv.isDarwin) [
|
] ++ lib.optionals (!stdenv.isDarwin) [
|
||||||
"-DGLEW_INCLUDE_DIR=${glew.dev}/include"
|
"-DGLEW_INCLUDE_DIR=${glew.dev}/include"
|
||||||
"-DGLEW_LIBRARY=${glew.dev}/lib"
|
"-DGLEW_LIBRARY=${glew.dev}/lib"
|
||||||
] ++ lib.optionals cudaSupport [
|
] ++ lib.optionals cudaSupport [
|
||||||
"-DOSD_CUDA_NVCC_FLAGS=--gpu-architecture=${cudaArch}"
|
|
||||||
"-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc"
|
|
||||||
] ++ lib.optionals (!openclSupport) [
|
] ++ lib.optionals (!openclSupport) [
|
||||||
"-DNO_OPENCL=1"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
preBuild = let maxBuildCores = 16; in lib.optionalString cudaSupport ''
|
preBuild = let maxBuildCores = 16; in lib.optionalString cudaSupport ''
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, substituteAll
|
, substituteAll
|
||||||
|
, cudaSupport ? opencv.cudaSupport or false
|
||||||
|
|
||||||
# build
|
# build
|
||||||
, addOpenGLRunpath
|
, addOpenGLRunpath
|
||||||
|
@ -21,6 +22,7 @@
|
||||||
, protobuf
|
, protobuf
|
||||||
, pugixml
|
, pugixml
|
||||||
, tbb
|
, tbb
|
||||||
|
, cudaPackages
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -68,6 +70,8 @@ stdenv.mkDerivation rec {
|
||||||
setuptools
|
setuptools
|
||||||
]))
|
]))
|
||||||
shellcheck
|
shellcheck
|
||||||
|
] ++ lib.optionals cudaSupport [
|
||||||
|
cudaPackages.cuda_nvcc
|
||||||
];
|
];
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -133,6 +137,8 @@ stdenv.mkDerivation rec {
|
||||||
protobuf
|
protobuf
|
||||||
pugixml
|
pugixml
|
||||||
tbb
|
tbb
|
||||||
|
] ++ lib.optionals cudaSupport [
|
||||||
|
cudaPackages.cuda_cudart
|
||||||
];
|
];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
|
@ -9,13 +9,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "qtutilities";
|
pname = "qtutilities";
|
||||||
version = "6.13.2";
|
version = "6.13.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Martchus";
|
owner = "Martchus";
|
||||||
repo = "qtutilities";
|
repo = "qtutilities";
|
||||||
rev = "v${finalAttrs.version}";
|
rev = "v${finalAttrs.version}";
|
||||||
hash = "sha256-Kdvr3T9hynLCj99+Rc1L0Gq7xkiM0a6xovuqhAncrek=";
|
hash = "sha256-/3PEbUMphblB3HgLkDb4l7GykuXL/ZOsKBrs8h72uwE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
{ stdenv
|
{ stdenv
|
||||||
, lib
|
, lib
|
||||||
, libPath
|
, libPath
|
||||||
|
, cuda_cudart
|
||||||
|
, cudaMajorVersion
|
||||||
|
, cuda_nvcc
|
||||||
, cudatoolkit
|
, cudatoolkit
|
||||||
|
, libcublas
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, autoPatchelfHook
|
, autoPatchelfHook
|
||||||
, addOpenGLRunpath
|
, addOpenGLRunpath
|
||||||
|
@ -17,7 +21,7 @@ let
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "cudatoolkit-${cudatoolkit.majorVersion}-cutensor";
|
pname = "cutensor-cu${cudaMajorVersion}";
|
||||||
inherit version;
|
inherit version;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
|
@ -32,20 +36,27 @@ stdenv.mkDerivation {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoPatchelfHook
|
autoPatchelfHook
|
||||||
addOpenGLRunpath
|
addOpenGLRunpath
|
||||||
|
cuda_nvcc
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
stdenv.cc.cc.lib
|
stdenv.cc.cc.lib
|
||||||
];
|
cuda_cudart
|
||||||
|
libcublas
|
||||||
propagatedBuildInputs = [
|
|
||||||
cudatoolkit
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found.
|
# Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found.
|
||||||
# See the explanation in addOpenGLRunpath.
|
# See the explanation in addOpenGLRunpath.
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p "$out" "$dev"
|
mkdir -p "$out" "$dev"
|
||||||
|
|
||||||
|
if [[ ! -d "${libPath}" ]] ; then
|
||||||
|
echo "Cutensor: ${libPath} does not exist, only found:" >&2
|
||||||
|
find "$(dirname ${libPath})"/ -maxdepth 1 >&2
|
||||||
|
echo "This cutensor release might not support your cudatoolkit version" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
mv include "$dev"
|
mv include "$dev"
|
||||||
mv ${libPath} "$out/lib"
|
mv ${libPath} "$out/lib"
|
||||||
|
|
||||||
|
@ -58,7 +69,7 @@ stdenv.mkDerivation {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit cudatoolkit;
|
cudatoolkit = lib.warn "cutensor.passthru: cudaPackages.cudatoolkit is deprecated" cudatoolkit;
|
||||||
majorVersion = lib.versions.major version;
|
majorVersion = lib.versions.major version;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -66,7 +77,11 @@ stdenv.mkDerivation {
|
||||||
description = "cuTENSOR: A High-Performance CUDA Library For Tensor Primitives";
|
description = "cuTENSOR: A High-Performance CUDA Library For Tensor Primitives";
|
||||||
homepage = "https://developer.nvidia.com/cutensor";
|
homepage = "https://developer.nvidia.com/cutensor";
|
||||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||||
license = licenses.unfree;
|
license = licenses.unfreeRedistributable // {
|
||||||
|
shortName = "cuTENSOR EULA";
|
||||||
|
name = "cuTENSOR SUPPLEMENT TO SOFTWARE LICENSE AGREEMENT FOR NVIDIA SOFTWARE DEVELOPMENT KITS";
|
||||||
|
url = "https://docs.nvidia.com/cuda/cutensor/license.html";
|
||||||
|
};
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = [ "x86_64-linux" ];
|
||||||
maintainers = with maintainers; [ obsidian-systems-maintenance ];
|
maintainers = with maintainers; [ obsidian-systems-maintenance ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
, cmake
|
, cmake
|
||||||
, cudaPackages ? { }
|
, cudaPackages ? { }
|
||||||
, cudaSupport ? config.cudaSupport
|
, cudaSupport ? config.cudaSupport
|
||||||
, nvidia-thrust
|
|
||||||
, useThrustSourceBuild ? true
|
|
||||||
, pythonSupport ? true
|
, pythonSupport ? true
|
||||||
, pythonPackages
|
, pythonPackages
|
||||||
, llvmPackages
|
, llvmPackages
|
||||||
|
@ -27,8 +25,6 @@
|
||||||
, runCommand
|
, runCommand
|
||||||
}@inputs:
|
}@inputs:
|
||||||
|
|
||||||
assert cudaSupport -> nvidia-thrust.cudaSupport;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
pname = "faiss";
|
pname = "faiss";
|
||||||
version = "1.7.4";
|
version = "1.7.4";
|
||||||
|
@ -44,9 +40,6 @@ let
|
||||||
cuda_cudart # cuda_runtime.h
|
cuda_cudart # cuda_runtime.h
|
||||||
libcublas
|
libcublas
|
||||||
libcurand
|
libcurand
|
||||||
] ++ lib.optionals useThrustSourceBuild [
|
|
||||||
nvidia-thrust
|
|
||||||
] ++ lib.optionals (!useThrustSourceBuild) [
|
|
||||||
cuda_cccl
|
cuda_cccl
|
||||||
] ++ lib.optionals (cudaPackages ? cuda_profiler_api) [
|
] ++ lib.optionals (cudaPackages ? cuda_profiler_api) [
|
||||||
cuda_profiler_api # cuda_profiler_api.h
|
cuda_profiler_api # cuda_profiler_api.h
|
||||||
|
|
|
@ -17,16 +17,32 @@ final: prev: let
|
||||||
isSupported = fileData: elem cudaVersion fileData.supportedCudaVersions;
|
isSupported = fileData: elem cudaVersion fileData.supportedCudaVersions;
|
||||||
# Return the first file that is supported. In practice there should only ever be one anyway.
|
# Return the first file that is supported. In practice there should only ever be one anyway.
|
||||||
supportedFile = files: findFirst isSupported null files;
|
supportedFile = files: findFirst isSupported null files;
|
||||||
# Supported versions with versions as keys and file as value
|
|
||||||
supportedVersions = filterAttrs (version: file: file !=null ) (mapAttrs (version: files: supportedFile files) tensorRTVersions);
|
|
||||||
# Compute versioned attribute name to be used in this package set
|
# Compute versioned attribute name to be used in this package set
|
||||||
computeName = version: "tensorrt_${toUnderscore version}";
|
computeName = version: "tensorrt_${toUnderscore version}";
|
||||||
|
|
||||||
|
# Supported versions with versions as keys and file as value
|
||||||
|
supportedVersions = lib.recursiveUpdate
|
||||||
|
{
|
||||||
|
tensorrt = {
|
||||||
|
enable = false;
|
||||||
|
fileVersionCuda = null;
|
||||||
|
fileVersionCudnn = null;
|
||||||
|
fullVersion = "0.0.0";
|
||||||
|
sha256 = null;
|
||||||
|
tarball = null;
|
||||||
|
supportedCudaVersions = [ ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
(mapAttrs' (version: attrs: nameValuePair (computeName version) attrs)
|
||||||
|
(filterAttrs (version: file: file != null) (mapAttrs (version: files: supportedFile files) tensorRTVersions)));
|
||||||
|
|
||||||
# Add all supported builds as attributes
|
# Add all supported builds as attributes
|
||||||
allBuilds = mapAttrs' (version: file: nameValuePair (computeName version) (buildTensorRTPackage (removeAttrs file ["fileVersionCuda"]))) supportedVersions;
|
allBuilds = mapAttrs (name: file: buildTensorRTPackage (removeAttrs file ["fileVersionCuda"])) supportedVersions;
|
||||||
|
|
||||||
# Set the default attributes, e.g. tensorrt = tensorrt_8_4;
|
# Set the default attributes, e.g. tensorrt = tensorrt_8_4;
|
||||||
defaultBuild = { "tensorrt" = if allBuilds ? ${computeName tensorRTDefaultVersion}
|
defaultName = computeName tensorRTDefaultVersion;
|
||||||
then allBuilds.${computeName tensorRTDefaultVersion}
|
defaultBuild = lib.optionalAttrs (allBuilds ? ${defaultName}) { tensorrt = allBuilds.${computeName tensorRTDefaultVersion}; };
|
||||||
else throw "tensorrt-${tensorRTDefaultVersion} does not support your cuda version ${cudaVersion}"; };
|
|
||||||
in {
|
in {
|
||||||
inherit buildTensorRTPackage;
|
inherit buildTensorRTPackage;
|
||||||
} // allBuilds // defaultBuild;
|
} // allBuilds // defaultBuild;
|
||||||
|
|
|
@ -8,20 +8,22 @@
|
||||||
, cudnn
|
, cudnn
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{ fullVersion
|
{ enable ? true
|
||||||
|
, fullVersion
|
||||||
, fileVersionCudnn ? null
|
, fileVersionCudnn ? null
|
||||||
, tarball
|
, tarball
|
||||||
, sha256
|
, sha256
|
||||||
, supportedCudaVersions ? [ ]
|
, supportedCudaVersions ? [ ]
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert fileVersionCudnn == null || lib.assertMsg (lib.strings.versionAtLeast cudnn.version fileVersionCudnn)
|
assert !enable || fileVersionCudnn == null || lib.assertMsg (lib.strings.versionAtLeast cudnn.version fileVersionCudnn)
|
||||||
"This version of TensorRT requires at least cuDNN ${fileVersionCudnn} (current version is ${cudnn.version})";
|
"This version of TensorRT requires at least cuDNN ${fileVersionCudnn} (current version is ${cudnn.version})";
|
||||||
|
|
||||||
backendStdenv.mkDerivation rec {
|
backendStdenv.mkDerivation rec {
|
||||||
pname = "cudatoolkit-${cudatoolkit.majorVersion}-tensorrt";
|
pname = "cudatoolkit-${cudatoolkit.majorVersion}-tensorrt";
|
||||||
version = fullVersion;
|
version = fullVersion;
|
||||||
src = requireFile rec {
|
src = if !enable then null else
|
||||||
|
requireFile rec {
|
||||||
name = tarball;
|
name = tarball;
|
||||||
inherit sha256;
|
inherit sha256;
|
||||||
message = ''
|
message = ''
|
||||||
|
@ -38,13 +40,13 @@ backendStdenv.mkDerivation rec {
|
||||||
|
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = lib.optionals enable [
|
||||||
autoPatchelfHook
|
autoPatchelfHook
|
||||||
autoAddOpenGLRunpathHook
|
autoAddOpenGLRunpathHook
|
||||||
];
|
];
|
||||||
|
|
||||||
# Used by autoPatchelfHook
|
# Used by autoPatchelfHook
|
||||||
buildInputs = [
|
buildInputs = lib.optionals enable [
|
||||||
backendStdenv.cc.cc.lib # libstdc++
|
backendStdenv.cc.cc.lib # libstdc++
|
||||||
cudatoolkit
|
cudatoolkit
|
||||||
cudnn
|
cudnn
|
||||||
|
@ -75,6 +77,7 @@ backendStdenv.mkDerivation rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru.stdenv = backendStdenv;
|
passthru.stdenv = backendStdenv;
|
||||||
|
passthru.enable = enable;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
# Check that the cudatoolkit version satisfies our min/max constraints (both
|
# Check that the cudatoolkit version satisfies our min/max constraints (both
|
||||||
|
@ -82,7 +85,7 @@ backendStdenv.mkDerivation rec {
|
||||||
# official version constraints (as recorded in default.nix). In some cases
|
# official version constraints (as recorded in default.nix). In some cases
|
||||||
# you _may_ be able to smudge version constraints, just know that you're
|
# you _may_ be able to smudge version constraints, just know that you're
|
||||||
# embarking into unknown and unsupported territory when doing so.
|
# embarking into unknown and unsupported territory when doing so.
|
||||||
broken = !(elem cudaVersion supportedCudaVersions);
|
broken = !enable || !(elem cudaVersion supportedCudaVersions);
|
||||||
description = "TensorRT: a high-performance deep learning interface";
|
description = "TensorRT: a high-performance deep learning interface";
|
||||||
homepage = "https://developer.nvidia.com/tensorrt";
|
homepage = "https://developer.nvidia.com/tensorrt";
|
||||||
license = licenses.unfree;
|
license = licenses.unfree;
|
||||||
|
|
|
@ -14,10 +14,15 @@
|
||||||
inherit (cudaPackages) backendStdenv cudaFlags;
|
inherit (cudaPackages) backendStdenv cudaFlags;
|
||||||
|
|
||||||
cuda-common-redist = with cudaPackages; [
|
cuda-common-redist = with cudaPackages; [
|
||||||
cuda_cudart # cuda_runtime.h
|
cuda_cudart.dev # cuda_runtime.h
|
||||||
libcublas # cublas_v2.h
|
cuda_cudart.lib
|
||||||
libcusolver # cusolverDn.h
|
cuda_cccl.dev # <nv/target>
|
||||||
libcusparse # cusparse.h
|
libcublas.dev # cublas_v2.h
|
||||||
|
libcublas.lib
|
||||||
|
libcusolver.dev # cusolverDn.h
|
||||||
|
libcusolver.lib
|
||||||
|
libcusparse.dev # cusparse.h
|
||||||
|
libcusparse.lib
|
||||||
];
|
];
|
||||||
|
|
||||||
cuda-native-redist = symlinkJoin {
|
cuda-native-redist = symlinkJoin {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ stdenv, lib, fetchFromGitHub, libtool, automake, autoconf, ucx
|
{ stdenv, lib, fetchFromGitHub, libtool, automake, autoconf, ucx
|
||||||
, config
|
, config
|
||||||
, enableCuda ? config.cudaSupport
|
, enableCuda ? config.cudaSupport
|
||||||
, cudatoolkit
|
, cudaPackages
|
||||||
, enableAvx ? stdenv.hostPlatform.avxSupport
|
, enableAvx ? stdenv.hostPlatform.avxSupport
|
||||||
, enableSse41 ? stdenv.hostPlatform.sse4_1Support
|
, enableSse41 ? stdenv.hostPlatform.sse4_1Support
|
||||||
, enableSse42 ? stdenv.hostPlatform.sse4_2Support
|
, enableSse42 ? stdenv.hostPlatform.sse4_2Support
|
||||||
|
@ -30,19 +30,25 @@ stdenv.mkDerivation rec {
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ libtool automake autoconf ]
|
||||||
|
++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
|
||||||
|
buildInputs = [ ucx ]
|
||||||
|
++ lib.optionals enableCuda [
|
||||||
|
cudaPackages.cuda_cccl
|
||||||
|
cudaPackages.cuda_cudart
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
|
'' + lib.optionalString enableCuda ''
|
||||||
|
configureFlagsArray+=( "--with-nvcc-gencode=${builtins.concatStringsSep " " cudaPackages.cudaFlags.gencode}" )
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [ libtool automake autoconf ];
|
|
||||||
buildInputs = [ ucx ]
|
|
||||||
++ lib.optional enableCuda cudatoolkit;
|
|
||||||
|
|
||||||
configureFlags = [ ]
|
configureFlags = [ ]
|
||||||
++ lib.optional enableSse41 "--with-sse41"
|
++ lib.optional enableSse41 "--with-sse41"
|
||||||
++ lib.optional enableSse42 "--with-sse42"
|
++ lib.optional enableSse42 "--with-sse42"
|
||||||
++ lib.optional enableAvx "--with-avx"
|
++ lib.optional enableAvx "--with-avx"
|
||||||
++ lib.optional enableCuda "--with-cuda=${cudatoolkit}";
|
++ lib.optional enableCuda "--with-cuda=${cudaPackages.cuda_cudart}";
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
find $out/lib/ -name "*.la" -exec rm -f \{} \;
|
find $out/lib/ -name "*.la" -exec rm -f \{} \;
|
||||||
|
|
|
@ -2,18 +2,12 @@
|
||||||
, rdma-core, libbfd, libiberty, perl, zlib, symlinkJoin, pkg-config
|
, rdma-core, libbfd, libiberty, perl, zlib, symlinkJoin, pkg-config
|
||||||
, config
|
, config
|
||||||
, enableCuda ? config.cudaSupport
|
, enableCuda ? config.cudaSupport
|
||||||
, cudatoolkit
|
, cudaPackages
|
||||||
, enableRocm ? config.rocmSupport
|
, enableRocm ? config.rocmSupport
|
||||||
, rocmPackages
|
, rocmPackages
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
# Needed for configure to find all libraries
|
|
||||||
cudatoolkit' = symlinkJoin {
|
|
||||||
inherit (cudatoolkit) name meta;
|
|
||||||
paths = [ cudatoolkit cudatoolkit.lib ];
|
|
||||||
};
|
|
||||||
|
|
||||||
rocmList = with rocmPackages; [ rocm-core rocm-runtime rocm-device-libs clr ];
|
rocmList = with rocmPackages; [ rocm-core rocm-runtime rocm-device-libs clr ];
|
||||||
|
|
||||||
rocm = symlinkJoin {
|
rocm = symlinkJoin {
|
||||||
|
@ -35,7 +29,15 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
outputs = [ "out" "doc" "dev" ];
|
outputs = [ "out" "doc" "dev" ];
|
||||||
|
|
||||||
nativeBuildInputs = [ autoreconfHook doxygen pkg-config ];
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook
|
||||||
|
doxygen
|
||||||
|
pkg-config
|
||||||
|
]
|
||||||
|
++ lib.optionals enableCuda [
|
||||||
|
cudaPackages.cuda_nvcc
|
||||||
|
cudaPackages.autoAddOpenGLRunpathHook
|
||||||
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libbfd
|
libbfd
|
||||||
|
@ -44,8 +46,16 @@ stdenv.mkDerivation rec {
|
||||||
perl
|
perl
|
||||||
rdma-core
|
rdma-core
|
||||||
zlib
|
zlib
|
||||||
] ++ lib.optional enableCuda cudatoolkit
|
] ++ lib.optionals enableCuda [
|
||||||
++ lib.optionals enableRocm rocmList;
|
cudaPackages.cuda_cudart
|
||||||
|
cudaPackages.cuda_nvml_dev
|
||||||
|
|
||||||
|
] ++ lib.optionals enableRocm rocmList;
|
||||||
|
|
||||||
|
LDFLAGS = lib.optionals enableCuda [
|
||||||
|
# Fake libnvidia-ml.so (the real one is deployed impurely)
|
||||||
|
"-L${cudaPackages.cuda_nvml_dev}/lib/stubs"
|
||||||
|
];
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--with-rdmacm=${lib.getDev rdma-core}"
|
"--with-rdmacm=${lib.getDev rdma-core}"
|
||||||
|
@ -53,7 +63,7 @@ stdenv.mkDerivation rec {
|
||||||
"--with-rc"
|
"--with-rc"
|
||||||
"--with-dm"
|
"--with-dm"
|
||||||
"--with-verbs=${lib.getDev rdma-core}"
|
"--with-verbs=${lib.getDev rdma-core}"
|
||||||
] ++ lib.optional enableCuda "--with-cuda=${cudatoolkit'}"
|
] ++ lib.optionals enableCuda [ "--with-cuda=${cudaPackages.cuda_cudart}" ]
|
||||||
++ lib.optional enableRocm "--with-rocm=${rocm}";
|
++ lib.optional enableRocm "--with-rocm=${rocm}";
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
{ lib, stdenv, fetchFromGitHub }:
|
{ lib, stdenv, fetchFromGitHub }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "1.2.16";
|
version = "1.2.17";
|
||||||
pname = "zlog";
|
pname = "zlog";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "HardySimpson";
|
owner = "HardySimpson";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-wpaMbFKSwTIFe3p65pMJ6Pf2qKp1uYZCyyinGU4AxrQ=";
|
sha256 = "sha256-ckpDMRLxObpl8N539DC5u2bPpmD7jM+KugurUfta6tg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
php.buildComposerProject (finalAttrs: {
|
php.buildComposerProject (finalAttrs: {
|
||||||
pname = "box";
|
pname = "box";
|
||||||
version = "4.5.0";
|
version = "4.5.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "box-project";
|
owner = "box-project";
|
||||||
repo = "box";
|
repo = "box";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-6icHXRxqre2RBIRoc3zfQnxGRHh2kIen2oLJ3eQjD/0=";
|
hash = "sha256-3YfnFd8OZ15nQnXOkhNz2FQygElFn+JOrenKUeyTkXA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-n/F/il1u+3amSVf8fr0scZSkXuwxW43iq5F2XQJ3xfM=";
|
vendorHash = "sha256-0ul4NLGK+Z+VN1nv4xSGsh2JcJEXeYAYFhxDn7r3kVY=";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
changelog = "https://github.com/box-project/box/releases/tag/${finalAttrs.version}";
|
changelog = "https://github.com/box-project/box/releases/tag/${finalAttrs.version}";
|
||||||
|
|
|
@ -36,6 +36,7 @@ php.buildComposerProject (finalAttrs: {
|
||||||
description = "Dependency Manager for PHP";
|
description = "Dependency Manager for PHP";
|
||||||
homepage = "https://getcomposer.org/";
|
homepage = "https://getcomposer.org/";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
|
mainProgram = "composer";
|
||||||
maintainers = lib.teams.php.members;
|
maintainers = lib.teams.php.members;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
|
@ -43,6 +43,7 @@ php.buildComposerProject (finalAttrs: {
|
||||||
description = "A PHP code-quality tool";
|
description = "A PHP code-quality tool";
|
||||||
homepage = "https://github.com/phpro/grumphp";
|
homepage = "https://github.com/phpro/grumphp";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
|
mainProgram = "grumphp";
|
||||||
maintainers = lib.teams.php.members;
|
maintainers = lib.teams.php.members;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
|
@ -20,6 +20,7 @@ php.buildComposerProject (finalAttrs: {
|
||||||
description = "A static analysis tool for finding errors in PHP applications";
|
description = "A static analysis tool for finding errors in PHP applications";
|
||||||
homepage = "https://github.com/vimeo/psalm";
|
homepage = "https://github.com/vimeo/psalm";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
|
mainProgram = "psalm";
|
||||||
maintainers = lib.teams.php.members;
|
maintainers = lib.teams.php.members;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,7 +4,7 @@ let
|
||||||
version = "0.4.14";
|
version = "0.4.14";
|
||||||
in buildPecl {
|
in buildPecl {
|
||||||
inherit version;
|
inherit version;
|
||||||
pname = "php-spx";
|
pname = "spx";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "NoiseByNorthwest";
|
owner = "NoiseByNorthwest";
|
|
@ -11,11 +11,34 @@
|
||||||
, cudaPackages
|
, cudaPackages
|
||||||
, addOpenGLRunpath
|
, addOpenGLRunpath
|
||||||
, pythonOlder
|
, pythonOlder
|
||||||
|
, symlinkJoin
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (cudaPackages) cudatoolkit cudnn cutensor nccl;
|
inherit (cudaPackages) cudnn cutensor nccl;
|
||||||
in buildPythonPackage rec {
|
cudatoolkit-joined = symlinkJoin {
|
||||||
|
name = "cudatoolkit-joined-${cudaPackages.cudaVersion}";
|
||||||
|
paths = with cudaPackages; [
|
||||||
|
cuda_cccl # <nv/target>
|
||||||
|
cuda_cccl.dev
|
||||||
|
cuda_cudart
|
||||||
|
cuda_nvcc.dev # <crt/host_defines.h>
|
||||||
|
cuda_nvprof
|
||||||
|
cuda_nvrtc
|
||||||
|
cuda_nvtx
|
||||||
|
cuda_profiler_api
|
||||||
|
libcublas
|
||||||
|
libcufft
|
||||||
|
libcurand
|
||||||
|
libcusolver
|
||||||
|
libcusparse
|
||||||
|
|
||||||
|
# Missing:
|
||||||
|
# cusparselt
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
buildPythonPackage rec {
|
||||||
pname = "cupy";
|
pname = "cupy";
|
||||||
version = "12.2.0";
|
version = "12.2.0";
|
||||||
|
|
||||||
|
@ -32,27 +55,32 @@ in buildPythonPackage rec {
|
||||||
# very short builds and a few extremely long ones, so setting both ends up
|
# very short builds and a few extremely long ones, so setting both ends up
|
||||||
# working nicely in practice.
|
# working nicely in practice.
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export CUDA_PATH=${cudatoolkit}
|
|
||||||
export CUPY_NUM_BUILD_JOBS="$NIX_BUILD_CORES"
|
export CUPY_NUM_BUILD_JOBS="$NIX_BUILD_CORES"
|
||||||
export CUPY_NUM_NVCC_THREADS="$NIX_BUILD_CORES"
|
export CUPY_NUM_NVCC_THREADS="$NIX_BUILD_CORES"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
setuptools
|
||||||
|
wheel
|
||||||
addOpenGLRunpath
|
addOpenGLRunpath
|
||||||
cython
|
cython
|
||||||
|
cudaPackages.cuda_nvcc
|
||||||
];
|
];
|
||||||
|
|
||||||
LDFLAGS = "-L${cudatoolkit}/lib/stubs";
|
buildInputs = [
|
||||||
|
cudatoolkit-joined
|
||||||
propagatedBuildInputs = [
|
|
||||||
cudatoolkit
|
|
||||||
cudnn
|
cudnn
|
||||||
cutensor
|
cutensor
|
||||||
nccl
|
nccl
|
||||||
|
];
|
||||||
|
|
||||||
|
NVCC = "${lib.getExe cudaPackages.cuda_nvcc}"; # FIXME: splicing/buildPackages
|
||||||
|
CUDA_PATH = "${cudatoolkit-joined}";
|
||||||
|
LDFLAGS = "-L${cudaPackages.cuda_cudart}/lib/stubs";
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
fastrlock
|
fastrlock
|
||||||
numpy
|
numpy
|
||||||
setuptools
|
|
||||||
wheel
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeCheckInputs = [
|
nativeCheckInputs = [
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "dvc-render";
|
pname = "dvc-render";
|
||||||
version = "0.6.0";
|
version = "1.0.0";
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.7";
|
||||||
|
@ -24,7 +24,7 @@ buildPythonPackage rec {
|
||||||
owner = "iterative";
|
owner = "iterative";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "refs/tags/${version}";
|
rev = "refs/tags/${version}";
|
||||||
hash = "sha256-seL96aOJ554pD7lgzXZFDCXqY/3TAQugWMA7MtqKoAE=";
|
hash = "sha256-OrfepQuLBNa5m3Sy4NzFOArtFFvaNtNNVJ8DNN3yT6s=";
|
||||||
};
|
};
|
||||||
|
|
||||||
SETUPTOOLS_SCM_PRETEND_VERSION = version;
|
SETUPTOOLS_SCM_PRETEND_VERSION = version;
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "habluetooth";
|
pname = "habluetooth";
|
||||||
version = "0.5.1";
|
version = "0.6.1";
|
||||||
pyproject = true;
|
pyproject = true;
|
||||||
|
|
||||||
disabled = pythonOlder "3.9";
|
disabled = pythonOlder "3.9";
|
||||||
|
@ -26,7 +26,7 @@ buildPythonPackage rec {
|
||||||
owner = "Bluetooth-Devices";
|
owner = "Bluetooth-Devices";
|
||||||
repo = "habluetooth";
|
repo = "habluetooth";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-olR900l/xJug5DeXb8CR0vQBzjzegdiCLCp6AIQu7Tg=";
|
hash = "sha256-Ha+tK3uThYvDcFsNA3JIzSG6IGUsAcls7ArJJpO3ZSQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
@ -29,11 +29,11 @@
|
||||||
, stdenv
|
, stdenv
|
||||||
# Options:
|
# Options:
|
||||||
, cudaSupport ? config.cudaSupport
|
, cudaSupport ? config.cudaSupport
|
||||||
, cudaPackages ? {}
|
, cudaPackagesGoogle
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (cudaPackages) cudatoolkit cudnn;
|
inherit (cudaPackagesGoogle) cudatoolkit cudnn;
|
||||||
|
|
||||||
version = "0.4.20";
|
version = "0.4.20";
|
||||||
|
|
||||||
|
@ -210,8 +210,8 @@ buildPythonPackage {
|
||||||
maintainers = with maintainers; [ samuela ];
|
maintainers = with maintainers; [ samuela ];
|
||||||
platforms = [ "aarch64-darwin" "x86_64-linux" "x86_64-darwin" ];
|
platforms = [ "aarch64-darwin" "x86_64-linux" "x86_64-darwin" ];
|
||||||
broken =
|
broken =
|
||||||
!(cudaSupport -> (cudaPackages ? cudatoolkit) && lib.versionAtLeast cudatoolkit.version "11.1")
|
!(cudaSupport -> (cudaPackagesGoogle ? cudatoolkit) && lib.versionAtLeast cudatoolkit.version "11.1")
|
||||||
|| !(cudaSupport -> (cudaPackages ? cudnn) && lib.versionAtLeast cudnn.version "8.2")
|
|| !(cudaSupport -> (cudaPackagesGoogle ? cudnn) && lib.versionAtLeast cudnn.version "8.2")
|
||||||
|| !(cudaSupport -> stdenv.isLinux);
|
|| !(cudaSupport -> stdenv.isLinux);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,14 +44,14 @@
|
||||||
, config
|
, config
|
||||||
# CUDA flags:
|
# CUDA flags:
|
||||||
, cudaSupport ? config.cudaSupport
|
, cudaSupport ? config.cudaSupport
|
||||||
, cudaPackages ? {}
|
, cudaPackagesGoogle
|
||||||
|
|
||||||
# MKL:
|
# MKL:
|
||||||
, mklSupport ? true
|
, mklSupport ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (cudaPackages) backendStdenv cudatoolkit cudaFlags cudnn nccl;
|
inherit (cudaPackagesGoogle) backendStdenv cudatoolkit cudaFlags cudnn nccl;
|
||||||
|
|
||||||
pname = "jaxlib";
|
pname = "jaxlib";
|
||||||
version = "0.4.20";
|
version = "0.4.20";
|
||||||
|
|
|
@ -25,13 +25,13 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "labgrid";
|
pname = "labgrid";
|
||||||
version = "23.0.3";
|
version = "23.0.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "labgrid-project";
|
owner = "labgrid-project";
|
||||||
repo = "labgrid";
|
repo = "labgrid";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
sha256 = "sha256-yhlBqqCLOt6liw4iv8itG6E4QfIa7cW76QJqefUM5dw=";
|
sha256 = "sha256-EEPQSIHKAmLPudv7LLm9ol3Kukgz8edYKfDi+wvERpk=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -11,14 +11,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "opencensus-ext-azure";
|
pname = "opencensus-ext-azure";
|
||||||
version = "1.1.11";
|
version = "1.1.12";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
disabled = pythonOlder "3.4";
|
disabled = pythonOlder "3.4";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
hash = "sha256-IdTU0FGdSCOdBBQskLalH17MBDaE64DPoKcBqiM0YHM=";
|
hash = "sha256-hrseR84dIKytlq08Efjvsvp6tensSJbzBj2F+JlJBGI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -9,16 +9,16 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "pyomo";
|
pname = "pyomo";
|
||||||
version = "6.6.2";
|
version = "6.7.0";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.8";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
repo = "pyomo";
|
repo = "pyomo";
|
||||||
owner = "pyomo";
|
owner = "pyomo";
|
||||||
rev = "refs/tags/${version}";
|
rev = "refs/tags/${version}";
|
||||||
hash = "sha256-hh2sfWOUp3ac75NEuTrw3YkvS7hXpzJp39v6cfrhNiQ=";
|
hash = "sha256-HoTtvda97ghQ0SQBZFGkDAwD2WNtZpIum2m1khivEK4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
, tensorboard
|
, tensorboard
|
||||||
, config
|
, config
|
||||||
, cudaSupport ? config.cudaSupport
|
, cudaSupport ? config.cudaSupport
|
||||||
, cudaPackages ? {}
|
, cudaPackagesGoogle
|
||||||
, zlib
|
, zlib
|
||||||
, python
|
, python
|
||||||
, keras-applications
|
, keras-applications
|
||||||
|
@ -43,7 +43,7 @@ assert ! (stdenv.isDarwin && cudaSupport);
|
||||||
|
|
||||||
let
|
let
|
||||||
packages = import ./binary-hashes.nix;
|
packages = import ./binary-hashes.nix;
|
||||||
inherit (cudaPackages) cudatoolkit cudnn;
|
inherit (cudaPackagesGoogle) cudatoolkit cudnn;
|
||||||
in buildPythonPackage {
|
in buildPythonPackage {
|
||||||
pname = "tensorflow" + lib.optionalString cudaSupport "-gpu";
|
pname = "tensorflow" + lib.optionalString cudaSupport "-gpu";
|
||||||
inherit (packages) version;
|
inherit (packages) version;
|
||||||
|
@ -200,7 +200,7 @@ in buildPythonPackage {
|
||||||
];
|
];
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit cudaPackages;
|
cudaPackages = cudaPackagesGoogle;
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
# https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
|
# https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
|
||||||
, config
|
, config
|
||||||
, cudaSupport ? config.cudaSupport
|
, cudaSupport ? config.cudaSupport
|
||||||
, cudaPackages ? { }
|
, cudaPackagesGoogle
|
||||||
, cudaCapabilities ? cudaPackages.cudaFlags.cudaCapabilities
|
, cudaCapabilities ? cudaPackagesGoogle.cudaFlags.cudaCapabilities
|
||||||
, mklSupport ? false, mkl
|
, mklSupport ? false, mkl
|
||||||
, tensorboardSupport ? true
|
, tensorboardSupport ? true
|
||||||
# XLA without CUDA is broken
|
# XLA without CUDA is broken
|
||||||
|
@ -50,15 +50,15 @@ let
|
||||||
# __ZN4llvm11SmallPtrSetIPKNS_10AllocaInstELj8EED1Ev in any of the
|
# __ZN4llvm11SmallPtrSetIPKNS_10AllocaInstELj8EED1Ev in any of the
|
||||||
# translation units, so the build fails at link time
|
# translation units, so the build fails at link time
|
||||||
stdenv =
|
stdenv =
|
||||||
if cudaSupport then cudaPackages.backendStdenv
|
if cudaSupport then cudaPackagesGoogle.backendStdenv
|
||||||
else if originalStdenv.isDarwin then llvmPackages_11.stdenv
|
else if originalStdenv.isDarwin then llvmPackages_11.stdenv
|
||||||
else originalStdenv;
|
else originalStdenv;
|
||||||
inherit (cudaPackages) cudatoolkit nccl;
|
inherit (cudaPackagesGoogle) cudatoolkit nccl;
|
||||||
# use compatible cuDNN (https://www.tensorflow.org/install/source#gpu)
|
# use compatible cuDNN (https://www.tensorflow.org/install/source#gpu)
|
||||||
# cudaPackages.cudnn led to this:
|
# cudaPackages.cudnn led to this:
|
||||||
# https://github.com/tensorflow/tensorflow/issues/60398
|
# https://github.com/tensorflow/tensorflow/issues/60398
|
||||||
cudnnAttribute = "cudnn_8_6";
|
cudnnAttribute = "cudnn_8_6";
|
||||||
cudnn = cudaPackages.${cudnnAttribute};
|
cudnn = cudaPackagesGoogle.${cudnnAttribute};
|
||||||
gentoo-patches = fetchzip {
|
gentoo-patches = fetchzip {
|
||||||
url = "https://dev.gentoo.org/~perfinion/patches/tensorflow-patches-2.12.0.tar.bz2";
|
url = "https://dev.gentoo.org/~perfinion/patches/tensorflow-patches-2.12.0.tar.bz2";
|
||||||
hash = "sha256-SCRX/5/zML7LmKEPJkcM5Tebez9vv/gmE4xhT/jyqWs=";
|
hash = "sha256-SCRX/5/zML7LmKEPJkcM5Tebez9vv/gmE4xhT/jyqWs=";
|
||||||
|
@ -486,8 +486,8 @@ let
|
||||||
broken =
|
broken =
|
||||||
stdenv.isDarwin
|
stdenv.isDarwin
|
||||||
|| !(xlaSupport -> cudaSupport)
|
|| !(xlaSupport -> cudaSupport)
|
||||||
|| !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackages)
|
|| !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackagesGoogle)
|
||||||
|| !(cudaSupport -> cudaPackages ? cudatoolkit);
|
|| !(cudaSupport -> cudaPackagesGoogle ? cudatoolkit);
|
||||||
} // lib.optionalAttrs stdenv.isDarwin {
|
} // lib.optionalAttrs stdenv.isDarwin {
|
||||||
timeout = 86400; # 24 hours
|
timeout = 86400; # 24 hours
|
||||||
maxSilent = 14400; # 4h, double the default of 7200s
|
maxSilent = 14400; # 4h, double the default of 7200s
|
||||||
|
@ -590,7 +590,7 @@ in buildPythonPackage {
|
||||||
# Regression test for #77626 removed because not more `tensorflow.contrib`.
|
# Regression test for #77626 removed because not more `tensorflow.contrib`.
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit cudaPackages;
|
cudaPackages = cudaPackagesGoogle;
|
||||||
deps = bazel-build.deps;
|
deps = bazel-build.deps;
|
||||||
libtensorflow = bazel-build.out;
|
libtensorflow = bazel-build.out;
|
||||||
};
|
};
|
||||||
|
|
|
@ -337,7 +337,8 @@ in buildPythonPackage rec {
|
||||||
buildInputs = [ blas blas.provider ]
|
buildInputs = [ blas blas.provider ]
|
||||||
++ lib.optionals cudaSupport (with cudaPackages; [
|
++ lib.optionals cudaSupport (with cudaPackages; [
|
||||||
cuda_cccl.dev # <thrust/*>
|
cuda_cccl.dev # <thrust/*>
|
||||||
cuda_cudart # cuda_runtime.h and libraries
|
cuda_cudart.dev # cuda_runtime.h and libraries
|
||||||
|
cuda_cudart.lib
|
||||||
cuda_cupti.dev # For kineto
|
cuda_cupti.dev # For kineto
|
||||||
cuda_cupti.lib # For kineto
|
cuda_cupti.lib # For kineto
|
||||||
cuda_nvcc.dev # crt/host_config.h; even though we include this in nativeBuildinputs, it's needed here too
|
cuda_nvcc.dev # crt/host_config.h; even though we include this in nativeBuildinputs, it's needed here too
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "neil";
|
pname = "neil";
|
||||||
version = "0.2.62";
|
version = "0.2.63";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "babashka";
|
owner = "babashka";
|
||||||
repo = "neil";
|
repo = "neil";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-zSZ62RMHZLuhIPdde0cfWae+uFpWVjMfHuLAJdRedJA=";
|
sha256 = "sha256-mcygDOx5yzOW80bv54cPOKl1t443DXFRq4Hb4KYD5e8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
|
@ -7,14 +7,14 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "symfony-cli";
|
pname = "symfony-cli";
|
||||||
version = "5.7.3";
|
version = "5.7.4";
|
||||||
vendorHash = "sha256-xC5EHP4Zb9lgvbxVkoVBxdQ4+f34zqRf4XapntZMTTc=";
|
vendorHash = "sha256-2+Q93tm3ooOd/m6aUWAwFGh5CzARPNISNx0Tcrjc7NY=";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "symfony-cli";
|
owner = "symfony-cli";
|
||||||
repo = "symfony-cli";
|
repo = "symfony-cli";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-mxyGdyR1yZY+YOyf9ngk6P2oBmUL+IbwLWaCvZziSIM=";
|
hash = "sha256-d4cI/Nyn2XPvdZFLY7GHIAcmIUnzgyehGxZPylUD3EU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
ldflags = [
|
ldflags = [
|
||||||
|
|
|
@ -122,7 +122,7 @@ let
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "fwupd";
|
pname = "fwupd";
|
||||||
version = "1.9.9";
|
version = "1.9.10";
|
||||||
|
|
||||||
# libfwupd goes to lib
|
# libfwupd goes to lib
|
||||||
# daemon, plug-ins and libfwupdplugin go to out
|
# daemon, plug-ins and libfwupdplugin go to out
|
||||||
|
@ -133,7 +133,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
owner = "fwupd";
|
owner = "fwupd";
|
||||||
repo = "fwupd";
|
repo = "fwupd";
|
||||||
rev = finalAttrs.version;
|
rev = finalAttrs.version;
|
||||||
hash = "sha256-UUrG3CMCAC5hyy2U5I4zqvJoSP/+zuiq1P+2Pdb3QD0=";
|
hash = "sha256-qB7SGkjPahZmLax8HrSdLvORAXTBcuN5NohT0KUjCnM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|
|
@ -5,16 +5,16 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "matrix-sliding-sync";
|
pname = "matrix-sliding-sync";
|
||||||
version = "0.99.12";
|
version = "0.99.13";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "matrix-org";
|
owner = "matrix-org";
|
||||||
repo = "sliding-sync";
|
repo = "sliding-sync";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-7M+Ti1SfurRngXg2oCdLveG6QyjM2BjKnoovJxz7ZOY=";
|
hash = "sha256-jrsMPFUSdtUs6qG902+oRBGUvFGmhR8/NHCUwB9oVnE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-li5kEF7U7KyyMLMhVBqvnLuLXI6QrJl1KeusKrQXo8w=";
|
vendorHash = "sha256-THjvc0TepIBFOTte7t63Dmadf3HMuZ9m0YzQMI5e5Pw=";
|
||||||
|
|
||||||
subPackages = [ "cmd/syncv3" ];
|
subPackages = [ "cmd/syncv3" ];
|
||||||
|
|
||||||
|
|
|
@ -279,6 +279,7 @@ let
|
||||||
popd &>/dev/null
|
popd &>/dev/null
|
||||||
|
|
||||||
redis-server >/dev/null &
|
redis-server >/dev/null &
|
||||||
|
REDIS_PID=$!
|
||||||
|
|
||||||
initdb -A trust $NIX_BUILD_TOP/postgres >/dev/null
|
initdb -A trust $NIX_BUILD_TOP/postgres >/dev/null
|
||||||
postgres -D $NIX_BUILD_TOP/postgres -k $NIX_BUILD_TOP >/dev/null &
|
postgres -D $NIX_BUILD_TOP/postgres -k $NIX_BUILD_TOP >/dev/null &
|
||||||
|
@ -304,6 +305,8 @@ let
|
||||||
|
|
||||||
bundle exec rake db:migrate >/dev/null
|
bundle exec rake db:migrate >/dev/null
|
||||||
chmod -R +w tmp
|
chmod -R +w tmp
|
||||||
|
|
||||||
|
kill $REDIS_PID
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
|
|
|
@ -135,7 +135,7 @@ let
|
||||||
|
|
||||||
fish = stdenv.mkDerivation rec {
|
fish = stdenv.mkDerivation rec {
|
||||||
pname = "fish";
|
pname = "fish";
|
||||||
version = "3.6.1";
|
version = "3.6.4";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
# There are differences between the release tarball and the tarball GitHub
|
# There are differences between the release tarball and the tarball GitHub
|
||||||
|
@ -145,7 +145,7 @@ let
|
||||||
# --version`), as well as the local documentation for all builtins (and
|
# --version`), as well as the local documentation for all builtins (and
|
||||||
# maybe other things).
|
# maybe other things).
|
||||||
url = "https://github.com/fish-shell/fish-shell/releases/download/${version}/${pname}-${version}.tar.xz";
|
url = "https://github.com/fish-shell/fish-shell/releases/download/${version}/${pname}-${version}.tar.xz";
|
||||||
hash = "sha256-VUArtHymc52KuiXkF4CQW1zhvOCl4N0X3KkItbwLSbI=";
|
hash = "sha256-Dz9hDlgN4JL76ILIqnZiPs+Ruxb98FQyQebpDV1Lw5M=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Fix FHS paths in tests
|
# Fix FHS paths in tests
|
||||||
|
@ -156,6 +156,8 @@ let
|
||||||
sed -i 's|L"/bin/echo"|L"${coreutils}/bin/echo"|' src/fish_tests.cpp
|
sed -i 's|L"/bin/echo"|L"${coreutils}/bin/echo"|' src/fish_tests.cpp
|
||||||
sed -i 's|L"/bin/c"|L"${coreutils}/bin/c"|' src/fish_tests.cpp
|
sed -i 's|L"/bin/c"|L"${coreutils}/bin/c"|' src/fish_tests.cpp
|
||||||
sed -i 's|L"/bin/ca"|L"${coreutils}/bin/ca"|' src/fish_tests.cpp
|
sed -i 's|L"/bin/ca"|L"${coreutils}/bin/ca"|' src/fish_tests.cpp
|
||||||
|
# disable flakey test
|
||||||
|
sed -i '/{TEST_GROUP("history_races"), history_tests_t::test_history_races},/d' src/fish_tests.cpp
|
||||||
|
|
||||||
# tests/checks/cd.fish
|
# tests/checks/cd.fish
|
||||||
sed -i 's|/bin/pwd|${coreutils}/bin/pwd|' tests/checks/cd.fish
|
sed -i 's|/bin/pwd|${coreutils}/bin/pwd|' tests/checks/cd.fish
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "scaleway-cli";
|
pname = "scaleway-cli";
|
||||||
version = "2.24.0";
|
version = "2.25.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "scaleway";
|
owner = "scaleway";
|
||||||
repo = "scaleway-cli";
|
repo = "scaleway-cli";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-Q65X2lsR5jyWXxxmkvUA0yG4miD+KUSBGRFXvH4KBGY=";
|
sha256 = "sha256-wx/247ZNbdNdRiGLTfCig1JAjmXZX0aCHbOgelzMcyw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-mZ2XFZS5tqtRUhdo6AOCY4xSaYgxUEy1OFbyzsbCEnU=";
|
vendorHash = "sha256-FftJsXM9sexRqBKrIeTdWh5Z0eYIK3acDNtptqqILD8=";
|
||||||
|
|
||||||
ldflags = [
|
ldflags = [
|
||||||
"-w"
|
"-w"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "stuffbin";
|
pname = "stuffbin";
|
||||||
version = "1.1.0";
|
version = "1.2.0";
|
||||||
|
|
||||||
vendorHash = null;
|
vendorHash = null;
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ buildGoModule rec {
|
||||||
owner = "knadh";
|
owner = "knadh";
|
||||||
repo = "stuffbin";
|
repo = "stuffbin";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-M72xNh7bKUMLzA+M8bJB++kJ5KCrkboQm1v8BasP3Yo=";
|
sha256 = "sha256-roXjE0t4iwrL2y/G2oePYL2AbTwd9uzQPtgdY14WeZk=";
|
||||||
};
|
};
|
||||||
|
|
||||||
ldflags = [ "-s" "-w" "-X main.version=${version}" ];
|
ldflags = [ "-s" "-w" "-X main.version=${version}" ];
|
||||||
|
|
|
@ -12,14 +12,14 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ofono";
|
pname = "ofono";
|
||||||
version = "2.1";
|
version = "2.2";
|
||||||
|
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://git.kernel.org/pub/scm/network/ofono/ofono.git";
|
url = "https://git.kernel.org/pub/scm/network/ofono/ofono.git";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-GxQfh/ps5oM9G6B1EVgnjo8LqHD1hMqdnju1PCQq3kA=";
|
sha256 = "sha256-mnh0qzmgPDfimN/M33HntYj90Xcgc/uF8tKbzeQV1Yg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "fscan";
|
pname = "fscan";
|
||||||
version = "1.8.3";
|
version = "1.8.3-build3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "shadow1ng";
|
owner = "shadow1ng";
|
||||||
repo = "fscan";
|
repo = "fscan";
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-uoM/nMtgIqyzpOoSQKD5k4LXAXoA8G5N4In8tZlngqs=";
|
hash = "sha256-GtOCd8JaR6tx8hoB+P9QXrEnN7Wvmv7jddhc2/8hjvQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-hvb2IfypwYauF3ubE36u0bTU+l/FWP/CZt6dFd9zc6s=";
|
vendorHash = "sha256-hvb2IfypwYauF3ubE36u0bTU+l/FWP/CZt6dFd9zc6s=";
|
||||||
|
@ -18,7 +18,6 @@ buildGoModule rec {
|
||||||
homepage = "https://github.com/shadow1ng/fscan";
|
homepage = "https://github.com/shadow1ng/fscan";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ Misaka13514 ];
|
maintainers = with maintainers; [ Misaka13514 ];
|
||||||
platforms = with platforms; unix ++ windows;
|
|
||||||
mainProgram = "fscan";
|
mainProgram = "fscan";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "vault-bin";
|
pname = "vault-bin";
|
||||||
version = "1.15.2";
|
version = "1.15.3";
|
||||||
|
|
||||||
src =
|
src =
|
||||||
let
|
let
|
||||||
|
@ -16,11 +16,11 @@ stdenv.mkDerivation rec {
|
||||||
aarch64-darwin = "darwin_arm64";
|
aarch64-darwin = "darwin_arm64";
|
||||||
};
|
};
|
||||||
sha256 = selectSystem {
|
sha256 = selectSystem {
|
||||||
x86_64-linux = "sha256-aawDrQu8wEZqJ/uyCJjtWcgy8Ut34B5P+odqddE5P3M=";
|
x86_64-linux = "sha256-rRXpRxuslOvvNgK6W0BG/LWs2sAGGCuSxcbVbsmrtN0=";
|
||||||
aarch64-linux = "sha256-thLVw//yIgPCAV9CdrRlINLg+cO5aB279I2aboZMF6w=";
|
aarch64-linux = "sha256-vD/S+aZGa+JFRBV9WML9WbhrFpB8FynM62ZJ0zkWtDU=";
|
||||||
i686-linux = "sha256-bUhtnQB5YZdDuB4uondln0D3itoTr+1FaqjgTiT76WA=";
|
i686-linux = "sha256-Y9KpL0kZxlgfkBSyXJVSND2hSJ1y+FuXKPK0/P2YX2w=";
|
||||||
x86_64-darwin = "sha256-+wZrWwbpibtCla1ydhDnLJsHrVymLzEXVE1KftZ+pOs=";
|
x86_64-darwin = "sha256-i85GQSJK7dPoLP7XBrz7CiISCG8KbGylL++ecy/CXRY=";
|
||||||
aarch64-darwin = "sha256-2FGiCzIAEyXTqRaKEDZK5d/PWl4EmvJl9NieiOdgOeY=";
|
aarch64-darwin = "sha256-eZAuUNbigJ/kye8p3yu+Qf+p47IkxKJntR2sGFpM+j8=";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
fetchzip {
|
fetchzip {
|
||||||
|
@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
|
||||||
description = "A tool for managing secrets, this binary includes the UI";
|
description = "A tool for managing secrets, this binary includes the UI";
|
||||||
homepage = "https://www.vaultproject.io";
|
homepage = "https://www.vaultproject.io";
|
||||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||||
license = licenses.mpl20;
|
license = licenses.bsl11;
|
||||||
maintainers = with maintainers; teams.serokell.members ++ [ offline psyanticy Chili-Man techknowlogick mkaito ];
|
maintainers = with maintainers; teams.serokell.members ++ [ offline psyanticy Chili-Man techknowlogick mkaito ];
|
||||||
mainProgram = "vault";
|
mainProgram = "vault";
|
||||||
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
|
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
|
||||||
|
|
|
@ -652,6 +652,7 @@ mapAliases ({
|
||||||
noto-fonts-cjk = noto-fonts-cjk-sans; # Added 2021-12-16
|
noto-fonts-cjk = noto-fonts-cjk-sans; # Added 2021-12-16
|
||||||
noto-fonts-emoji = noto-fonts-color-emoji; # Added 2023-09-09
|
noto-fonts-emoji = noto-fonts-color-emoji; # Added 2023-09-09
|
||||||
noto-fonts-extra = noto-fonts; # Added 2023-04-08
|
noto-fonts-extra = noto-fonts; # Added 2023-04-08
|
||||||
|
nvidia-thrust = throw "nvidia-thrust has been removed because the project was deprecated; use cudaPackages.cuda_cccl";
|
||||||
|
|
||||||
### O ###
|
### O ###
|
||||||
|
|
||||||
|
|
|
@ -7102,7 +7102,7 @@ with pkgs;
|
||||||
ibus-theme-tools = callPackage ../tools/misc/ibus-theme-tools { };
|
ibus-theme-tools = callPackage ../tools/misc/ibus-theme-tools { };
|
||||||
|
|
||||||
interception-tools = callPackage ../tools/inputmethods/interception-tools { };
|
interception-tools = callPackage ../tools/inputmethods/interception-tools { };
|
||||||
interception-tools-plugins = {
|
interception-tools-plugins = recurseIntoAttrs {
|
||||||
caps2esc = callPackage ../tools/inputmethods/interception-tools/caps2esc.nix { };
|
caps2esc = callPackage ../tools/inputmethods/interception-tools/caps2esc.nix { };
|
||||||
dual-function-keys = callPackage ../tools/inputmethods/interception-tools/dual-function-keys.nix { };
|
dual-function-keys = callPackage ../tools/inputmethods/interception-tools/dual-function-keys.nix { };
|
||||||
};
|
};
|
||||||
|
@ -7322,6 +7322,10 @@ with pkgs;
|
||||||
cudaPackages_12_2 = callPackage ./cuda-packages.nix { cudaVersion = "12.2"; };
|
cudaPackages_12_2 = callPackage ./cuda-packages.nix { cudaVersion = "12.2"; };
|
||||||
cudaPackages_12 = cudaPackages_12_0;
|
cudaPackages_12 = cudaPackages_12_0;
|
||||||
|
|
||||||
|
# Use the older cudaPackages for tensorflow and jax, as determined by cudnn
|
||||||
|
# compatibility: https://www.tensorflow.org/install/source#gpu
|
||||||
|
cudaPackagesGoogle = cudaPackages_11;
|
||||||
|
|
||||||
# TODO: try upgrading once there is a cuDNN release supporting CUDA 12. No
|
# TODO: try upgrading once there is a cuDNN release supporting CUDA 12. No
|
||||||
# such cuDNN release as of 2023-01-10.
|
# such cuDNN release as of 2023-01-10.
|
||||||
cudaPackages = recurseIntoAttrs cudaPackages_11;
|
cudaPackages = recurseIntoAttrs cudaPackages_11;
|
||||||
|
@ -11278,16 +11282,6 @@ with pkgs;
|
||||||
|
|
||||||
nvfetcher = haskell.lib.compose.justStaticExecutables haskellPackages.nvfetcher;
|
nvfetcher = haskell.lib.compose.justStaticExecutables haskellPackages.nvfetcher;
|
||||||
|
|
||||||
nvidia-thrust = callPackage ../development/libraries/nvidia-thrust { };
|
|
||||||
|
|
||||||
nvidia-thrust-intel = callPackage ../development/libraries/nvidia-thrust {
|
|
||||||
hostSystem = "TBB";
|
|
||||||
deviceSystem = if config.cudaSupport then "CUDA" else "TBB";
|
|
||||||
};
|
|
||||||
|
|
||||||
nvidia-thrust-cuda = callPackage ../development/libraries/nvidia-thrust {
|
|
||||||
deviceSystem = "CUDA";
|
|
||||||
};
|
|
||||||
|
|
||||||
miller = callPackage ../tools/text/miller { };
|
miller = callPackage ../tools/text/miller { };
|
||||||
|
|
||||||
|
@ -20766,6 +20760,9 @@ with pkgs;
|
||||||
# catboost requires clang 12+ for build
|
# catboost requires clang 12+ for build
|
||||||
# after bumping the default version of llvm, check for compatibility with the cuda backend and pin it.
|
# after bumping the default version of llvm, check for compatibility with the cuda backend and pin it.
|
||||||
inherit (llvmPackages_12) stdenv;
|
inherit (llvmPackages_12) stdenv;
|
||||||
|
|
||||||
|
# https://github.com/catboost/catboost/issues/2540
|
||||||
|
cudaPackages = cudaPackages_11;
|
||||||
};
|
};
|
||||||
|
|
||||||
ndn-cxx = callPackage ../development/libraries/ndn-cxx { };
|
ndn-cxx = callPackage ../development/libraries/ndn-cxx { };
|
||||||
|
@ -39432,7 +39429,6 @@ with pkgs;
|
||||||
singlePrec = true;
|
singlePrec = true;
|
||||||
enableMpi = true;
|
enableMpi = true;
|
||||||
enableCuda = true;
|
enableCuda = true;
|
||||||
cudatoolkit = cudatoolkit_11;
|
|
||||||
fftw = fftwSinglePrec;
|
fftw = fftwSinglePrec;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -39974,7 +39970,6 @@ with pkgs;
|
||||||
|
|
||||||
faissWithCuda = faiss.override {
|
faissWithCuda = faiss.override {
|
||||||
cudaSupport = true;
|
cudaSupport = true;
|
||||||
nvidia-thrust = nvidia-thrust-cuda;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fityk = callPackage ../applications/science/misc/fityk { };
|
fityk = callPackage ../applications/science/misc/fityk { };
|
||||||
|
|
|
@ -24,6 +24,7 @@ let
|
||||||
|
|
||||||
buildCuTensorPackage = final.callPackage ../development/libraries/science/math/cutensor/generic.nix;
|
buildCuTensorPackage = final.callPackage ../development/libraries/science/math/cutensor/generic.nix;
|
||||||
|
|
||||||
|
# FIXME: Include non-x86_64 platforms
|
||||||
cuTensorVersions = {
|
cuTensorVersions = {
|
||||||
"1.2.2.5" = {
|
"1.2.2.5" = {
|
||||||
hash = "sha256-lU7iK4DWuC/U3s1Ct/rq2Gr3w4F2U7RYYgpmF05bibY=";
|
hash = "sha256-lU7iK4DWuC/U3s1Ct/rq2Gr3w4F2U7RYYgpmF05bibY=";
|
||||||
|
@ -31,12 +32,24 @@ let
|
||||||
"1.5.0.3" = {
|
"1.5.0.3" = {
|
||||||
hash = "sha256-T96+lPC6OTOkIs/z3QWg73oYVSyidN0SVkBWmT9VRx0=";
|
hash = "sha256-T96+lPC6OTOkIs/z3QWg73oYVSyidN0SVkBWmT9VRx0=";
|
||||||
};
|
};
|
||||||
|
"2.0.0.7" = {
|
||||||
|
hash = "sha256-32M4rtGOW2rgxJUhBT0WBtKkHhh9f17M+RgK9rvE72g=";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit (final) cudaMajorMinorVersion cudaMajorVersion;
|
inherit (final) cudaMajorMinorVersion cudaMajorVersion;
|
||||||
|
|
||||||
|
cudaToCutensor = {
|
||||||
|
"10" = "1.2.25";
|
||||||
|
"11" = "1.5.0.3";
|
||||||
|
"12" = "2.0.0.7";
|
||||||
|
};
|
||||||
|
|
||||||
|
versionNewer = lib.flip lib.versionOlder;
|
||||||
|
latestVersion = (builtins.head (lib.sort versionNewer (builtins.attrNames cuTensorVersions)));
|
||||||
|
|
||||||
cutensor = buildCuTensorPackage rec {
|
cutensor = buildCuTensorPackage rec {
|
||||||
version = if cudaMajorMinorVersion == "10.1" then "1.2.2.5" else "1.5.0.3";
|
version = cudaToCutensor.${cudaMajorVersion} or latestVersion;
|
||||||
inherit (cuTensorVersions.${version}) hash;
|
inherit (cuTensorVersions.${version}) hash;
|
||||||
# This can go into generic.nix
|
# This can go into generic.nix
|
||||||
libPath = "lib/${if cudaMajorVersion == "10" then cudaMajorMinorVersion else cudaMajorVersion}";
|
libPath = "lib/${if cudaMajorVersion == "10" then cudaMajorMinorVersion else cudaMajorVersion}";
|
||||||
|
|
|
@ -312,8 +312,6 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||||
|
|
||||||
phalcon = callPackage ../development/php-packages/phalcon { };
|
phalcon = callPackage ../development/php-packages/phalcon { };
|
||||||
|
|
||||||
php-spx = callPackage ../development/php-packages/php-spx { };
|
|
||||||
|
|
||||||
pinba = callPackage ../development/php-packages/pinba { };
|
pinba = callPackage ../development/php-packages/pinba { };
|
||||||
|
|
||||||
protobuf = callPackage ../development/php-packages/protobuf { };
|
protobuf = callPackage ../development/php-packages/protobuf { };
|
||||||
|
@ -332,6 +330,8 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||||
inherit (pkgs) darwin;
|
inherit (pkgs) darwin;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
spx = callPackage ../development/php-packages/spx { };
|
||||||
|
|
||||||
sqlsrv = callPackage ../development/php-packages/sqlsrv { };
|
sqlsrv = callPackage ../development/php-packages/sqlsrv { };
|
||||||
|
|
||||||
ssh2 = callPackage ../development/php-packages/ssh2 { };
|
ssh2 = callPackage ../development/php-packages/ssh2 { };
|
||||||
|
@ -345,6 +345,8 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||||
xdebug = callPackage ../development/php-packages/xdebug { };
|
xdebug = callPackage ../development/php-packages/xdebug { };
|
||||||
|
|
||||||
yaml = callPackage ../development/php-packages/yaml { };
|
yaml = callPackage ../development/php-packages/yaml { };
|
||||||
|
} // lib.optionalAttrs config.allowAliases {
|
||||||
|
php-spx = throw "php-spx is deprecated, use spx instead";
|
||||||
} // (
|
} // (
|
||||||
# Core extensions
|
# Core extensions
|
||||||
let
|
let
|
||||||
|
|
|
@ -2467,7 +2467,8 @@ self: super: with self; {
|
||||||
|
|
||||||
cufflinks = callPackage ../development/python-modules/cufflinks { };
|
cufflinks = callPackage ../development/python-modules/cufflinks { };
|
||||||
|
|
||||||
cupy = callPackage ../development/python-modules/cupy { };
|
# cupy 12.2.0 possibly incompatible with cutensor 2.0 that comes with cudaPackages_12
|
||||||
|
cupy = callPackage ../development/python-modules/cupy { cudaPackages = pkgs.cudaPackages_11; };
|
||||||
|
|
||||||
curio = callPackage ../development/python-modules/curio { };
|
curio = callPackage ../development/python-modules/curio { };
|
||||||
|
|
||||||
|
@ -13942,7 +13943,6 @@ self: super: with self; {
|
||||||
callPackage ../development/python-modules/tensorflow {
|
callPackage ../development/python-modules/tensorflow {
|
||||||
inherit (pkgs.darwin) cctools;
|
inherit (pkgs.darwin) cctools;
|
||||||
inherit (pkgs.config) cudaSupport;
|
inherit (pkgs.config) cudaSupport;
|
||||||
inherit (self.tensorflow-bin) cudaPackages;
|
|
||||||
inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
|
inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
|
||||||
flatbuffers-core = pkgs.flatbuffers;
|
flatbuffers-core = pkgs.flatbuffers;
|
||||||
flatbuffers-python = self.flatbuffers;
|
flatbuffers-python = self.flatbuffers;
|
||||||
|
@ -13975,7 +13975,7 @@ self: super: with self; {
|
||||||
|
|
||||||
tensorly = callPackage ../development/python-modules/tensorly { };
|
tensorly = callPackage ../development/python-modules/tensorly { };
|
||||||
|
|
||||||
tensorrt = callPackage ../development/python-modules/tensorrt { };
|
tensorrt = callPackage ../development/python-modules/tensorrt { cudaPackages = pkgs.cudaPackages_11; };
|
||||||
|
|
||||||
tensorstore = callPackage ../development/python-modules/tensorstore { };
|
tensorstore = callPackage ../development/python-modules/tensorstore { };
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue