Merge master into staging-next

This commit is contained in:
github-actions[bot] 2023-12-06 00:02:22 +00:00 committed by GitHub
commit 2622221e95
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
82 changed files with 1510 additions and 428 deletions

View file

@ -19228,6 +19228,12 @@
githubId = 118959; githubId = 118959;
name = "VinyMeuh"; name = "VinyMeuh";
}; };
viperML = {
email = "ayatsfer@gmail.com";
github = "viperML";
githubId = 11395853;
name = "Fernando Ayats";
};
viraptor = { viraptor = {
email = "nix@viraptor.info"; email = "nix@viraptor.info";
github = "viraptor"; github = "viraptor";

View file

@ -27,6 +27,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. --> <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- The `power.ups` module now generates `upsd.conf`, `upsd.users` and `upsmon.conf` automatically from a set of new configuration options. This breaks compatibility with existing `power.ups` setups where these files were created manually. Back up these files before upgrading NixOS.
- `mkosi` was updated to v19. Parts of the user interface have changed. Consult the - `mkosi` was updated to v19. Parts of the user interface have changed. Consult the
[release notes](https://github.com/systemd/mkosi/releases/tag/v19) for a list of changes. [release notes](https://github.com/systemd/mkosi/releases/tag/v19) for a list of changes.

View file

@ -27,31 +27,37 @@ var ${bucket:=nixos-amis}
var ${service_role_name:=vmimport} var ${service_role_name:=vmimport}
# Output of the command: # Output of the command:
# > aws ec2 describe-regions --all-regions --query "Regions[].{Name:RegionName}" --output text | sort # $ nix-shell -I nixpkgs=. -p awscli --run 'aws ec2 describe-regions --region us-east-1 --all-regions --query "Regions[].{Name:RegionName}" --output text | sort | sed -e s/^/\ \ /'
var ${regions:= var ${regions:=
af-south-1 af-south-1
ap-east-1 ap-east-1
ap-northeast-1 ap-northeast-1
ap-northeast-2 ap-northeast-2
ap-northeast-3 ap-northeast-3
ap-south-1 ap-south-1
ap-southeast-1 ap-south-2
ap-southeast-2 ap-southeast-1
ap-southeast-3 ap-southeast-2
ca-central-1 ap-southeast-3
eu-central-1 ap-southeast-4
eu-north-1 ca-central-1
eu-south-1 eu-central-1
eu-west-1 eu-central-2
eu-west-2 eu-north-1
eu-west-3 eu-south-1
me-south-1 eu-south-2
sa-east-1 eu-west-1
us-east-1 eu-west-2
us-east-2 eu-west-3
us-west-1 il-central-1
us-west-2 me-central-1
} me-south-1
sa-east-1
us-east-1
us-east-2
us-west-1
us-west-2
}
regions=($regions) regions=($regions)

View file

@ -1334,6 +1334,7 @@
./services/web-apps/vikunja.nix ./services/web-apps/vikunja.nix
./services/web-apps/whitebophir.nix ./services/web-apps/whitebophir.nix
./services/web-apps/wiki-js.nix ./services/web-apps/wiki-js.nix
./services/web-apps/windmill.nix
./services/web-apps/wordpress.nix ./services/web-apps/wordpress.nix
./services/web-apps/writefreely.nix ./services/web-apps/writefreely.nix
./services/web-apps/youtrack.nix ./services/web-apps/youtrack.nix

View file

@ -6,9 +6,83 @@ with lib;
let let
cfg = config.power.ups; cfg = config.power.ups;
in defaultPort = 3493;
nutFormat = {
type = with lib.types; let
singleAtom = nullOr (oneOf [
bool
int
float
str
]) // {
description = "atom (null, bool, int, float or string)";
};
in attrsOf (oneOf [
singleAtom
(listOf (nonEmptyListOf singleAtom))
]);
generate = name: value:
let
normalizedValue =
lib.mapAttrs (key: val:
if lib.isList val
then forEach val (elem: if lib.isList elem then elem else [elem])
else
if val == null
then []
else [[val]]
) value;
mkValueString = concatMapStringsSep " " (v:
let str = generators.mkValueStringDefault {} v;
in
# Quote the value if it has spaces and isn't already quoted.
if (hasInfix " " str) && !(hasPrefix "\"" str && hasSuffix "\"" str)
then "\"${str}\""
else str
);
in pkgs.writeText name (lib.generators.toKeyValue {
mkKeyValue = generators.mkKeyValueDefault { inherit mkValueString; } " ";
listsAsDuplicateKeys = true;
} normalizedValue);
};
installSecrets = source: target: secrets:
pkgs.writeShellScript "installSecrets.sh" ''
install -m0600 -D ${source} "${target}"
${concatLines (forEach secrets (name: ''
${pkgs.replace-secret}/bin/replace-secret \
'@${name}@' \
"$CREDENTIALS_DIRECTORY/${name}" \
"${target}"
''))}
chmod u-w "${target}"
'';
upsmonConf = nutFormat.generate "upsmon.conf" cfg.upsmon.settings;
upsdUsers = pkgs.writeText "upsd.users" (let
# This looks like INI, but it's not quite because the
# 'upsmon' option lacks a '='. See: man upsd.users
userConfig = name: user: concatStringsSep "\n " (concatLists [
[
"[${name}]"
"password = \"@upsdusers_password_${name}@\""
]
(optional (user.upsmon != null) "upsmon ${user.upsmon}")
(forEach user.actions (action: "actions = ${action}"))
(forEach user.instcmds (instcmd: "instcmds = ${instcmd}"))
]);
in concatStringsSep "\n\n" (mapAttrsToList userConfig cfg.users));
let
upsOptions = {name, config, ...}: upsOptions = {name, config, ...}:
{ {
options = { options = {
@ -95,6 +169,213 @@ let
}; };
}; };
listenOptions = {
options = {
address = mkOption {
type = types.str;
description = lib.mdDoc ''
Address of the interface for `upsd` to listen on.
See `man upsd.conf` for details.
'';
};
port = mkOption {
type = types.port;
default = defaultPort;
description = lib.mdDoc ''
TCP port for `upsd` to listen on.
See `man upsd.conf` for details.
'';
};
};
};
upsdOptions = {
options = {
enable = mkOption {
type = types.bool;
defaultText = literalMD "`true` if `mode` is one of `standalone`, `netserver`";
description = mdDoc "Whether to enable `upsd`.";
};
listen = mkOption {
type = with types; listOf (submodule listenOptions);
default = [];
example = [
{
address = "192.168.50.1";
}
{
address = "::1";
port = 5923;
}
];
description = lib.mdDoc ''
Address of the interface for `upsd` to listen on.
See `man upsd` for details`.
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = lib.mdDoc ''
Additional lines to add to `upsd.conf`.
'';
};
};
config = {
enable = mkDefault (elem cfg.mode [ "standalone" "netserver" ]);
};
};
monitorOptions = { name, config, ... }: {
options = {
system = mkOption {
type = types.str;
default = name;
description = lib.mdDoc ''
Identifier of the UPS to monitor, in this form: `<upsname>[@<hostname>[:<port>]]`
See `upsmon.conf` for details.
'';
};
powerValue = mkOption {
type = types.int;
default = 1;
description = lib.mdDoc ''
Number of power supplies that the UPS feeds on this system.
See `upsmon.conf` for details.
'';
};
user = mkOption {
type = types.str;
description = lib.mdDoc ''
Username from `upsd.users` for accessing this UPS.
See `upsmon.conf` for details.
'';
};
passwordFile = mkOption {
type = types.str;
defaultText = literalMD "power.ups.users.\${user}.passwordFile";
description = lib.mdDoc ''
The full path to a file containing the password from
`upsd.users` for accessing this UPS. The password file
is read on service start.
See `upsmon.conf` for details.
'';
};
type = mkOption {
type = types.str;
default = "master";
description = lib.mdDoc ''
The relationship with `upsd`.
See `upsmon.conf` for details.
'';
};
};
config = {
passwordFile = mkDefault cfg.users.${config.user}.passwordFile;
};
};
upsmonOptions = {
options = {
enable = mkOption {
type = types.bool;
defaultText = literalMD "`true` if `mode` is one of `standalone`, `netserver`, `netclient`";
description = mdDoc "Whether to enable `upsmon`.";
};
monitor = mkOption {
type = with types; attrsOf (submodule monitorOptions);
default = {};
description = lib.mdDoc ''
Set of UPS to monitor. See `man upsmon.conf` for details.
'';
};
settings = mkOption {
type = nutFormat.type;
default = {};
defaultText = literalMD ''
{
MINSUPPLIES = 1;
RUN_AS_USER = "root";
NOTIFYCMD = "''${pkgs.nut}/bin/upssched";
SHUTDOWNCMD = "''${pkgs.systemd}/bin/shutdown now";
}
'';
description = mdDoc "Additional settings to add to `upsmon.conf`.";
example = literalMD ''
{
MINSUPPLIES = 2;
NOTIFYFLAG = [
[ "ONLINE" "SYSLOG+EXEC" ]
[ "ONBATT" "SYSLOG+EXEC" ]
];
}
'';
};
};
config = {
enable = mkDefault (elem cfg.mode [ "standalone" "netserver" "netclient" ]);
settings = {
RUN_AS_USER = "root"; # TODO: replace 'root' by another username.
MINSUPPLIES = mkDefault 1;
NOTIFYCMD = mkDefault "${pkgs.nut}/bin/upssched";
SHUTDOWNCMD = mkDefault "${pkgs.systemd}/bin/shutdown now";
MONITOR = flip mapAttrsToList cfg.upsmon.monitor (name: monitor: with monitor; [ system powerValue user "\"@upsmon_password_${name}@\"" type ]);
};
};
};
userOptions = {
options = {
passwordFile = mkOption {
type = types.str;
description = lib.mdDoc ''
The full path to a file that contains the user's (clear text)
password. The password file is read on service start.
'';
};
actions = mkOption {
type = with types; listOf str;
default = [];
description = lib.mdDoc ''
Allow the user to do certain things with upsd.
See `man upsd.users` for details.
'';
};
instcmds = mkOption {
type = with types; listOf str;
default = [];
description = lib.mdDoc ''
Let the user initiate specific instant commands. Use "ALL" to grant all commands automatically. For the full list of what your UPS supports, use "upscmd -l".
See `man upsd.users` for details.
'';
};
upsmon = mkOption {
type = with types; nullOr str;
default = null;
description = lib.mdDoc ''
Add the necessary actions for a upsmon process to work.
See `man upsd.users` for details.
'';
};
};
};
in in
@ -103,19 +384,14 @@ in
# powerManagement.powerDownCommands # powerManagement.powerDownCommands
power.ups = { power.ups = {
enable = mkOption { enable = mkEnableOption (lib.mdDoc ''
default = false; Enables support for Power Devices, such as Uninterruptible Power
type = with types; bool; Supplies, Power Distribution Units and Solar Controllers.
description = lib.mdDoc '' '');
Enables support for Power Devices, such as Uninterruptible Power
Supplies, Power Distribution Units and Solar Controllers.
'';
};
# This option is not used yet.
mode = mkOption { mode = mkOption {
default = "standalone"; default = "standalone";
type = types.str; type = types.enum [ "none" "standalone" "netserver" "netclient" ];
description = lib.mdDoc '' description = lib.mdDoc ''
The MODE determines which part of the NUT is to be started, and The MODE determines which part of the NUT is to be started, and
which configuration files must be modified. which configuration files must be modified.
@ -148,6 +424,13 @@ in
''; '';
}; };
openFirewall = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Open ports in the firewall for `upsd`.
'';
};
maxStartDelay = mkOption { maxStartDelay = mkOption {
default = 45; default = 45;
@ -161,6 +444,22 @@ in
''; '';
}; };
upsmon = mkOption {
default = {};
description = lib.mdDoc ''
Options for the `upsmon.conf` configuration file.
'';
type = types.submodule upsmonOptions;
};
upsd = mkOption {
default = {};
description = lib.mdDoc ''
Options for the `upsd.conf` configuration file.
'';
type = types.submodule upsdOptions;
};
ups = mkOption { ups = mkOption {
default = {}; default = {};
# see nut/etc/ups.conf.sample # see nut/etc/ups.conf.sample
@ -172,46 +471,95 @@ in
type = with types; attrsOf (submodule upsOptions); type = with types; attrsOf (submodule upsOptions);
}; };
users = mkOption {
default = {};
description = lib.mdDoc ''
Users that can access upsd. See `man upsd.users`.
'';
type = with types; attrsOf (submodule userOptions);
};
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [
(let
totalPowerValue = foldl' add 0 (map (monitor: monitor.powerValue) (attrValues cfg.upsmon.monitor));
minSupplies = cfg.upsmon.settings.MINSUPPLIES;
in mkIf cfg.upsmon.enable {
assertion = totalPowerValue >= minSupplies;
message = ''
`power.ups.upsmon`: Total configured power value (${toString totalPowerValue}) must be at least MINSUPPLIES (${toString minSupplies}).
'';
})
];
environment.systemPackages = [ pkgs.nut ]; environment.systemPackages = [ pkgs.nut ];
systemd.services.upsmon = { networking.firewall = mkIf cfg.openFirewall {
allowedTCPPorts =
if cfg.upsd.listen == []
then [ defaultPort ]
else unique (forEach cfg.upsd.listen (listen: listen.port));
};
systemd.services.upsmon = let
secrets = mapAttrsToList (name: monitor: "upsmon_password_${name}") cfg.upsmon.monitor;
createUpsmonConf = installSecrets upsmonConf "/run/nut/upsmon.conf" secrets;
in {
enable = cfg.upsmon.enable;
description = "Uninterruptible Power Supplies (Monitor)"; description = "Uninterruptible Power Supplies (Monitor)";
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "forking"; serviceConfig = {
script = "${pkgs.nut}/sbin/upsmon"; Type = "forking";
environment.NUT_CONFPATH = "/etc/nut/"; ExecStartPre = "${createUpsmonConf}";
environment.NUT_STATEPATH = "/var/lib/nut/"; ExecStart = "${pkgs.nut}/sbin/upsmon";
ExecReload = "${pkgs.nut}/sbin/upsmon -c reload";
LoadCredential = mapAttrsToList (name: monitor: "upsmon_password_${name}:${monitor.passwordFile}") cfg.upsmon.monitor;
};
environment.NUT_CONFPATH = "/etc/nut";
environment.NUT_STATEPATH = "/var/lib/nut";
}; };
systemd.services.upsd = { systemd.services.upsd = let
secrets = mapAttrsToList (name: user: "upsdusers_password_${name}") cfg.users;
createUpsdUsers = installSecrets upsdUsers "/run/nut/upsd.users" secrets;
in {
enable = cfg.upsd.enable;
description = "Uninterruptible Power Supplies (Daemon)"; description = "Uninterruptible Power Supplies (Daemon)";
after = [ "network.target" "upsmon.service" ]; after = [ "network.target" "upsmon.service" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "forking"; serviceConfig = {
# TODO: replace 'root' by another username. Type = "forking";
script = "${pkgs.nut}/sbin/upsd -u root"; ExecStartPre = "${createUpsdUsers}";
environment.NUT_CONFPATH = "/etc/nut/"; # TODO: replace 'root' by another username.
environment.NUT_STATEPATH = "/var/lib/nut/"; ExecStart = "${pkgs.nut}/sbin/upsd -u root";
ExecReload = "${pkgs.nut}/sbin/upsd -c reload";
LoadCredential = mapAttrsToList (name: user: "upsdusers_password_${name}:${user.passwordFile}") cfg.users;
};
environment.NUT_CONFPATH = "/etc/nut";
environment.NUT_STATEPATH = "/var/lib/nut";
restartTriggers = [
config.environment.etc."nut/upsd.conf".source
];
}; };
systemd.services.upsdrv = { systemd.services.upsdrv = {
enable = cfg.upsd.enable;
description = "Uninterruptible Power Supplies (Register all UPS)"; description = "Uninterruptible Power Supplies (Register all UPS)";
after = [ "upsd.service" ]; after = [ "upsd.service" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
# TODO: replace 'root' by another username.
script = "${pkgs.nut}/bin/upsdrvctl -u root start";
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
RemainAfterExit = true; RemainAfterExit = true;
# TODO: replace 'root' by another username.
ExecStart = "${pkgs.nut}/bin/upsdrvctl -u root start";
}; };
environment.NUT_CONFPATH = "/etc/nut/"; environment.NUT_CONFPATH = "/etc/nut";
environment.NUT_STATEPATH = "/var/lib/nut/"; environment.NUT_STATEPATH = "/var/lib/nut";
}; };
environment.etc = { environment.etc = {
@ -223,24 +571,23 @@ in
'' ''
maxstartdelay = ${toString cfg.maxStartDelay} maxstartdelay = ${toString cfg.maxStartDelay}
${flip concatStringsSep (forEach (attrValues cfg.ups) (ups: ups.summary)) " ${concatStringsSep "\n\n" (forEach (attrValues cfg.ups) (ups: ups.summary))}
'';
"} "nut/upsd.conf".source = pkgs.writeText "upsd.conf"
''
${concatStringsSep "\n" (forEach cfg.upsd.listen (listen: "LISTEN ${listen.address} ${toString listen.port}"))}
${cfg.upsd.extraConfig}
''; '';
"nut/upssched.conf".source = cfg.schedulerRules; "nut/upssched.conf".source = cfg.schedulerRules;
# These file are containing private information and thus should not "nut/upsd.users".source = "/run/nut/upsd.users";
# be stored inside the Nix store. "nut/upsmon.conf".source = "/run/nut/upsmon.conf";
/*
"nut/upsd.conf".source = "";
"nut/upsd.users".source = "";
"nut/upsmon.conf".source = "";
*/
}; };
power.ups.schedulerRules = mkDefault "${pkgs.nut}/etc/upssched.conf.sample"; power.ups.schedulerRules = mkDefault "${pkgs.nut}/etc/upssched.conf.sample";
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d /var/state/ups -" "d /var/state/ups -"
"d /var/lib/nut 700"
]; ];

View file

@ -3,7 +3,6 @@ with lib;
let let
clamavUser = "clamav"; clamavUser = "clamav";
stateDir = "/var/lib/clamav"; stateDir = "/var/lib/clamav";
runDir = "/run/clamav";
clamavGroup = clamavUser; clamavGroup = clamavUser;
cfg = config.services.clamav; cfg = config.services.clamav;
pkg = pkgs.clamav; pkg = pkgs.clamav;
@ -99,6 +98,29 @@ in
''; '';
}; };
}; };
scanner = {
enable = mkEnableOption (lib.mdDoc "ClamAV scanner");
interval = mkOption {
type = types.str;
default = "*-*-* 04:00:00";
description = lib.mdDoc ''
How often clamdscan is invoked. See systemd.time(7) for more
information about the format.
By default this runs using 10 cores at most, be sure to run it at a time of low traffic.
'';
};
scanDirectories = mkOption {
type = with types; listOf str;
default = [ "/home" "/var/lib" "/tmp" "/etc" "/var/tmp" ];
description = lib.mdDoc ''
List of directories to scan.
The default includes everything I could think of that is valid for nixos. Feel free to contribute a PR to add to the default if you see something missing.
'';
};
};
}; };
}; };
@ -117,9 +139,8 @@ in
services.clamav.daemon.settings = { services.clamav.daemon.settings = {
DatabaseDirectory = stateDir; DatabaseDirectory = stateDir;
LocalSocket = "${runDir}/clamd.ctl"; LocalSocket = "/run/clamav/clamd.ctl";
PidFile = "${runDir}/clamd.pid"; PidFile = "/run/clamav/clamd.pid";
TemporaryDirectory = "/tmp";
User = "clamav"; User = "clamav";
Foreground = true; Foreground = true;
}; };
@ -182,7 +203,6 @@ in
ExecStart = "${pkg}/bin/freshclam"; ExecStart = "${pkg}/bin/freshclam";
SuccessExitStatus = "1"; # if databases are up to date SuccessExitStatus = "1"; # if databases are up to date
StateDirectory = "clamav"; StateDirectory = "clamav";
RuntimeDirectory = "clamav";
User = clamavUser; User = clamavUser;
Group = clamavGroup; Group = clamavGroup;
PrivateTmp = "yes"; PrivateTmp = "yes";
@ -204,7 +224,6 @@ in
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
StateDirectory = "clamav"; StateDirectory = "clamav";
RuntimeDirectory = "clamav";
User = clamavUser; User = clamavUser;
Group = clamavGroup; Group = clamavGroup;
PrivateTmp = "yes"; PrivateTmp = "yes";
@ -230,12 +249,31 @@ in
Type = "oneshot"; Type = "oneshot";
ExecStart = "${pkgs.fangfrisch}/bin/fangfrisch --conf ${fangfrischConfigFile} refresh"; ExecStart = "${pkgs.fangfrisch}/bin/fangfrisch --conf ${fangfrischConfigFile} refresh";
StateDirectory = "clamav"; StateDirectory = "clamav";
RuntimeDirectory = "clamav";
User = clamavUser; User = clamavUser;
Group = clamavGroup; Group = clamavGroup;
PrivateTmp = "yes"; PrivateTmp = "yes";
PrivateDevices = "yes"; PrivateDevices = "yes";
}; };
}; };
systemd.timers.clamdscan = mkIf cfg.scanner.enable {
description = "Timer for ClamAV virus scanner";
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = cfg.scanner.interval;
Unit = "clamdscan.service";
};
};
systemd.services.clamdscan = mkIf cfg.scanner.enable {
description = "ClamAV virus scanner";
after = optionals cfg.updater.enable [ "clamav-freshclam.service" ];
wants = optionals cfg.updater.enable [ "clamav-freshclam.service" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkg}/bin/clamdscan --multiscan --fdpass --infected --allmatch ${lib.concatStringsSep " " cfg.scanner.scanDirectories}";
};
};
}; };
} }

View 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";
};
};
};
};
}

View file

@ -1612,7 +1612,7 @@ let
description = lib.mdDoc '' description = lib.mdDoc ''
Each attribute in this set specifies an option in the Each attribute in this set specifies an option in the
`[WireGuardPeer]` section of the unit. See `[WireGuardPeer]` section of the unit. See
{manpage}`systemd.network(5)` for details. {manpage}`systemd.netdev(5)` for details.
''; '';
}; };
}; };

View file

@ -52,7 +52,10 @@ stdenv.mkDerivation (finalAttrs: rec {
nativeBuildInputs = nativeBuildInputs =
[ cmake makeWrapper python310Packages.wrapPython llvmPackages.llvm.dev [ cmake makeWrapper python310Packages.wrapPython llvmPackages.llvm.dev
] ]
++ lib.optionals cudaSupport [ addOpenGLRunpath ] ++ lib.optionals cudaSupport [
addOpenGLRunpath
cudaPackages.cuda_nvcc
]
++ lib.optionals waylandSupport [ pkg-config ]; ++ lib.optionals waylandSupport [ pkg-config ];
buildInputs = buildInputs =
[ boost ffmpeg gettext glew ilmbase [ boost ffmpeg gettext glew ilmbase
@ -87,7 +90,7 @@ stdenv.mkDerivation (finalAttrs: rec {
llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL
]) ])
++ lib.optional jackaudioSupport libjack2 ++ lib.optional jackaudioSupport libjack2
++ lib.optional cudaSupport cudaPackages.cudatoolkit ++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]
++ lib.optional colladaSupport opencollada ++ lib.optional colladaSupport opencollada
++ lib.optional spaceNavSupport libspnav; ++ lib.optional spaceNavSupport libspnav;
pythonPath = with python310Packages; [ numpy requests zstandard ]; pythonPath = with python310Packages; [ numpy requests zstandard ];

View file

@ -24,13 +24,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "mediaelch"; pname = "mediaelch";
version = "2.10.4"; version = "2.10.6";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Komet"; owner = "Komet";
repo = "MediaElch"; repo = "MediaElch";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-gNpnmyUKDXf40+1JmJzNyEPIv/DO8b3CdJAphheEvTU="; hash = "sha256-qc7HaCMAmALY9MoIKmaCWF0cnwBBFDAXwqiBzwzu2bU=";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "cni-plugins"; pname = "cni-plugins";
version = "1.3.0"; version = "1.4.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "containernetworking"; owner = "containernetworking";
repo = "plugins"; repo = "plugins";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-cbmG9wK3yd79jCiNAKcSSx0COyh6CxR1bgIiCO3i++g="; hash = "sha256-goXpNpb5tVOHeskRLw3CivYett3RxYBREAI+S74CMFQ=";
}; };
vendorHash = null; vendorHash = null;

View file

@ -21,14 +21,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "warp"; pname = "warp";
version = "0.6.1"; version = "0.6.2";
src = fetchFromGitLab { src = fetchFromGitLab {
domain = "gitlab.gnome.org"; domain = "gitlab.gnome.org";
owner = "World"; owner = "World";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-Uc9N2kRTpi9cCFskngkiclLpEcp4dtI2mhldG4s/GFY="; hash = "sha256-pntHIY0cScDKhWR6kXp6YrEbBQiQjUId3MrJzy5l+K8=";
}; };
postPatch = '' postPatch = ''
@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
cargoDeps = rustPlatform.fetchCargoTarball { cargoDeps = rustPlatform.fetchCargoTarball {
inherit src; inherit src;
name = "${pname}-${version}"; name = "${pname}-${version}";
hash = "sha256-GN9TjsGBU3D/mc6/XtRAk5pliKRPTQ9f3fMdS6weCaE="; hash = "sha256-Go/a7aVHF1Yt3yIccKJIVeFy5rckXhSKfd13hdhlLUQ=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
meta = { meta = {
description = "Fast and secure file transfer"; description = "Fast and secure file transfer";
homepage = "https://apps.gnome.org/app/app.drey.Warp"; homepage = "https://apps.gnome.org/Warp/";
license = lib.licenses.gpl3Only; license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ dotlambda foo-dogsquared ]; maintainers = with lib.maintainers; [ dotlambda foo-dogsquared ];
platforms = lib.platforms.all; platforms = lib.platforms.all;

View file

@ -9,13 +9,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "last"; pname = "last";
version = "1499"; version = "1518";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "mcfrith"; owner = "mcfrith";
repo = "last"; repo = "last";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-uofXtGGDloM1FxW0PYKKwfDOPlAJiapGVKwd1clFzp8="; hash = "sha256-a6i5BfJhVHkXTLd7SVFxISEB+Kwl7BhjUUkF8ItMOak=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -1,4 +1,14 @@
{ lib, stdenv, fetchurl, cmake, hwloc, fftw, perl, blas, lapack, mpi, cudatoolkit { lib
, stdenv
, fetchurl
, cmake
, hwloc
, fftw
, perl
, blas
, lapack
, mpi
, cudaPackages
, plumed , plumed
, singlePrec ? true , singlePrec ? true
, config , config
@ -9,6 +19,8 @@
}: }:
let let
inherit (cudaPackages.cudaFlags) cudaCapabilities dropDot;
# Select reasonable defaults for all major platforms # Select reasonable defaults for all major platforms
# The possible values are defined in CMakeLists.txt: # The possible values are defined in CMakeLists.txt:
# AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256 # AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256
@ -52,7 +64,7 @@ in stdenv.mkDerivation rec {
nativeBuildInputs = nativeBuildInputs =
[ cmake ] [ cmake ]
++ lib.optional enablePlumed plumed ++ lib.optional enablePlumed plumed
; ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
buildInputs = [ buildInputs = [
fftw fftw
@ -61,13 +73,17 @@ in stdenv.mkDerivation rec {
blas blas
lapack lapack
] ++ lib.optional enableMpi mpi ] ++ lib.optional enableMpi mpi
++ lib.optional enableCuda cudatoolkit ++ lib.optionals enableCuda [
; cudaPackages.cuda_cudart
cudaPackages.libcufft
cudaPackages.cuda_profiler_api
];
propagatedBuildInputs = lib.optional enableMpi mpi; propagatedBuildInputs = lib.optional enableMpi mpi;
propagatedUserEnvPkgs = lib.optional enableMpi mpi; propagatedUserEnvPkgs = lib.optional enableMpi mpi;
cmakeFlags = [ cmakeFlags = [
(lib.cmakeBool "GMX_HWLOC" true)
"-DGMX_SIMD:STRING=${SIMD cpuAcceleration}" "-DGMX_SIMD:STRING=${SIMD cpuAcceleration}"
"-DGMX_OPENMP:BOOL=TRUE" "-DGMX_OPENMP:BOOL=TRUE"
"-DBUILD_SHARED_LIBS=ON" "-DBUILD_SHARED_LIBS=ON"
@ -87,7 +103,13 @@ in stdenv.mkDerivation rec {
else [ else [
"-DGMX_MPI:BOOL=FALSE" "-DGMX_MPI:BOOL=FALSE"
] ]
) ++ lib.optional enableCuda "-DGMX_GPU=CUDA"; ) ++ lib.optionals enableCuda [
"-DGMX_GPU=CUDA"
(lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" (builtins.concatStringsSep ";" (map dropDot cudaCapabilities)))
# Gromacs seems to ignore and override the normal variables, so we add this ad hoc:
(lib.cmakeFeature "GMX_CUDA_TARGET_COMPUTE" (builtins.concatStringsSep ";" (map dropDot cudaCapabilities)))
];
postInstall = '' postInstall = ''
moveToOutput share/cmake $dev moveToOutput share/cmake $dev

View file

@ -5,16 +5,14 @@ npmInstallHook() {
runHook preInstall runHook preInstall
# `npm pack` writes to cache
npm config delete cache
local -r packageOut="$out/lib/node_modules/$(@jq@ --raw-output '.name' package.json)" local -r packageOut="$out/lib/node_modules/$(@jq@ --raw-output '.name' package.json)"
# `npm pack` writes to cache so temporarily override it
while IFS= read -r file; do while IFS= read -r file; do
local dest="$packageOut/$(dirname "$file")" local dest="$packageOut/$(dirname "$file")"
mkdir -p "$dest" mkdir -p "$dest"
cp "${npmWorkspace-.}/$file" "$dest" cp "${npmWorkspace-.}/$file" "$dest"
done < <(@jq@ --raw-output '.[0].files | map(.path) | join("\n")' <<< "$(npm pack --json --dry-run --loglevel=warn --no-foreground-scripts ${npmWorkspace+--workspace=$npmWorkspace} $npmPackFlags "${npmPackFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}")") done < <(@jq@ --raw-output '.[0].files | map(.path) | join("\n")' <<< "$(npm_config_cache="$HOME/.npm" npm pack --json --dry-run --loglevel=warn --no-foreground-scripts ${npmWorkspace+--workspace=$npmWorkspace} $npmPackFlags "${npmPackFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}")")
# Based on code from Python's buildPythonPackage wrap.sh script, for # Based on code from Python's buildPythonPackage wrap.sh script, for
# supporting both the case when makeWrapperArgs is an array and a # supporting both the case when makeWrapperArgs is an array and a

View file

@ -246,7 +246,9 @@ fn main() -> anyhow::Result<()> {
packages.into_par_iter().try_for_each(|package| { packages.into_par_iter().try_for_each(|package| {
eprintln!("{}", package.name); eprintln!("{}", package.name);
let tarball = package.tarball()?; let tarball = package
.tarball()
.map_err(|e| anyhow!("couldn't fetch {} at {}: {e:?}", package.name, package.url))?;
let integrity = package.integrity().map(ToString::to_string); let integrity = package.integrity().map(ToString::to_string);
cache cache

View file

@ -214,29 +214,35 @@ fn to_new_packages(
} }
if let UrlOrString::Url(v) = &package.version { if let UrlOrString::Url(v) = &package.version {
for (scheme, host) in [ if v.scheme() == "npm" {
("github", "github.com"), if let Some(UrlOrString::Url(ref url)) = &package.resolved {
("bitbucket", "bitbucket.org"), package.version = UrlOrString::Url(url.clone());
("gitlab", "gitlab.com"), }
] { } else {
if v.scheme() == scheme { for (scheme, host) in [
package.version = { ("github", "github.com"),
let mut new_url = initial_url.clone(); ("bitbucket", "bitbucket.org"),
("gitlab", "gitlab.com"),
] {
if v.scheme() == scheme {
package.version = {
let mut new_url = initial_url.clone();
new_url.set_host(Some(host))?; new_url.set_host(Some(host))?;
if v.path().ends_with(".git") { if v.path().ends_with(".git") {
new_url.set_path(v.path()); new_url.set_path(v.path());
} else { } else {
new_url.set_path(&format!("{}.git", v.path())); new_url.set_path(&format!("{}.git", v.path()));
} }
new_url.set_fragment(v.fragment()); new_url.set_fragment(v.fragment());
UrlOrString::Url(new_url) UrlOrString::Url(new_url)
}; };
break; break;
}
} }
} }
} }
@ -266,7 +272,8 @@ fn get_initial_url() -> anyhow::Result<Url> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::{ use super::{
get_initial_url, to_new_packages, Hash, HashCollection, OldPackage, Package, UrlOrString, get_initial_url, packages, to_new_packages, Hash, HashCollection, OldPackage, Package,
UrlOrString,
}; };
use std::{ use std::{
cmp::Ordering, cmp::Ordering,
@ -328,4 +335,36 @@ mod tests {
Some(Hash(String::from("sha512-foo"))) Some(Hash(String::from("sha512-foo")))
); );
} }
#[test]
fn parse_lockfile_correctly() {
let packages = packages(
r#"{
"name": "node-ddr",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"string-width-cjs": {
"version": "npm:string-width@4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
}
}
}"#).unwrap();
assert_eq!(packages.len(), 1);
assert_eq!(
packages[0].resolved,
Some(UrlOrString::Url(
Url::parse("https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz")
.unwrap()
))
);
}
} }

View file

@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem 'maid', '~> 0.10.0'
gem 'rake'

View 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

View 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";
};
}

View 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;
};
}

View 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 ]
''

View 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 ];
};
}

View file

@ -18,6 +18,7 @@ php.buildComposerProject (finalAttrs: {
description = "PHP Unit Testing framework"; description = "PHP Unit Testing framework";
homepage = "https://phpunit.de"; homepage = "https://phpunit.de";
license = lib.licenses.bsd3; license = lib.licenses.bsd3;
mainProgram = "phpunit";
maintainers = [ lib.maintainers.onny ] ++ lib.teams.php.members; maintainers = [ lib.maintainers.onny ] ++ lib.teams.php.members;
}; };
}) })

View file

@ -146,7 +146,7 @@ rustPlatform.buildRustPackage {
wrapProgram "$out/bin/windmill" \ wrapProgram "$out/bin/windmill" \
--prefix PATH : ${lib.makeBinPath [go pythonEnv deno nsjail bash]} \ --prefix PATH : ${lib.makeBinPath [go pythonEnv deno nsjail bash]} \
--prefix LD_LIBRARY_PATH : "${stdenv.cc.cc.lib}/lib" \ --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [stdenv.cc.cc.lib]} \
--set PYTHON_PATH "${pythonEnv}/bin/python3" \ --set PYTHON_PATH "${pythonEnv}/bin/python3" \
--set GO_PATH "${go}/bin/go" \ --set GO_PATH "${go}/bin/go" \
--set DENO_PATH "${deno}/bin/deno" \ --set DENO_PATH "${deno}/bin/deno" \

View file

@ -166,7 +166,7 @@ rec {
noto-fonts-color-emoji = noto-fonts-color-emoji =
let let
version = "2.038"; version = "2.042";
emojiPythonEnv = emojiPythonEnv =
buildPackages.python3.withPackages (p: with p; [ fonttools nototools ]); buildPackages.python3.withPackages (p: with p; [ fonttools nototools ]);
in in
@ -178,7 +178,7 @@ rec {
owner = "googlefonts"; owner = "googlefonts";
repo = "noto-emoji"; repo = "noto-emoji";
rev = "v${version}"; rev = "v${version}";
sha256 = "1rgmcc6nqq805iqr8kvxxlk5cf50q714xaxk3ld6rjrd69kb8ix9"; hash = "sha256-otJQMXrBIPrxD1vCdgcrZ2h1a9XAMbqEBFumjz1XJ54=";
}; };
depsBuildBuild = [ depsBuildBuild = [

View file

@ -23,7 +23,6 @@
, vte , vte
, wrapGAppsHook , wrapGAppsHook
, xdg-utils , xdg-utils
, xprop
}: }:
let let
# Helper method to reduce redundancy # Helper method to reduce redundancy
@ -137,12 +136,6 @@ super: lib.trivial.pipe super [
]; ];
})) }))
(patchExtension "unite@hardpixel.eu" (old: {
buildInputs = [ xprop ];
meta.maintainers = with lib.maintainers; [ rhoriguchi ];
}))
(patchExtension "x11gestures@joseexposito.github.io" (old: { (patchExtension "x11gestures@joseexposito.github.io" (old: {
# Extension can't find Touchegg # Extension can't find Touchegg
# https://github.com/NixOS/nixpkgs/issues/137621 # https://github.com/NixOS/nixpkgs/issues/137621

View file

@ -16,6 +16,8 @@
"taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { }; "taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { };
"tilingnome@rliang.github.com" = callPackage ./tilingnome { }; "tilingnome@rliang.github.com" = callPackage ./tilingnome { };
"TopIcons@phocean.net" = callPackage ./topicons-plus { }; "TopIcons@phocean.net" = callPackage ./topicons-plus { };
# Can be removed when https://github.com/hardpixel/unite-shell/issues/353 resolved
"unite@hardpixel.eu" = callPackage ./unite { };
"valent@andyholmes.ca" = callPackage ./valent { }; "valent@andyholmes.ca" = callPackage ./valent { };
"window-corner-preview@fabiomereu.it" = callPackage ./window-corner-preview { }; "window-corner-preview@fabiomereu.it" = callPackage ./window-corner-preview { };
} }

View 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";
};
}

View file

@ -14,10 +14,10 @@
mkXfceDerivation rec { mkXfceDerivation rec {
category = "panel-plugins"; category = "panel-plugins";
pname = "xfce4-cpugraph-plugin"; pname = "xfce4-cpugraph-plugin";
version = "1.2.8"; version = "1.2.10";
rev-prefix = "xfce4-cpugraph-plugin-"; rev-prefix = "xfce4-cpugraph-plugin-";
odd-unstable = false; odd-unstable = false;
sha256 = "sha256-GNoODnw9Z9MTlvxCOTeZt61A/0AGhMwjrRGdM35XU+M="; sha256 = "sha256-VPelWTtFHmU4ZgWLTzZKbtmQ4LOtVwJvpLG9rHtGoNs=";
buildInputs = [ buildInputs = [
exo exo

View file

@ -54,11 +54,28 @@ final: prev: let
{ {
name = "setup-cuda-hook"; name = "setup-cuda-hook";
# Point NVCC at a compatible compiler
substitutions.ccRoot = "${backendStdenv.cc}"; substitutions.ccRoot = "${backendStdenv.cc}";
# Required in addition to ccRoot as otherwise bin/gcc is looked up # Required in addition to ccRoot as otherwise bin/gcc is looked up
# when building CMakeCUDACompilerId.cu # when building CMakeCUDACompilerId.cu
substitutions.ccFullPath = "${backendStdenv.cc}/bin/${backendStdenv.cc.targetPrefix}c++"; substitutions.ccFullPath = "${backendStdenv.cc}/bin/${backendStdenv.cc.targetPrefix}c++";
# Required by cmake's enable_language(CUDA) to build a test program
# When implementing cross-compilation support: this is
# final.pkgs.targetPackages.cudaPackages.cuda_cudart
# Given the multiple-outputs each CUDA redist has, we can specify the exact components we
# need from the package. CMake requires:
# - the cuda_runtime.h header, which is in the dev output
# - the dynamic library, which is in the lib output
# - the static library, which is in the static output
substitutions.cudartFlags = let cudart = final.cuda_cudart; in
builtins.concatStringsSep " " (final.lib.optionals (final ? cuda_cudart) ([
"-I${final.lib.getDev cudart}/include"
"-L${final.lib.getLib cudart}/lib"
] ++ final.lib.optionals (builtins.elem "static" cudart.outputs) [
"-L${cudart.static}/lib"
]));
} }
./hooks/setup-cuda-hook.sh) ./hooks/setup-cuda-hook.sh)
{ }); { });

View file

@ -1,5 +1,8 @@
# shellcheck shell=bash # shellcheck shell=bash
# Only run the hook from nativeBuildInputs
(( "$hostOffset" == -1 && "$targetOffset" == 0)) || return 0
echo Sourcing setup-cuda-hook >&2 echo Sourcing setup-cuda-hook >&2
extendCUDAToolkit_ROOT() { extendCUDAToolkit_ROOT() {
@ -55,8 +58,9 @@ setupCUDAToolkitCompilers() {
# CMake's enable_language(CUDA) runs a compiler test and it doesn't account for # CMake's enable_language(CUDA) runs a compiler test and it doesn't account for
# CUDAToolkit_ROOT. We have to help it locate libcudart # CUDAToolkit_ROOT. We have to help it locate libcudart
if [[ -z "${nvccDontPrependCudartFlags-}" ]] ; then local cudartFlags="@cudartFlags@"
export NVCC_APPEND_FLAGS+=" -L@cudartLib@/lib -L@cudartStatic@/lib -I@cudartInclude@/include" if [[ -z "${nvccDontPrependCudartFlags-}" ]] && [[ -n "${cudartFlags:-}" ]] ; then
export NVCC_APPEND_FLAGS+=" $cudartFlags"
fi fi
} }

View file

@ -51,37 +51,14 @@ in
] ]
); );
cuda_nvcc = prev.cuda_nvcc.overrideAttrs (_: { cuda_nvcc = prev.cuda_nvcc.overrideAttrs (oldAttrs: {
# Required by cmake's enable_language(CUDA) to build a test program propagatedBuildInputs = [
# When implementing cross-compilation support: this is
# final.pkgs.targetPackages.cudaPackages.cuda_cudart
env = {
# Given the multiple-outputs each CUDA redist has, we can specify the exact components we
# need from the package. CMake requires:
# - the cuda_runtime.h header, which is in the dev output
# - the dynamic library, which is in the lib output
# - the static library, which is in the static output
cudartInclude = "${final.cuda_cudart.dev}";
cudartLib = "${final.cuda_cudart.lib}";
cudartStatic = "${final.cuda_cudart.static}";
};
# Point NVCC at a compatible compiler
# Desiredata: whenever a package (e.g. magma) adds cuda_nvcc to
# nativeBuildInputs (offsets `(-1, 0)`), magma should also source the
# setupCudaHook, i.e. we want it the hook to be propagated into the
# same nativeBuildInputs.
#
# Logically, cuda_nvcc should include the hook in depsHostHostPropagated,
# so that the final offsets for the propagated hook would be `(-1, 0) +
# (0, 0) = (-1, 0)`.
#
# In practice, TargetTarget appears to work:
# https://gist.github.com/fd80ff142cd25e64603618a3700e7f82
depsTargetTargetPropagated = [
final.setupCudaHook final.setupCudaHook
]; ];
meta = (oldAttrs.meta or { }) // {
mainProgram = "nvcc";
};
}); });
cuda_nvprof = prev.cuda_nvprof.overrideAttrs (oldAttrs: { cuda_nvprof = prev.cuda_nvprof.overrideAttrs (oldAttrs: {

View file

@ -1,12 +1,13 @@
{ autoAddOpenGLRunpathHook { autoAddOpenGLRunpathHook
, backendStdenv , backendStdenv
, cmake , cmake
, cuda_cccl , cuda_cccl ? null
, cuda_cudart , cuda_cudart ? null
, cudaFlags , cudaFlags
, cuda_nvcc , cuda_nvcc ? null
, cudatoolkit ? null
, lib , lib
, libcublas , libcublas ? null
, setupCudaHook , setupCudaHook
, stdenv , stdenv
}: }:
@ -17,23 +18,24 @@ backendStdenv.mkDerivation {
src = ./.; src = ./.;
buildInputs = [ buildInputs = lib.optionals (cuda_cudart != null) [
libcublas libcublas
cuda_cudart cuda_cudart
cuda_cccl cuda_cccl
] ++ lib.optionals (cuda_cudart == null) [
cudatoolkit
]; ];
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
# NOTE: this needs to be pkgs.buildPackages.cudaPackages_XX_Y.cuda_nvcc for
# cross-compilation to work. This should work automatically once we move to
# spliced scopes. Delete this comment once that happens
cuda_nvcc
# Alternatively, we could remove the propagated hook from cuda_nvcc and add # Alternatively, we could remove the propagated hook from cuda_nvcc and add
# directly: # directly:
# setupCudaHook # setupCudaHook
autoAddOpenGLRunpathHook autoAddOpenGLRunpathHook
] ++ lib.optionals (cuda_nvcc != null) [
cuda_nvcc
] ++ lib.optionals (cuda_nvcc == null) [
cudatoolkit
]; ];
cmakeFlags = [ cmakeFlags = [

View file

@ -57,6 +57,7 @@ stdenv.mkDerivation rec {
buildInputs = lib.optionals withMkl [ buildInputs = lib.optionals withMkl [
mkl mkl
] ++ lib.optionals withCUDA [ ] ++ lib.optionals withCUDA [
cudaPackages.cuda_cccl # <nv/target> required by the fp16 headers in cudart
cudaPackages.cuda_cudart cudaPackages.cuda_cudart
cudaPackages.libcublas cudaPackages.libcublas
cudaPackages.libcurand cudaPackages.libcurand

View file

@ -22,12 +22,13 @@ stdenv.mkDerivation rec {
]; ];
# XXX: libX11 is not directly needed, but needed as a propagated dep of Cairo. # XXX: libX11 is not directly needed, but needed as a propagated dep of Cairo.
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ]
++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
buildInputs = [ expat ncurses ] buildInputs = [ expat ncurses ]
++ lib.optionals x11Support [ cairo libX11 ] ++ lib.optionals x11Support [ cairo libX11 ]
++ lib.optionals stdenv.isLinux [ numactl ] ++ lib.optionals stdenv.isLinux [ numactl ]
++ lib.optional enableCuda cudaPackages.cudatoolkit; ++ lib.optionals enableCuda [ cudaPackages.cuda_cudart ];
# Since `libpci' appears in `hwloc.pc', it must be propagated. # Since `libpci' appears in `hwloc.pc', it must be propagated.
propagatedBuildInputs = lib.optional stdenv.isLinux pciutils; propagatedBuildInputs = lib.optional stdenv.isLinux pciutils;

View file

@ -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 ];
};
}

View file

@ -476,6 +476,8 @@ effectiveStdenv.mkDerivation {
''; '';
passthru = { passthru = {
cudaSupport = enableCuda;
tests = { tests = {
inherit (gst_all_1) gst-plugins-bad; inherit (gst_all_1) gst-plugins-bad;
} }

View file

@ -3,7 +3,7 @@
, libpsm2, libfabric, pmix, ucx, ucc , libpsm2, libfabric, pmix, ucx, ucc
, config , config
# Enable CUDA support # Enable CUDA support
, cudaSupport ? config.cudaSupport, cudatoolkit , cudaSupport ? config.cudaSupport, cudaPackages
# Enable the Sun Grid Engine bindings # Enable the Sun Grid Engine bindings
, enableSGE ? false , enableSGE ? false
@ -18,12 +18,7 @@
, fortranSupport ? true , fortranSupport ? true
}: }:
let stdenv.mkDerivation rec {
cudatoolkit_joined = symlinkJoin {
name = "${cudatoolkit.name}-unsplit";
paths = [ cudatoolkit.out cudatoolkit.lib ];
};
in stdenv.mkDerivation rec {
pname = "openmpi"; pname = "openmpi";
version = "4.1.6"; version = "4.1.6";
@ -47,12 +42,13 @@ in stdenv.mkDerivation rec {
buildInputs = [ zlib ] buildInputs = [ zlib ]
++ lib.optionals stdenv.isLinux [ libnl numactl pmix ucx ucc ] ++ lib.optionals stdenv.isLinux [ libnl numactl pmix ucx ucc ]
++ lib.optionals cudaSupport [ cudatoolkit ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]
++ [ libevent hwloc ] ++ [ libevent hwloc ]
++ lib.optional (stdenv.isLinux || stdenv.isFreeBSD) rdma-core ++ lib.optional (stdenv.isLinux || stdenv.isFreeBSD) rdma-core
++ lib.optionals fabricSupport [ libpsm2 libfabric ]; ++ lib.optionals fabricSupport [ libpsm2 libfabric ];
nativeBuildInputs = [ perl ] nativeBuildInputs = [ perl ]
++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ]
++ lib.optionals fortranSupport [ gfortran ]; ++ lib.optionals fortranSupport [ gfortran ];
configureFlags = lib.optional (!cudaSupport) "--disable-mca-dso" configureFlags = lib.optional (!cudaSupport) "--disable-mca-dso"
@ -67,7 +63,7 @@ in stdenv.mkDerivation rec {
# TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build # TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build
# https://github.com/openucx/ucx # https://github.com/openucx/ucx
# https://www.open-mpi.org/faq/?category=buildcuda # https://www.open-mpi.org/faq/?category=buildcuda
++ lib.optionals cudaSupport [ "--with-cuda=${cudatoolkit_joined}" "--enable-dlopen" ] ++ lib.optionals cudaSupport [ "--with-cuda=${cudaPackages.cuda_cudart}" "--enable-dlopen" ]
++ lib.optionals fabricSupport [ "--with-psm2=${lib.getDev libpsm2}" "--with-libfabric=${lib.getDev libfabric}" ] ++ lib.optionals fabricSupport [ "--with-psm2=${lib.getDev libpsm2}" "--with-libfabric=${lib.getDev libfabric}" ]
; ;
@ -98,7 +94,8 @@ in stdenv.mkDerivation rec {
doCheck = true; doCheck = true;
passthru = { passthru = {
inherit cudaSupport cudatoolkit; inherit cudaSupport;
cudatoolkit = cudaPackages.cudatoolkit; # For backward compatibility only
}; };
meta = with lib; { meta = with lib; {

View file

@ -1,9 +1,7 @@
{ config, lib, stdenv, fetchFromGitHub, cmake, pkg-config, xorg, libGLU { config, lib, stdenv, fetchFromGitHub, cmake, pkg-config, xorg, libGLU
, libGL, glew, ocl-icd, python3 , libGL, glew, ocl-icd, python3
, cudaSupport ? config.cudaSupport, cudatoolkit , cudaSupport ? config.cudaSupport
# For visibility mostly. The whole approach to cuda architectures and capabilities , cudaPackages
# will be reworked soon.
, cudaArch ? "compute_37"
, openclSupport ? !cudaSupport , openclSupport ? !cudaSupport
, darwin , darwin
}: }:
@ -21,7 +19,11 @@ stdenv.mkDerivation rec {
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [
cmake
pkg-config
cudaPackages.cuda_nvcc
];
buildInputs = buildInputs =
[ libGLU libGL python3 [ libGLU libGL python3
# FIXME: these are not actually needed, but the configure script wants them. # FIXME: these are not actually needed, but the configure script wants them.
@ -30,21 +32,31 @@ stdenv.mkDerivation rec {
] ]
++ lib.optional (openclSupport && !stdenv.isDarwin) ocl-icd ++ lib.optional (openclSupport && !stdenv.isDarwin) ocl-icd
++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [OpenCL Cocoa CoreVideo IOKit AppKit AGL ]) ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [OpenCL Cocoa CoreVideo IOKit AppKit AGL ])
++ lib.optional cudaSupport cudatoolkit; ++ lib.optional cudaSupport [
cudaPackages.cuda_cudart
];
# It's important to set OSD_CUDA_NVCC_FLAGS,
# because otherwise OSD might piggyback unwanted architectures:
# https://github.com/PixarAnimationStudios/OpenSubdiv/blob/7d0ab5530feef693ac0a920585b5c663b80773b3/CMakeLists.txt#L602
preConfigure = lib.optionalString cudaSupport ''
cmakeFlagsArray+=(
-DOSD_CUDA_NVCC_FLAGS="${lib.concatStringsSep " " cudaPackages.cudaFlags.gencode}"
)
'';
cmakeFlags = cmakeFlags =
[ "-DNO_TUTORIALS=1" [ "-DNO_TUTORIALS=1"
"-DNO_REGRESSION=1" "-DNO_REGRESSION=1"
"-DNO_EXAMPLES=1" "-DNO_EXAMPLES=1"
"-DNO_METAL=1" # dont have metal in apple sdk "-DNO_METAL=1" # dont have metal in apple sdk
(lib.cmakeBool "NO_OPENCL" (!openclSupport))
(lib.cmakeBool "NO_CUDA" (!cudaSupport))
] ++ lib.optionals (!stdenv.isDarwin) [ ] ++ lib.optionals (!stdenv.isDarwin) [
"-DGLEW_INCLUDE_DIR=${glew.dev}/include" "-DGLEW_INCLUDE_DIR=${glew.dev}/include"
"-DGLEW_LIBRARY=${glew.dev}/lib" "-DGLEW_LIBRARY=${glew.dev}/lib"
] ++ lib.optionals cudaSupport [ ] ++ lib.optionals cudaSupport [
"-DOSD_CUDA_NVCC_FLAGS=--gpu-architecture=${cudaArch}"
"-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc"
] ++ lib.optionals (!openclSupport) [ ] ++ lib.optionals (!openclSupport) [
"-DNO_OPENCL=1"
]; ];
preBuild = let maxBuildCores = 16; in lib.optionalString cudaSupport '' preBuild = let maxBuildCores = 16; in lib.optionalString cudaSupport ''

View file

@ -3,6 +3,7 @@
, fetchFromGitHub , fetchFromGitHub
, fetchurl , fetchurl
, substituteAll , substituteAll
, cudaSupport ? opencv.cudaSupport or false
# build # build
, addOpenGLRunpath , addOpenGLRunpath
@ -21,6 +22,7 @@
, protobuf , protobuf
, pugixml , pugixml
, tbb , tbb
, cudaPackages
}: }:
let let
@ -68,6 +70,8 @@ stdenv.mkDerivation rec {
setuptools setuptools
])) ]))
shellcheck shellcheck
] ++ lib.optionals cudaSupport [
cudaPackages.cuda_nvcc
]; ];
patches = [ patches = [
@ -133,6 +137,8 @@ stdenv.mkDerivation rec {
protobuf protobuf
pugixml pugixml
tbb tbb
] ++ lib.optionals cudaSupport [
cudaPackages.cuda_cudart
]; ];
enableParallelBuilding = true; enableParallelBuilding = true;

View file

@ -9,13 +9,13 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "qtutilities"; pname = "qtutilities";
version = "6.13.2"; version = "6.13.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Martchus"; owner = "Martchus";
repo = "qtutilities"; repo = "qtutilities";
rev = "v${finalAttrs.version}"; rev = "v${finalAttrs.version}";
hash = "sha256-Kdvr3T9hynLCj99+Rc1L0Gq7xkiM0a6xovuqhAncrek="; hash = "sha256-/3PEbUMphblB3HgLkDb4l7GykuXL/ZOsKBrs8h72uwE=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -1,7 +1,11 @@
{ stdenv { stdenv
, lib , lib
, libPath , libPath
, cuda_cudart
, cudaMajorVersion
, cuda_nvcc
, cudatoolkit , cudatoolkit
, libcublas
, fetchurl , fetchurl
, autoPatchelfHook , autoPatchelfHook
, addOpenGLRunpath , addOpenGLRunpath
@ -17,7 +21,7 @@ let
in in
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "cudatoolkit-${cudatoolkit.majorVersion}-cutensor"; pname = "cutensor-cu${cudaMajorVersion}";
inherit version; inherit version;
src = fetchurl { src = fetchurl {
@ -32,20 +36,27 @@ stdenv.mkDerivation {
nativeBuildInputs = [ nativeBuildInputs = [
autoPatchelfHook autoPatchelfHook
addOpenGLRunpath addOpenGLRunpath
cuda_nvcc
]; ];
buildInputs = [ buildInputs = [
stdenv.cc.cc.lib stdenv.cc.cc.lib
]; cuda_cudart
libcublas
propagatedBuildInputs = [
cudatoolkit
]; ];
# Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found. # Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found.
# See the explanation in addOpenGLRunpath. # See the explanation in addOpenGLRunpath.
installPhase = '' installPhase = ''
mkdir -p "$out" "$dev" mkdir -p "$out" "$dev"
if [[ ! -d "${libPath}" ]] ; then
echo "Cutensor: ${libPath} does not exist, only found:" >&2
find "$(dirname ${libPath})"/ -maxdepth 1 >&2
echo "This cutensor release might not support your cudatoolkit version" >&2
exit 1
fi
mv include "$dev" mv include "$dev"
mv ${libPath} "$out/lib" mv ${libPath} "$out/lib"
@ -58,7 +69,7 @@ stdenv.mkDerivation {
''; '';
passthru = { passthru = {
inherit cudatoolkit; cudatoolkit = lib.warn "cutensor.passthru: cudaPackages.cudatoolkit is deprecated" cudatoolkit;
majorVersion = lib.versions.major version; majorVersion = lib.versions.major version;
}; };
@ -66,7 +77,11 @@ stdenv.mkDerivation {
description = "cuTENSOR: A High-Performance CUDA Library For Tensor Primitives"; description = "cuTENSOR: A High-Performance CUDA Library For Tensor Primitives";
homepage = "https://developer.nvidia.com/cutensor"; homepage = "https://developer.nvidia.com/cutensor";
sourceProvenance = with sourceTypes; [ binaryNativeCode ]; sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree; license = licenses.unfreeRedistributable // {
shortName = "cuTENSOR EULA";
name = "cuTENSOR SUPPLEMENT TO SOFTWARE LICENSE AGREEMENT FOR NVIDIA SOFTWARE DEVELOPMENT KITS";
url = "https://docs.nvidia.com/cuda/cutensor/license.html";
};
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ obsidian-systems-maintenance ]; maintainers = with maintainers; [ obsidian-systems-maintenance ];
}; };

View file

@ -6,8 +6,6 @@
, cmake , cmake
, cudaPackages ? { } , cudaPackages ? { }
, cudaSupport ? config.cudaSupport , cudaSupport ? config.cudaSupport
, nvidia-thrust
, useThrustSourceBuild ? true
, pythonSupport ? true , pythonSupport ? true
, pythonPackages , pythonPackages
, llvmPackages , llvmPackages
@ -27,8 +25,6 @@
, runCommand , runCommand
}@inputs: }@inputs:
assert cudaSupport -> nvidia-thrust.cudaSupport;
let let
pname = "faiss"; pname = "faiss";
version = "1.7.4"; version = "1.7.4";
@ -44,9 +40,6 @@ let
cuda_cudart # cuda_runtime.h cuda_cudart # cuda_runtime.h
libcublas libcublas
libcurand libcurand
] ++ lib.optionals useThrustSourceBuild [
nvidia-thrust
] ++ lib.optionals (!useThrustSourceBuild) [
cuda_cccl cuda_cccl
] ++ lib.optionals (cudaPackages ? cuda_profiler_api) [ ] ++ lib.optionals (cudaPackages ? cuda_profiler_api) [
cuda_profiler_api # cuda_profiler_api.h cuda_profiler_api # cuda_profiler_api.h

View file

@ -17,16 +17,32 @@ final: prev: let
isSupported = fileData: elem cudaVersion fileData.supportedCudaVersions; isSupported = fileData: elem cudaVersion fileData.supportedCudaVersions;
# Return the first file that is supported. In practice there should only ever be one anyway. # Return the first file that is supported. In practice there should only ever be one anyway.
supportedFile = files: findFirst isSupported null files; supportedFile = files: findFirst isSupported null files;
# Supported versions with versions as keys and file as value
supportedVersions = filterAttrs (version: file: file !=null ) (mapAttrs (version: files: supportedFile files) tensorRTVersions);
# Compute versioned attribute name to be used in this package set # Compute versioned attribute name to be used in this package set
computeName = version: "tensorrt_${toUnderscore version}"; computeName = version: "tensorrt_${toUnderscore version}";
# Supported versions with versions as keys and file as value
supportedVersions = lib.recursiveUpdate
{
tensorrt = {
enable = false;
fileVersionCuda = null;
fileVersionCudnn = null;
fullVersion = "0.0.0";
sha256 = null;
tarball = null;
supportedCudaVersions = [ ];
};
}
(mapAttrs' (version: attrs: nameValuePair (computeName version) attrs)
(filterAttrs (version: file: file != null) (mapAttrs (version: files: supportedFile files) tensorRTVersions)));
# Add all supported builds as attributes # Add all supported builds as attributes
allBuilds = mapAttrs' (version: file: nameValuePair (computeName version) (buildTensorRTPackage (removeAttrs file ["fileVersionCuda"]))) supportedVersions; allBuilds = mapAttrs (name: file: buildTensorRTPackage (removeAttrs file ["fileVersionCuda"])) supportedVersions;
# Set the default attributes, e.g. tensorrt = tensorrt_8_4; # Set the default attributes, e.g. tensorrt = tensorrt_8_4;
defaultBuild = { "tensorrt" = if allBuilds ? ${computeName tensorRTDefaultVersion} defaultName = computeName tensorRTDefaultVersion;
then allBuilds.${computeName tensorRTDefaultVersion} defaultBuild = lib.optionalAttrs (allBuilds ? ${defaultName}) { tensorrt = allBuilds.${computeName tensorRTDefaultVersion}; };
else throw "tensorrt-${tensorRTDefaultVersion} does not support your cuda version ${cudaVersion}"; };
in { in {
inherit buildTensorRTPackage; inherit buildTensorRTPackage;
} // allBuilds // defaultBuild; } // allBuilds // defaultBuild;

View file

@ -8,20 +8,22 @@
, cudnn , cudnn
}: }:
{ fullVersion { enable ? true
, fullVersion
, fileVersionCudnn ? null , fileVersionCudnn ? null
, tarball , tarball
, sha256 , sha256
, supportedCudaVersions ? [ ] , supportedCudaVersions ? [ ]
}: }:
assert fileVersionCudnn == null || lib.assertMsg (lib.strings.versionAtLeast cudnn.version fileVersionCudnn) assert !enable || fileVersionCudnn == null || lib.assertMsg (lib.strings.versionAtLeast cudnn.version fileVersionCudnn)
"This version of TensorRT requires at least cuDNN ${fileVersionCudnn} (current version is ${cudnn.version})"; "This version of TensorRT requires at least cuDNN ${fileVersionCudnn} (current version is ${cudnn.version})";
backendStdenv.mkDerivation rec { backendStdenv.mkDerivation rec {
pname = "cudatoolkit-${cudatoolkit.majorVersion}-tensorrt"; pname = "cudatoolkit-${cudatoolkit.majorVersion}-tensorrt";
version = fullVersion; version = fullVersion;
src = requireFile rec { src = if !enable then null else
requireFile rec {
name = tarball; name = tarball;
inherit sha256; inherit sha256;
message = '' message = ''
@ -38,13 +40,13 @@ backendStdenv.mkDerivation rec {
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
nativeBuildInputs = [ nativeBuildInputs = lib.optionals enable [
autoPatchelfHook autoPatchelfHook
autoAddOpenGLRunpathHook autoAddOpenGLRunpathHook
]; ];
# Used by autoPatchelfHook # Used by autoPatchelfHook
buildInputs = [ buildInputs = lib.optionals enable [
backendStdenv.cc.cc.lib # libstdc++ backendStdenv.cc.cc.lib # libstdc++
cudatoolkit cudatoolkit
cudnn cudnn
@ -75,6 +77,7 @@ backendStdenv.mkDerivation rec {
''; '';
passthru.stdenv = backendStdenv; passthru.stdenv = backendStdenv;
passthru.enable = enable;
meta = with lib; { meta = with lib; {
# Check that the cudatoolkit version satisfies our min/max constraints (both # Check that the cudatoolkit version satisfies our min/max constraints (both
@ -82,7 +85,7 @@ backendStdenv.mkDerivation rec {
# official version constraints (as recorded in default.nix). In some cases # official version constraints (as recorded in default.nix). In some cases
# you _may_ be able to smudge version constraints, just know that you're # you _may_ be able to smudge version constraints, just know that you're
# embarking into unknown and unsupported territory when doing so. # embarking into unknown and unsupported territory when doing so.
broken = !(elem cudaVersion supportedCudaVersions); broken = !enable || !(elem cudaVersion supportedCudaVersions);
description = "TensorRT: a high-performance deep learning interface"; description = "TensorRT: a high-performance deep learning interface";
homepage = "https://developer.nvidia.com/tensorrt"; homepage = "https://developer.nvidia.com/tensorrt";
license = licenses.unfree; license = licenses.unfree;

View file

@ -14,10 +14,15 @@
inherit (cudaPackages) backendStdenv cudaFlags; inherit (cudaPackages) backendStdenv cudaFlags;
cuda-common-redist = with cudaPackages; [ cuda-common-redist = with cudaPackages; [
cuda_cudart # cuda_runtime.h cuda_cudart.dev # cuda_runtime.h
libcublas # cublas_v2.h cuda_cudart.lib
libcusolver # cusolverDn.h cuda_cccl.dev # <nv/target>
libcusparse # cusparse.h libcublas.dev # cublas_v2.h
libcublas.lib
libcusolver.dev # cusolverDn.h
libcusolver.lib
libcusparse.dev # cusparse.h
libcusparse.lib
]; ];
cuda-native-redist = symlinkJoin { cuda-native-redist = symlinkJoin {

View file

@ -1,7 +1,7 @@
{ stdenv, lib, fetchFromGitHub, libtool, automake, autoconf, ucx { stdenv, lib, fetchFromGitHub, libtool, automake, autoconf, ucx
, config , config
, enableCuda ? config.cudaSupport , enableCuda ? config.cudaSupport
, cudatoolkit , cudaPackages
, enableAvx ? stdenv.hostPlatform.avxSupport , enableAvx ? stdenv.hostPlatform.avxSupport
, enableSse41 ? stdenv.hostPlatform.sse4_1Support , enableSse41 ? stdenv.hostPlatform.sse4_1Support
, enableSse42 ? stdenv.hostPlatform.sse4_2Support , enableSse42 ? stdenv.hostPlatform.sse4_2Support
@ -30,19 +30,25 @@ stdenv.mkDerivation rec {
done done
''; '';
nativeBuildInputs = [ libtool automake autoconf ]
++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
buildInputs = [ ucx ]
++ lib.optionals enableCuda [
cudaPackages.cuda_cccl
cudaPackages.cuda_cudart
];
preConfigure = '' preConfigure = ''
./autogen.sh ./autogen.sh
'' + lib.optionalString enableCuda ''
configureFlagsArray+=( "--with-nvcc-gencode=${builtins.concatStringsSep " " cudaPackages.cudaFlags.gencode}" )
''; '';
nativeBuildInputs = [ libtool automake autoconf ];
buildInputs = [ ucx ]
++ lib.optional enableCuda cudatoolkit;
configureFlags = [ ] configureFlags = [ ]
++ lib.optional enableSse41 "--with-sse41" ++ lib.optional enableSse41 "--with-sse41"
++ lib.optional enableSse42 "--with-sse42" ++ lib.optional enableSse42 "--with-sse42"
++ lib.optional enableAvx "--with-avx" ++ lib.optional enableAvx "--with-avx"
++ lib.optional enableCuda "--with-cuda=${cudatoolkit}"; ++ lib.optional enableCuda "--with-cuda=${cudaPackages.cuda_cudart}";
postInstall = '' postInstall = ''
find $out/lib/ -name "*.la" -exec rm -f \{} \; find $out/lib/ -name "*.la" -exec rm -f \{} \;

View file

@ -2,18 +2,12 @@
, rdma-core, libbfd, libiberty, perl, zlib, symlinkJoin, pkg-config , rdma-core, libbfd, libiberty, perl, zlib, symlinkJoin, pkg-config
, config , config
, enableCuda ? config.cudaSupport , enableCuda ? config.cudaSupport
, cudatoolkit , cudaPackages
, enableRocm ? config.rocmSupport , enableRocm ? config.rocmSupport
, rocmPackages , rocmPackages
}: }:
let let
# Needed for configure to find all libraries
cudatoolkit' = symlinkJoin {
inherit (cudatoolkit) name meta;
paths = [ cudatoolkit cudatoolkit.lib ];
};
rocmList = with rocmPackages; [ rocm-core rocm-runtime rocm-device-libs clr ]; rocmList = with rocmPackages; [ rocm-core rocm-runtime rocm-device-libs clr ];
rocm = symlinkJoin { rocm = symlinkJoin {
@ -35,7 +29,15 @@ stdenv.mkDerivation rec {
outputs = [ "out" "doc" "dev" ]; outputs = [ "out" "doc" "dev" ];
nativeBuildInputs = [ autoreconfHook doxygen pkg-config ]; nativeBuildInputs = [
autoreconfHook
doxygen
pkg-config
]
++ lib.optionals enableCuda [
cudaPackages.cuda_nvcc
cudaPackages.autoAddOpenGLRunpathHook
];
buildInputs = [ buildInputs = [
libbfd libbfd
@ -44,8 +46,16 @@ stdenv.mkDerivation rec {
perl perl
rdma-core rdma-core
zlib zlib
] ++ lib.optional enableCuda cudatoolkit ] ++ lib.optionals enableCuda [
++ lib.optionals enableRocm rocmList; cudaPackages.cuda_cudart
cudaPackages.cuda_nvml_dev
] ++ lib.optionals enableRocm rocmList;
LDFLAGS = lib.optionals enableCuda [
# Fake libnvidia-ml.so (the real one is deployed impurely)
"-L${cudaPackages.cuda_nvml_dev}/lib/stubs"
];
configureFlags = [ configureFlags = [
"--with-rdmacm=${lib.getDev rdma-core}" "--with-rdmacm=${lib.getDev rdma-core}"
@ -53,7 +63,7 @@ stdenv.mkDerivation rec {
"--with-rc" "--with-rc"
"--with-dm" "--with-dm"
"--with-verbs=${lib.getDev rdma-core}" "--with-verbs=${lib.getDev rdma-core}"
] ++ lib.optional enableCuda "--with-cuda=${cudatoolkit'}" ] ++ lib.optionals enableCuda [ "--with-cuda=${cudaPackages.cuda_cudart}" ]
++ lib.optional enableRocm "--with-rocm=${rocm}"; ++ lib.optional enableRocm "--with-rocm=${rocm}";
postInstall = '' postInstall = ''

View file

@ -1,14 +1,14 @@
{ lib, stdenv, fetchFromGitHub }: { lib, stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.2.16"; version = "1.2.17";
pname = "zlog"; pname = "zlog";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "HardySimpson"; owner = "HardySimpson";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "sha256-wpaMbFKSwTIFe3p65pMJ6Pf2qKp1uYZCyyinGU4AxrQ="; sha256 = "sha256-ckpDMRLxObpl8N539DC5u2bPpmD7jM+KugurUfta6tg=";
}; };
makeFlags = [ "PREFIX=${placeholder "out"}" ]; makeFlags = [ "PREFIX=${placeholder "out"}" ];

View file

@ -2,16 +2,16 @@
php.buildComposerProject (finalAttrs: { php.buildComposerProject (finalAttrs: {
pname = "box"; pname = "box";
version = "4.5.0"; version = "4.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "box-project"; owner = "box-project";
repo = "box"; repo = "box";
rev = finalAttrs.version; rev = finalAttrs.version;
hash = "sha256-6icHXRxqre2RBIRoc3zfQnxGRHh2kIen2oLJ3eQjD/0="; hash = "sha256-3YfnFd8OZ15nQnXOkhNz2FQygElFn+JOrenKUeyTkXA=";
}; };
vendorHash = "sha256-n/F/il1u+3amSVf8fr0scZSkXuwxW43iq5F2XQJ3xfM="; vendorHash = "sha256-0ul4NLGK+Z+VN1nv4xSGsh2JcJEXeYAYFhxDn7r3kVY=";
meta = { meta = {
changelog = "https://github.com/box-project/box/releases/tag/${finalAttrs.version}"; changelog = "https://github.com/box-project/box/releases/tag/${finalAttrs.version}";

View file

@ -36,6 +36,7 @@ php.buildComposerProject (finalAttrs: {
description = "Dependency Manager for PHP"; description = "Dependency Manager for PHP";
homepage = "https://getcomposer.org/"; homepage = "https://getcomposer.org/";
license = lib.licenses.mit; license = lib.licenses.mit;
mainProgram = "composer";
maintainers = lib.teams.php.members; maintainers = lib.teams.php.members;
}; };
}) })

View file

@ -43,6 +43,7 @@ php.buildComposerProject (finalAttrs: {
description = "A PHP code-quality tool"; description = "A PHP code-quality tool";
homepage = "https://github.com/phpro/grumphp"; homepage = "https://github.com/phpro/grumphp";
license = lib.licenses.mit; license = lib.licenses.mit;
mainProgram = "grumphp";
maintainers = lib.teams.php.members; maintainers = lib.teams.php.members;
}; };
}) })

View file

@ -20,6 +20,7 @@ php.buildComposerProject (finalAttrs: {
description = "A static analysis tool for finding errors in PHP applications"; description = "A static analysis tool for finding errors in PHP applications";
homepage = "https://github.com/vimeo/psalm"; homepage = "https://github.com/vimeo/psalm";
license = lib.licenses.mit; license = lib.licenses.mit;
mainProgram = "psalm";
maintainers = lib.teams.php.members; maintainers = lib.teams.php.members;
}; };
}) })

View file

@ -4,7 +4,7 @@ let
version = "0.4.14"; version = "0.4.14";
in buildPecl { in buildPecl {
inherit version; inherit version;
pname = "php-spx"; pname = "spx";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "NoiseByNorthwest"; owner = "NoiseByNorthwest";

View file

@ -11,11 +11,34 @@
, cudaPackages , cudaPackages
, addOpenGLRunpath , addOpenGLRunpath
, pythonOlder , pythonOlder
, symlinkJoin
}: }:
let let
inherit (cudaPackages) cudatoolkit cudnn cutensor nccl; inherit (cudaPackages) cudnn cutensor nccl;
in buildPythonPackage rec { cudatoolkit-joined = symlinkJoin {
name = "cudatoolkit-joined-${cudaPackages.cudaVersion}";
paths = with cudaPackages; [
cuda_cccl # <nv/target>
cuda_cccl.dev
cuda_cudart
cuda_nvcc.dev # <crt/host_defines.h>
cuda_nvprof
cuda_nvrtc
cuda_nvtx
cuda_profiler_api
libcublas
libcufft
libcurand
libcusolver
libcusparse
# Missing:
# cusparselt
];
};
in
buildPythonPackage rec {
pname = "cupy"; pname = "cupy";
version = "12.2.0"; version = "12.2.0";
@ -32,27 +55,32 @@ in buildPythonPackage rec {
# very short builds and a few extremely long ones, so setting both ends up # very short builds and a few extremely long ones, so setting both ends up
# working nicely in practice. # working nicely in practice.
preConfigure = '' preConfigure = ''
export CUDA_PATH=${cudatoolkit}
export CUPY_NUM_BUILD_JOBS="$NIX_BUILD_CORES" export CUPY_NUM_BUILD_JOBS="$NIX_BUILD_CORES"
export CUPY_NUM_NVCC_THREADS="$NIX_BUILD_CORES" export CUPY_NUM_NVCC_THREADS="$NIX_BUILD_CORES"
''; '';
nativeBuildInputs = [ nativeBuildInputs = [
setuptools
wheel
addOpenGLRunpath addOpenGLRunpath
cython cython
cudaPackages.cuda_nvcc
]; ];
LDFLAGS = "-L${cudatoolkit}/lib/stubs"; buildInputs = [
cudatoolkit-joined
propagatedBuildInputs = [
cudatoolkit
cudnn cudnn
cutensor cutensor
nccl nccl
];
NVCC = "${lib.getExe cudaPackages.cuda_nvcc}"; # FIXME: splicing/buildPackages
CUDA_PATH = "${cudatoolkit-joined}";
LDFLAGS = "-L${cudaPackages.cuda_cudart}/lib/stubs";
propagatedBuildInputs = [
fastrlock fastrlock
numpy numpy
setuptools
wheel
]; ];
nativeCheckInputs = [ nativeCheckInputs = [

View file

@ -15,7 +15,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "dvc-render"; pname = "dvc-render";
version = "0.6.0"; version = "1.0.0";
format = "pyproject"; format = "pyproject";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -24,7 +24,7 @@ buildPythonPackage rec {
owner = "iterative"; owner = "iterative";
repo = pname; repo = pname;
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-seL96aOJ554pD7lgzXZFDCXqY/3TAQugWMA7MtqKoAE="; hash = "sha256-OrfepQuLBNa5m3Sy4NzFOArtFFvaNtNNVJ8DNN3yT6s=";
}; };
SETUPTOOLS_SCM_PRETEND_VERSION = version; SETUPTOOLS_SCM_PRETEND_VERSION = version;

View file

@ -17,7 +17,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "habluetooth"; pname = "habluetooth";
version = "0.5.1"; version = "0.6.1";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.9"; disabled = pythonOlder "3.9";
@ -26,7 +26,7 @@ buildPythonPackage rec {
owner = "Bluetooth-Devices"; owner = "Bluetooth-Devices";
repo = "habluetooth"; repo = "habluetooth";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-olR900l/xJug5DeXb8CR0vQBzjzegdiCLCp6AIQu7Tg="; hash = "sha256-Ha+tK3uThYvDcFsNA3JIzSG6IGUsAcls7ArJJpO3ZSQ=";
}; };
postPatch = '' postPatch = ''

View file

@ -29,11 +29,11 @@
, stdenv , stdenv
# Options: # Options:
, cudaSupport ? config.cudaSupport , cudaSupport ? config.cudaSupport
, cudaPackages ? {} , cudaPackagesGoogle
}: }:
let let
inherit (cudaPackages) cudatoolkit cudnn; inherit (cudaPackagesGoogle) cudatoolkit cudnn;
version = "0.4.20"; version = "0.4.20";
@ -210,8 +210,8 @@ buildPythonPackage {
maintainers = with maintainers; [ samuela ]; maintainers = with maintainers; [ samuela ];
platforms = [ "aarch64-darwin" "x86_64-linux" "x86_64-darwin" ]; platforms = [ "aarch64-darwin" "x86_64-linux" "x86_64-darwin" ];
broken = broken =
!(cudaSupport -> (cudaPackages ? cudatoolkit) && lib.versionAtLeast cudatoolkit.version "11.1") !(cudaSupport -> (cudaPackagesGoogle ? cudatoolkit) && lib.versionAtLeast cudatoolkit.version "11.1")
|| !(cudaSupport -> (cudaPackages ? cudnn) && lib.versionAtLeast cudnn.version "8.2") || !(cudaSupport -> (cudaPackagesGoogle ? cudnn) && lib.versionAtLeast cudnn.version "8.2")
|| !(cudaSupport -> stdenv.isLinux); || !(cudaSupport -> stdenv.isLinux);
}; };
} }

View file

@ -44,14 +44,14 @@
, config , config
# CUDA flags: # CUDA flags:
, cudaSupport ? config.cudaSupport , cudaSupport ? config.cudaSupport
, cudaPackages ? {} , cudaPackagesGoogle
# MKL: # MKL:
, mklSupport ? true , mklSupport ? true
}: }:
let let
inherit (cudaPackages) backendStdenv cudatoolkit cudaFlags cudnn nccl; inherit (cudaPackagesGoogle) backendStdenv cudatoolkit cudaFlags cudnn nccl;
pname = "jaxlib"; pname = "jaxlib";
version = "0.4.20"; version = "0.4.20";

View file

@ -25,13 +25,13 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "labgrid"; pname = "labgrid";
version = "23.0.3"; version = "23.0.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "labgrid-project"; owner = "labgrid-project";
repo = "labgrid"; repo = "labgrid";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
sha256 = "sha256-yhlBqqCLOt6liw4iv8itG6E4QfIa7cW76QJqefUM5dw="; sha256 = "sha256-EEPQSIHKAmLPudv7LLm9ol3Kukgz8edYKfDi+wvERpk=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -11,14 +11,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "opencensus-ext-azure"; pname = "opencensus-ext-azure";
version = "1.1.11"; version = "1.1.12";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.4"; disabled = pythonOlder "3.4";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-IdTU0FGdSCOdBBQskLalH17MBDaE64DPoKcBqiM0YHM="; hash = "sha256-hrseR84dIKytlq08Efjvsvp6tensSJbzBj2F+JlJBGI=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -9,16 +9,16 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pyomo"; pname = "pyomo";
version = "6.6.2"; version = "6.7.0";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.8";
src = fetchFromGitHub { src = fetchFromGitHub {
repo = "pyomo"; repo = "pyomo";
owner = "pyomo"; owner = "pyomo";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-hh2sfWOUp3ac75NEuTrw3YkvS7hXpzJp39v6cfrhNiQ="; hash = "sha256-HoTtvda97ghQ0SQBZFGkDAwD2WNtZpIum2m1khivEK4=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -22,7 +22,7 @@
, tensorboard , tensorboard
, config , config
, cudaSupport ? config.cudaSupport , cudaSupport ? config.cudaSupport
, cudaPackages ? {} , cudaPackagesGoogle
, zlib , zlib
, python , python
, keras-applications , keras-applications
@ -43,7 +43,7 @@ assert ! (stdenv.isDarwin && cudaSupport);
let let
packages = import ./binary-hashes.nix; packages = import ./binary-hashes.nix;
inherit (cudaPackages) cudatoolkit cudnn; inherit (cudaPackagesGoogle) cudatoolkit cudnn;
in buildPythonPackage { in buildPythonPackage {
pname = "tensorflow" + lib.optionalString cudaSupport "-gpu"; pname = "tensorflow" + lib.optionalString cudaSupport "-gpu";
inherit (packages) version; inherit (packages) version;
@ -200,7 +200,7 @@ in buildPythonPackage {
]; ];
passthru = { passthru = {
inherit cudaPackages; cudaPackages = cudaPackagesGoogle;
}; };
meta = with lib; { meta = with lib; {

View file

@ -19,8 +19,8 @@
# https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0 # https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
, config , config
, cudaSupport ? config.cudaSupport , cudaSupport ? config.cudaSupport
, cudaPackages ? { } , cudaPackagesGoogle
, cudaCapabilities ? cudaPackages.cudaFlags.cudaCapabilities , cudaCapabilities ? cudaPackagesGoogle.cudaFlags.cudaCapabilities
, mklSupport ? false, mkl , mklSupport ? false, mkl
, tensorboardSupport ? true , tensorboardSupport ? true
# XLA without CUDA is broken # XLA without CUDA is broken
@ -50,15 +50,15 @@ let
# __ZN4llvm11SmallPtrSetIPKNS_10AllocaInstELj8EED1Ev in any of the # __ZN4llvm11SmallPtrSetIPKNS_10AllocaInstELj8EED1Ev in any of the
# translation units, so the build fails at link time # translation units, so the build fails at link time
stdenv = stdenv =
if cudaSupport then cudaPackages.backendStdenv if cudaSupport then cudaPackagesGoogle.backendStdenv
else if originalStdenv.isDarwin then llvmPackages_11.stdenv else if originalStdenv.isDarwin then llvmPackages_11.stdenv
else originalStdenv; else originalStdenv;
inherit (cudaPackages) cudatoolkit nccl; inherit (cudaPackagesGoogle) cudatoolkit nccl;
# use compatible cuDNN (https://www.tensorflow.org/install/source#gpu) # use compatible cuDNN (https://www.tensorflow.org/install/source#gpu)
# cudaPackages.cudnn led to this: # cudaPackages.cudnn led to this:
# https://github.com/tensorflow/tensorflow/issues/60398 # https://github.com/tensorflow/tensorflow/issues/60398
cudnnAttribute = "cudnn_8_6"; cudnnAttribute = "cudnn_8_6";
cudnn = cudaPackages.${cudnnAttribute}; cudnn = cudaPackagesGoogle.${cudnnAttribute};
gentoo-patches = fetchzip { gentoo-patches = fetchzip {
url = "https://dev.gentoo.org/~perfinion/patches/tensorflow-patches-2.12.0.tar.bz2"; url = "https://dev.gentoo.org/~perfinion/patches/tensorflow-patches-2.12.0.tar.bz2";
hash = "sha256-SCRX/5/zML7LmKEPJkcM5Tebez9vv/gmE4xhT/jyqWs="; hash = "sha256-SCRX/5/zML7LmKEPJkcM5Tebez9vv/gmE4xhT/jyqWs=";
@ -486,8 +486,8 @@ let
broken = broken =
stdenv.isDarwin stdenv.isDarwin
|| !(xlaSupport -> cudaSupport) || !(xlaSupport -> cudaSupport)
|| !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackages) || !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackagesGoogle)
|| !(cudaSupport -> cudaPackages ? cudatoolkit); || !(cudaSupport -> cudaPackagesGoogle ? cudatoolkit);
} // lib.optionalAttrs stdenv.isDarwin { } // lib.optionalAttrs stdenv.isDarwin {
timeout = 86400; # 24 hours timeout = 86400; # 24 hours
maxSilent = 14400; # 4h, double the default of 7200s maxSilent = 14400; # 4h, double the default of 7200s
@ -590,7 +590,7 @@ in buildPythonPackage {
# Regression test for #77626 removed because not more `tensorflow.contrib`. # Regression test for #77626 removed because not more `tensorflow.contrib`.
passthru = { passthru = {
inherit cudaPackages; cudaPackages = cudaPackagesGoogle;
deps = bazel-build.deps; deps = bazel-build.deps;
libtensorflow = bazel-build.out; libtensorflow = bazel-build.out;
}; };

View file

@ -337,7 +337,8 @@ in buildPythonPackage rec {
buildInputs = [ blas blas.provider ] buildInputs = [ blas blas.provider ]
++ lib.optionals cudaSupport (with cudaPackages; [ ++ lib.optionals cudaSupport (with cudaPackages; [
cuda_cccl.dev # <thrust/*> cuda_cccl.dev # <thrust/*>
cuda_cudart # cuda_runtime.h and libraries cuda_cudart.dev # cuda_runtime.h and libraries
cuda_cudart.lib
cuda_cupti.dev # For kineto cuda_cupti.dev # For kineto
cuda_cupti.lib # For kineto cuda_cupti.lib # For kineto
cuda_nvcc.dev # crt/host_config.h; even though we include this in nativeBuildinputs, it's needed here too cuda_nvcc.dev # crt/host_config.h; even though we include this in nativeBuildinputs, it's needed here too

View file

@ -7,13 +7,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "neil"; pname = "neil";
version = "0.2.62"; version = "0.2.63";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "babashka"; owner = "babashka";
repo = "neil"; repo = "neil";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-zSZ62RMHZLuhIPdde0cfWae+uFpWVjMfHuLAJdRedJA="; sha256 = "sha256-mcygDOx5yzOW80bv54cPOKl1t443DXFRq4Hb4KYD5e8=";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View file

@ -7,14 +7,14 @@
buildGoModule rec { buildGoModule rec {
pname = "symfony-cli"; pname = "symfony-cli";
version = "5.7.3"; version = "5.7.4";
vendorHash = "sha256-xC5EHP4Zb9lgvbxVkoVBxdQ4+f34zqRf4XapntZMTTc="; vendorHash = "sha256-2+Q93tm3ooOd/m6aUWAwFGh5CzARPNISNx0Tcrjc7NY=";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "symfony-cli"; owner = "symfony-cli";
repo = "symfony-cli"; repo = "symfony-cli";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-mxyGdyR1yZY+YOyf9ngk6P2oBmUL+IbwLWaCvZziSIM="; hash = "sha256-d4cI/Nyn2XPvdZFLY7GHIAcmIUnzgyehGxZPylUD3EU=";
}; };
ldflags = [ ldflags = [

View file

@ -122,7 +122,7 @@ let
in in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "fwupd"; pname = "fwupd";
version = "1.9.9"; version = "1.9.10";
# libfwupd goes to lib # libfwupd goes to lib
# daemon, plug-ins and libfwupdplugin go to out # daemon, plug-ins and libfwupdplugin go to out
@ -133,7 +133,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "fwupd"; owner = "fwupd";
repo = "fwupd"; repo = "fwupd";
rev = finalAttrs.version; rev = finalAttrs.version;
hash = "sha256-UUrG3CMCAC5hyy2U5I4zqvJoSP/+zuiq1P+2Pdb3QD0="; hash = "sha256-qB7SGkjPahZmLax8HrSdLvORAXTBcuN5NohT0KUjCnM=";
}; };
patches = [ patches = [

View file

@ -5,16 +5,16 @@
buildGoModule rec { buildGoModule rec {
pname = "matrix-sliding-sync"; pname = "matrix-sliding-sync";
version = "0.99.12"; version = "0.99.13";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "matrix-org"; owner = "matrix-org";
repo = "sliding-sync"; repo = "sliding-sync";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-7M+Ti1SfurRngXg2oCdLveG6QyjM2BjKnoovJxz7ZOY="; hash = "sha256-jrsMPFUSdtUs6qG902+oRBGUvFGmhR8/NHCUwB9oVnE=";
}; };
vendorHash = "sha256-li5kEF7U7KyyMLMhVBqvnLuLXI6QrJl1KeusKrQXo8w="; vendorHash = "sha256-THjvc0TepIBFOTte7t63Dmadf3HMuZ9m0YzQMI5e5Pw=";
subPackages = [ "cmd/syncv3" ]; subPackages = [ "cmd/syncv3" ];

View file

@ -279,6 +279,7 @@ let
popd &>/dev/null popd &>/dev/null
redis-server >/dev/null & redis-server >/dev/null &
REDIS_PID=$!
initdb -A trust $NIX_BUILD_TOP/postgres >/dev/null initdb -A trust $NIX_BUILD_TOP/postgres >/dev/null
postgres -D $NIX_BUILD_TOP/postgres -k $NIX_BUILD_TOP >/dev/null & postgres -D $NIX_BUILD_TOP/postgres -k $NIX_BUILD_TOP >/dev/null &
@ -304,6 +305,8 @@ let
bundle exec rake db:migrate >/dev/null bundle exec rake db:migrate >/dev/null
chmod -R +w tmp chmod -R +w tmp
kill $REDIS_PID
''; '';
buildPhase = '' buildPhase = ''

View file

@ -135,7 +135,7 @@ let
fish = stdenv.mkDerivation rec { fish = stdenv.mkDerivation rec {
pname = "fish"; pname = "fish";
version = "3.6.1"; version = "3.6.4";
src = fetchurl { src = fetchurl {
# There are differences between the release tarball and the tarball GitHub # There are differences between the release tarball and the tarball GitHub
@ -145,7 +145,7 @@ let
# --version`), as well as the local documentation for all builtins (and # --version`), as well as the local documentation for all builtins (and
# maybe other things). # maybe other things).
url = "https://github.com/fish-shell/fish-shell/releases/download/${version}/${pname}-${version}.tar.xz"; url = "https://github.com/fish-shell/fish-shell/releases/download/${version}/${pname}-${version}.tar.xz";
hash = "sha256-VUArtHymc52KuiXkF4CQW1zhvOCl4N0X3KkItbwLSbI="; hash = "sha256-Dz9hDlgN4JL76ILIqnZiPs+Ruxb98FQyQebpDV1Lw5M=";
}; };
# Fix FHS paths in tests # Fix FHS paths in tests
@ -156,6 +156,8 @@ let
sed -i 's|L"/bin/echo"|L"${coreutils}/bin/echo"|' src/fish_tests.cpp sed -i 's|L"/bin/echo"|L"${coreutils}/bin/echo"|' src/fish_tests.cpp
sed -i 's|L"/bin/c"|L"${coreutils}/bin/c"|' src/fish_tests.cpp sed -i 's|L"/bin/c"|L"${coreutils}/bin/c"|' src/fish_tests.cpp
sed -i 's|L"/bin/ca"|L"${coreutils}/bin/ca"|' src/fish_tests.cpp sed -i 's|L"/bin/ca"|L"${coreutils}/bin/ca"|' src/fish_tests.cpp
# disable flakey test
sed -i '/{TEST_GROUP("history_races"), history_tests_t::test_history_races},/d' src/fish_tests.cpp
# tests/checks/cd.fish # tests/checks/cd.fish
sed -i 's|/bin/pwd|${coreutils}/bin/pwd|' tests/checks/cd.fish sed -i 's|/bin/pwd|${coreutils}/bin/pwd|' tests/checks/cd.fish

View file

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "scaleway-cli"; pname = "scaleway-cli";
version = "2.24.0"; version = "2.25.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "scaleway"; owner = "scaleway";
repo = "scaleway-cli"; repo = "scaleway-cli";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-Q65X2lsR5jyWXxxmkvUA0yG4miD+KUSBGRFXvH4KBGY="; sha256 = "sha256-wx/247ZNbdNdRiGLTfCig1JAjmXZX0aCHbOgelzMcyw=";
}; };
vendorHash = "sha256-mZ2XFZS5tqtRUhdo6AOCY4xSaYgxUEy1OFbyzsbCEnU="; vendorHash = "sha256-FftJsXM9sexRqBKrIeTdWh5Z0eYIK3acDNtptqqILD8=";
ldflags = [ ldflags = [
"-w" "-w"

View file

@ -2,7 +2,7 @@
buildGoModule rec { buildGoModule rec {
pname = "stuffbin"; pname = "stuffbin";
version = "1.1.0"; version = "1.2.0";
vendorHash = null; vendorHash = null;
@ -10,7 +10,7 @@ buildGoModule rec {
owner = "knadh"; owner = "knadh";
repo = "stuffbin"; repo = "stuffbin";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-M72xNh7bKUMLzA+M8bJB++kJ5KCrkboQm1v8BasP3Yo="; sha256 = "sha256-roXjE0t4iwrL2y/G2oePYL2AbTwd9uzQPtgdY14WeZk=";
}; };
ldflags = [ "-s" "-w" "-X main.version=${version}" ]; ldflags = [ "-s" "-w" "-X main.version=${version}" ];

View file

@ -12,14 +12,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ofono"; pname = "ofono";
version = "2.1"; version = "2.2";
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
src = fetchgit { src = fetchgit {
url = "https://git.kernel.org/pub/scm/network/ofono/ofono.git"; url = "https://git.kernel.org/pub/scm/network/ofono/ofono.git";
rev = version; rev = version;
sha256 = "sha256-GxQfh/ps5oM9G6B1EVgnjo8LqHD1hMqdnju1PCQq3kA="; sha256 = "sha256-mnh0qzmgPDfimN/M33HntYj90Xcgc/uF8tKbzeQV1Yg=";
}; };
patches = [ patches = [

View file

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "fscan"; pname = "fscan";
version = "1.8.3"; version = "1.8.3-build3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "shadow1ng"; owner = "shadow1ng";
repo = "fscan"; repo = "fscan";
rev = version; rev = version;
hash = "sha256-uoM/nMtgIqyzpOoSQKD5k4LXAXoA8G5N4In8tZlngqs="; hash = "sha256-GtOCd8JaR6tx8hoB+P9QXrEnN7Wvmv7jddhc2/8hjvQ=";
}; };
vendorHash = "sha256-hvb2IfypwYauF3ubE36u0bTU+l/FWP/CZt6dFd9zc6s="; vendorHash = "sha256-hvb2IfypwYauF3ubE36u0bTU+l/FWP/CZt6dFd9zc6s=";
@ -18,7 +18,6 @@ buildGoModule rec {
homepage = "https://github.com/shadow1ng/fscan"; homepage = "https://github.com/shadow1ng/fscan";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ Misaka13514 ]; maintainers = with maintainers; [ Misaka13514 ];
platforms = with platforms; unix ++ windows;
mainProgram = "fscan"; mainProgram = "fscan";
}; };
} }

View file

@ -2,7 +2,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "vault-bin"; pname = "vault-bin";
version = "1.15.2"; version = "1.15.3";
src = src =
let let
@ -16,11 +16,11 @@ stdenv.mkDerivation rec {
aarch64-darwin = "darwin_arm64"; aarch64-darwin = "darwin_arm64";
}; };
sha256 = selectSystem { sha256 = selectSystem {
x86_64-linux = "sha256-aawDrQu8wEZqJ/uyCJjtWcgy8Ut34B5P+odqddE5P3M="; x86_64-linux = "sha256-rRXpRxuslOvvNgK6W0BG/LWs2sAGGCuSxcbVbsmrtN0=";
aarch64-linux = "sha256-thLVw//yIgPCAV9CdrRlINLg+cO5aB279I2aboZMF6w="; aarch64-linux = "sha256-vD/S+aZGa+JFRBV9WML9WbhrFpB8FynM62ZJ0zkWtDU=";
i686-linux = "sha256-bUhtnQB5YZdDuB4uondln0D3itoTr+1FaqjgTiT76WA="; i686-linux = "sha256-Y9KpL0kZxlgfkBSyXJVSND2hSJ1y+FuXKPK0/P2YX2w=";
x86_64-darwin = "sha256-+wZrWwbpibtCla1ydhDnLJsHrVymLzEXVE1KftZ+pOs="; x86_64-darwin = "sha256-i85GQSJK7dPoLP7XBrz7CiISCG8KbGylL++ecy/CXRY=";
aarch64-darwin = "sha256-2FGiCzIAEyXTqRaKEDZK5d/PWl4EmvJl9NieiOdgOeY="; aarch64-darwin = "sha256-eZAuUNbigJ/kye8p3yu+Qf+p47IkxKJntR2sGFpM+j8=";
}; };
in in
fetchzip { fetchzip {
@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
description = "A tool for managing secrets, this binary includes the UI"; description = "A tool for managing secrets, this binary includes the UI";
homepage = "https://www.vaultproject.io"; homepage = "https://www.vaultproject.io";
sourceProvenance = with sourceTypes; [ binaryNativeCode ]; sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.mpl20; license = licenses.bsl11;
maintainers = with maintainers; teams.serokell.members ++ [ offline psyanticy Chili-Man techknowlogick mkaito ]; maintainers = with maintainers; teams.serokell.members ++ [ offline psyanticy Chili-Man techknowlogick mkaito ];
mainProgram = "vault"; mainProgram = "vault";
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ]; platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];

View file

@ -652,6 +652,7 @@ mapAliases ({
noto-fonts-cjk = noto-fonts-cjk-sans; # Added 2021-12-16 noto-fonts-cjk = noto-fonts-cjk-sans; # Added 2021-12-16
noto-fonts-emoji = noto-fonts-color-emoji; # Added 2023-09-09 noto-fonts-emoji = noto-fonts-color-emoji; # Added 2023-09-09
noto-fonts-extra = noto-fonts; # Added 2023-04-08 noto-fonts-extra = noto-fonts; # Added 2023-04-08
nvidia-thrust = throw "nvidia-thrust has been removed because the project was deprecated; use cudaPackages.cuda_cccl";
### O ### ### O ###

View file

@ -7102,7 +7102,7 @@ with pkgs;
ibus-theme-tools = callPackage ../tools/misc/ibus-theme-tools { }; ibus-theme-tools = callPackage ../tools/misc/ibus-theme-tools { };
interception-tools = callPackage ../tools/inputmethods/interception-tools { }; interception-tools = callPackage ../tools/inputmethods/interception-tools { };
interception-tools-plugins = { interception-tools-plugins = recurseIntoAttrs {
caps2esc = callPackage ../tools/inputmethods/interception-tools/caps2esc.nix { }; caps2esc = callPackage ../tools/inputmethods/interception-tools/caps2esc.nix { };
dual-function-keys = callPackage ../tools/inputmethods/interception-tools/dual-function-keys.nix { }; dual-function-keys = callPackage ../tools/inputmethods/interception-tools/dual-function-keys.nix { };
}; };
@ -7322,6 +7322,10 @@ with pkgs;
cudaPackages_12_2 = callPackage ./cuda-packages.nix { cudaVersion = "12.2"; }; cudaPackages_12_2 = callPackage ./cuda-packages.nix { cudaVersion = "12.2"; };
cudaPackages_12 = cudaPackages_12_0; cudaPackages_12 = cudaPackages_12_0;
# Use the older cudaPackages for tensorflow and jax, as determined by cudnn
# compatibility: https://www.tensorflow.org/install/source#gpu
cudaPackagesGoogle = cudaPackages_11;
# TODO: try upgrading once there is a cuDNN release supporting CUDA 12. No # TODO: try upgrading once there is a cuDNN release supporting CUDA 12. No
# such cuDNN release as of 2023-01-10. # such cuDNN release as of 2023-01-10.
cudaPackages = recurseIntoAttrs cudaPackages_11; cudaPackages = recurseIntoAttrs cudaPackages_11;
@ -11278,16 +11282,6 @@ with pkgs;
nvfetcher = haskell.lib.compose.justStaticExecutables haskellPackages.nvfetcher; nvfetcher = haskell.lib.compose.justStaticExecutables haskellPackages.nvfetcher;
nvidia-thrust = callPackage ../development/libraries/nvidia-thrust { };
nvidia-thrust-intel = callPackage ../development/libraries/nvidia-thrust {
hostSystem = "TBB";
deviceSystem = if config.cudaSupport then "CUDA" else "TBB";
};
nvidia-thrust-cuda = callPackage ../development/libraries/nvidia-thrust {
deviceSystem = "CUDA";
};
miller = callPackage ../tools/text/miller { }; miller = callPackage ../tools/text/miller { };
@ -20766,6 +20760,9 @@ with pkgs;
# catboost requires clang 12+ for build # catboost requires clang 12+ for build
# after bumping the default version of llvm, check for compatibility with the cuda backend and pin it. # after bumping the default version of llvm, check for compatibility with the cuda backend and pin it.
inherit (llvmPackages_12) stdenv; inherit (llvmPackages_12) stdenv;
# https://github.com/catboost/catboost/issues/2540
cudaPackages = cudaPackages_11;
}; };
ndn-cxx = callPackage ../development/libraries/ndn-cxx { }; ndn-cxx = callPackage ../development/libraries/ndn-cxx { };
@ -39432,7 +39429,6 @@ with pkgs;
singlePrec = true; singlePrec = true;
enableMpi = true; enableMpi = true;
enableCuda = true; enableCuda = true;
cudatoolkit = cudatoolkit_11;
fftw = fftwSinglePrec; fftw = fftwSinglePrec;
}); });
@ -39974,7 +39970,6 @@ with pkgs;
faissWithCuda = faiss.override { faissWithCuda = faiss.override {
cudaSupport = true; cudaSupport = true;
nvidia-thrust = nvidia-thrust-cuda;
}; };
fityk = callPackage ../applications/science/misc/fityk { }; fityk = callPackage ../applications/science/misc/fityk { };

View file

@ -24,6 +24,7 @@ let
buildCuTensorPackage = final.callPackage ../development/libraries/science/math/cutensor/generic.nix; buildCuTensorPackage = final.callPackage ../development/libraries/science/math/cutensor/generic.nix;
# FIXME: Include non-x86_64 platforms
cuTensorVersions = { cuTensorVersions = {
"1.2.2.5" = { "1.2.2.5" = {
hash = "sha256-lU7iK4DWuC/U3s1Ct/rq2Gr3w4F2U7RYYgpmF05bibY="; hash = "sha256-lU7iK4DWuC/U3s1Ct/rq2Gr3w4F2U7RYYgpmF05bibY=";
@ -31,12 +32,24 @@ let
"1.5.0.3" = { "1.5.0.3" = {
hash = "sha256-T96+lPC6OTOkIs/z3QWg73oYVSyidN0SVkBWmT9VRx0="; hash = "sha256-T96+lPC6OTOkIs/z3QWg73oYVSyidN0SVkBWmT9VRx0=";
}; };
"2.0.0.7" = {
hash = "sha256-32M4rtGOW2rgxJUhBT0WBtKkHhh9f17M+RgK9rvE72g=";
};
}; };
inherit (final) cudaMajorMinorVersion cudaMajorVersion; inherit (final) cudaMajorMinorVersion cudaMajorVersion;
cudaToCutensor = {
"10" = "1.2.25";
"11" = "1.5.0.3";
"12" = "2.0.0.7";
};
versionNewer = lib.flip lib.versionOlder;
latestVersion = (builtins.head (lib.sort versionNewer (builtins.attrNames cuTensorVersions)));
cutensor = buildCuTensorPackage rec { cutensor = buildCuTensorPackage rec {
version = if cudaMajorMinorVersion == "10.1" then "1.2.2.5" else "1.5.0.3"; version = cudaToCutensor.${cudaMajorVersion} or latestVersion;
inherit (cuTensorVersions.${version}) hash; inherit (cuTensorVersions.${version}) hash;
# This can go into generic.nix # This can go into generic.nix
libPath = "lib/${if cudaMajorVersion == "10" then cudaMajorMinorVersion else cudaMajorVersion}"; libPath = "lib/${if cudaMajorVersion == "10" then cudaMajorMinorVersion else cudaMajorVersion}";

View file

@ -312,8 +312,6 @@ lib.makeScope pkgs.newScope (self: with self; {
phalcon = callPackage ../development/php-packages/phalcon { }; phalcon = callPackage ../development/php-packages/phalcon { };
php-spx = callPackage ../development/php-packages/php-spx { };
pinba = callPackage ../development/php-packages/pinba { }; pinba = callPackage ../development/php-packages/pinba { };
protobuf = callPackage ../development/php-packages/protobuf { }; protobuf = callPackage ../development/php-packages/protobuf { };
@ -332,6 +330,8 @@ lib.makeScope pkgs.newScope (self: with self; {
inherit (pkgs) darwin; inherit (pkgs) darwin;
}; };
spx = callPackage ../development/php-packages/spx { };
sqlsrv = callPackage ../development/php-packages/sqlsrv { }; sqlsrv = callPackage ../development/php-packages/sqlsrv { };
ssh2 = callPackage ../development/php-packages/ssh2 { }; ssh2 = callPackage ../development/php-packages/ssh2 { };
@ -345,6 +345,8 @@ lib.makeScope pkgs.newScope (self: with self; {
xdebug = callPackage ../development/php-packages/xdebug { }; xdebug = callPackage ../development/php-packages/xdebug { };
yaml = callPackage ../development/php-packages/yaml { }; yaml = callPackage ../development/php-packages/yaml { };
} // lib.optionalAttrs config.allowAliases {
php-spx = throw "php-spx is deprecated, use spx instead";
} // ( } // (
# Core extensions # Core extensions
let let

View file

@ -2467,7 +2467,8 @@ self: super: with self; {
cufflinks = callPackage ../development/python-modules/cufflinks { }; cufflinks = callPackage ../development/python-modules/cufflinks { };
cupy = callPackage ../development/python-modules/cupy { }; # cupy 12.2.0 possibly incompatible with cutensor 2.0 that comes with cudaPackages_12
cupy = callPackage ../development/python-modules/cupy { cudaPackages = pkgs.cudaPackages_11; };
curio = callPackage ../development/python-modules/curio { }; curio = callPackage ../development/python-modules/curio { };
@ -13942,7 +13943,6 @@ self: super: with self; {
callPackage ../development/python-modules/tensorflow { callPackage ../development/python-modules/tensorflow {
inherit (pkgs.darwin) cctools; inherit (pkgs.darwin) cctools;
inherit (pkgs.config) cudaSupport; inherit (pkgs.config) cudaSupport;
inherit (self.tensorflow-bin) cudaPackages;
inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security; inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
flatbuffers-core = pkgs.flatbuffers; flatbuffers-core = pkgs.flatbuffers;
flatbuffers-python = self.flatbuffers; flatbuffers-python = self.flatbuffers;
@ -13975,7 +13975,7 @@ self: super: with self; {
tensorly = callPackage ../development/python-modules/tensorly { }; tensorly = callPackage ../development/python-modules/tensorly { };
tensorrt = callPackage ../development/python-modules/tensorrt { }; tensorrt = callPackage ../development/python-modules/tensorrt { cudaPackages = pkgs.cudaPackages_11; };
tensorstore = callPackage ../development/python-modules/tensorstore { }; tensorstore = callPackage ../development/python-modules/tensorstore { };