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;
|
||||
name = "VinyMeuh";
|
||||
};
|
||||
viperML = {
|
||||
email = "ayatsfer@gmail.com";
|
||||
github = "viperML";
|
||||
githubId = 11395853;
|
||||
name = "Fernando Ayats";
|
||||
};
|
||||
viraptor = {
|
||||
email = "nix@viraptor.info";
|
||||
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. -->
|
||||
|
||||
- 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
|
||||
[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}
|
||||
|
||||
# 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:=
|
||||
af-south-1
|
||||
ap-east-1
|
||||
ap-northeast-1
|
||||
ap-northeast-2
|
||||
ap-northeast-3
|
||||
ap-south-1
|
||||
ap-southeast-1
|
||||
ap-southeast-2
|
||||
ap-southeast-3
|
||||
ca-central-1
|
||||
eu-central-1
|
||||
eu-north-1
|
||||
eu-south-1
|
||||
eu-west-1
|
||||
eu-west-2
|
||||
eu-west-3
|
||||
me-south-1
|
||||
sa-east-1
|
||||
us-east-1
|
||||
us-east-2
|
||||
us-west-1
|
||||
us-west-2
|
||||
}
|
||||
af-south-1
|
||||
ap-east-1
|
||||
ap-northeast-1
|
||||
ap-northeast-2
|
||||
ap-northeast-3
|
||||
ap-south-1
|
||||
ap-south-2
|
||||
ap-southeast-1
|
||||
ap-southeast-2
|
||||
ap-southeast-3
|
||||
ap-southeast-4
|
||||
ca-central-1
|
||||
eu-central-1
|
||||
eu-central-2
|
||||
eu-north-1
|
||||
eu-south-1
|
||||
eu-south-2
|
||||
eu-west-1
|
||||
eu-west-2
|
||||
eu-west-3
|
||||
il-central-1
|
||||
me-central-1
|
||||
me-south-1
|
||||
sa-east-1
|
||||
us-east-1
|
||||
us-east-2
|
||||
us-west-1
|
||||
us-west-2
|
||||
}
|
||||
|
||||
regions=($regions)
|
||||
|
||||
|
|
|
@ -1334,6 +1334,7 @@
|
|||
./services/web-apps/vikunja.nix
|
||||
./services/web-apps/whitebophir.nix
|
||||
./services/web-apps/wiki-js.nix
|
||||
./services/web-apps/windmill.nix
|
||||
./services/web-apps/wordpress.nix
|
||||
./services/web-apps/writefreely.nix
|
||||
./services/web-apps/youtrack.nix
|
||||
|
|
|
@ -6,9 +6,83 @@ with lib;
|
|||
|
||||
let
|
||||
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, ...}:
|
||||
{
|
||||
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
|
||||
|
||||
|
||||
|
@ -103,19 +384,14 @@ in
|
|||
# powerManagement.powerDownCommands
|
||||
|
||||
power.ups = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = with types; bool;
|
||||
description = lib.mdDoc ''
|
||||
Enables support for Power Devices, such as Uninterruptible Power
|
||||
Supplies, Power Distribution Units and Solar Controllers.
|
||||
'';
|
||||
};
|
||||
enable = mkEnableOption (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 {
|
||||
default = "standalone";
|
||||
type = types.str;
|
||||
type = types.enum [ "none" "standalone" "netserver" "netclient" ];
|
||||
description = lib.mdDoc ''
|
||||
The MODE determines which part of the NUT is to be started, and
|
||||
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 {
|
||||
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 {
|
||||
default = {};
|
||||
# see nut/etc/ups.conf.sample
|
||||
|
@ -172,46 +471,95 @@ in
|
|||
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 {
|
||||
|
||||
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 ];
|
||||
|
||||
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)";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig.Type = "forking";
|
||||
script = "${pkgs.nut}/sbin/upsmon";
|
||||
environment.NUT_CONFPATH = "/etc/nut/";
|
||||
environment.NUT_STATEPATH = "/var/lib/nut/";
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
ExecStartPre = "${createUpsmonConf}";
|
||||
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)";
|
||||
after = [ "network.target" "upsmon.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig.Type = "forking";
|
||||
# TODO: replace 'root' by another username.
|
||||
script = "${pkgs.nut}/sbin/upsd -u root";
|
||||
environment.NUT_CONFPATH = "/etc/nut/";
|
||||
environment.NUT_STATEPATH = "/var/lib/nut/";
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
ExecStartPre = "${createUpsdUsers}";
|
||||
# TODO: replace 'root' by another username.
|
||||
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 = {
|
||||
enable = cfg.upsd.enable;
|
||||
description = "Uninterruptible Power Supplies (Register all UPS)";
|
||||
after = [ "upsd.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
# TODO: replace 'root' by another username.
|
||||
script = "${pkgs.nut}/bin/upsdrvctl -u root start";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
# TODO: replace 'root' by another username.
|
||||
ExecStart = "${pkgs.nut}/bin/upsdrvctl -u root start";
|
||||
};
|
||||
environment.NUT_CONFPATH = "/etc/nut/";
|
||||
environment.NUT_STATEPATH = "/var/lib/nut/";
|
||||
environment.NUT_CONFPATH = "/etc/nut";
|
||||
environment.NUT_STATEPATH = "/var/lib/nut";
|
||||
};
|
||||
|
||||
environment.etc = {
|
||||
|
@ -223,24 +571,23 @@ in
|
|||
''
|
||||
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;
|
||||
# These file are containing private information and thus should not
|
||||
# be stored inside the Nix store.
|
||||
/*
|
||||
"nut/upsd.conf".source = "";
|
||||
"nut/upsd.users".source = "";
|
||||
"nut/upsmon.conf".source = "";
|
||||
*/
|
||||
"nut/upsd.users".source = "/run/nut/upsd.users";
|
||||
"nut/upsmon.conf".source = "/run/nut/upsmon.conf";
|
||||
};
|
||||
|
||||
power.ups.schedulerRules = mkDefault "${pkgs.nut}/etc/upssched.conf.sample";
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /var/state/ups -"
|
||||
"d /var/lib/nut 700"
|
||||
];
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ with lib;
|
|||
let
|
||||
clamavUser = "clamav";
|
||||
stateDir = "/var/lib/clamav";
|
||||
runDir = "/run/clamav";
|
||||
clamavGroup = clamavUser;
|
||||
cfg = config.services.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 = {
|
||||
DatabaseDirectory = stateDir;
|
||||
LocalSocket = "${runDir}/clamd.ctl";
|
||||
PidFile = "${runDir}/clamd.pid";
|
||||
TemporaryDirectory = "/tmp";
|
||||
LocalSocket = "/run/clamav/clamd.ctl";
|
||||
PidFile = "/run/clamav/clamd.pid";
|
||||
User = "clamav";
|
||||
Foreground = true;
|
||||
};
|
||||
|
@ -182,7 +203,6 @@ in
|
|||
ExecStart = "${pkg}/bin/freshclam";
|
||||
SuccessExitStatus = "1"; # if databases are up to date
|
||||
StateDirectory = "clamav";
|
||||
RuntimeDirectory = "clamav";
|
||||
User = clamavUser;
|
||||
Group = clamavGroup;
|
||||
PrivateTmp = "yes";
|
||||
|
@ -204,7 +224,6 @@ in
|
|||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
StateDirectory = "clamav";
|
||||
RuntimeDirectory = "clamav";
|
||||
User = clamavUser;
|
||||
Group = clamavGroup;
|
||||
PrivateTmp = "yes";
|
||||
|
@ -230,12 +249,31 @@ in
|
|||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.fangfrisch}/bin/fangfrisch --conf ${fangfrischConfigFile} refresh";
|
||||
StateDirectory = "clamav";
|
||||
RuntimeDirectory = "clamav";
|
||||
User = clamavUser;
|
||||
Group = clamavGroup;
|
||||
PrivateTmp = "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 ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[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 =
|
||||
[ cmake makeWrapper python310Packages.wrapPython llvmPackages.llvm.dev
|
||||
]
|
||||
++ lib.optionals cudaSupport [ addOpenGLRunpath ]
|
||||
++ lib.optionals cudaSupport [
|
||||
addOpenGLRunpath
|
||||
cudaPackages.cuda_nvcc
|
||||
]
|
||||
++ lib.optionals waylandSupport [ pkg-config ];
|
||||
buildInputs =
|
||||
[ boost ffmpeg gettext glew ilmbase
|
||||
|
@ -87,7 +90,7 @@ stdenv.mkDerivation (finalAttrs: rec {
|
|||
llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL
|
||||
])
|
||||
++ lib.optional jackaudioSupport libjack2
|
||||
++ lib.optional cudaSupport cudaPackages.cudatoolkit
|
||||
++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]
|
||||
++ lib.optional colladaSupport opencollada
|
||||
++ lib.optional spaceNavSupport libspnav;
|
||||
pythonPath = with python310Packages; [ numpy requests zstandard ];
|
||||
|
|
|
@ -24,13 +24,13 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mediaelch";
|
||||
version = "2.10.4";
|
||||
version = "2.10.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Komet";
|
||||
repo = "MediaElch";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-gNpnmyUKDXf40+1JmJzNyEPIv/DO8b3CdJAphheEvTU=";
|
||||
hash = "sha256-qc7HaCMAmALY9MoIKmaCWF0cnwBBFDAXwqiBzwzu2bU=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "cni-plugins";
|
||||
version = "1.3.0";
|
||||
version = "1.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "containernetworking";
|
||||
repo = "plugins";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-cbmG9wK3yd79jCiNAKcSSx0COyh6CxR1bgIiCO3i++g=";
|
||||
hash = "sha256-goXpNpb5tVOHeskRLw3CivYett3RxYBREAI+S74CMFQ=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
|
|
@ -21,14 +21,14 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "warp";
|
||||
version = "0.6.1";
|
||||
version = "0.6.2";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
owner = "World";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Uc9N2kRTpi9cCFskngkiclLpEcp4dtI2mhldG4s/GFY=";
|
||||
hash = "sha256-pntHIY0cScDKhWR6kXp6YrEbBQiQjUId3MrJzy5l+K8=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
|
|||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
name = "${pname}-${version}";
|
||||
hash = "sha256-GN9TjsGBU3D/mc6/XtRAk5pliKRPTQ9f3fMdS6weCaE=";
|
||||
hash = "sha256-Go/a7aVHF1Yt3yIccKJIVeFy5rckXhSKfd13hdhlLUQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
meta = {
|
||||
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;
|
||||
maintainers = with lib.maintainers; [ dotlambda foo-dogsquared ];
|
||||
platforms = lib.platforms.all;
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "last";
|
||||
version = "1499";
|
||||
version = "1518";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "mcfrith";
|
||||
repo = "last";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-uofXtGGDloM1FxW0PYKKwfDOPlAJiapGVKwd1clFzp8=";
|
||||
hash = "sha256-a6i5BfJhVHkXTLd7SVFxISEB+Kwl7BhjUUkF8ItMOak=";
|
||||
};
|
||||
|
||||
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
|
||||
, singlePrec ? true
|
||||
, config
|
||||
|
@ -9,6 +19,8 @@
|
|||
}:
|
||||
|
||||
let
|
||||
inherit (cudaPackages.cudaFlags) cudaCapabilities dropDot;
|
||||
|
||||
# Select reasonable defaults for all major platforms
|
||||
# The possible values are defined in CMakeLists.txt:
|
||||
# AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256
|
||||
|
@ -52,7 +64,7 @@ in stdenv.mkDerivation rec {
|
|||
nativeBuildInputs =
|
||||
[ cmake ]
|
||||
++ lib.optional enablePlumed plumed
|
||||
;
|
||||
++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
|
||||
|
||||
buildInputs = [
|
||||
fftw
|
||||
|
@ -61,13 +73,17 @@ in stdenv.mkDerivation rec {
|
|||
blas
|
||||
lapack
|
||||
] ++ 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;
|
||||
propagatedUserEnvPkgs = lib.optional enableMpi mpi;
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "GMX_HWLOC" true)
|
||||
"-DGMX_SIMD:STRING=${SIMD cpuAcceleration}"
|
||||
"-DGMX_OPENMP:BOOL=TRUE"
|
||||
"-DBUILD_SHARED_LIBS=ON"
|
||||
|
@ -87,7 +103,13 @@ in stdenv.mkDerivation rec {
|
|||
else [
|
||||
"-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 = ''
|
||||
moveToOutput share/cmake $dev
|
||||
|
|
|
@ -5,16 +5,14 @@ npmInstallHook() {
|
|||
|
||||
runHook preInstall
|
||||
|
||||
# `npm pack` writes to cache
|
||||
npm config delete cache
|
||||
|
||||
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
|
||||
local dest="$packageOut/$(dirname "$file")"
|
||||
mkdir -p "$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
|
||||
# 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| {
|
||||
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);
|
||||
|
||||
cache
|
||||
|
|
|
@ -214,29 +214,35 @@ fn to_new_packages(
|
|||
}
|
||||
|
||||
if let UrlOrString::Url(v) = &package.version {
|
||||
for (scheme, host) in [
|
||||
("github", "github.com"),
|
||||
("bitbucket", "bitbucket.org"),
|
||||
("gitlab", "gitlab.com"),
|
||||
] {
|
||||
if v.scheme() == scheme {
|
||||
package.version = {
|
||||
let mut new_url = initial_url.clone();
|
||||
if v.scheme() == "npm" {
|
||||
if let Some(UrlOrString::Url(ref url)) = &package.resolved {
|
||||
package.version = UrlOrString::Url(url.clone());
|
||||
}
|
||||
} else {
|
||||
for (scheme, host) in [
|
||||
("github", "github.com"),
|
||||
("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") {
|
||||
new_url.set_path(v.path());
|
||||
} else {
|
||||
new_url.set_path(&format!("{}.git", v.path()));
|
||||
}
|
||||
if v.path().ends_with(".git") {
|
||||
new_url.set_path(v.path());
|
||||
} else {
|
||||
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)]
|
||||
mod tests {
|
||||
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::{
|
||||
cmp::Ordering,
|
||||
|
@ -328,4 +335,36 @@ mod tests {
|
|||
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";
|
||||
homepage = "https://phpunit.de";
|
||||
license = lib.licenses.bsd3;
|
||||
mainProgram = "phpunit";
|
||||
maintainers = [ lib.maintainers.onny ] ++ lib.teams.php.members;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -146,7 +146,7 @@ rustPlatform.buildRustPackage {
|
|||
|
||||
wrapProgram "$out/bin/windmill" \
|
||||
--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 GO_PATH "${go}/bin/go" \
|
||||
--set DENO_PATH "${deno}/bin/deno" \
|
||||
|
|
|
@ -166,7 +166,7 @@ rec {
|
|||
|
||||
noto-fonts-color-emoji =
|
||||
let
|
||||
version = "2.038";
|
||||
version = "2.042";
|
||||
emojiPythonEnv =
|
||||
buildPackages.python3.withPackages (p: with p; [ fonttools nototools ]);
|
||||
in
|
||||
|
@ -178,7 +178,7 @@ rec {
|
|||
owner = "googlefonts";
|
||||
repo = "noto-emoji";
|
||||
rev = "v${version}";
|
||||
sha256 = "1rgmcc6nqq805iqr8kvxxlk5cf50q714xaxk3ld6rjrd69kb8ix9";
|
||||
hash = "sha256-otJQMXrBIPrxD1vCdgcrZ2h1a9XAMbqEBFumjz1XJ54=";
|
||||
};
|
||||
|
||||
depsBuildBuild = [
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
, vte
|
||||
, wrapGAppsHook
|
||||
, xdg-utils
|
||||
, xprop
|
||||
}:
|
||||
let
|
||||
# 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: {
|
||||
# Extension can't find Touchegg
|
||||
# https://github.com/NixOS/nixpkgs/issues/137621
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
"taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { };
|
||||
"tilingnome@rliang.github.com" = callPackage ./tilingnome { };
|
||||
"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 { };
|
||||
"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 {
|
||||
category = "panel-plugins";
|
||||
pname = "xfce4-cpugraph-plugin";
|
||||
version = "1.2.8";
|
||||
version = "1.2.10";
|
||||
rev-prefix = "xfce4-cpugraph-plugin-";
|
||||
odd-unstable = false;
|
||||
sha256 = "sha256-GNoODnw9Z9MTlvxCOTeZt61A/0AGhMwjrRGdM35XU+M=";
|
||||
sha256 = "sha256-VPelWTtFHmU4ZgWLTzZKbtmQ4LOtVwJvpLG9rHtGoNs=";
|
||||
|
||||
buildInputs = [
|
||||
exo
|
||||
|
|
|
@ -54,11 +54,28 @@ final: prev: let
|
|||
{
|
||||
name = "setup-cuda-hook";
|
||||
|
||||
# Point NVCC at a compatible compiler
|
||||
substitutions.ccRoot = "${backendStdenv.cc}";
|
||||
|
||||
# Required in addition to ccRoot as otherwise bin/gcc is looked up
|
||||
# when building CMakeCUDACompilerId.cu
|
||||
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)
|
||||
{ });
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
# shellcheck shell=bash
|
||||
|
||||
# Only run the hook from nativeBuildInputs
|
||||
(( "$hostOffset" == -1 && "$targetOffset" == 0)) || return 0
|
||||
|
||||
echo Sourcing setup-cuda-hook >&2
|
||||
|
||||
extendCUDAToolkit_ROOT() {
|
||||
|
@ -55,8 +58,9 @@ setupCUDAToolkitCompilers() {
|
|||
|
||||
# CMake's enable_language(CUDA) runs a compiler test and it doesn't account for
|
||||
# CUDAToolkit_ROOT. We have to help it locate libcudart
|
||||
if [[ -z "${nvccDontPrependCudartFlags-}" ]] ; then
|
||||
export NVCC_APPEND_FLAGS+=" -L@cudartLib@/lib -L@cudartStatic@/lib -I@cudartInclude@/include"
|
||||
local cudartFlags="@cudartFlags@"
|
||||
if [[ -z "${nvccDontPrependCudartFlags-}" ]] && [[ -n "${cudartFlags:-}" ]] ; then
|
||||
export NVCC_APPEND_FLAGS+=" $cudartFlags"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -51,37 +51,14 @@ in
|
|||
]
|
||||
);
|
||||
|
||||
cuda_nvcc = prev.cuda_nvcc.overrideAttrs (_: {
|
||||
# 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
|
||||
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 = [
|
||||
cuda_nvcc = prev.cuda_nvcc.overrideAttrs (oldAttrs: {
|
||||
propagatedBuildInputs = [
|
||||
final.setupCudaHook
|
||||
];
|
||||
|
||||
meta = (oldAttrs.meta or { }) // {
|
||||
mainProgram = "nvcc";
|
||||
};
|
||||
});
|
||||
|
||||
cuda_nvprof = prev.cuda_nvprof.overrideAttrs (oldAttrs: {
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
{ autoAddOpenGLRunpathHook
|
||||
, backendStdenv
|
||||
, cmake
|
||||
, cuda_cccl
|
||||
, cuda_cudart
|
||||
, cuda_cccl ? null
|
||||
, cuda_cudart ? null
|
||||
, cudaFlags
|
||||
, cuda_nvcc
|
||||
, cuda_nvcc ? null
|
||||
, cudatoolkit ? null
|
||||
, lib
|
||||
, libcublas
|
||||
, libcublas ? null
|
||||
, setupCudaHook
|
||||
, stdenv
|
||||
}:
|
||||
|
@ -17,23 +18,24 @@ backendStdenv.mkDerivation {
|
|||
|
||||
src = ./.;
|
||||
|
||||
buildInputs = [
|
||||
buildInputs = lib.optionals (cuda_cudart != null) [
|
||||
libcublas
|
||||
cuda_cudart
|
||||
cuda_cccl
|
||||
] ++ lib.optionals (cuda_cudart == null) [
|
||||
cudatoolkit
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
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
|
||||
# directly:
|
||||
# setupCudaHook
|
||||
autoAddOpenGLRunpathHook
|
||||
] ++ lib.optionals (cuda_nvcc != null) [
|
||||
cuda_nvcc
|
||||
] ++ lib.optionals (cuda_nvcc == null) [
|
||||
cudatoolkit
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
|
|
|
@ -57,6 +57,7 @@ stdenv.mkDerivation rec {
|
|||
buildInputs = lib.optionals withMkl [
|
||||
mkl
|
||||
] ++ lib.optionals withCUDA [
|
||||
cudaPackages.cuda_cccl # <nv/target> required by the fp16 headers in cudart
|
||||
cudaPackages.cuda_cudart
|
||||
cudaPackages.libcublas
|
||||
cudaPackages.libcurand
|
||||
|
|
|
@ -22,12 +22,13 @@ stdenv.mkDerivation rec {
|
|||
];
|
||||
|
||||
# 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 ]
|
||||
++ lib.optionals x11Support [ cairo libX11 ]
|
||||
++ 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.
|
||||
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 = {
|
||||
cudaSupport = enableCuda;
|
||||
|
||||
tests = {
|
||||
inherit (gst_all_1) gst-plugins-bad;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
, libpsm2, libfabric, pmix, ucx, ucc
|
||||
, config
|
||||
# Enable CUDA support
|
||||
, cudaSupport ? config.cudaSupport, cudatoolkit
|
||||
, cudaSupport ? config.cudaSupport, cudaPackages
|
||||
|
||||
# Enable the Sun Grid Engine bindings
|
||||
, enableSGE ? false
|
||||
|
@ -18,12 +18,7 @@
|
|||
, fortranSupport ? true
|
||||
}:
|
||||
|
||||
let
|
||||
cudatoolkit_joined = symlinkJoin {
|
||||
name = "${cudatoolkit.name}-unsplit";
|
||||
paths = [ cudatoolkit.out cudatoolkit.lib ];
|
||||
};
|
||||
in stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "openmpi";
|
||||
version = "4.1.6";
|
||||
|
||||
|
@ -47,12 +42,13 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
buildInputs = [ zlib ]
|
||||
++ lib.optionals stdenv.isLinux [ libnl numactl pmix ucx ucc ]
|
||||
++ lib.optionals cudaSupport [ cudatoolkit ]
|
||||
++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]
|
||||
++ [ libevent hwloc ]
|
||||
++ lib.optional (stdenv.isLinux || stdenv.isFreeBSD) rdma-core
|
||||
++ lib.optionals fabricSupport [ libpsm2 libfabric ];
|
||||
|
||||
nativeBuildInputs = [ perl ]
|
||||
++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ]
|
||||
++ lib.optionals fortranSupport [ gfortran ];
|
||||
|
||||
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
|
||||
# https://github.com/openucx/ucx
|
||||
# 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}" ]
|
||||
;
|
||||
|
||||
|
@ -98,7 +94,8 @@ in stdenv.mkDerivation rec {
|
|||
doCheck = true;
|
||||
|
||||
passthru = {
|
||||
inherit cudaSupport cudatoolkit;
|
||||
inherit cudaSupport;
|
||||
cudatoolkit = cudaPackages.cudatoolkit; # For backward compatibility only
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
{ config, lib, stdenv, fetchFromGitHub, cmake, pkg-config, xorg, libGLU
|
||||
, libGL, glew, ocl-icd, python3
|
||||
, cudaSupport ? config.cudaSupport, cudatoolkit
|
||||
# For visibility mostly. The whole approach to cuda architectures and capabilities
|
||||
# will be reworked soon.
|
||||
, cudaArch ? "compute_37"
|
||||
, cudaSupport ? config.cudaSupport
|
||||
, cudaPackages
|
||||
, openclSupport ? !cudaSupport
|
||||
, darwin
|
||||
}:
|
||||
|
@ -21,7 +19,11 @@ stdenv.mkDerivation rec {
|
|||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
cudaPackages.cuda_nvcc
|
||||
];
|
||||
buildInputs =
|
||||
[ libGLU libGL python3
|
||||
# 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.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 =
|
||||
[ "-DNO_TUTORIALS=1"
|
||||
"-DNO_REGRESSION=1"
|
||||
"-DNO_EXAMPLES=1"
|
||||
"-DNO_METAL=1" # don’t have metal in apple sdk
|
||||
(lib.cmakeBool "NO_OPENCL" (!openclSupport))
|
||||
(lib.cmakeBool "NO_CUDA" (!cudaSupport))
|
||||
] ++ lib.optionals (!stdenv.isDarwin) [
|
||||
"-DGLEW_INCLUDE_DIR=${glew.dev}/include"
|
||||
"-DGLEW_LIBRARY=${glew.dev}/lib"
|
||||
] ++ lib.optionals cudaSupport [
|
||||
"-DOSD_CUDA_NVCC_FLAGS=--gpu-architecture=${cudaArch}"
|
||||
"-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc"
|
||||
] ++ lib.optionals (!openclSupport) [
|
||||
"-DNO_OPENCL=1"
|
||||
];
|
||||
|
||||
preBuild = let maxBuildCores = 16; in lib.optionalString cudaSupport ''
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
, fetchFromGitHub
|
||||
, fetchurl
|
||||
, substituteAll
|
||||
, cudaSupport ? opencv.cudaSupport or false
|
||||
|
||||
# build
|
||||
, addOpenGLRunpath
|
||||
|
@ -21,6 +22,7 @@
|
|||
, protobuf
|
||||
, pugixml
|
||||
, tbb
|
||||
, cudaPackages
|
||||
}:
|
||||
|
||||
let
|
||||
|
@ -68,6 +70,8 @@ stdenv.mkDerivation rec {
|
|||
setuptools
|
||||
]))
|
||||
shellcheck
|
||||
] ++ lib.optionals cudaSupport [
|
||||
cudaPackages.cuda_nvcc
|
||||
];
|
||||
|
||||
patches = [
|
||||
|
@ -133,6 +137,8 @@ stdenv.mkDerivation rec {
|
|||
protobuf
|
||||
pugixml
|
||||
tbb
|
||||
] ++ lib.optionals cudaSupport [
|
||||
cudaPackages.cuda_cudart
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "qtutilities";
|
||||
version = "6.13.2";
|
||||
version = "6.13.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Martchus";
|
||||
repo = "qtutilities";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-Kdvr3T9hynLCj99+Rc1L0Gq7xkiM0a6xovuqhAncrek=";
|
||||
hash = "sha256-/3PEbUMphblB3HgLkDb4l7GykuXL/ZOsKBrs8h72uwE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, libPath
|
||||
, cuda_cudart
|
||||
, cudaMajorVersion
|
||||
, cuda_nvcc
|
||||
, cudatoolkit
|
||||
, libcublas
|
||||
, fetchurl
|
||||
, autoPatchelfHook
|
||||
, addOpenGLRunpath
|
||||
|
@ -17,7 +21,7 @@ let
|
|||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "cudatoolkit-${cudatoolkit.majorVersion}-cutensor";
|
||||
pname = "cutensor-cu${cudaMajorVersion}";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -32,20 +36,27 @@ stdenv.mkDerivation {
|
|||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
addOpenGLRunpath
|
||||
cuda_nvcc
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
cudatoolkit
|
||||
cuda_cudart
|
||||
libcublas
|
||||
];
|
||||
|
||||
# Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found.
|
||||
# See the explanation in addOpenGLRunpath.
|
||||
installPhase = ''
|
||||
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 ${libPath} "$out/lib"
|
||||
|
||||
|
@ -58,7 +69,7 @@ stdenv.mkDerivation {
|
|||
'';
|
||||
|
||||
passthru = {
|
||||
inherit cudatoolkit;
|
||||
cudatoolkit = lib.warn "cutensor.passthru: cudaPackages.cudatoolkit is deprecated" cudatoolkit;
|
||||
majorVersion = lib.versions.major version;
|
||||
};
|
||||
|
||||
|
@ -66,7 +77,11 @@ stdenv.mkDerivation {
|
|||
description = "cuTENSOR: A High-Performance CUDA Library For Tensor Primitives";
|
||||
homepage = "https://developer.nvidia.com/cutensor";
|
||||
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" ];
|
||||
maintainers = with maintainers; [ obsidian-systems-maintenance ];
|
||||
};
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
, cmake
|
||||
, cudaPackages ? { }
|
||||
, cudaSupport ? config.cudaSupport
|
||||
, nvidia-thrust
|
||||
, useThrustSourceBuild ? true
|
||||
, pythonSupport ? true
|
||||
, pythonPackages
|
||||
, llvmPackages
|
||||
|
@ -27,8 +25,6 @@
|
|||
, runCommand
|
||||
}@inputs:
|
||||
|
||||
assert cudaSupport -> nvidia-thrust.cudaSupport;
|
||||
|
||||
let
|
||||
pname = "faiss";
|
||||
version = "1.7.4";
|
||||
|
@ -44,9 +40,6 @@ let
|
|||
cuda_cudart # cuda_runtime.h
|
||||
libcublas
|
||||
libcurand
|
||||
] ++ lib.optionals useThrustSourceBuild [
|
||||
nvidia-thrust
|
||||
] ++ lib.optionals (!useThrustSourceBuild) [
|
||||
cuda_cccl
|
||||
] ++ lib.optionals (cudaPackages ? cuda_profiler_api) [
|
||||
cuda_profiler_api # cuda_profiler_api.h
|
||||
|
|
|
@ -17,16 +17,32 @@ final: prev: let
|
|||
isSupported = fileData: elem cudaVersion fileData.supportedCudaVersions;
|
||||
# Return the first file that is supported. In practice there should only ever be one anyway.
|
||||
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
|
||||
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
|
||||
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;
|
||||
defaultBuild = { "tensorrt" = if allBuilds ? ${computeName tensorRTDefaultVersion}
|
||||
then allBuilds.${computeName tensorRTDefaultVersion}
|
||||
else throw "tensorrt-${tensorRTDefaultVersion} does not support your cuda version ${cudaVersion}"; };
|
||||
defaultName = computeName tensorRTDefaultVersion;
|
||||
defaultBuild = lib.optionalAttrs (allBuilds ? ${defaultName}) { tensorrt = allBuilds.${computeName tensorRTDefaultVersion}; };
|
||||
in {
|
||||
inherit buildTensorRTPackage;
|
||||
} // allBuilds // defaultBuild;
|
||||
|
|
|
@ -8,20 +8,22 @@
|
|||
, cudnn
|
||||
}:
|
||||
|
||||
{ fullVersion
|
||||
{ enable ? true
|
||||
, fullVersion
|
||||
, fileVersionCudnn ? null
|
||||
, tarball
|
||||
, sha256
|
||||
, 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})";
|
||||
|
||||
backendStdenv.mkDerivation rec {
|
||||
pname = "cudatoolkit-${cudatoolkit.majorVersion}-tensorrt";
|
||||
version = fullVersion;
|
||||
src = requireFile rec {
|
||||
src = if !enable then null else
|
||||
requireFile rec {
|
||||
name = tarball;
|
||||
inherit sha256;
|
||||
message = ''
|
||||
|
@ -38,13 +40,13 @@ backendStdenv.mkDerivation rec {
|
|||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
nativeBuildInputs = lib.optionals enable [
|
||||
autoPatchelfHook
|
||||
autoAddOpenGLRunpathHook
|
||||
];
|
||||
|
||||
# Used by autoPatchelfHook
|
||||
buildInputs = [
|
||||
buildInputs = lib.optionals enable [
|
||||
backendStdenv.cc.cc.lib # libstdc++
|
||||
cudatoolkit
|
||||
cudnn
|
||||
|
@ -75,6 +77,7 @@ backendStdenv.mkDerivation rec {
|
|||
'';
|
||||
|
||||
passthru.stdenv = backendStdenv;
|
||||
passthru.enable = enable;
|
||||
|
||||
meta = with lib; {
|
||||
# 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
|
||||
# you _may_ be able to smudge version constraints, just know that you're
|
||||
# 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";
|
||||
homepage = "https://developer.nvidia.com/tensorrt";
|
||||
license = licenses.unfree;
|
||||
|
|
|
@ -14,10 +14,15 @@
|
|||
inherit (cudaPackages) backendStdenv cudaFlags;
|
||||
|
||||
cuda-common-redist = with cudaPackages; [
|
||||
cuda_cudart # cuda_runtime.h
|
||||
libcublas # cublas_v2.h
|
||||
libcusolver # cusolverDn.h
|
||||
libcusparse # cusparse.h
|
||||
cuda_cudart.dev # cuda_runtime.h
|
||||
cuda_cudart.lib
|
||||
cuda_cccl.dev # <nv/target>
|
||||
libcublas.dev # cublas_v2.h
|
||||
libcublas.lib
|
||||
libcusolver.dev # cusolverDn.h
|
||||
libcusolver.lib
|
||||
libcusparse.dev # cusparse.h
|
||||
libcusparse.lib
|
||||
];
|
||||
|
||||
cuda-native-redist = symlinkJoin {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ stdenv, lib, fetchFromGitHub, libtool, automake, autoconf, ucx
|
||||
, config
|
||||
, enableCuda ? config.cudaSupport
|
||||
, cudatoolkit
|
||||
, cudaPackages
|
||||
, enableAvx ? stdenv.hostPlatform.avxSupport
|
||||
, enableSse41 ? stdenv.hostPlatform.sse4_1Support
|
||||
, enableSse42 ? stdenv.hostPlatform.sse4_2Support
|
||||
|
@ -30,19 +30,25 @@ stdenv.mkDerivation rec {
|
|||
done
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ libtool automake autoconf ]
|
||||
++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
|
||||
buildInputs = [ ucx ]
|
||||
++ lib.optionals enableCuda [
|
||||
cudaPackages.cuda_cccl
|
||||
cudaPackages.cuda_cudart
|
||||
];
|
||||
|
||||
|
||||
preConfigure = ''
|
||||
./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 = [ ]
|
||||
++ lib.optional enableSse41 "--with-sse41"
|
||||
++ lib.optional enableSse42 "--with-sse42"
|
||||
++ lib.optional enableAvx "--with-avx"
|
||||
++ lib.optional enableCuda "--with-cuda=${cudatoolkit}";
|
||||
++ lib.optional enableCuda "--with-cuda=${cudaPackages.cuda_cudart}";
|
||||
|
||||
postInstall = ''
|
||||
find $out/lib/ -name "*.la" -exec rm -f \{} \;
|
||||
|
|
|
@ -2,18 +2,12 @@
|
|||
, rdma-core, libbfd, libiberty, perl, zlib, symlinkJoin, pkg-config
|
||||
, config
|
||||
, enableCuda ? config.cudaSupport
|
||||
, cudatoolkit
|
||||
, cudaPackages
|
||||
, enableRocm ? config.rocmSupport
|
||||
, rocmPackages
|
||||
}:
|
||||
|
||||
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 ];
|
||||
|
||||
rocm = symlinkJoin {
|
||||
|
@ -35,7 +29,15 @@ stdenv.mkDerivation rec {
|
|||
|
||||
outputs = [ "out" "doc" "dev" ];
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook doxygen pkg-config ];
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
doxygen
|
||||
pkg-config
|
||||
]
|
||||
++ lib.optionals enableCuda [
|
||||
cudaPackages.cuda_nvcc
|
||||
cudaPackages.autoAddOpenGLRunpathHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libbfd
|
||||
|
@ -44,8 +46,16 @@ stdenv.mkDerivation rec {
|
|||
perl
|
||||
rdma-core
|
||||
zlib
|
||||
] ++ lib.optional enableCuda cudatoolkit
|
||||
++ lib.optionals enableRocm rocmList;
|
||||
] ++ lib.optionals enableCuda [
|
||||
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 = [
|
||||
"--with-rdmacm=${lib.getDev rdma-core}"
|
||||
|
@ -53,7 +63,7 @@ stdenv.mkDerivation rec {
|
|||
"--with-rc"
|
||||
"--with-dm"
|
||||
"--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}";
|
||||
|
||||
postInstall = ''
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{ lib, stdenv, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.2.16";
|
||||
version = "1.2.17";
|
||||
pname = "zlog";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "HardySimpson";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-wpaMbFKSwTIFe3p65pMJ6Pf2qKp1uYZCyyinGU4AxrQ=";
|
||||
sha256 = "sha256-ckpDMRLxObpl8N539DC5u2bPpmD7jM+KugurUfta6tg=";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
php.buildComposerProject (finalAttrs: {
|
||||
pname = "box";
|
||||
version = "4.5.0";
|
||||
version = "4.5.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "box-project";
|
||||
repo = "box";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-6icHXRxqre2RBIRoc3zfQnxGRHh2kIen2oLJ3eQjD/0=";
|
||||
hash = "sha256-3YfnFd8OZ15nQnXOkhNz2FQygElFn+JOrenKUeyTkXA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-n/F/il1u+3amSVf8fr0scZSkXuwxW43iq5F2XQJ3xfM=";
|
||||
vendorHash = "sha256-0ul4NLGK+Z+VN1nv4xSGsh2JcJEXeYAYFhxDn7r3kVY=";
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/box-project/box/releases/tag/${finalAttrs.version}";
|
||||
|
|
|
@ -36,6 +36,7 @@ php.buildComposerProject (finalAttrs: {
|
|||
description = "Dependency Manager for PHP";
|
||||
homepage = "https://getcomposer.org/";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "composer";
|
||||
maintainers = lib.teams.php.members;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -43,6 +43,7 @@ php.buildComposerProject (finalAttrs: {
|
|||
description = "A PHP code-quality tool";
|
||||
homepage = "https://github.com/phpro/grumphp";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "grumphp";
|
||||
maintainers = lib.teams.php.members;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -20,6 +20,7 @@ php.buildComposerProject (finalAttrs: {
|
|||
description = "A static analysis tool for finding errors in PHP applications";
|
||||
homepage = "https://github.com/vimeo/psalm";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "psalm";
|
||||
maintainers = lib.teams.php.members;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -4,7 +4,7 @@ let
|
|||
version = "0.4.14";
|
||||
in buildPecl {
|
||||
inherit version;
|
||||
pname = "php-spx";
|
||||
pname = "spx";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NoiseByNorthwest";
|
|
@ -11,11 +11,34 @@
|
|||
, cudaPackages
|
||||
, addOpenGLRunpath
|
||||
, pythonOlder
|
||||
, symlinkJoin
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (cudaPackages) cudatoolkit cudnn cutensor nccl;
|
||||
in buildPythonPackage rec {
|
||||
inherit (cudaPackages) cudnn cutensor nccl;
|
||||
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";
|
||||
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
|
||||
# working nicely in practice.
|
||||
preConfigure = ''
|
||||
export CUDA_PATH=${cudatoolkit}
|
||||
export CUPY_NUM_BUILD_JOBS="$NIX_BUILD_CORES"
|
||||
export CUPY_NUM_NVCC_THREADS="$NIX_BUILD_CORES"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
wheel
|
||||
addOpenGLRunpath
|
||||
cython
|
||||
cudaPackages.cuda_nvcc
|
||||
];
|
||||
|
||||
LDFLAGS = "-L${cudatoolkit}/lib/stubs";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
cudatoolkit
|
||||
buildInputs = [
|
||||
cudatoolkit-joined
|
||||
cudnn
|
||||
cutensor
|
||||
nccl
|
||||
];
|
||||
|
||||
NVCC = "${lib.getExe cudaPackages.cuda_nvcc}"; # FIXME: splicing/buildPackages
|
||||
CUDA_PATH = "${cudatoolkit-joined}";
|
||||
LDFLAGS = "-L${cudaPackages.cuda_cudart}/lib/stubs";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
fastrlock
|
||||
numpy
|
||||
setuptools
|
||||
wheel
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "dvc-render";
|
||||
version = "0.6.0";
|
||||
version = "1.0.0";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
@ -24,7 +24,7 @@ buildPythonPackage rec {
|
|||
owner = "iterative";
|
||||
repo = pname;
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-seL96aOJ554pD7lgzXZFDCXqY/3TAQugWMA7MtqKoAE=";
|
||||
hash = "sha256-OrfepQuLBNa5m3Sy4NzFOArtFFvaNtNNVJ8DNN3yT6s=";
|
||||
};
|
||||
|
||||
SETUPTOOLS_SCM_PRETEND_VERSION = version;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "habluetooth";
|
||||
version = "0.5.1";
|
||||
version = "0.6.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.9";
|
||||
|
@ -26,7 +26,7 @@ buildPythonPackage rec {
|
|||
owner = "Bluetooth-Devices";
|
||||
repo = "habluetooth";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-olR900l/xJug5DeXb8CR0vQBzjzegdiCLCp6AIQu7Tg=";
|
||||
hash = "sha256-Ha+tK3uThYvDcFsNA3JIzSG6IGUsAcls7ArJJpO3ZSQ=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -29,11 +29,11 @@
|
|||
, stdenv
|
||||
# Options:
|
||||
, cudaSupport ? config.cudaSupport
|
||||
, cudaPackages ? {}
|
||||
, cudaPackagesGoogle
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (cudaPackages) cudatoolkit cudnn;
|
||||
inherit (cudaPackagesGoogle) cudatoolkit cudnn;
|
||||
|
||||
version = "0.4.20";
|
||||
|
||||
|
@ -210,8 +210,8 @@ buildPythonPackage {
|
|||
maintainers = with maintainers; [ samuela ];
|
||||
platforms = [ "aarch64-darwin" "x86_64-linux" "x86_64-darwin" ];
|
||||
broken =
|
||||
!(cudaSupport -> (cudaPackages ? cudatoolkit) && lib.versionAtLeast cudatoolkit.version "11.1")
|
||||
|| !(cudaSupport -> (cudaPackages ? cudnn) && lib.versionAtLeast cudnn.version "8.2")
|
||||
!(cudaSupport -> (cudaPackagesGoogle ? cudatoolkit) && lib.versionAtLeast cudatoolkit.version "11.1")
|
||||
|| !(cudaSupport -> (cudaPackagesGoogle ? cudnn) && lib.versionAtLeast cudnn.version "8.2")
|
||||
|| !(cudaSupport -> stdenv.isLinux);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -44,14 +44,14 @@
|
|||
, config
|
||||
# CUDA flags:
|
||||
, cudaSupport ? config.cudaSupport
|
||||
, cudaPackages ? {}
|
||||
, cudaPackagesGoogle
|
||||
|
||||
# MKL:
|
||||
, mklSupport ? true
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (cudaPackages) backendStdenv cudatoolkit cudaFlags cudnn nccl;
|
||||
inherit (cudaPackagesGoogle) backendStdenv cudatoolkit cudaFlags cudnn nccl;
|
||||
|
||||
pname = "jaxlib";
|
||||
version = "0.4.20";
|
||||
|
|
|
@ -25,13 +25,13 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "labgrid";
|
||||
version = "23.0.3";
|
||||
version = "23.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "labgrid-project";
|
||||
repo = "labgrid";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "sha256-yhlBqqCLOt6liw4iv8itG6E4QfIa7cW76QJqefUM5dw=";
|
||||
sha256 = "sha256-EEPQSIHKAmLPudv7LLm9ol3Kukgz8edYKfDi+wvERpk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "opencensus-ext-azure";
|
||||
version = "1.1.11";
|
||||
version = "1.1.12";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.4";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-IdTU0FGdSCOdBBQskLalH17MBDaE64DPoKcBqiM0YHM=";
|
||||
hash = "sha256-hrseR84dIKytlq08Efjvsvp6tensSJbzBj2F+JlJBGI=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -9,16 +9,16 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyomo";
|
||||
version = "6.6.2";
|
||||
version = "6.7.0";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
repo = "pyomo";
|
||||
owner = "pyomo";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-hh2sfWOUp3ac75NEuTrw3YkvS7hXpzJp39v6cfrhNiQ=";
|
||||
hash = "sha256-HoTtvda97ghQ0SQBZFGkDAwD2WNtZpIum2m1khivEK4=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
, tensorboard
|
||||
, config
|
||||
, cudaSupport ? config.cudaSupport
|
||||
, cudaPackages ? {}
|
||||
, cudaPackagesGoogle
|
||||
, zlib
|
||||
, python
|
||||
, keras-applications
|
||||
|
@ -43,7 +43,7 @@ assert ! (stdenv.isDarwin && cudaSupport);
|
|||
|
||||
let
|
||||
packages = import ./binary-hashes.nix;
|
||||
inherit (cudaPackages) cudatoolkit cudnn;
|
||||
inherit (cudaPackagesGoogle) cudatoolkit cudnn;
|
||||
in buildPythonPackage {
|
||||
pname = "tensorflow" + lib.optionalString cudaSupport "-gpu";
|
||||
inherit (packages) version;
|
||||
|
@ -200,7 +200,7 @@ in buildPythonPackage {
|
|||
];
|
||||
|
||||
passthru = {
|
||||
inherit cudaPackages;
|
||||
cudaPackages = cudaPackagesGoogle;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
# https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
|
||||
, config
|
||||
, cudaSupport ? config.cudaSupport
|
||||
, cudaPackages ? { }
|
||||
, cudaCapabilities ? cudaPackages.cudaFlags.cudaCapabilities
|
||||
, cudaPackagesGoogle
|
||||
, cudaCapabilities ? cudaPackagesGoogle.cudaFlags.cudaCapabilities
|
||||
, mklSupport ? false, mkl
|
||||
, tensorboardSupport ? true
|
||||
# XLA without CUDA is broken
|
||||
|
@ -50,15 +50,15 @@ let
|
|||
# __ZN4llvm11SmallPtrSetIPKNS_10AllocaInstELj8EED1Ev in any of the
|
||||
# translation units, so the build fails at link time
|
||||
stdenv =
|
||||
if cudaSupport then cudaPackages.backendStdenv
|
||||
if cudaSupport then cudaPackagesGoogle.backendStdenv
|
||||
else if originalStdenv.isDarwin then llvmPackages_11.stdenv
|
||||
else originalStdenv;
|
||||
inherit (cudaPackages) cudatoolkit nccl;
|
||||
inherit (cudaPackagesGoogle) cudatoolkit nccl;
|
||||
# use compatible cuDNN (https://www.tensorflow.org/install/source#gpu)
|
||||
# cudaPackages.cudnn led to this:
|
||||
# https://github.com/tensorflow/tensorflow/issues/60398
|
||||
cudnnAttribute = "cudnn_8_6";
|
||||
cudnn = cudaPackages.${cudnnAttribute};
|
||||
cudnn = cudaPackagesGoogle.${cudnnAttribute};
|
||||
gentoo-patches = fetchzip {
|
||||
url = "https://dev.gentoo.org/~perfinion/patches/tensorflow-patches-2.12.0.tar.bz2";
|
||||
hash = "sha256-SCRX/5/zML7LmKEPJkcM5Tebez9vv/gmE4xhT/jyqWs=";
|
||||
|
@ -486,8 +486,8 @@ let
|
|||
broken =
|
||||
stdenv.isDarwin
|
||||
|| !(xlaSupport -> cudaSupport)
|
||||
|| !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackages)
|
||||
|| !(cudaSupport -> cudaPackages ? cudatoolkit);
|
||||
|| !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackagesGoogle)
|
||||
|| !(cudaSupport -> cudaPackagesGoogle ? cudatoolkit);
|
||||
} // lib.optionalAttrs stdenv.isDarwin {
|
||||
timeout = 86400; # 24 hours
|
||||
maxSilent = 14400; # 4h, double the default of 7200s
|
||||
|
@ -590,7 +590,7 @@ in buildPythonPackage {
|
|||
# Regression test for #77626 removed because not more `tensorflow.contrib`.
|
||||
|
||||
passthru = {
|
||||
inherit cudaPackages;
|
||||
cudaPackages = cudaPackagesGoogle;
|
||||
deps = bazel-build.deps;
|
||||
libtensorflow = bazel-build.out;
|
||||
};
|
||||
|
|
|
@ -337,7 +337,8 @@ in buildPythonPackage rec {
|
|||
buildInputs = [ blas blas.provider ]
|
||||
++ lib.optionals cudaSupport (with cudaPackages; [
|
||||
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.lib # For kineto
|
||||
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 {
|
||||
pname = "neil";
|
||||
version = "0.2.62";
|
||||
version = "0.2.63";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "babashka";
|
||||
repo = "neil";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-zSZ62RMHZLuhIPdde0cfWae+uFpWVjMfHuLAJdRedJA=";
|
||||
sha256 = "sha256-mcygDOx5yzOW80bv54cPOKl1t443DXFRq4Hb4KYD5e8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "symfony-cli";
|
||||
version = "5.7.3";
|
||||
vendorHash = "sha256-xC5EHP4Zb9lgvbxVkoVBxdQ4+f34zqRf4XapntZMTTc=";
|
||||
version = "5.7.4";
|
||||
vendorHash = "sha256-2+Q93tm3ooOd/m6aUWAwFGh5CzARPNISNx0Tcrjc7NY=";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "symfony-cli";
|
||||
repo = "symfony-cli";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-mxyGdyR1yZY+YOyf9ngk6P2oBmUL+IbwLWaCvZziSIM=";
|
||||
hash = "sha256-d4cI/Nyn2XPvdZFLY7GHIAcmIUnzgyehGxZPylUD3EU=";
|
||||
};
|
||||
|
||||
ldflags = [
|
||||
|
|
|
@ -122,7 +122,7 @@ let
|
|||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fwupd";
|
||||
version = "1.9.9";
|
||||
version = "1.9.10";
|
||||
|
||||
# libfwupd goes to lib
|
||||
# daemon, plug-ins and libfwupdplugin go to out
|
||||
|
@ -133,7 +133,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
owner = "fwupd";
|
||||
repo = "fwupd";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-UUrG3CMCAC5hyy2U5I4zqvJoSP/+zuiq1P+2Pdb3QD0=";
|
||||
hash = "sha256-qB7SGkjPahZmLax8HrSdLvORAXTBcuN5NohT0KUjCnM=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "matrix-sliding-sync";
|
||||
version = "0.99.12";
|
||||
version = "0.99.13";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "matrix-org";
|
||||
repo = "sliding-sync";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-7M+Ti1SfurRngXg2oCdLveG6QyjM2BjKnoovJxz7ZOY=";
|
||||
hash = "sha256-jrsMPFUSdtUs6qG902+oRBGUvFGmhR8/NHCUwB9oVnE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-li5kEF7U7KyyMLMhVBqvnLuLXI6QrJl1KeusKrQXo8w=";
|
||||
vendorHash = "sha256-THjvc0TepIBFOTte7t63Dmadf3HMuZ9m0YzQMI5e5Pw=";
|
||||
|
||||
subPackages = [ "cmd/syncv3" ];
|
||||
|
||||
|
|
|
@ -279,6 +279,7 @@ let
|
|||
popd &>/dev/null
|
||||
|
||||
redis-server >/dev/null &
|
||||
REDIS_PID=$!
|
||||
|
||||
initdb -A trust $NIX_BUILD_TOP/postgres >/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
|
||||
chmod -R +w tmp
|
||||
|
||||
kill $REDIS_PID
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
|
|
|
@ -135,7 +135,7 @@ let
|
|||
|
||||
fish = stdenv.mkDerivation rec {
|
||||
pname = "fish";
|
||||
version = "3.6.1";
|
||||
version = "3.6.4";
|
||||
|
||||
src = fetchurl {
|
||||
# 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
|
||||
# maybe other things).
|
||||
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
|
||||
|
@ -156,6 +156,8 @@ let
|
|||
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/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
|
||||
sed -i 's|/bin/pwd|${coreutils}/bin/pwd|' tests/checks/cd.fish
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "scaleway-cli";
|
||||
version = "2.24.0";
|
||||
version = "2.25.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scaleway";
|
||||
repo = "scaleway-cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-Q65X2lsR5jyWXxxmkvUA0yG4miD+KUSBGRFXvH4KBGY=";
|
||||
sha256 = "sha256-wx/247ZNbdNdRiGLTfCig1JAjmXZX0aCHbOgelzMcyw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-mZ2XFZS5tqtRUhdo6AOCY4xSaYgxUEy1OFbyzsbCEnU=";
|
||||
vendorHash = "sha256-FftJsXM9sexRqBKrIeTdWh5Z0eYIK3acDNtptqqILD8=";
|
||||
|
||||
ldflags = [
|
||||
"-w"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "stuffbin";
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
|
@ -10,7 +10,7 @@ buildGoModule rec {
|
|||
owner = "knadh";
|
||||
repo = "stuffbin";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-M72xNh7bKUMLzA+M8bJB++kJ5KCrkboQm1v8BasP3Yo=";
|
||||
sha256 = "sha256-roXjE0t4iwrL2y/G2oePYL2AbTwd9uzQPtgdY14WeZk=";
|
||||
};
|
||||
|
||||
ldflags = [ "-s" "-w" "-X main.version=${version}" ];
|
||||
|
|
|
@ -12,14 +12,14 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ofono";
|
||||
version = "2.1";
|
||||
version = "2.2";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://git.kernel.org/pub/scm/network/ofono/ofono.git";
|
||||
rev = version;
|
||||
sha256 = "sha256-GxQfh/ps5oM9G6B1EVgnjo8LqHD1hMqdnju1PCQq3kA=";
|
||||
sha256 = "sha256-mnh0qzmgPDfimN/M33HntYj90Xcgc/uF8tKbzeQV1Yg=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "fscan";
|
||||
version = "1.8.3";
|
||||
version = "1.8.3-build3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "shadow1ng";
|
||||
repo = "fscan";
|
||||
rev = version;
|
||||
hash = "sha256-uoM/nMtgIqyzpOoSQKD5k4LXAXoA8G5N4In8tZlngqs=";
|
||||
hash = "sha256-GtOCd8JaR6tx8hoB+P9QXrEnN7Wvmv7jddhc2/8hjvQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-hvb2IfypwYauF3ubE36u0bTU+l/FWP/CZt6dFd9zc6s=";
|
||||
|
@ -18,7 +18,6 @@ buildGoModule rec {
|
|||
homepage = "https://github.com/shadow1ng/fscan";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ Misaka13514 ];
|
||||
platforms = with platforms; unix ++ windows;
|
||||
mainProgram = "fscan";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "vault-bin";
|
||||
version = "1.15.2";
|
||||
version = "1.15.3";
|
||||
|
||||
src =
|
||||
let
|
||||
|
@ -16,11 +16,11 @@ stdenv.mkDerivation rec {
|
|||
aarch64-darwin = "darwin_arm64";
|
||||
};
|
||||
sha256 = selectSystem {
|
||||
x86_64-linux = "sha256-aawDrQu8wEZqJ/uyCJjtWcgy8Ut34B5P+odqddE5P3M=";
|
||||
aarch64-linux = "sha256-thLVw//yIgPCAV9CdrRlINLg+cO5aB279I2aboZMF6w=";
|
||||
i686-linux = "sha256-bUhtnQB5YZdDuB4uondln0D3itoTr+1FaqjgTiT76WA=";
|
||||
x86_64-darwin = "sha256-+wZrWwbpibtCla1ydhDnLJsHrVymLzEXVE1KftZ+pOs=";
|
||||
aarch64-darwin = "sha256-2FGiCzIAEyXTqRaKEDZK5d/PWl4EmvJl9NieiOdgOeY=";
|
||||
x86_64-linux = "sha256-rRXpRxuslOvvNgK6W0BG/LWs2sAGGCuSxcbVbsmrtN0=";
|
||||
aarch64-linux = "sha256-vD/S+aZGa+JFRBV9WML9WbhrFpB8FynM62ZJ0zkWtDU=";
|
||||
i686-linux = "sha256-Y9KpL0kZxlgfkBSyXJVSND2hSJ1y+FuXKPK0/P2YX2w=";
|
||||
x86_64-darwin = "sha256-i85GQSJK7dPoLP7XBrz7CiISCG8KbGylL++ecy/CXRY=";
|
||||
aarch64-darwin = "sha256-eZAuUNbigJ/kye8p3yu+Qf+p47IkxKJntR2sGFpM+j8=";
|
||||
};
|
||||
in
|
||||
fetchzip {
|
||||
|
@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
|
|||
description = "A tool for managing secrets, this binary includes the UI";
|
||||
homepage = "https://www.vaultproject.io";
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.mpl20;
|
||||
license = licenses.bsl11;
|
||||
maintainers = with maintainers; teams.serokell.members ++ [ offline psyanticy Chili-Man techknowlogick mkaito ];
|
||||
mainProgram = "vault";
|
||||
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-emoji = noto-fonts-color-emoji; # Added 2023-09-09
|
||||
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 ###
|
||||
|
||||
|
|
|
@ -7102,7 +7102,7 @@ with pkgs;
|
|||
ibus-theme-tools = callPackage ../tools/misc/ibus-theme-tools { };
|
||||
|
||||
interception-tools = callPackage ../tools/inputmethods/interception-tools { };
|
||||
interception-tools-plugins = {
|
||||
interception-tools-plugins = recurseIntoAttrs {
|
||||
caps2esc = callPackage ../tools/inputmethods/interception-tools/caps2esc.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 = 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
|
||||
# such cuDNN release as of 2023-01-10.
|
||||
cudaPackages = recurseIntoAttrs cudaPackages_11;
|
||||
|
@ -11278,16 +11282,6 @@ with pkgs;
|
|||
|
||||
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 { };
|
||||
|
||||
|
@ -20766,6 +20760,9 @@ with pkgs;
|
|||
# catboost requires clang 12+ for build
|
||||
# after bumping the default version of llvm, check for compatibility with the cuda backend and pin it.
|
||||
inherit (llvmPackages_12) stdenv;
|
||||
|
||||
# https://github.com/catboost/catboost/issues/2540
|
||||
cudaPackages = cudaPackages_11;
|
||||
};
|
||||
|
||||
ndn-cxx = callPackage ../development/libraries/ndn-cxx { };
|
||||
|
@ -39432,7 +39429,6 @@ with pkgs;
|
|||
singlePrec = true;
|
||||
enableMpi = true;
|
||||
enableCuda = true;
|
||||
cudatoolkit = cudatoolkit_11;
|
||||
fftw = fftwSinglePrec;
|
||||
});
|
||||
|
||||
|
@ -39974,7 +39970,6 @@ with pkgs;
|
|||
|
||||
faissWithCuda = faiss.override {
|
||||
cudaSupport = true;
|
||||
nvidia-thrust = nvidia-thrust-cuda;
|
||||
};
|
||||
|
||||
fityk = callPackage ../applications/science/misc/fityk { };
|
||||
|
|
|
@ -24,6 +24,7 @@ let
|
|||
|
||||
buildCuTensorPackage = final.callPackage ../development/libraries/science/math/cutensor/generic.nix;
|
||||
|
||||
# FIXME: Include non-x86_64 platforms
|
||||
cuTensorVersions = {
|
||||
"1.2.2.5" = {
|
||||
hash = "sha256-lU7iK4DWuC/U3s1Ct/rq2Gr3w4F2U7RYYgpmF05bibY=";
|
||||
|
@ -31,12 +32,24 @@ let
|
|||
"1.5.0.3" = {
|
||||
hash = "sha256-T96+lPC6OTOkIs/z3QWg73oYVSyidN0SVkBWmT9VRx0=";
|
||||
};
|
||||
"2.0.0.7" = {
|
||||
hash = "sha256-32M4rtGOW2rgxJUhBT0WBtKkHhh9f17M+RgK9rvE72g=";
|
||||
};
|
||||
};
|
||||
|
||||
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 {
|
||||
version = if cudaMajorMinorVersion == "10.1" then "1.2.2.5" else "1.5.0.3";
|
||||
version = cudaToCutensor.${cudaMajorVersion} or latestVersion;
|
||||
inherit (cuTensorVersions.${version}) hash;
|
||||
# This can go into generic.nix
|
||||
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 { };
|
||||
|
||||
php-spx = callPackage ../development/php-packages/php-spx { };
|
||||
|
||||
pinba = callPackage ../development/php-packages/pinba { };
|
||||
|
||||
protobuf = callPackage ../development/php-packages/protobuf { };
|
||||
|
@ -332,6 +330,8 @@ lib.makeScope pkgs.newScope (self: with self; {
|
|||
inherit (pkgs) darwin;
|
||||
};
|
||||
|
||||
spx = callPackage ../development/php-packages/spx { };
|
||||
|
||||
sqlsrv = callPackage ../development/php-packages/sqlsrv { };
|
||||
|
||||
ssh2 = callPackage ../development/php-packages/ssh2 { };
|
||||
|
@ -345,6 +345,8 @@ lib.makeScope pkgs.newScope (self: with self; {
|
|||
xdebug = callPackage ../development/php-packages/xdebug { };
|
||||
|
||||
yaml = callPackage ../development/php-packages/yaml { };
|
||||
} // lib.optionalAttrs config.allowAliases {
|
||||
php-spx = throw "php-spx is deprecated, use spx instead";
|
||||
} // (
|
||||
# Core extensions
|
||||
let
|
||||
|
|
|
@ -2467,7 +2467,8 @@ self: super: with self; {
|
|||
|
||||
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 { };
|
||||
|
||||
|
@ -13942,7 +13943,6 @@ self: super: with self; {
|
|||
callPackage ../development/python-modules/tensorflow {
|
||||
inherit (pkgs.darwin) cctools;
|
||||
inherit (pkgs.config) cudaSupport;
|
||||
inherit (self.tensorflow-bin) cudaPackages;
|
||||
inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
|
||||
flatbuffers-core = pkgs.flatbuffers;
|
||||
flatbuffers-python = self.flatbuffers;
|
||||
|
@ -13975,7 +13975,7 @@ self: super: with self; {
|
|||
|
||||
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 { };
|
||||
|
||||
|
|
Loading…
Reference in a new issue