Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2025-02-04 00:14:40 +00:00
committed by GitHub
75 changed files with 1374 additions and 965 deletions
+4
View File
@@ -8,6 +8,10 @@
- `services.rippleDataApi` has been removed, as `ripple-data-api` was broken and had not been updated since 2022.
- The `rustPlatform.fetchCargoTarball` function is deprecated, because it relied on `cargo vendor` not changing its output format to keep fixed-output derivation hashes the same, which is a Nix invariant, and Cargo 1.84.0 changed `cargo vendor`'s output format.
It should generally be replaced with `rustPlatform.fetchCargoVendor`, but `rustPlatform.importCargoLock` may also be appropriate in some circumstances.
`rustPlatform.buildRustPackage` users must set `useFetchCargoVendor` to `true` and regenerate the `cargoHash`.
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
### Titanium removed {#sec-nixpkgs-release-25.05-incompatibilities-titanium-removed}
+7
View File
@@ -22845,6 +22845,13 @@
githubId = 159372832;
keys = [ { fingerprint = "6F54 C08C 37C8 EC78 15FA 0D01 A721 8CBA 2D80 15C3"; } ];
};
Tert0 = {
name = "Tert0";
github = "Tert0";
githubId = 62036464;
email = "tert0byte@gmail.com";
keys = [ { fingerprint = "F899 D3B5 00BF 98AE 9097 F616 7069 D89F 9E5C 97ED"; } ];
};
tesq0 = {
email = "mikolaj.galkowski@gmail.com";
github = "tesq0";
+415 -358
View File
@@ -1,4 +1,10 @@
{ config, lib, pkgs, utils, ... }:
{
config,
lib,
pkgs,
utils,
...
}:
let
# Type for a valid systemd unit option. Needed for correctly passing "timerConfig" to "systemd.timers"
inherit (utils.systemdUtils.unitOptions) unitOption;
@@ -8,269 +14,297 @@ in
description = ''
Periodic backups to create with Restic.
'';
type = lib.types.attrsOf (lib.types.submodule ({ name, ... }: {
options = {
passwordFile = lib.mkOption {
type = lib.types.str;
description = ''
Read the repository password from a file.
'';
example = "/etc/nixos/restic-password";
};
type = lib.types.attrsOf (
lib.types.submodule (
{ name, ... }:
{
options = {
passwordFile = lib.mkOption {
type = lib.types.str;
description = ''
Read the repository password from a file.
'';
example = "/etc/nixos/restic-password";
};
environmentFile = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
file containing the credentials to access the repository, in the
format of an EnvironmentFile as described by {manpage}`systemd.exec(5)`
'';
};
environmentFile = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
file containing the credentials to access the repository, in the
format of an EnvironmentFile as described by {manpage}`systemd.exec(5)`
'';
};
rcloneOptions = lib.mkOption {
type = with lib.types; nullOr (attrsOf (oneOf [ str bool ]));
default = null;
description = ''
Options to pass to rclone to control its behavior.
See <https://rclone.org/docs/#options> for
available options. When specifying option names, strip the
leading `--`. To set a flag such as
`--drive-use-trash`, which does not take a value,
set the value to the Boolean `true`.
'';
example = {
bwlimit = "10M";
drive-use-trash = "true";
rcloneOptions = lib.mkOption {
type =
with lib.types;
nullOr (
attrsOf (oneOf [
str
bool
])
);
default = null;
description = ''
Options to pass to rclone to control its behavior.
See <https://rclone.org/docs/#options> for
available options. When specifying option names, strip the
leading `--`. To set a flag such as
`--drive-use-trash`, which does not take a value,
set the value to the Boolean `true`.
'';
example = {
bwlimit = "10M";
drive-use-trash = "true";
};
};
rcloneConfig = lib.mkOption {
type =
with lib.types;
nullOr (
attrsOf (oneOf [
str
bool
])
);
default = null;
description = ''
Configuration for the rclone remote being used for backup.
See the remote's specific options under rclone's docs at
<https://rclone.org/docs/>. When specifying
option names, use the "config" name specified in the docs.
For example, to set `--b2-hard-delete` for a B2
remote, use `hard_delete = true` in the
attribute set.
Warning: Secrets set in here will be world-readable in the Nix
store! Consider using the `rcloneConfigFile`
option instead to specify secret values separately. Note that
options set here will override those set in the config file.
'';
example = {
type = "b2";
account = "xxx";
key = "xxx";
hard_delete = true;
};
};
rcloneConfigFile = lib.mkOption {
type = with lib.types; nullOr path;
default = null;
description = ''
Path to the file containing rclone configuration. This file
must contain configuration for the remote specified in this backup
set and also must be readable by root. Options set in
`rcloneConfig` will override those set in this
file.
'';
};
inhibitsSleep = lib.mkOption {
default = false;
type = lib.types.bool;
example = true;
description = ''
Prevents the system from sleeping while backing up.
'';
};
repository = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
repository to backup to.
'';
example = "sftp:backup@192.168.1.100:/backups/${name}";
};
repositoryFile = lib.mkOption {
type = with lib.types; nullOr path;
default = null;
description = ''
Path to the file containing the repository location to backup to.
'';
};
paths = lib.mkOption {
# This is nullable for legacy reasons only. We should consider making it a pure listOf
# after some time has passed since this comment was added.
type = lib.types.nullOr (lib.types.listOf lib.types.str);
default = [ ];
description = ''
Which paths to backup, in addition to ones specified via
`dynamicFilesFrom`. If null or an empty array and
`dynamicFilesFrom` is also null, no backup command will be run.
This can be used to create a prune-only job.
'';
example = [
"/var/lib/postgresql"
"/home/user/backup"
];
};
exclude = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
Patterns to exclude when backing up. See
https://restic.readthedocs.io/en/latest/040_backup.html#excluding-files for
details on syntax.
'';
example = [
"/var/cache"
"/home/*/.cache"
".git"
];
};
timerConfig = lib.mkOption {
type = lib.types.nullOr (lib.types.attrsOf unitOption);
default = {
OnCalendar = "daily";
Persistent = true;
};
description = ''
When to run the backup. See {manpage}`systemd.timer(5)` for
details. If null no timer is created and the backup will only
run when explicitly started.
'';
example = {
OnCalendar = "00:05";
RandomizedDelaySec = "5h";
Persistent = true;
};
};
user = lib.mkOption {
type = lib.types.str;
default = "root";
description = ''
As which user the backup should run.
'';
example = "postgresql";
};
extraBackupArgs = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
Extra arguments passed to restic backup.
'';
example = [
"--exclude-file=/etc/nixos/restic-ignore"
];
};
extraOptions = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
Extra extended options to be passed to the restic --option flag.
'';
example = [
"sftp.command='ssh backup@192.168.1.100 -i /home/user/.ssh/id_rsa -s sftp'"
];
};
initialize = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Create the repository if it doesn't exist.
'';
};
pruneOpts = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
A list of options (--keep-\* et al.) for 'restic forget
--prune', to automatically prune old snapshots. The
'forget' command is run *after* the 'backup' command, so
keep that in mind when constructing the --keep-\* options.
'';
example = [
"--keep-daily 7"
"--keep-weekly 5"
"--keep-monthly 12"
"--keep-yearly 75"
];
};
runCheck = lib.mkOption {
type = lib.types.bool;
default = (builtins.length config.services.restic.backups.${name}.checkOpts > 0);
defaultText = lib.literalExpression ''builtins.length config.services.backups.${name}.checkOpts > 0'';
description = "Whether to run the `check` command with the provided `checkOpts` options.";
example = true;
};
checkOpts = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
A list of options for 'restic check'.
'';
example = [
"--with-cache"
];
};
dynamicFilesFrom = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
A script that produces a list of files to back up. The
results of this command are given to the '--files-from'
option. The result is merged with paths specified via `paths`.
'';
example = "find /home/matt/git -type d -name .git";
};
backupPrepareCommand = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
A script that must run before starting the backup process.
'';
};
backupCleanupCommand = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
A script that must run after finishing the backup process.
'';
};
package = lib.mkPackageOption pkgs "restic" { };
createWrapper = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Whether to generate and add a script to the system path, that has the same environment variables set
as the systemd service. This can be used to e.g. mount snapshots or perform other opterations, without
having to manually specify most options.
'';
};
progressFps = lib.mkOption {
type = with lib.types; nullOr numbers.nonnegative;
default = null;
description = ''
Controls the frequency of progress reporting.
'';
example = 0.1;
};
};
};
rcloneConfig = lib.mkOption {
type = with lib.types; nullOr (attrsOf (oneOf [ str bool ]));
default = null;
description = ''
Configuration for the rclone remote being used for backup.
See the remote's specific options under rclone's docs at
<https://rclone.org/docs/>. When specifying
option names, use the "config" name specified in the docs.
For example, to set `--b2-hard-delete` for a B2
remote, use `hard_delete = true` in the
attribute set.
Warning: Secrets set in here will be world-readable in the Nix
store! Consider using the `rcloneConfigFile`
option instead to specify secret values separately. Note that
options set here will override those set in the config file.
'';
example = {
type = "b2";
account = "xxx";
key = "xxx";
hard_delete = true;
};
};
rcloneConfigFile = lib.mkOption {
type = with lib.types; nullOr path;
default = null;
description = ''
Path to the file containing rclone configuration. This file
must contain configuration for the remote specified in this backup
set and also must be readable by root. Options set in
`rcloneConfig` will override those set in this
file.
'';
};
inhibitsSleep = lib.mkOption {
default = false;
type = lib.types.bool;
example = true;
description = ''
Prevents the system from sleeping while backing up.
'';
};
repository = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
repository to backup to.
'';
example = "sftp:backup@192.168.1.100:/backups/${name}";
};
repositoryFile = lib.mkOption {
type = with lib.types; nullOr path;
default = null;
description = ''
Path to the file containing the repository location to backup to.
'';
};
paths = lib.mkOption {
# This is nullable for legacy reasons only. We should consider making it a pure listOf
# after some time has passed since this comment was added.
type = lib.types.nullOr (lib.types.listOf lib.types.str);
default = [ ];
description = ''
Which paths to backup, in addition to ones specified via
`dynamicFilesFrom`. If null or an empty array and
`dynamicFilesFrom` is also null, no backup command will be run.
This can be used to create a prune-only job.
'';
example = [
"/var/lib/postgresql"
"/home/user/backup"
];
};
exclude = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
Patterns to exclude when backing up. See
https://restic.readthedocs.io/en/latest/040_backup.html#excluding-files for
details on syntax.
'';
example = [
"/var/cache"
"/home/*/.cache"
".git"
];
};
timerConfig = lib.mkOption {
type = lib.types.nullOr (lib.types.attrsOf unitOption);
default = {
OnCalendar = "daily";
Persistent = true;
};
description = ''
When to run the backup. See {manpage}`systemd.timer(5)` for
details. If null no timer is created and the backup will only
run when explicitly started.
'';
example = {
OnCalendar = "00:05";
RandomizedDelaySec = "5h";
Persistent = true;
};
};
user = lib.mkOption {
type = lib.types.str;
default = "root";
description = ''
As which user the backup should run.
'';
example = "postgresql";
};
extraBackupArgs = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
Extra arguments passed to restic backup.
'';
example = [
"--exclude-file=/etc/nixos/restic-ignore"
];
};
extraOptions = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
Extra extended options to be passed to the restic --option flag.
'';
example = [
"sftp.command='ssh backup@192.168.1.100 -i /home/user/.ssh/id_rsa -s sftp'"
];
};
initialize = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Create the repository if it doesn't exist.
'';
};
pruneOpts = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
A list of options (--keep-\* et al.) for 'restic forget
--prune', to automatically prune old snapshots. The
'forget' command is run *after* the 'backup' command, so
keep that in mind when constructing the --keep-\* options.
'';
example = [
"--keep-daily 7"
"--keep-weekly 5"
"--keep-monthly 12"
"--keep-yearly 75"
];
};
runCheck = lib.mkOption {
type = lib.types.bool;
default = (builtins.length config.services.restic.backups.${name}.checkOpts > 0);
defaultText = lib.literalExpression ''builtins.length config.services.backups.${name}.checkOpts > 0'';
description = "Whether to run the `check` command with the provided `checkOpts` options.";
example = true;
};
checkOpts = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
A list of options for 'restic check'.
'';
example = [
"--with-cache"
];
};
dynamicFilesFrom = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
A script that produces a list of files to back up. The
results of this command are given to the '--files-from'
option. The result is merged with paths specified via `paths`.
'';
example = "find /home/matt/git -type d -name .git";
};
backupPrepareCommand = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
A script that must run before starting the backup process.
'';
};
backupCleanupCommand = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
A script that must run after finishing the backup process.
'';
};
package = lib.mkPackageOption pkgs "restic" { };
createWrapper = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Whether to generate and add a script to the system path, that has the same environment variables set
as the systemd service. This can be used to e.g. mount snapshots or perform other opterations, without
having to manually specify most options.
'';
};
};
}));
}
)
);
default = { };
example = {
localbackup = {
@@ -300,119 +334,142 @@ in
assertion = (v.repository == null) != (v.repositoryFile == null);
message = "services.restic.backups.${n}: exactly one of repository or repositoryFile should be set";
}) config.services.restic.backups;
systemd.services =
lib.mapAttrs'
(name: backup:
let
extraOptions = lib.concatMapStrings (arg: " -o ${arg}") backup.extraOptions;
inhibitCmd = lib.concatStringsSep " " [
"${pkgs.systemd}/bin/systemd-inhibit"
"--mode='block'"
"--who='restic'"
"--what='sleep'"
"--why=${lib.escapeShellArg "Scheduled backup ${name}"} "
];
resticCmd = "${lib.optionalString backup.inhibitsSleep inhibitCmd}${backup.package}/bin/restic${extraOptions}";
excludeFlags = lib.optional (backup.exclude != []) "--exclude-file=${pkgs.writeText "exclude-patterns" (lib.concatStringsSep "\n" backup.exclude)}";
filesFromTmpFile = "/run/restic-backups-${name}/includes";
doBackup = (backup.dynamicFilesFrom != null) || (backup.paths != null && backup.paths != []);
pruneCmd = lib.optionals (builtins.length backup.pruneOpts > 0) [
(resticCmd + " forget --prune " + (lib.concatStringsSep " " backup.pruneOpts))
];
checkCmd = lib.optionals backup.runCheck [
(resticCmd + " check " + (lib.concatStringsSep " " backup.checkOpts))
];
# Helper functions for rclone remotes
rcloneRemoteName = builtins.elemAt (lib.splitString ":" backup.repository) 1;
rcloneAttrToOpt = v: "RCLONE_" + lib.toUpper (builtins.replaceStrings [ "-" ] [ "_" ] v);
rcloneAttrToConf = v: "RCLONE_CONFIG_" + lib.toUpper (rcloneRemoteName + "_" + v);
toRcloneVal = v: if lib.isBool v then lib.boolToString v else v;
in
lib.nameValuePair "restic-backups-${name}" ({
environment = {
systemd.services = lib.mapAttrs' (
name: backup:
let
extraOptions = lib.concatMapStrings (arg: " -o ${arg}") backup.extraOptions;
inhibitCmd = lib.concatStringsSep " " [
"${pkgs.systemd}/bin/systemd-inhibit"
"--mode='block'"
"--who='restic'"
"--what='sleep'"
"--why=${lib.escapeShellArg "Scheduled backup ${name}"} "
];
resticCmd = "${lib.optionalString backup.inhibitsSleep inhibitCmd}${backup.package}/bin/restic${extraOptions}";
excludeFlags = lib.optional (
backup.exclude != [ ]
) "--exclude-file=${pkgs.writeText "exclude-patterns" (lib.concatStringsSep "\n" backup.exclude)}";
filesFromTmpFile = "/run/restic-backups-${name}/includes";
doBackup = (backup.dynamicFilesFrom != null) || (backup.paths != null && backup.paths != [ ]);
pruneCmd = lib.optionals (builtins.length backup.pruneOpts > 0) [
(resticCmd + " forget --prune " + (lib.concatStringsSep " " backup.pruneOpts))
];
checkCmd = lib.optionals backup.runCheck [
(resticCmd + " check " + (lib.concatStringsSep " " backup.checkOpts))
];
# Helper functions for rclone remotes
rcloneRemoteName = builtins.elemAt (lib.splitString ":" backup.repository) 1;
rcloneAttrToOpt = v: "RCLONE_" + lib.toUpper (builtins.replaceStrings [ "-" ] [ "_" ] v);
rcloneAttrToConf = v: "RCLONE_CONFIG_" + lib.toUpper (rcloneRemoteName + "_" + v);
toRcloneVal = v: if lib.isBool v then lib.boolToString v else v;
in
lib.nameValuePair "restic-backups-${name}" (
{
environment =
{
# not %C, because that wouldn't work in the wrapper script
RESTIC_CACHE_DIR = "/var/cache/restic-backups-${name}";
RESTIC_PASSWORD_FILE = backup.passwordFile;
RESTIC_REPOSITORY = backup.repository;
RESTIC_REPOSITORY_FILE = backup.repositoryFile;
} // lib.optionalAttrs (backup.rcloneOptions != null) (lib.mapAttrs'
(name: value:
lib.nameValuePair (rcloneAttrToOpt name) (toRcloneVal value)
)
backup.rcloneOptions) // lib.optionalAttrs (backup.rcloneConfigFile != null) {
}
// lib.optionalAttrs (backup.rcloneOptions != null) (
lib.mapAttrs' (
name: value: lib.nameValuePair (rcloneAttrToOpt name) (toRcloneVal value)
) backup.rcloneOptions
)
// lib.optionalAttrs (backup.rcloneConfigFile != null) {
RCLONE_CONFIG = backup.rcloneConfigFile;
} // lib.optionalAttrs (backup.rcloneConfig != null) (lib.mapAttrs'
(name: value:
lib.nameValuePair (rcloneAttrToConf name) (toRcloneVal value)
)
backup.rcloneConfig);
path = [ config.programs.ssh.package ];
restartIfChanged = false;
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
serviceConfig = {
}
// lib.optionalAttrs (backup.rcloneConfig != null) (
lib.mapAttrs' (
name: value: lib.nameValuePair (rcloneAttrToConf name) (toRcloneVal value)
) backup.rcloneConfig
)
// lib.optionalAttrs (backup.progressFps != null) {
RESTIC_PROGRESS_FPS = toString backup.progressFps;
};
path = [ config.programs.ssh.package ];
restartIfChanged = false;
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
serviceConfig =
{
Type = "oneshot";
ExecStart = (lib.optionals doBackup [ "${resticCmd} backup ${lib.concatStringsSep " " (backup.extraBackupArgs ++ excludeFlags)} --files-from=${filesFromTmpFile}" ])
++ pruneCmd ++ checkCmd;
ExecStart =
(lib.optionals doBackup [
"${resticCmd} backup ${
lib.concatStringsSep " " (backup.extraBackupArgs ++ excludeFlags)
} --files-from=${filesFromTmpFile}"
])
++ pruneCmd
++ checkCmd;
User = backup.user;
RuntimeDirectory = "restic-backups-${name}";
CacheDirectory = "restic-backups-${name}";
CacheDirectoryMode = "0700";
PrivateTmp = true;
} // lib.optionalAttrs (backup.environmentFile != null) {
}
// lib.optionalAttrs (backup.environmentFile != null) {
EnvironmentFile = backup.environmentFile;
};
} // lib.optionalAttrs (backup.initialize || doBackup || backup.backupPrepareCommand != null) {
preStart = ''
${lib.optionalString (backup.backupPrepareCommand != null) ''
${pkgs.writeScript "backupPrepareCommand" backup.backupPrepareCommand}
''}
${lib.optionalString (backup.initialize) ''
${resticCmd} cat config > /dev/null || ${resticCmd} init
''}
${lib.optionalString (backup.paths != null && backup.paths != []) ''
cat ${pkgs.writeText "staticPaths" (lib.concatLines backup.paths)} >> ${filesFromTmpFile}
''}
${lib.optionalString (backup.dynamicFilesFrom != null) ''
${pkgs.writeScript "dynamicFilesFromScript" backup.dynamicFilesFrom} >> ${filesFromTmpFile}
''}
'';
} // lib.optionalAttrs (doBackup || backup.backupCleanupCommand != null) {
postStop = ''
${lib.optionalString (backup.backupCleanupCommand != null) ''
${pkgs.writeScript "backupCleanupCommand" backup.backupCleanupCommand}
''}
${lib.optionalString doBackup ''
rm ${filesFromTmpFile}
''}
'';
})
)
config.services.restic.backups;
systemd.timers =
lib.mapAttrs'
(name: backup: lib.nameValuePair "restic-backups-${name}" {
wantedBy = [ "timers.target" ];
timerConfig = backup.timerConfig;
})
(lib.filterAttrs (_: backup: backup.timerConfig != null) config.services.restic.backups);
}
// lib.optionalAttrs (backup.initialize || doBackup || backup.backupPrepareCommand != null) {
preStart = ''
${lib.optionalString (backup.backupPrepareCommand != null) ''
${pkgs.writeScript "backupPrepareCommand" backup.backupPrepareCommand}
''}
${lib.optionalString (backup.initialize) ''
${resticCmd} cat config > /dev/null || ${resticCmd} init
''}
${lib.optionalString (backup.paths != null && backup.paths != [ ]) ''
cat ${pkgs.writeText "staticPaths" (lib.concatLines backup.paths)} >> ${filesFromTmpFile}
''}
${lib.optionalString (backup.dynamicFilesFrom != null) ''
${pkgs.writeScript "dynamicFilesFromScript" backup.dynamicFilesFrom} >> ${filesFromTmpFile}
''}
'';
}
// lib.optionalAttrs (doBackup || backup.backupCleanupCommand != null) {
postStop = ''
${lib.optionalString (backup.backupCleanupCommand != null) ''
${pkgs.writeScript "backupCleanupCommand" backup.backupCleanupCommand}
''}
${lib.optionalString doBackup ''
rm ${filesFromTmpFile}
''}
'';
}
)
) config.services.restic.backups;
systemd.timers = lib.mapAttrs' (
name: backup:
lib.nameValuePair "restic-backups-${name}" {
wantedBy = [ "timers.target" ];
timerConfig = backup.timerConfig;
}
) (lib.filterAttrs (_: backup: backup.timerConfig != null) config.services.restic.backups);
# generate wrapper scripts, as described in the createWrapper option
environment.systemPackages = lib.mapAttrsToList (name: backup: let
extraOptions = lib.concatMapStrings (arg: " -o ${arg}") backup.extraOptions;
resticCmd = "${backup.package}/bin/restic${extraOptions}";
in pkgs.writeShellScriptBin "restic-${name}" ''
set -a # automatically export variables
${lib.optionalString (backup.environmentFile != null) "source ${backup.environmentFile}"}
# set same environment variables as the systemd service
${lib.pipe config.systemd.services."restic-backups-${name}".environment [
(lib.filterAttrs (n: v: v != null && n != "PATH"))
(lib.mapAttrsToList (n: v: "${n}=${v}"))
(lib.concatStringsSep "\n")
]}
PATH=${config.systemd.services."restic-backups-${name}".environment.PATH}:$PATH
environment.systemPackages = lib.mapAttrsToList (
name: backup:
let
extraOptions = lib.concatMapStrings (arg: " -o ${arg}") backup.extraOptions;
resticCmd = "${backup.package}/bin/restic${extraOptions}";
in
pkgs.writeShellScriptBin "restic-${name}" ''
set -a # automatically export variables
${lib.optionalString (backup.environmentFile != null) "source ${backup.environmentFile}"}
# set same environment variables as the systemd service
${lib.pipe config.systemd.services."restic-backups-${name}".environment [
(lib.filterAttrs (n: v: v != null && n != "PATH"))
(lib.mapAttrsToList (n: v: "${n}=${v}"))
(lib.concatStringsSep "\n")
]}
PATH=${config.systemd.services."restic-backups-${name}".environment.PATH}:$PATH
exec ${resticCmd} "$@"
'') (lib.filterAttrs (_: v: v.createWrapper) config.services.restic.backups);
exec ${resticCmd} "$@"
''
) (lib.filterAttrs (_: v: v.createWrapper) config.services.restic.backups);
};
}
+13 -1
View File
@@ -20,7 +20,8 @@ let
NoNewPrivileges = true;
PrivateUsers = true;
PrivateTmp = true;
PrivateDevices = true;
PrivateDevices = cfg.accelerationDevices == [ ];
DeviceAllow = mkIf (cfg.accelerationDevices != null) cfg.accelerationDevices;
PrivateMounts = true;
ProtectClock = true;
ProtectControlGroups = true;
@@ -161,6 +162,17 @@ in
};
};
accelerationDevices = mkOption {
type = types.nullOr (types.listOf types.str);
default = [ ];
example = [ "/dev/dri/renderD128" ];
description = ''
A list of device paths to hardware acceleration devices that immich should
have access to. This is useful when transcoding media files.
The special value `[ ]` will disallow all devices using `PrivateDevices`. `null` will give access to all devices.
'';
};
database = {
enable =
mkEnableOption "the postgresql database for use with immich. See {option}`services.postgresql`"
@@ -17,8 +17,8 @@ let
sha256Hash = "sha256-UxxofUCJGhQTLMwHGaSdNDqWnjkpRVwm2oqLLp3jR8E=";
};
latestVersion = {
version = "2024.3.2.1"; # "Android Studio Meerkat Feature Drop | 2024.3.2 Canary 1"
sha256Hash = "sha256-qJKkuB8v4wOqEQwnDyMegLbRLzxVwCq/hS1TQ3lhBKk=";
version = "2024.3.2.2"; # "Android Studio Meerkat Feature Drop | 2024.3.2 Canary 2"
sha256Hash = "sha256-P0yBlqcuTSmJ4gmSvSCW31ARqDBC3NC8PozQHIXPS8Y=";
};
in {
# Attributes are named by their corresponding release channels
@@ -1302,6 +1302,30 @@ final: prev:
meta.homepage = "https://github.com/giuxtaposition/blink-cmp-copilot/";
};
blink-cmp-spell = buildVimPlugin {
pname = "blink-cmp-spell";
version = "2025-02-01";
src = fetchFromGitHub {
owner = "ribru17";
repo = "blink-cmp-spell";
rev = "38d6797dea6f72baa6e8b3bfca6da96d8fcac64d";
sha256 = "19pnasa446iiapgsr3z2fpk0nnrzh8g5wrzrq8n0y4q0z6spc9f6";
};
meta.homepage = "https://github.com/ribru17/blink-cmp-spell/";
};
blink-cmp-git = buildVimPlugin {
pname = "blink-cmp-git";
version = "2025-01-27";
src = fetchFromGitHub {
owner = "Kaiser-Yang";
repo = "blink-cmp-git";
rev = "7c6cfa3d427f50a6eae5c38628b31b8675bab05d";
sha256 = "08hfwnjgsl88bkphpdxkdswdnc10mlxpsrk084kgzk4j19w55gyq";
};
meta.homepage = "https://github.com/Kaiser-Yang/blink-cmp-git/";
};
blink-compat = buildVimPlugin {
pname = "blink.compat";
version = "2025-01-20";
@@ -3007,6 +3031,18 @@ final: prev:
meta.homepage = "https://github.com/hat0uma/csvview.nvim/";
};
ctags-lsp-nvim = buildVimPlugin {
pname = "ctags-lsp.nvim";
version = "2024-12-08";
src = fetchFromGitHub {
owner = "netmute";
repo = "ctags-lsp.nvim";
rev = "aaae7b5d8dc7aeb836c63301b8eb7311af49bb2a";
sha256 = "06h388vkp8nv15wbh96pza85994xf979s7kjqrli4s6y5ygw6m02";
};
meta.homepage = "https://github.com/netmute/ctags-lsp.nvim/";
};
ctrlp-cmatcher = buildVimPlugin {
pname = "ctrlp-cmatcher";
version = "2015-10-15";
@@ -296,6 +296,10 @@ in
dependencies = [ self.blink-cmp ];
};
blink-cmp-git = super.blink-cmp-git.overrideAttrs {
dependencies = [ self.plenary-nvim ];
};
bluloco-nvim = super.bluloco-nvim.overrideAttrs {
dependencies = [ self.lush-nvim ];
};
@@ -106,6 +106,8 @@ https://github.com/max397574/better-escape.nvim/,,
https://github.com/LunarVim/bigfile.nvim/,,
https://github.com/APZelos/blamer.nvim/,HEAD,
https://github.com/giuxtaposition/blink-cmp-copilot/,HEAD,
https://github.com/Kaiser-Yang/blink-cmp-git/,HEAD,
https://github.com/ribru17/blink-cmp-spell/,HEAD,
https://github.com/fang2hou/blink-copilot/,HEAD,
https://github.com/moyiz/blink-emoji.nvim/,HEAD,
https://github.com/mikavilpas/blink-ripgrep.nvim/,HEAD,
@@ -248,6 +250,7 @@ https://github.com/Decodetalkers/csharpls-extended-lsp.nvim/,HEAD,
https://github.com/davidmh/cspell.nvim/,HEAD,
https://github.com/chrisbra/csv.vim/,,
https://github.com/hat0uma/csvview.nvim/,HEAD,
https://github.com/netmute/ctags-lsp.nvim/,HEAD,
https://github.com/JazzCore/ctrlp-cmatcher/,,
https://github.com/FelikZ/ctrlp-py-matcher/,,
https://github.com/amiorin/ctrlp-z/,,
@@ -1,18 +1,18 @@
{
"airgap-images-amd64": {
"url": "https://github.com/k3s-io/k3s/releases/download/v1.32.0%2Bk3s1/k3s-airgap-images-amd64.tar.zst",
"sha256": "0dz8zpb1la98y63x7qs00s28bzn10ycipwsf6a5lvyhzzgpl253a"
"url": "https://github.com/k3s-io/k3s/releases/download/v1.32.1%2Bk3s1/k3s-airgap-images-amd64.tar.zst",
"sha256": "0sn4m1djj8npdx90mny7cwc843ri9q4s0w906rgabjw2v1h56qz0"
},
"airgap-images-arm": {
"url": "https://github.com/k3s-io/k3s/releases/download/v1.32.0%2Bk3s1/k3s-airgap-images-arm.tar.zst",
"sha256": "04qsn75xzfl29fksnb0rzcj7cfdi84smmhn9v47l423zbgr30pfv"
"url": "https://github.com/k3s-io/k3s/releases/download/v1.32.1%2Bk3s1/k3s-airgap-images-arm.tar.zst",
"sha256": "1mk8xjc4zj3a6jm53drwicqsipy58faxmq990s14lqvrhh3qjnh4"
},
"airgap-images-arm64": {
"url": "https://github.com/k3s-io/k3s/releases/download/v1.32.0%2Bk3s1/k3s-airgap-images-arm64.tar.zst",
"sha256": "1bk8skws87561n06mkwh92c93v5rinf8nmwydn06p8crz9ggp5q6"
"url": "https://github.com/k3s-io/k3s/releases/download/v1.32.1%2Bk3s1/k3s-airgap-images-arm64.tar.zst",
"sha256": "0s1h6lksn83r71ia61h9cjwiqigz9nw9n9jm92749782c8zi918x"
},
"images-list": {
"url": "https://github.com/k3s-io/k3s/releases/download/v1.32.0%2Bk3s1/k3s-images.txt",
"sha256": "1gqiaszfw49hsbn7xkkadykaf028vys13ykqvpkqar0f7hwwbja6"
"url": "https://github.com/k3s-io/k3s/releases/download/v1.32.1%2Bk3s1/k3s-images.txt",
"sha256": "08qxykq9aylfgm24g8ybki62r2sdzvnmv72pan4i2nn0js93nnk9"
}
}
@@ -1,8 +1,8 @@
{
k3sVersion = "1.32.0+k3s1";
k3sCommit = "cca8facaa33a3ec7897349a8740fd96029590c31";
k3sRepoSha256 = "0l8mciwv2wr266zxv9zc5wpgf92gqvzg4d08z4g63wbvsi7zflzh";
k3sVendorHash = "sha256-3hY67A6GbzB2ki5GB7GmmmGG5A4cup17zhkUNiN1chk=";
k3sVersion = "1.32.1+k3s1";
k3sCommit = "6a322f122729e0e668ca67fd9f0e993541bdce49";
k3sRepoSha256 = "00ljl6mzbyvyy25cz0k511wmm1zhllvz0l2ns72ic4xjg9sxq6zi";
k3sVendorHash = "sha256-/VQslKifAKFo57Zut9F8jWWNuMRFlMgpGo/FoqutT7Q=";
chartVersions = import ./chart-versions.nix;
imagesVersions = builtins.fromJSON (builtins.readFile ./images-versions.json);
k3sRootVersion = "0.14.1";
@@ -69,94 +69,102 @@ let
else
throw "fetchCargoTarball requires a hash for ${name}";
in
stdenv.mkDerivation (
{
name = "${name}-vendor.tar.gz";
nativeBuildInputs = [
cacert
git
cargo-vendor-normalise
cargo
] ++ nativeBuildInputs;
lib.warn
''
rustPlatform.fetchCargoTarball is deprecated in favor of rustPlatform.fetchCargoVendor.
If you are using buildRustPackage, try setting useFetchCargoVendor = true and regenerating cargoHash.
See the 25.05 release notes for more information.
''
(
stdenv.mkDerivation (
{
name = "${name}-vendor.tar.gz";
nativeBuildInputs = [
cacert
git
cargo-vendor-normalise
cargo
] ++ nativeBuildInputs;
dontConfigure = true;
buildPhase = ''
runHook preBuild
dontConfigure = true;
buildPhase = ''
runHook preBuild
# Ensure deterministic Cargo vendor builds
export SOURCE_DATE_EPOCH=1
# Ensure deterministic Cargo vendor builds
export SOURCE_DATE_EPOCH=1
if [ -n "''${cargoRoot-}" ]; then
cd "$cargoRoot"
fi
if [ -n "''${cargoRoot-}" ]; then
cd "$cargoRoot"
fi
if [[ ! -f Cargo.lock ]]; then
echo
echo "ERROR: The Cargo.lock file doesn't exist"
echo
echo "Cargo.lock is needed to make sure that cargoHash/cargoSha256 doesn't change"
echo "when the registry is updated."
echo
if [[ ! -f Cargo.lock ]]; then
echo
echo "ERROR: The Cargo.lock file doesn't exist"
echo
echo "Cargo.lock is needed to make sure that cargoHash/cargoSha256 doesn't change"
echo "when the registry is updated."
echo
exit 1
fi
exit 1
fi
# Keep the original around for copyLockfile
cp Cargo.lock Cargo.lock.orig
# Keep the original around for copyLockfile
cp Cargo.lock Cargo.lock.orig
export CARGO_HOME=$(mktemp -d cargo-home.XXX)
CARGO_CONFIG=$(mktemp cargo-config.XXXX)
export CARGO_HOME=$(mktemp -d cargo-home.XXX)
CARGO_CONFIG=$(mktemp cargo-config.XXXX)
if [[ -n "$NIX_CRATES_INDEX" ]]; then
cat >$CARGO_HOME/config.toml <<EOF
[source.crates-io]
replace-with = 'mirror'
[source.mirror]
registry = "$NIX_CRATES_INDEX"
EOF
fi
if [[ -n "$NIX_CRATES_INDEX" ]]; then
cat >$CARGO_HOME/config.toml <<EOF
[source.crates-io]
replace-with = 'mirror'
[source.mirror]
registry = "$NIX_CRATES_INDEX"
EOF
fi
${cargoUpdateHook}
${cargoUpdateHook}
# Override the `http.cainfo` option usually specified in `.cargo/config`.
export CARGO_HTTP_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
# Override the `http.cainfo` option usually specified in `.cargo/config`.
export CARGO_HTTP_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
if grep '^source = "git' Cargo.lock; then
echo
echo "ERROR: The Cargo.lock contains git dependencies"
echo
echo "This is not supported in the default fixed-output derivation fetcher."
echo "Set \`useFetchCargoVendor = true\` / use fetchCargoVendor"
echo "or use cargoLock.lockFile / importCargoLock instead."
echo
if grep '^source = "git' Cargo.lock; then
echo
echo "ERROR: The Cargo.lock contains git dependencies"
echo
echo "This is not supported in the default fixed-output derivation fetcher."
echo "Set \`useFetchCargoVendor = true\` / use fetchCargoVendor"
echo "or use cargoLock.lockFile / importCargoLock instead."
echo
exit 1
fi
exit 1
fi
cargo vendor $name --respect-source-config | cargo-vendor-normalise > $CARGO_CONFIG
cargo vendor $name --respect-source-config | cargo-vendor-normalise > $CARGO_CONFIG
# Create an empty vendor directory when there is no dependency to vendor
mkdir -p $name
# Add the Cargo.lock to allow hash invalidation
cp Cargo.lock.orig $name/Cargo.lock
# Create an empty vendor directory when there is no dependency to vendor
mkdir -p $name
# Add the Cargo.lock to allow hash invalidation
cp Cargo.lock.orig $name/Cargo.lock
# Packages with git dependencies generate non-default cargo configs, so
# always install it rather than trying to write a standard default template.
install -D $CARGO_CONFIG $name/.cargo/config
# Packages with git dependencies generate non-default cargo configs, so
# always install it rather than trying to write a standard default template.
install -D $CARGO_CONFIG $name/.cargo/config
runHook postBuild
'';
runHook postBuild
'';
# Build a reproducible tar, per instructions at https://reproducible-builds.org/docs/archives/
installPhase = ''
tar --owner=0 --group=0 --numeric-owner --format=gnu \
--sort=name --mtime="@$SOURCE_DATE_EPOCH" \
-czf $out $name
'';
# Build a reproducible tar, per instructions at https://reproducible-builds.org/docs/archives/
installPhase = ''
tar --owner=0 --group=0 --numeric-owner --format=gnu \
--sort=name --mtime="@$SOURCE_DATE_EPOCH" \
-czf $out $name
'';
inherit (hash_) outputHashAlgo outputHash;
inherit (hash_) outputHashAlgo outputHash;
impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [ "NIX_CRATES_INDEX" ];
}
// (removeAttrs args removedArgs)
)
impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [ "NIX_CRATES_INDEX" ];
}
// (removeAttrs args removedArgs)
)
)
+3 -3
View File
@@ -10,15 +10,15 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-show-asm";
version = "0.2.46";
version = "0.2.47";
src = fetchCrate {
inherit pname version;
hash = "sha256-MiODtrEE/arK5SiSs/YuFWBkSQkSUrPqUZcjFd+HNbg=";
hash = "sha256-ZXqcBAB6gxtukQ51JPVl7qUM7eAhiBgmeZZD2pF5q2g=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-8PxjPjb/ewLIK/bS6IYy/NBJQZirXWKSiz2c/lzg8zU=";
cargoHash = "sha256-Luts8Pe1ZltA84GQJONsDSdeOSm0F+oJ5gNJDGYBPaQ=";
nativeBuildInputs = [
installShellFiles
@@ -0,0 +1,109 @@
{
pkgsi686Linux,
lib,
stdenv,
fetchurl,
dpkg,
makeWrapper,
ghostscript,
file,
gnused,
gnugrep,
coreutils,
which,
perl,
}:
let
version = "1.0.2-0";
model = "dcpl3550cdw";
interpreter = "${pkgsi686Linux.stdenv.cc.libc}/lib/ld-linux.so.2";
in
stdenv.mkDerivation {
pname = "cups-brother-${model}";
inherit version;
src = fetchurl {
url = "https://download.brother.com/welcome/dlf103919/dcpl3550cdwpdrv-${version}.i386.deb";
hash = "sha256-FbtqISK3f1q1+JXJ+RP5O/8G0ZW9gcCS7OI0YRljwyY=";
};
nativeBuildInputs = [
dpkg
makeWrapper
];
unpackPhase = ''
runHook preUnpack
dpkg-deb -x $src $out
runHook postUnpack
'';
installPhase = ''
runHook preInstall
substituteInPlace $out/opt/brother/Printers/${model}/lpd/filter_${model} \
--replace-fail /usr/bin/perl ${lib.getExe perl} \
--replace-fail "PRINTER =~" "PRINTER = \"${model}\"; #" \
--replace-fail "BR_PRT_PATH =~" "BR_PRT_PATH = \"$out/opt/brother/Printers/${model}/\"; #"
substituteInPlace $out/opt/brother/Printers/${model}/cupswrapper/brother_lpdwrapper_${model} \
--replace-fail /usr/bin/perl ${lib.getExe perl} \
--replace-fail "basedir =~ " "basedir = \"$out/opt/brother/Printers/${model}/\"; #" \
--replace-fail "PRINTER =~ " "PRINTER = \"${model}\"; #" \
--replace-fail "LPDCONFIGEXE=" "LPDCONFIGEXE=\"$out/usr/bin/brprintconf_\"; #"
patchelf --set-interpreter ${interpreter} $out/opt/brother/Printers/${model}/lpd/br${model}filter
patchelf --set-interpreter ${interpreter} $out/usr/bin/brprintconf_${model}
mkdir -p $out/lib/cups/filter $out/share/cups/model
ln -s $out/opt/brother/Printers/${model}/lpd/filter_${model} $out/lib/cups/filter/brlpdwrapper${model}
ln -s $out/opt/brother/Printers/${model}/cupswrapper/brother_lpdwrapper_${model} $out/lib/cups/filter/brother_lpdwrapper_${model}
ln -s $out/opt/brother/Printers/${model}/cupswrapper/brother_${model}_printer_en.ppd $out/share/cups/model/brother_${model}_printer_en.ppd
runHook postInstall
'';
postFixup = ''
wrapProgram $out/opt/brother/Printers/${model}/lpd/filter_${model} \
--prefix PATH ":" ${
lib.makeBinPath [
ghostscript
file
gnused
gnugrep
coreutils
which
]
}
wrapProgram $out/opt/brother/Printers/${model}/cupswrapper/brother_lpdwrapper_${model} \
--prefix PATH ":" ${
lib.makeBinPath [
gnugrep
coreutils
]
}
wrapProgram $out/usr/bin/brprintconf_${model} \
--set LD_PRELOAD "${pkgsi686Linux.libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS /opt=$out/opt
wrapProgram $out/opt/brother/Printers/${model}/lpd/br${model}filter \
--set LD_PRELOAD "${pkgsi686Linux.libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS /opt=$out/opt
'';
meta = {
homepage = "https://www.brother.com/";
downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=eu_ot&lang=en&prod=${model}_eu&os=128";
description = "Brother DCP-L3550CDW printer driver";
license = with lib.licenses; [
unfreeRedistributable
gpl2Only
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
platforms = [
"x86_64-linux"
"i686-linux"
];
maintainers = with lib.maintainers; [ Tert0 ];
};
}
+31 -7
View File
@@ -3,34 +3,58 @@
stdenvNoCC,
fetchurl,
unzip,
makeBinaryWrapper,
versionCheckHook,
writeShellScript,
coreutils,
xcbuild,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "cyberduck";
version = "9.0.0.41777";
version = "9.1.2.42722";
src = fetchurl {
url = "https://update.cyberduck.io/Cyberduck-${finalAttrs.version}.zip";
hash = "sha256-oDTFkoX4uu+X5vLDHn+tGoNB/Pd9ncdFE8dGS6PT5wg=";
hash = "sha256-oGerVv6CteMl+MJ9AfGYmo6Iv6i7BFUCF+E3My6UH6I=";
};
sourceRoot = ".";
nativeBuildInputs = [ unzip ];
nativeBuildInputs = [
unzip
makeBinaryWrapper
];
installPhase = ''
runHook preInstall
mkdir -p $out/Applications
cp -r Cyberduck.app $out/Applications
makeWrapper $out/Applications/Cyberduck.app/Contents/MacOS/Cyberduck $out/bin/cyberduck
runHook postInstall
'';
meta = with lib; {
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgram = writeShellScript "version-check" ''
marketing_version=$(${xcbuild}/bin/PlistBuddy -c "Print :CFBundleShortVersionString" "$1" | ${coreutils}/bin/tr -d '"')
build_version=$(${xcbuild}/bin/PlistBuddy -c "Print :CFBundleVersion" "$1")
echo $marketing_version.$build_version
'';
versionCheckProgramArg = [ "${placeholder "out"}/Applications/Cyberduck.app/Contents/Info.plist" ];
doInstallCheck = true;
meta = {
description = "Libre file transfer client for Mac and Windows";
homepage = "https://cyberduck.io";
license = licenses.gpl3Plus;
changelog = "https://cyberduck.io/changelog/";
license = lib.licenses.gpl3Plus;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
maintainers = with maintainers; [ emilytrau ];
platforms = platforms.darwin;
maintainers = with lib.maintainers; [
emilytrau
DimitarNestorov
];
platforms = lib.platforms.darwin;
mainProgram = "cyberduck";
};
})
-39
View File
@@ -1,39 +0,0 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "dave";
version = "0.5.0";
src = fetchFromGitHub {
owner = "micromata";
repo = "dave";
rev = "v${version}";
hash = "sha256-JgRclcSrdgTXBuU8attSbDhRj4WUGXSpKTrUZ8mP5ns=";
};
vendorHash = "sha256-yo6DEvKnCQak+MrpIIDU4DkRhRP+HeJXLV87NRf6g/c=";
subPackages = [
"cmd/dave"
"cmd/davecli"
];
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
"-X main.builtBy=nixpkgs"
];
meta = {
homepage = "https://github.com/micromata/dave";
description = "Totally simple and very easy to configure stand alone webdav server";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ lunik1 ];
mainProgram = "dave";
};
}
+2 -2
View File
@@ -5,11 +5,11 @@
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbip-asn-lite";
version = "2025-01";
version = "2025-02";
src = fetchurl {
url = "https://download.db-ip.com/free/dbip-asn-lite-${finalAttrs.version}.mmdb.gz";
hash = "sha256-cRlhlP5ml+swBZGiLpVH5s7nvPiHUi7qxM2GajoeK+Y=";
hash = "sha256-lQmBPlaUib2NDLNmrB7x2HiSRXcIi3uC8wxEEBtbecI=";
};
dontUnpack = true;
+2 -2
View File
@@ -5,11 +5,11 @@
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbip-city-lite";
version = "2025-01";
version = "2025-02";
src = fetchurl {
url = "https://download.db-ip.com/free/dbip-city-lite-${finalAttrs.version}.mmdb.gz";
hash = "sha256-fBS2JASkZaLNCjNAadNkrctixTkDvpkTUYP0yUHBXnw=";
hash = "sha256-p0cLbcLeoqemY4zhK7tNP//9H27BV6YOLBTgDqdcI7Q=";
};
dontUnpack = true;
@@ -5,11 +5,11 @@
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbip-country-lite";
version = "2025-01";
version = "2025-02";
src = fetchurl {
url = "https://download.db-ip.com/free/dbip-country-lite-${finalAttrs.version}.mmdb.gz";
hash = "sha256-PVpqo1t6V0kdVqA1aEgU0UqwhzmLLMHYB6gyoMusVv8=";
hash = "sha256-/VsGdiiDkY13fyfLoa3N1nVJEVUrqRPNFg3Bs6MVkLY=";
};
dontUnpack = true;
+3 -2
View File
@@ -19,8 +19,7 @@
let
version = "1.1.0";
hash = "sha256-gdrhzyhxRHZkALB3SG/aWOdA5iMYkel3Cjk5VBy3E4M=";
useFetchCargoVendor = true;
cargoHash = "sha256-1KtS/lzVUEDiDCo3b8RFDYeTMsbHk2tIdniFZfoTxYk=";
cargoHash = "sha256-ulqMjpW3UI509vs3jVHXAEQUhxU/f/hN8XiIo8UBRq8=";
noDefaultFeatures = lib.warnIf
(args ? buildNoDefaultFeatures)
@@ -45,6 +44,8 @@ rustPlatform.buildRustPackage {
rev = "v${version}";
};
useFetchCargoVendor = true;
buildNoDefaultFeatures = noDefaultFeatures;
buildFeatures = features;
+11 -4
View File
@@ -6,21 +6,22 @@
openssl,
stdenv,
installShellFiles,
versionCheckHook,
}:
rustPlatform.buildRustPackage rec {
pname = "hydra-check";
version = "2.0.1";
version = "2.0.3";
src = fetchFromGitHub {
owner = "nix-community";
repo = "hydra-check";
rev = "v${version}";
hash = "sha256-QdCXToHNymOdlTyQjk9eo7LTznGKB+3pIOgjjaGoTXg=";
tag = "v${version}";
hash = "sha256-h8bs6oe8zkzEDCoC9F6IzTaTkNf4eAAjt663V0qn73I=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-zjpsMuwOdDm4St8M0h4yoJhTirgANJ6s5hfbayyq/uE=";
cargoHash = "sha256-aV4URx9bGAOLWRh/kFDU67GiXk7RdCqfahG+fZPfdUo=";
nativeBuildInputs = [
pkg-config
@@ -38,6 +39,12 @@ rustPlatform.buildRustPackage rec {
--zsh <($out/bin/hydra-check --shell-completion zsh)
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
meta = {
description = "Check hydra for the build status of a package";
homepage = "https://github.com/nix-community/hydra-check";
+3 -3
View File
@@ -56,16 +56,16 @@ assert (extraParameters != null) -> set != null;
buildNpmPackage rec {
pname = "Iosevka${toString set}";
version = "32.4.0";
version = "32.5.0";
src = fetchFromGitHub {
owner = "be5invis";
repo = "iosevka";
rev = "v${version}";
hash = "sha256-kB4CsC/hHstajLcVYBxO7RD0lsZymrxlUha4cRtQ7Ak=";
hash = "sha256-MzsAkq5l4TP19UJNPW/8hvIqsJd94pADrrv8wLG6NMQ=";
};
npmDepsHash = "sha256-Qr7fN49qyaqaSutrdT7HjWis7jjwYR/S2kxkHs7EhXY=";
npmDepsHash = "sha256-HeqwpZyHLHdMhd/UfXVBonMu+PhStrLCxAMuP/KuTT8=";
nativeBuildInputs =
[
+3 -3
View File
@@ -15,17 +15,17 @@
rustPlatform.buildRustPackage rec {
pname = "jay";
version = "1.7.0";
version = "1.9.0";
src = fetchFromGitHub {
owner = "mahkoh";
repo = pname;
rev = "v${version}";
sha256 = "sha256-VAg59hmI38hJzkh/Vtv6LjrqQFLaq7rIGtk9sfQe1TA=";
sha256 = "sha256-RGBFIYVeunMhZbpRExKYh7VlhodOsCN7WzN/7UPEJdc=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-1Jf0uZYxk7I6dn+eFtohBoZtOJatvFEYom4A0dZbKYQ=";
cargoHash = "sha256-vW+87tqc9bJ/xDOqcgz3PrqEkf7daZp3nb0hwXDxULI=";
SHADERC_LIB_DIR = "${lib.getLib shaderc}/lib";
+3 -3
View File
@@ -5,16 +5,16 @@
buildGoModule rec {
pname = "kubefirst";
version = "2.7.9";
version = "2.8.0";
src = fetchFromGitHub {
owner = "konstructio";
repo = "kubefirst";
tag = "v${version}";
hash = "sha256-nBYwvOgkkx3NXELK+h9SpapoMjAVauI9leCPhKNZfh0=";
hash = "sha256-WggQdhMFbUbJ2bAj2oSveIHMg1HWPj0I14qiE3PTGqE=";
};
vendorHash = "sha256-DYEEkduud1sXVao7xbJoyvmMhfMJUPswIs3v20tncwo=";
vendorHash = "sha256-WjucnfiMxthygFaxseggMmlkF/Oih310O56Y7lW+11E=";
ldflags = [
"-s"
@@ -0,0 +1,40 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
nix-update-script,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "libmaddy-markdown";
version = "1.3.0";
src = fetchFromGitHub {
owner = "progsource";
repo = "maddy";
tag = finalAttrs.version;
hash = "sha256-sVUXACT94PSPcohnOyIp7KK8baCBuf6ZNMIyk6Cfdjg=";
};
dontBuild = true;
dontConfigure = true;
installPhase = ''
runHook preInstall
mkdir -p $out/include/maddy
install -Dm444 include/maddy/* -t $out/include/maddy
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "C++ Markdown to HTML header-only parser library";
homepage = "https://github.com/progsource/maddy";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.normalcea ];
platforms = lib.platforms.unix;
};
})
+83
View File
@@ -0,0 +1,83 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
ninja,
pkg-config,
validatePkgConfig,
openssl,
sqlcipher,
boost,
curl,
glib,
libsecret,
libmaddy-markdown,
testers,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "libnick";
version = "2025.1.0";
src = fetchFromGitHub {
owner = "NickvisionApps";
repo = "libnick";
tag = finalAttrs.version;
hash = "sha256-Y7Vn9KaZjEJ29o2GouNl5B/svAtJ24El9WYgXHhnxho=";
};
nativeBuildInputs =
[
cmake
ninja
]
++ lib.optionals stdenv.hostPlatform.isUnix [
pkg-config
validatePkgConfig
];
buildInputs =
[
boost
libmaddy-markdown
]
++ lib.optionals stdenv.hostPlatform.isUnix [
glib
openssl
]
++ lib.optional stdenv.hostPlatform.isWindows sqlcipher;
propagatedBuildInputs = [
curl
libsecret
];
cmakeFlags = [
(lib.cmakeBool "BUILD_TESTING" finalAttrs.finalPackage.doCheck)
(lib.cmakeFeature "USE_LIBSECRET" "true")
];
postPatch = ''
substituteInPlace cmake/libnick.pc.in \
--replace-fail 'libdir=''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@' \
'libdir=@CMAKE_INSTALL_FULL_LIBDIR@' \
--replace-fail 'includedir=''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@' \
'includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@'
'';
passthru = {
tests.pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
updateScript = nix-update-script { };
};
meta = {
description = "Cross-platform development base for native Nickvision applications";
homepage = "https://github.com/NickvisionApps/libnick";
license = lib.licenses.gpl3Plus;
maintainers = [ lib.maintainers.normalcea ];
platforms = lib.platforms.unix ++ lib.platforms.windows;
pkgConfigModules = [ "libnick" ];
};
})
+2 -2
View File
@@ -12,14 +12,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libxisf";
version = "0.2.12";
version = "0.2.13";
src = fetchFromGitea {
domain = "gitea.nouspiro.space";
owner = "nou";
repo = "libXISF";
rev = "v${finalAttrs.version}";
hash = "sha256-QhshgKyf9s5U5JMa5TZelIo1tpJGlsOQePPG1kEfbq8=";
hash = "sha256-vc42Jw7kBbQYu+/6jakxFnSuVkS8t6ZyYuSMLGMnEn4=";
};
patches = [
+40
View File
@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
libxml2,
glibmm,
meson,
ninja,
}:
stdenv.mkDerivation rec {
pname = "libxmlxx5";
version = "5.4";
src = fetchurl {
url = "https://download.gnome.org/sources/libxml++/${version}/libxml++-${lib.versions.pad 3 version}.tar.xz";
hash = "sha256-6aI8Q2aGqUaY0hOOa8uvhJEh1jv6D1DcNP77/XlWaEg=";
};
nativeBuildInputs = [
pkg-config
meson
ninja
];
buildInputs = [ glibmm ];
propagatedBuildInputs = [ libxml2 ];
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
meta = {
description = "C++ wrapper for the libxml2 XML parser library";
homepage = "https://libxmlplusplus.sourceforge.net/";
license = lib.licenses.lgpl2Plus;
maintainers = [ lib.maintainers.normalcea ];
platforms = lib.platforms.unix;
};
}
+2 -2
View File
@@ -8,11 +8,11 @@
stdenv.mkDerivation rec {
pname = "natural-docs";
version = "2.3";
version = "2.3.1";
src = fetchzip {
url = "https://naturaldocs.org/download/natural_docs/${version}/Natural_Docs_${version}.zip";
sha256 = "sha256-yk9PxrZ6+ocqGLB+xCBGiQKnHLMdp2r+NuoMhWsr0GM=";
sha256 = "sha256-gjAhS2hdFA8G+E5bJD18BQdb7PrBeRnpBBSlnVJ5hgY=";
};
dontPatch = true;
+18 -18
View File
@@ -1,38 +1,38 @@
{
"linux-386": {
"sys": "linux-386",
"url": "https://bin.equinox.io/a/cPMgrL2ncCb/ngrok-v3-3.18.1-linux-386",
"sha256": "f0b85d6a2f7ab3bd48186100e0f619acd18d4bdf56df2cd7044e6b35745c17a4",
"version": "3.18.1"
"url": "https://bin.equinox.io/a/7rWAoLaoN6E/ngrok-v3-3.19.1-linux-386",
"sha256": "ade3cb371e0420b4d314051f702029661ec051158892ae8de87b0dd3fb8c9ae2",
"version": "3.19.1"
},
"linux-amd64": {
"sys": "linux-amd64",
"url": "https://bin.equinox.io/a/gnpHP5YLEsK/ngrok-v3-3.18.1-linux-amd64",
"sha256": "7d0a1f40bfb10fd7304081dcc27d7b8d2bed86f39cd46825c07679d8c888975f",
"version": "3.18.1"
"url": "https://bin.equinox.io/a/aNKWdiDQehF/ngrok-v3-3.19.1-linux-amd64",
"sha256": "eea9510a71beab13f50024c23938d00ba9cfe4a8b4840030b8432c8637b4427a",
"version": "3.19.1"
},
"linux-arm": {
"sys": "linux-arm",
"url": "https://bin.equinox.io/a/mke1muTU2zp/ngrok-v3-3.18.1-linux-arm",
"sha256": "6e7b4723a3a2c936157e4ec7be0bcbf95b49c672223ba0621d54165e8009fd78",
"version": "3.18.1"
"url": "https://bin.equinox.io/a/fHwvcnrN4W1/ngrok-v3-3.19.1-linux-arm",
"sha256": "ff1260e987641b0b280e5da3004d020093745a7586ecca65e1025bc3738d55d9",
"version": "3.19.1"
},
"linux-arm64": {
"sys": "linux-arm64",
"url": "https://bin.equinox.io/a/jYPr353ESuj/ngrok-v3-3.18.1-linux-arm64",
"sha256": "0dbdfdf94b3acb777741e9eeeb27a256cb1975b7d366d1ba404804b863b8fcbb",
"version": "3.18.1"
"url": "https://bin.equinox.io/a/ckBcN6JRV3s/ngrok-v3-3.19.1-linux-arm64",
"sha256": "1f8eec521c00eece4a4a15750927dc492f1243e34598868b15996940ab2bed5b",
"version": "3.19.1"
},
"darwin-amd64": {
"sys": "darwin-amd64",
"url": "https://bin.equinox.io/a/iTdNrZisjJj/ngrok-v3-3.18.1-darwin-amd64",
"sha256": "9a1319caf566ee7f85c1a9b2982ee95c08bd549e90d56ac99ef863d5da92b4a4",
"version": "3.18.1"
"url": "https://bin.equinox.io/a/yubNbWvsvB/ngrok-v3-3.19.1-darwin-amd64",
"sha256": "4e19fee94598a74164516a8b439742bd8bee8844bfea4e3f41ba33b761323583",
"version": "3.19.1"
},
"darwin-arm64": {
"sys": "darwin-arm64",
"url": "https://bin.equinox.io/a/6wGwyzYTbRX/ngrok-v3-3.18.1-darwin-arm64",
"sha256": "9cc3fee7d81157e6bc645f160f6aa5562577c4b9f72db8675143e16d07703816",
"version": "3.18.1"
"url": "https://bin.equinox.io/a/iv6WKkDK2i5/ngrok-v3-3.19.1-darwin-arm64",
"sha256": "1da4acdf28b7c64ded056d29a2f3bb452481b4112a04f520f33fcead8794e2a1",
"version": "3.19.1"
}
}
-237
View File
@@ -1,237 +0,0 @@
[
{
"pname": "Ace4896.DBus.Services.Secrets",
"version": "1.2.0",
"sha256": "1i1rwv8z2dx0mjib7vair2w7ylngmrcpbd012sdlpvdjpx0af0bn"
},
{
"pname": "Cake.Tool",
"version": "4.0.0",
"sha256": "11vc5fimi6w465081sqxs4zhw7grr6v8ga7nl1mscdl43wv33ql2"
},
{
"pname": "GetText.NET",
"version": "1.9.14",
"sha256": "18z4cf0dldcf41z8xgj3gdlvj9w5a9ikgj72623r0i740ndnl094"
},
{
"pname": "GirCore.Adw-1",
"version": "0.5.0",
"sha256": "130jwgkkphyhsk0c14kqmznx9ywfhiwa37lzjn2qgr68akgd3xd9"
},
{
"pname": "GirCore.Cairo-1.0",
"version": "0.5.0",
"sha256": "1x9d3jzzpf72gzxq6qf02ih2x79y9m5zqc874drl5wc8p1qbryzn"
},
{
"pname": "GirCore.FreeType2-2.0",
"version": "0.5.0",
"sha256": "1688rn8dycqcslfk850w8w2pbs4b93nmj1xa6g4n6ncy799780cy"
},
{
"pname": "GirCore.Gdk-4.0",
"version": "0.5.0",
"sha256": "1v2nl9gh941lqzfvryslhgsx9nwaf91q131xrpilrmk18xn3hpd6"
},
{
"pname": "GirCore.GdkPixbuf-2.0",
"version": "0.5.0",
"sha256": "0gbmckch435s2fxpxzqjwckfsxqsidv1nz3wil3v1a2iqvk3imnr"
},
{
"pname": "GirCore.Gio-2.0",
"version": "0.5.0",
"sha256": "1yx23jcyy7pzjkbcf0v0s4nw1n51rcaxf8dg7zqfzhvg9f0k2iwl"
},
{
"pname": "GirCore.GLib-2.0",
"version": "0.5.0",
"sha256": "169y390cgda0ps60g2j6vf5bkr6bfmxvgzga8k697bsl3dfzkkvv"
},
{
"pname": "GirCore.GObject-2.0",
"version": "0.5.0",
"sha256": "1w35a1kmn0ggnlwcsib9m4427299f9ylm7xkm69yzswdwzrfv1kj"
},
{
"pname": "GirCore.Graphene-1.0",
"version": "0.5.0",
"sha256": "16y836gzn9ah963lhg533hik8wh984j33gc60kzn8nziwxl6jplq"
},
{
"pname": "GirCore.Gsk-4.0",
"version": "0.5.0",
"sha256": "152c839l1lv6qc8pccmkzm72sfh45n9qpyyarxvllnn0lzhd50lf"
},
{
"pname": "GirCore.Gtk-4.0",
"version": "0.5.0",
"sha256": "0lj69qx9ksz9w94j4ryy8hr0ja60ijvx8wpr4l1i7ic01gsyxprc"
},
{
"pname": "GirCore.HarfBuzz-0.0",
"version": "0.5.0",
"sha256": "0cnic254jwkndcdg51wvi1vvh4f947ylwg63ag428gfbmx0684c4"
},
{
"pname": "GirCore.Pango-1.0",
"version": "0.5.0",
"sha256": "0p4ks9yk3d8pl9c58zc1ncdzw45fkkmgpwn29vj1wax73iml1k79"
},
{
"pname": "GirCore.PangoCairo-1.0",
"version": "0.5.0",
"sha256": "0j532ixh9adk2gwg55w81m5hwy0c6a3307jr4157pbjg2qm1x4mn"
},
{
"pname": "Markdig",
"version": "0.33.0",
"sha256": "1dj06wgdqmjji4nfr1dysz7hwp5bjgsrk9qjkdq82d7gk6nmhs9r"
},
{
"pname": "Meziantou.Framework.Win32.CredentialManager",
"version": "1.4.5",
"sha256": "1ikjxj6wir2jcjwlmd4q7zz0b4g40808gx59alvad31sb2aqp738"
},
{
"pname": "Microsoft.CSharp",
"version": "4.7.0",
"sha256": "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"
},
{
"pname": "Microsoft.Data.Sqlite.Core",
"version": "8.0.0",
"sha256": "05qjnzk1fxybks92y93487l3mj5nghjcwiy360xjgk3jykz3rv39"
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.0",
"sha256": "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"
},
{
"pname": "Microsoft.NETCore.Targets",
"version": "5.0.0",
"sha256": "0z3qyv7qal5irvabc8lmkh58zsl42mrzd1i0sssvzhv4q4kl3cg6"
},
{
"pname": "Microsoft.Win32.SystemEvents",
"version": "8.0.0",
"sha256": "05392f41ijgn17y8pbjcx535l1k09krnq3xdp60kyq568sn6xk2i"
},
{
"pname": "Nickvision.Aura",
"version": "2023.11.4",
"sha256": "0gasyglp1pgi0s6zqzmbm603j3j36vvr68grv6g93fdj2vjlmkxs"
},
{
"pname": "Octokit",
"version": "9.0.0",
"sha256": "0kw49w1hxk4d2x9598012z9q1yr3ml5rm06fy1jnmhy44s3d3jp5"
},
{
"pname": "pythonnet",
"version": "3.0.3",
"sha256": "0qnivddg13vi1fb22z3krsj1gczyyfd56nmk6gas6qrwlxdzhriv"
},
{
"pname": "SQLitePCLRaw.bundle_e_sqlcipher",
"version": "2.1.6",
"sha256": "15v2x7y4k7cl47a9jccbvgbwngwi5dz6qhv0cxpcasx4v5i9aila"
},
{
"pname": "SQLitePCLRaw.core",
"version": "2.1.6",
"sha256": "1w8zsgz2w2q0a9cw9cl1rzrpv48a04nhyq67ywan6xlgknds65a7"
},
{
"pname": "SQLitePCLRaw.lib.e_sqlcipher",
"version": "2.1.6",
"sha256": "0dl5an15whs4yl5hm2wibzbfigzck0flah8a07k99y1bhbmv080z"
},
{
"pname": "SQLitePCLRaw.provider.e_sqlcipher",
"version": "2.1.6",
"sha256": "1jx8d4dq5w2951b7w722gnxbfgdklwazc48kcbdzylkglwkrqgrq"
},
{
"pname": "System.CodeDom",
"version": "8.0.0",
"sha256": "0zyzd15v0nf8gla7nz243m1kff8ia6vqp471i3g7xgawgj5n21dv"
},
{
"pname": "System.Drawing.Common",
"version": "8.0.0",
"sha256": "1j4rsm36bnwqmh5br9mzmj0ikjnc39k26q6l9skjlrnw8hlngwy4"
},
{
"pname": "System.IO",
"version": "4.3.0",
"sha256": "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"
},
{
"pname": "System.IO.Pipelines",
"version": "6.0.0",
"sha256": "08211lvckdsdbd67xz4f6cyk76cli565j0dby1grlc4k9bhwby65"
},
{
"pname": "System.Management",
"version": "8.0.0",
"sha256": "1zbwj6ii8axa4w8ymjzi9d9pj28nhswygahyqppvzaxypw6my2hz"
},
{
"pname": "System.Memory",
"version": "4.5.3",
"sha256": "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a"
},
{
"pname": "System.Memory",
"version": "4.5.5",
"sha256": "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h"
},
{
"pname": "System.Reflection",
"version": "4.3.0",
"sha256": "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"
},
{
"pname": "System.Reflection.Emit",
"version": "4.3.0",
"sha256": "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"
},
{
"pname": "System.Reflection.Emit.ILGeneration",
"version": "4.3.0",
"sha256": "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"
},
{
"pname": "System.Reflection.Primitives",
"version": "4.3.0",
"sha256": "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"
},
{
"pname": "System.Runtime",
"version": "4.3.0",
"sha256": "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"
},
{
"pname": "System.Text.Encoding",
"version": "4.3.0",
"sha256": "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"
},
{
"pname": "System.Threading.Tasks",
"version": "4.3.0",
"sha256": "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"
},
{
"pname": "Tmds.DBus",
"version": "0.15.0",
"sha256": "1bz5j6wfp9hn4fg5vjxl6mr9lva4gx6zqncqyqxrcb8lw7hvhwc6"
},
{
"pname": "Tmds.DBus.Protocol",
"version": "0.15.0",
"sha256": "0d99kcs7r9cp6gpyc7z230czkkyx4164x86dhy0mca73f2ykc2g2"
}
]
+102 -59
View File
@@ -1,77 +1,120 @@
{ lib
, buildDotnetModule
, fetchFromGitHub
, dotnetCorePackages
, gtk4
, libadwaita
, pkg-config
, wrapGAppsHook4
, glib
, shared-mime-info
, gdk-pixbuf
, blueprint-compiler
, python3
, ffmpeg
{
lib,
stdenv,
fetchFromGitHub,
cmake,
gettext,
itstool,
ninja,
yelp-tools,
pkg-config,
libnick,
boost,
glib,
shared-mime-info,
gtk4,
libadwaita,
wrapGAppsHook4,
libxmlxx5,
blueprint-compiler,
qt6,
yt-dlp,
ffmpeg,
aria2,
nix-update-script,
uiPlatform ? "gnome",
}:
assert lib.assertOneOf "uiPlatform" uiPlatform [
"gnome"
"qt"
];
buildDotnetModule rec {
stdenv.mkDerivation (finalAttrs: {
pname = "parabolic";
version = "2024.5.0";
version = "2025.1.4";
src = fetchFromGitHub {
owner = "NickvisionApps";
repo = "Parabolic";
rev = version;
hash = "sha256-awbCn7W7RUSuEByXxLGrsmYjmxCrwywhhrMJq/iM1Uc=";
fetchSubmodules = true;
tag = finalAttrs.version;
hash = "sha256-B8/e5urhy5tAgHNd/PR3HlNQd0M0CxgC56nArFGlQ9c=";
};
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_8_0;
pythonEnv = python3.withPackages(ps: with ps; [ yt-dlp ]);
nativeBuildInputs =
[
cmake
gettext
ninja
pkg-config
itstool
yelp-tools
]
++ lib.optionals (uiPlatform == "gnome") [
wrapGAppsHook4
blueprint-compiler
glib
shared-mime-info
]
++ lib.optional (uiPlatform == "qt") qt6.wrapQtAppsHook;
projectFile = "NickvisionTubeConverter.GNOME/NickvisionTubeConverter.GNOME.csproj";
nugetDeps = ./deps.json;
executables = "NickvisionTubeConverter.GNOME";
buildInputs =
[
libnick
boost
]
++ lib.optionals (uiPlatform == "qt") [
qt6.qtbase
qt6.qtsvg
]
++ lib.optionals (uiPlatform == "gnome") [
glib
gtk4
libadwaita
libxmlxx5
];
nativeBuildInputs = [
pkg-config
wrapGAppsHook4
glib
shared-mime-info
gdk-pixbuf
blueprint-compiler
cmakeFlags = [
(lib.cmakeFeature "UI_PLATFORM" uiPlatform)
];
buildInputs = [ gtk4 libadwaita ];
preFixup =
lib.optionalString (uiPlatform == "gnome") "gappsWrapperArgs"
+ lib.optionalString (uiPlatform == "qt") "qtWrapperArgs"
+ "+=(--prefix PATH : ${
lib.makeBinPath [
aria2
ffmpeg
yt-dlp
]
})";
runtimeDeps = [
gtk4
libadwaita
glib
gdk-pixbuf
];
passthru.updateScript = nix-update-script { };
postPatch = ''
substituteInPlace NickvisionTubeConverter.Shared/Linux/org.nickvision.tubeconverter.desktop.in --replace '@EXEC@' "NickvisionTubeConverter.GNOME"
'';
meta = {
description = "Graphical frontend for yt-dlp to download video and audio";
longDescription = ''
Parabolic is a user-friendly frontend for `yt-dlp` that supports
many features including but limited to:
- Downloading and converting videos and audio using ffmpeg.
- Supporting multiple codecs.
- Offering YouTube sponsorblock support.
- Running multiple downloads at a time.
- Downloading metadata and video subtitles.
- Allowing the use of `aria2` for parallel downloads.
- Offering a graphical keyring to manage account credentials.
- Being available as both a Qt and GNOME application.
postInstall = ''
install -Dm444 NickvisionTubeConverter.Shared/Resources/org.nickvision.tubeconverter.svg -t $out/share/icons/hicolor/scalable/apps/
install -Dm444 NickvisionTubeConverter.Shared/Resources/org.nickvision.tubeconverter-symbolic.svg -t $out/share/icons/hicolor/symbolic/apps/
install -Dm444 NickvisionTubeConverter.Shared/Linux/org.nickvision.tubeconverter.desktop.in -T $out/share/applications/org.nickvision.tubeconverter.desktop
'';
makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ pythonEnv ffmpeg ]}" ];
passthru.updateScript = ./update.sh;
meta = with lib; {
description = "Download web video and audio";
By default, the GNOME interface is used, but the Qt interface
can be built by overriding the `uiPlatform` argument to `"qt"`
over the default value `"gnome"`.
'';
homepage = "https://github.com/NickvisionApps/Parabolic";
license = licenses.mit;
maintainers = with maintainers; [ ewuuwe ];
mainProgram = "NickvisionTubeConverter.GNOME";
platforms = platforms.linux;
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
normalcea
getchoo
];
mainProgram = "org.nickvision.tubeconverter";
platforms = lib.platforms.linux;
};
}
})
-18
View File
@@ -1,18 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=./. -i bash -p curl jq common-updater-scripts
#shellcheck shell=bash
set -eu -o pipefail
version=$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
https://api.github.com/repos/NickvisionApps/Parabolic/releases/latest | jq -e -r .tag_name)
old_version=$(nix-instantiate --eval -A parabolic.version | jq -e -r)
if [[ $version == "$old_version" ]]; then
echo "New version same as old version, nothing to do." >&2
exit 0
fi
update-source-version parabolic "$version"
$(nix-build -A parabolic.fetch-deps --no-out-link) "$(dirname -- "${BASH_SOURCE[0]}")/deps.nix"
+3 -3
View File
@@ -9,16 +9,16 @@
buildNpmPackage rec {
pname = "redocly";
version = "1.26.0";
version = "1.27.2";
src = fetchFromGitHub {
owner = "Redocly";
repo = "redocly-cli";
rev = "@redocly/cli@${version}";
hash = "sha256-jBfAMrmJ9+k1Fx2gZoQ8UiTT13tSvxXUKXNCW3vmuUY=";
hash = "sha256-79zB7ydbgS+9us+saFiYBPHILoATP00x+Y1hAgPsPk4=";
};
npmDepsHash = "sha256-IcyX+LmMduE8CY6wNSTv0D4c3vCZu48EXsUSsqfOqFQ=";
npmDepsHash = "sha256-EYhX1zAio+f1PGfQUQIFkc9Ve9jLIG7/1xgOI0JAZ5s=";
npmBuildScript = "prepare";
+3 -3
View File
@@ -5,7 +5,7 @@
}:
let
pname = "saucectl";
version = "0.191.0";
version = "0.192.0";
in
buildGoModule {
inherit pname version;
@@ -14,7 +14,7 @@ buildGoModule {
owner = "saucelabs";
repo = "saucectl";
tag = "v${version}";
hash = "sha256-cOgjNoJwcNu04YNqjeVaGIVauApYhFjLTa34HXV78sg=";
hash = "sha256-p7NWIjiaXM96PfmBohkfc1PQ6ZtE0pEeBVLemJiowXg=";
};
ldflags = [
@@ -22,7 +22,7 @@ buildGoModule {
"-X github.com/saucelabs/saucectl/internal/version.GitCommit=${version}"
];
vendorHash = "sha256-NJBEIUeTasoIAeaGm+RdmfeELodXcnpxcxxQFaUJf4o=";
vendorHash = "sha256-N8e8k8vAyVY57iqHU6P88hn9NS3Mdfbgx5P8/wDcmMY=";
checkFlags = [ "-skip=^TestNewRequestWithContext$" ];
+2 -2
View File
@@ -22,11 +22,11 @@ rustPlatform.buildRustPackage {
owner = "imvaskel";
repo = "soteria";
tag = "v${version}";
hash = "sha256-CinJEzH4GsCAzU8FiInulPHLm73KI4nLlAcskkjgeJM=";
hash = "sha256-T6bJOXSXFWZYAxZ+nTDu+H8Wi75QRKddXkXdSOPwHbI=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-inesrYFVIRIcckYWjFCG1dYyhLBInC8ODFEXwXgMjb4=";
cargoHash = "sha256-5f915lrymOwg5bPsTp6sxKikCcTpbeia1fQzKnLYGOs=";
nativeBuildInputs = [
pkg-config
+3 -3
View File
@@ -31,13 +31,13 @@ let
in
buildGoModule rec {
pname = "telepresence2";
version = "2.21.1";
version = "2.21.2";
src = fetchFromGitHub {
owner = "telepresenceio";
repo = "telepresence";
rev = "v${version}";
hash = "sha256-YXGhgxpNVk1u8pFJmN194OP8wFVaMfFRiK0yitxFBPo=";
hash = "sha256-Tblba2vSZvnKCKvkp+QczyhiqNBx4Qpj7BfqYkdMd18=";
};
propagatedBuildInputs = [
@@ -51,7 +51,7 @@ buildGoModule rec {
export CGO_ENABLED=0
'';
vendorHash = "sha256-7ZMFKApMjxDBGuk5q+Px7ovIPO8SteNuZ1d1IdPtme0=";
vendorHash = "sha256-Halc2oPLYagmI7+vF8LMqBLVEcdjkHdpWYV558jLJjo=";
ldflags = [
"-s"
+7 -6
View File
@@ -6,16 +6,16 @@
buildGoModule rec {
pname = "tgpt";
version = "2.7.4";
version = "2.9.0";
src = fetchFromGitHub {
owner = "aandrew-me";
repo = "tgpt";
tag = "v${version}";
hash = "sha256-Nk+iLsTXnw6RAc1VztW8ZqeUVsywFjMCOBY2yuWbUXQ=";
hash = "sha256-8R6rb4GvSf4nw78Yxcuh9Vct/qUTkQNatRolT1m7JR4=";
};
vendorHash = "sha256-docq/r6yyMPsuUyFbtCMaYfEVL0gLmyTy4PbrAemR00=";
vendorHash = "sha256-HObEC0SqSHJOgiJxlniN4yJ3U8ksv1HeiMhtOiZRq50=";
ldflags = [
"-s"
@@ -25,14 +25,15 @@ buildGoModule rec {
preCheck = ''
# Remove test which need network access
rm providers/koboldai/koboldai_test.go
rm providers/phind/phind_test.go
'';
meta = with lib; {
meta = {
description = "ChatGPT in terminal without needing API keys";
homepage = "https://github.com/aandrew-me/tgpt";
changelog = "https://github.com/aandrew-me/tgpt/releases/tag/v${version}";
license = licenses.gpl3Only;
maintainers = with maintainers; [ fab ];
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "tgpt";
};
}
@@ -17,7 +17,8 @@ rustPlatform.buildRustPackage rec {
hash = "sha256-H446qXFwRGippLMZemkW8sVhTV3YGpKmAvD8QBamAlo=";
};
cargoHash = "sha256-PK6x7xRUSbOFEAhw22T/zbMlqcS5ZQd2bpMp9OFIiUc=";
useFetchCargoVendor = true;
cargoHash = "sha256-sqhB2Lj3RK1OyXy87Be9aOkfcksqz+5VfRTlKuswerU=";
buildInputs = lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
+2 -2
View File
@@ -6,14 +6,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "volatility3";
version = "2.8.0";
version = "2.11.0";
pyproject = true;
src = fetchFromGitHub {
owner = "volatilityfoundation";
repo = "volatility3";
tag = "v${version}";
hash = "sha256-XMoVfT1Wd8r684y4crTOjW9GklSTkivOGv1Ii10KzII=";
hash = "sha256-X2cTZaEUQm7bE0k2ve4vKj0k1N6zeLXfDzhWm32diVY=";
};
build-system = with python3.pkgs; [
+3 -5
View File
@@ -3,7 +3,6 @@
stdenv,
fetchFromGitHub,
rustPlatform,
cmake,
installShellFiles,
testers,
yara-x,
@@ -11,20 +10,19 @@
rustPlatform.buildRustPackage rec {
pname = "yara-x";
version = "0.12.0";
version = "0.13.0";
src = fetchFromGitHub {
owner = "VirusTotal";
repo = "yara-x";
tag = "v${version}";
hash = "sha256-gIYqWRJI/IZwEyc1Fke/CD8PPoSZvwtvOT0rnK+LFIo=";
hash = "sha256-ZSJHvpRZO6Tbw7Ct4oD6QmuV4mJ4RGW5gnT6PTX+nC8=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-w/jMrWu/JKhrlI5Ux+6UNkIgnVpxJtTX2LU+wP+kYFY=";
cargoHash = "sha256-pD4qyw+TTpmcoX1N3C65VelYszYifm9sFOsEkXEysvo=";
nativeBuildInputs = [
cmake
installShellFiles
];
+2 -1
View File
@@ -20,7 +20,8 @@ rustPlatform.buildRustPackage {
tag = "v${version}";
hash = "sha256-dboKZuY6mlFZu/xCoLXFJ4ARXyYs5/yOYeGkAnUKRX4=";
};
cargoHash = "sha256-3+jTzYwu9eHji8o4abLiiJGXtZYPfXtXeiZEZajxrVo=";
useFetchCargoVendor = true;
cargoHash = "sha256-/J+11PRCWn0rzq3nILJYd3V8cxmwDegArUDp8i5rsTY=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];
@@ -8,13 +8,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "corral";
version = "0.8.1";
version = "0.8.2";
src = fetchFromGitHub {
owner = "ponylang";
repo = "corral";
rev = finalAttrs.version;
hash = "sha256-cbiw7OaU6HyAp/dHV5FVI7B7mam0GUb95EkR/Grwu0k=";
hash = "sha256-arcMtCSbXFLBT2ygdj44UKMdGStlgHyiBgt5xZpPRhs=";
};
strictDeps = true;
@@ -6,11 +6,11 @@
buildOctavePackage rec {
pname = "instrument-control";
version = "0.9.3";
version = "0.9.4";
src = fetchurl {
url = "mirror://sourceforge/octave/${pname}-${version}.tar.gz";
sha256 = "sha256-5ZufEs761qz0nKt0YYikJccqEtK+Qs9UcnJlRsW8VCM=";
sha256 = "sha256-AfrQQy1EuMpO6qGYz+sh4EW5eYi6fE6KaRxro0psSN8=";
};
meta = with lib; {
@@ -13,16 +13,16 @@
buildPythonPackage rec {
pname = "aiosmtplib";
version = "3.0.2";
version = "4.0.0";
pyproject = true;
disabled = pythonOlder "3.7";
disabled = pythonOlder "3.9";
src = fetchFromGitHub {
owner = "cole";
repo = "aiosmtplib";
tag = "v${version}";
hash = "sha256-1GuxlgNvzVv6hEQY1Mkv7NxAoOik9gpIS90a6flfC+k=";
hash = "sha256-Bj5wkNaNm9ojjffsS4nNKUucwbitvApIK1Ux88MSOoE=";
};
build-system = [ hatchling ];
@@ -41,7 +41,7 @@ buildPythonPackage rec {
description = "Module which provides a SMTP client";
homepage = "https://github.com/cole/aiosmtplib";
changelog = "https://github.com/cole/aiosmtplib/releases/tag/v${version}";
license = with licenses; [ mit ];
license = licenses.mit;
maintainers = with maintainers; [ fab ];
};
}
@@ -13,6 +13,7 @@
setuptools,
setuptools-scm,
ufolib2,
ufomerge,
vfblib,
}:
@@ -42,6 +43,7 @@ buildPythonPackage rec {
openstep-plist
orjson
ufolib2
ufomerge
vfblib
];
@@ -359,7 +359,7 @@
buildPythonPackage rec {
pname = "boto3-stubs";
version = "1.36.10";
version = "1.36.11";
pyproject = true;
disabled = pythonOlder "3.7";
@@ -367,7 +367,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "boto3_stubs";
inherit version;
hash = "sha256-/fgvvifEuQnfEwgJIv4nsuVlv1tUa/7JgF5m6YPBtdk=";
hash = "sha256-tBzTzvXEQvL3fRCkYJ//qowiMjKzYRVK9nT1WWUfcIk=";
};
build-system = [ setuptools ];
@@ -10,7 +10,7 @@
buildPythonPackage rec {
pname = "botocore-stubs";
version = "1.36.10";
version = "1.36.11";
pyproject = true;
disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "botocore_stubs";
inherit version;
hash = "sha256-Jubwgr4mJigOgCEAK1u1j4DffOmtXgF5AaAxv0FBe4c=";
hash = "sha256-TBjwmUJURW+DTQEp7R9JQhyM2ABHxOXbkAcPafDm89I=";
};
nativeBuildInputs = [ setuptools ];
@@ -1,21 +1,20 @@
{
stdenv,
buildPythonPackage,
dlib,
python,
pytestCheckHook,
more-itertools,
sse4Support ? stdenv.hostPlatform.sse4_1Support,
avxSupport ? stdenv.hostPlatform.avxSupport,
}:
buildPythonPackage {
inherit (dlib)
stdenv
pname
version
src
nativeBuildInputs
buildInputs
cmakeFlags
passthru
meta
;
@@ -34,10 +33,26 @@ buildPythonPackage {
--replace "pytest==3.8" "pytest"
'';
setupPyBuildFlags = [
"--set USE_SSE4_INSTRUCTIONS=${if sse4Support then "yes" else "no"}"
"--set USE_AVX_INSTRUCTIONS=${if avxSupport then "yes" else "no"}"
];
# Pass CMake flags through to the build script
preConfigure = ''
for flag in $cmakeFlags; do
if [[ "$flag" == -D* ]]; then
setupPyBuildFlags+=" --set ''${flag#-D}"
fi
done
'';
dontUseCmakeConfigure = true;
doCheck =
!(
# The tests attempt to use CUDA on the build platform.
# https://github.com/NixOS/nixpkgs/issues/225912
dlib.cudaSupport
# although AVX can be enabled, we never test with it. Some Hydra machines
# fail because of this, however their build results are probably used on hardware
# with AVX support.
|| dlib.avxSupport
);
}
@@ -27,7 +27,7 @@ buildPythonPackage rec {
hash = "sha256-NfleByW9MF7FS4n/cMv297382LucP6Z629CuA6chm20=";
};
pythonRelaxDeps = [ "dlms-cosem" ];
pythonRelaxDeps = [ "dlms_cosem" ];
build-system = [ setuptools ];
@@ -6,14 +6,15 @@
fetchFromGitHub,
poetry-core,
pythonOlder,
unittestCheckHook,
}:
buildPythonPackage rec {
pname = "enturclient";
version = "0.2.4";
disabled = pythonOlder "3.8";
pyproject = true;
format = "pyproject";
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "hfurubotten";
@@ -22,23 +23,27 @@ buildPythonPackage rec {
hash = "sha256-Y2sBPikCAxumylP1LUy8XgjBRCWaNryn5XHSrRjJIIo=";
};
nativeBuildInputs = [ poetry-core ];
build-system = [ poetry-core ];
propagatedBuildInputs = [
dependencies = [
aiohttp
async-timeout
];
postPatch = ''
substituteInPlace pyproject.toml \
--replace 'async_timeout = "^3.0.1"' 'async_timeout = ">=3.0.1"'
'';
# Project has no tests
doCheck = false;
pythonRelaxDeps = [
"async_timeout"
];
pythonImportsCheck = [ "enturclient" ];
nativeCheckInputs = [
unittestCheckHook
];
unittestFlagsArray = [
"tests/dto/"
];
meta = with lib; {
description = "Python library for interacting with the Entur.org API";
homepage = "https://github.com/hfurubotten/enturclient";
@@ -0,0 +1,43 @@
{
aiohttp,
buildPythonPackage,
dacite,
fetchFromGitHub,
hatchling,
lib,
pyjwt,
}:
buildPythonPackage rec {
pname = "igloohome-api";
version = "0.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "keithle888";
repo = "igloohome-api";
tag = "v${version}";
hash = "sha256-CFxVZiga6008oNbacK12t7U8mOvL8YgEgQ82MsvZ46w=";
};
build-system = [ hatchling ];
dependencies = [
aiohttp
dacite
pyjwt
];
pythonImportsCheck = [ "igloohome_api" ];
# upstream has no tests
doCheck = false;
meta = {
changelog = "https://github.com/keithle888/igloohome-api/releases/tag/${src.tag}";
description = "Python package for using igloohome's API";
homepage = "https://github.com/keithle888/igloohome-api";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ dotlambda ];
};
}
@@ -11,14 +11,14 @@
buildPythonPackage rec {
pname = "nvidia-ml-py";
version = "12.560.30";
version = "12.570.86";
pyproject = true;
src = fetchPypi {
inherit pname version;
extension = "tar.gz";
hash = "sha256-8CVNx0AGR2gKBy7gJQm/1GECtgvf7KMhV21NSBfn/pc=";
pname = "nvidia_ml_py";
inherit version;
hash = "sha256-BQjUoMe20BXPV0UwuVpi7U/InaO4tH4a7+Z3fbFw7Is=";
};
patches = [
@@ -0,0 +1,41 @@
{
lib,
buildPythonPackage,
fetchPypi,
pythonAtLeast,
setuptools,
}:
buildPythonPackage rec {
pname = "pynfsclient";
version = "0.1.5";
pyproject = true;
disabled = pythonAtLeast "3.13";
src = fetchPypi {
pname = "pyNfsClient";
inherit version;
hash = "sha256-xgZL08NlMCpSkALQwklh7Xq16bK2Sm2hAynbrIWsgaU=";
};
postPatch = ''
# HISTORY.md is missing
substituteInPlace setup.py \
--replace-fail "HISTORY.md" "README.rst"
'';
build-system = [ setuptools ];
# Module has no tests
doCheck = false;
pythonImportsCheck = [ "pyNfsClient" ];
meta = {
description = "Pure python NFS client";
homepage = "https://pypi.org/project/pyNfsClient/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
};
}
@@ -0,0 +1,42 @@
{
aiohttp,
buildPythonPackage,
fetchFromGitHub,
lib,
mashumaro,
pytestCheckHook,
setuptools,
}:
buildPythonPackage rec {
pname = "python-google-drive-api";
version = "0.0.2";
pyproject = true;
src = fetchFromGitHub {
owner = "tronikos";
repo = "python-google-drive-api";
tag = "v${version}";
hash = "sha256-JvPaMD7UHDqCQCoh1Q8jNFw4R7Jbp2YQDBI3xVp1L1g=";
};
build-system = [ setuptools ];
dependencies = [
aiohttp
mashumaro
];
pythonImportsCheck = [ "google_drive_api" ];
nativeCheckInputs = [
pytestCheckHook
];
meta = {
description = "Python client library for Google Drive API";
homepage = "https://github.com/tronikos/python-google-drive-api";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ dotlambda ];
};
}
@@ -0,0 +1,33 @@
{
buildPythonPackage,
fetchFromGitHub,
lib,
setuptools,
}:
buildPythonPackage rec {
pname = "qbusmqttapi";
version = "1.2.4";
pyproject = true;
src = fetchFromGitHub {
owner = "Qbus-iot";
repo = "qbusmqttapi";
tag = "v${version}";
hash = "sha256-daa+AwoOLJRaMzaUCai6pbYd8ux9v8NTR/mnsss/r4c=";
};
build-system = [ setuptools ];
pythonImportsCheck = [ "qbusmqttapi" ];
# upstream has no tests
doCheck = false;
meta = {
description = "MQTT API for Qbus Home Automation";
homepage = "https://github.com/Qbus-iot/qbusmqttapi";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ dotlambda ];
};
}
@@ -11,14 +11,14 @@
buildPythonPackage rec {
pname = "simsimd";
version = "6.2.3";
version = "6.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "ashvardanian";
repo = "simsimd";
tag = "v${version}";
hash = "sha256-9+m1NkXwlHtqeXvsyYhhT+7KNZ1aFUxxA/+i3GbQvgs=";
hash = "sha256-RQgPjU2uOxOnDacIARMAkKvnUIHLzRsaxLERmTrLj1Q=";
};
build-system = [
@@ -6,14 +6,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "checkov";
version = "3.2.360";
version = "3.2.361";
pyproject = true;
src = fetchFromGitHub {
owner = "bridgecrewio";
repo = "checkov";
tag = version;
hash = "sha256-kFLtEVbj0XTa19MOS0di6bHBMHeHH4b9+H/iHqV39kU=";
hash = "sha256-7w8oAIBAgYH/TXNnAVKC6E3AT37WJDSSgnpAeRfY4vA=";
};
patches = [ ./flake8-compat-5.x.patch ];
@@ -1342,7 +1342,8 @@ let
ACPI_HOTPLUG_CPU = yes;
ACPI_HOTPLUG_MEMORY = yes;
MEMORY_HOTPLUG = yes;
MEMORY_HOTPLUG_DEFAULT_ONLINE = yes;
MEMORY_HOTPLUG_DEFAULT_ONLINE = whenOlder "6.14" yes;
MHP_DEFAULT_ONLINE_TYPE_ONLINE_AUTO = whenAtLeast "6.14" yes;
MEMORY_HOTREMOVE = yes;
HOTPLUG_CPU = yes;
MIGRATION = yes;
@@ -1,7 +1,7 @@
{
"testing": {
"version": "6.13-rc7",
"hash": "sha256:12c9bd0ikppkdpqmvg7g2062s60ks9p0qxx1jis29wl9swr74120"
"version": "6.14-rc1",
"hash": "sha256:0schcgij7kdzj0zb6g3sjf32mq7s388hysrfzjzi5g1y3py21igk"
},
"6.1": {
"version": "6.1.128",
@@ -5,8 +5,8 @@
linux,
scripts ? fetchsvn {
url = "https://www.fsfla.org/svn/fsfla/software/linux-libre/releases/branches/";
rev = "19683";
sha256 = "1xp4vslbvvwys2pmms3y9phxwc7gnar3zvbwbgbp9vgjq0bsadjw";
rev = "19707";
sha256 = "1ixvavd9rhhwfnyvkdnyyjwckdijh02xppl0sjv1vw9i0jn1s1l2";
},
...
}@args:
@@ -10,7 +10,7 @@
}@args:
let
version = "5.10.231-rt123"; # updated by ./update-rt.sh
version = "5.10.233-rt125"; # updated by ./update-rt.sh
branch = lib.versions.majorMinor version;
kversion = builtins.elemAt (lib.splitString "-" version) 0;
in
@@ -25,7 +25,7 @@ buildLinux (
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${kversion}.tar.xz";
sha256 = "0xcnlz5ib4b368z5cyp4qwys3jsbm18wlvwn73rzj2j6rj1lhnjn";
sha256 = "0lkz2g8r032f027j3gih3f7crx991mrpng9qgqc5k4cc1wl5g7i3";
};
kernelPatches =
@@ -34,7 +34,7 @@ buildLinux (
name = "rt";
patch = fetchurl {
url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
sha256 = "01ibh8krzmwdh7229fc3ajbg1mlmd4sv969px6nh7z8fvpb60lfn";
sha256 = "1cx91p88h169v69lxz7vbjjnxdzdz9v28liypz099xghibwhcwfh";
};
};
in
@@ -10,7 +10,7 @@
}@args:
let
version = "5.15.173-rt82"; # updated by ./update-rt.sh
version = "5.15.177-rt83"; # updated by ./update-rt.sh
branch = lib.versions.majorMinor version;
kversion = builtins.elemAt (lib.splitString "-" version) 0;
in
@@ -29,7 +29,7 @@ buildLinux (
src = fetchurl {
url = "mirror://kernel/linux/kernel/v5.x/linux-${kversion}.tar.xz";
sha256 = "1a3x3ld6g7ny0hdfqfvj5j2i5sx5l5p236pdnsr0icn9ri3jljwa";
sha256 = "1q56w3lqwi3ynny6z7siqzv3h8nryksyw70r3fhghca2il4bi7pa";
};
kernelPatches =
@@ -38,7 +38,7 @@ buildLinux (
name = "rt";
patch = fetchurl {
url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
sha256 = "1xykbqkj4pqd7rdqnjk91mbdia3lxlng3c2nz7lnhhjnbva6b3vw";
sha256 = "1rc0cbc5jkgr3q3q2syqidak744lxcq3f5zdq6si2rsfxjz45www";
};
};
in
@@ -10,7 +10,7 @@
}@args:
let
version = "6.1.120-rt47"; # updated by ./update-rt.sh
version = "6.1.127-rt48"; # updated by ./update-rt.sh
branch = lib.versions.majorMinor version;
kversion = builtins.elemAt (lib.splitString "-" version) 0;
in
@@ -29,7 +29,7 @@ buildLinux (
src = fetchurl {
url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz";
sha256 = "06gp5fdq0bc39hd8mf9mrdrygdybdr3nzsb58lcapf5vmjw9gjb1";
sha256 = "0xkqpwhvz6qhaxzg1j993lv1iyvb2zydgq6d8mhdbfkz38fx9c0q";
};
kernelPatches =
@@ -38,7 +38,7 @@ buildLinux (
name = "rt";
patch = fetchurl {
url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
sha256 = "0nq8diqbanlkglb0liva3s43wx8g6pr9znvl9cq6df093by4gcya";
sha256 = "1sq79iibjsph3jmmihabamzmm4sr68sw87jqqa3khzq7f2s6cwmg";
};
};
in
@@ -10,7 +10,7 @@
}@args:
let
version = "6.6.65-rt47"; # updated by ./update-rt.sh
version = "6.6.74-rt48"; # updated by ./update-rt.sh
branch = lib.versions.majorMinor version;
kversion = builtins.elemAt (lib.splitString "-" version) 0;
in
@@ -29,7 +29,7 @@ buildLinux (
src = fetchurl {
url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz";
sha256 = "1q53xiwnszchl9c4g4yfxyzk4nffzgb4a7aq9rsyg1jcidp4gqbs";
sha256 = "0ka9snxl0y57fajy8vszwa4ggn48pid8m1879d4vl3mbicd2nppi";
};
kernelPatches =
@@ -38,7 +38,7 @@ buildLinux (
name = "rt";
patch = fetchurl {
url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
sha256 = "1sb6mmbiwh7kijb2bxhlz09dgvd2hpxh6rxghwi1d4cg2151jsr5";
sha256 = "1rpbbm9fln2v6xigxrsajivr4zmh0nika3nmm1y7ws31njkg57gq";
};
};
in
@@ -12,9 +12,9 @@ let
variants = {
# ./update-zen.py zen
zen = {
version = "6.12.10"; # zen
version = "6.13.1"; # zen
suffix = "zen1"; # zen
sha256 = "1kd3bcnhlarnrpl87mrdb5r9k2jdq7m8607ai847dkmncw7q2d1q"; # zen
sha256 = "1n22hsjl77qby2s4wf9y6z3kbcw7yziiniv2x43xixgkl12ajvk5"; # zen
isLqx = false;
};
# ./update-zen.py lqx
@@ -17,6 +17,7 @@
getent,
glibcLocales,
autoPatchelfHook,
fetchpatch,
# glib is only used during tests (test-bus-gvariant, test-bus-marshal)
glib,
@@ -281,6 +282,14 @@ stdenv.mkDerivation (finalAttrs: {
"0025-adjust-header-inclusion-order-to-avoid-redeclaration.patch"
"0026-build-path.c-avoid-boot-time-segfault-for-musl.patch"
]
++ [
# add a missing include
(fetchpatch {
url = "https://github.com/systemd/systemd/commit/34fcd3638817060c79e1186b370e46d9b3a7409f.patch";
hash = "sha256-Uaewo3jPrZGJttlLcqO6cCj1w3IGZmvbur4+TBdIPxc=";
excludes = [ "src/udev/udevd.c" ];
})
]
);
postPatch =
@@ -0,0 +1,14 @@
diff --git a/include/server/server.hpp b/include/server/server.hpp
index 34b8982e67a..02b0dda050d 100644
--- a/include/server/server.hpp
+++ b/include/server/server.hpp
@@ -53,8 +53,7 @@ class Server
const auto port_string = std::to_string(port);
boost::asio::ip::tcp::resolver resolver(io_context);
- boost::asio::ip::tcp::resolver::query query(address, port_string);
- boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query);
+ boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(address, port_string).begin();
acceptor.open(endpoint.protocol());
#ifdef SO_REUSEPORT
+6 -2
View File
@@ -2,7 +2,6 @@
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
cmake,
pkg-config,
bzip2,
@@ -16,7 +15,7 @@
nixosTests,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation {
pname = "osrm-backend";
version = "5.27.1-unstable-2024-11-03";
@@ -27,6 +26,11 @@ stdenv.mkDerivation rec {
hash = "sha256-iix++G49cC13wZGZIpXu1SWGtVAcqpuX3GhsIaETzUU=";
};
patches = [
# Taken from https://github.com/Project-OSRM/osrm-backend/pull/7073.
./boost187-compat.patch
];
nativeBuildInputs = [
cmake
pkg-config
+2 -2
View File
@@ -82,7 +82,7 @@ let
in
buildPythonApplication rec {
pname = "xpra";
version = "6.2.2";
version = "6.2.3";
stdenv = if withNvenc then cudaPackages.backendStdenv else args.stdenv;
@@ -90,7 +90,7 @@ buildPythonApplication rec {
owner = "Xpra-org";
repo = "xpra";
rev = "v${version}";
hash = "sha256-YLz2Ex3gHabicPbGj5BFP1pwU/8K/bu4R7cWi1Fu2oM=";
hash = "sha256-5f6yHz3uc5qsU1F6D8r0KPo8tbrFP4pfxXTvIJYqKuI=";
};
patches = [
+2 -2
View File
@@ -106,11 +106,11 @@ in
# Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
python.pkgs.buildPythonApplication rec {
pname = "diffoscope";
version = "285";
version = "287";
src = fetchurl {
url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
hash = "sha256-OTS4Lr2OF1mdIAiPGK31Ptc/gr3D216Z1kvKOMNeaJI=";
hash = "sha256-0s7pT8pAMCE+csd9/+Dv4AbCK0qxDacQ9fNcMYCNDbw=";
};
outputs = [
+2 -2
View File
@@ -17,8 +17,7 @@ let
# Also dont forget to run `nix-build -A lorri.tests`
version = "1.7.1";
sha256 = "sha256-dEdKMgE4Jd8CCvtGQDZNDCYOomZAV8aR7Cmtyn8RfTo=";
useFetchCargoVendor = true;
cargoHash = "sha256-d1kXwb2WsF3J5AyD8wrrnGtCMYQ4P2mtiuJLMyCDPdM=";
cargoHash = "sha256-pRtc0cDVIBqbCbC1weFOhZP29rKAE1XdmM6HE5nJKRU=";
in
(rustPlatform.buildRustPackage rec {
@@ -38,6 +37,7 @@ in
"doc"
];
useFetchCargoVendor = true;
inherit cargoHash;
doCheck = false;
+24 -18
View File
@@ -27,32 +27,35 @@ let
in
python.pkgs.buildPythonApplication rec {
pname = "netexec";
version = "1.1.0-unstable-2024-01-15";
version = "1.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "Pennyw0rth";
repo = "NetExec";
tag = "v${version}";
hash = "sha256-Pub7PAw6CTN4c/PHTPE9KcnDR2a6hSza1ODp3EWMOH0=";
};
pythonRelaxDeps = true;
pythonRemoveDeps = [
# Fail to detect dev version requirement
"neo4j"
];
src = fetchFromGitHub {
owner = "Pennyw0rth";
repo = "NetExec";
rev = "9df72e2f68b914dfdbd75b095dd8f577e992615f";
hash = "sha256-oQHtTE5hdlxHX4uc412VfNUrN0UHVbwI0Mm9kmJpNW4=";
};
postPatch = ''
substituteInPlace pyproject.toml \
--replace '{ git = "https://github.com/Pennyw0rth/impacket.git", branch = "gkdi" }' '"*"' \
--replace '{ git = "https://github.com/Pennyw0rth/oscrypto" }' '"*"'
--replace-fail '{ git = "https://github.com/fortra/impacket.git" }' '"*"' \
--replace-fail '{ git = "https://github.com/Pennyw0rth/NfsClient" }' '"*"'
'';
nativeBuildInputs = with python.pkgs; [
build-system = with python.pkgs; [
poetry-core
poetry-dynamic-versioning
];
propagatedBuildInputs = with python.pkgs; [
dependencies = with python.pkgs; [
aardwolf
aioconsole
aiosqlite
@@ -67,13 +70,15 @@ python.pkgs.buildPythonApplication rec {
masky
minikerberos
msgpack
msldap
neo4j
oscrypto
paramiko
pyasn1-modules
pylnk3
pynfsclient
pypsrp
pypykatz
python-dateutil
python-libnmap
pywerview
requests
@@ -84,9 +89,10 @@ python.pkgs.buildPythonApplication rec {
xmltodict
];
nativeCheckInputs = with python.pkgs; [
pytestCheckHook
];
nativeCheckInputs = with python.pkgs; [ pytestCheckHook ];
# Tests no longer works out-of-box with 1.3.0
doCheck = false;
preCheck = ''
export HOME=$(mktemp -d)
@@ -96,9 +102,9 @@ python.pkgs.buildPythonApplication rec {
description = "Network service exploitation tool (maintained fork of CrackMapExec)";
homepage = "https://github.com/Pennyw0rth/NetExec";
changelog = "https://github.com/Pennyw0rth/NetExec/releases/tag/v${version}";
license = with licenses; [ bsd2 ];
mainProgram = "nxc";
license = licenses.bsd2;
maintainers = with maintainers; [ vncsb ];
mainProgram = "nxc";
# FIXME: failing fixupPhase:
# $ Rewriting #!/nix/store/<hash>-python3-3.11.7/bin/python3.11 to #!/nix/store/<hash>-python3-3.11.7
# $ /nix/store/<hash>-wrap-python-hook/nix-support/setup-hook: line 65: 47758 Killed: 9 sed -i "$f" -e "1 s^#!/nix/store/<hash>-python3-3.11.7^#!/nix/store/<hash>-python3-3.11.7^"
+3 -3
View File
@@ -22,17 +22,17 @@ in
rustPlatform.buildRustPackage rec {
pname = "vaultwarden";
version = "1.33.0";
version = "1.33.1";
src = fetchFromGitHub {
owner = "dani-garcia";
repo = "vaultwarden";
rev = version;
hash = "sha256-2lZfPPHHAoY12cXpkeJnvMab+C3T5O7KdmVpKqRQkgQ=";
hash = "sha256-p5SgXqeafEqPQmSKEtcPCHvxODxrEX4gNmpb2ybmpO4=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-f+884HV9oopvr/2UfWk0sw2DW2cU3c16F+5vGc6+IL0=";
cargoHash = "sha256-B9RztnkIbYVWdx85p1WEskwTdFrUruD0UJ7qFIg8vy8=";
# used for "Server Installed" version in admin panel
env.VW_VERSION = version;
+1
View File
@@ -298,6 +298,7 @@ mapAliases {
dart_stable = throw "'dart_stable' has been renamed to/replaced by 'dart'"; # Converted to throw 2024-10-17
dart-sass-embedded = throw "dart-sass-embedded has been removed from nixpkgs, as is now included in Dart Sass itself.";
dat = nodePackages.dat;
dave = throw "'dave' has been removed as it has been archived upstream. Consider using 'webdav' instead"; # Added 2025-02-03
dbeaver = throw "'dbeaver' has been renamed to/replaced by 'dbeaver-bin'"; # Added 2024-05-16
dbus-map = throw "'dbus-map' has been dropped as it is unmaintained"; # Added 2024-11-01
deadpixi-sam = deadpixi-sam-unstable;
+8
View File
@@ -6252,6 +6252,8 @@ self: super: with self; {
inherit (pkgs) cgal libxml2;
};
igloohome-api = callPackage ../development/python-modules/igloohome-api { };
ignite = callPackage ../development/python-modules/ignite { };
igraph = callPackage ../development/python-modules/igraph {
@@ -9521,6 +9523,8 @@ self: super: with self; {
python-debian = callPackage ../development/python-modules/python-debian { };
python-google-drive-api = callPackage ../development/python-modules/python-google-drive-api { };
python-hcl2 = callPackage ../development/python-modules/python-hcl2 { };
python-lorem = callPackage ../development/python-modules/python-lorem { };
@@ -10713,6 +10717,8 @@ self: super: with self; {
pylsl = callPackage ../development/python-modules/pylsl { };
pynfsclient = callPackage ../development/python-modules/pynfsclient { };
pyngo = callPackage ../development/python-modules/pyngo { };
pyngrok = callPackage ../development/python-modules/pyngrok { };
@@ -13755,6 +13761,8 @@ self: super: with self; {
qasync = callPackage ../development/python-modules/qasync { };
qbusmqttapi = callPackage ../development/python-modules/qbusmqttapi { };
qcelemental = callPackage ../development/python-modules/qcelemental { };
qcengine = callPackage ../development/python-modules/qcengine { };