Merge staging-next into staging
This commit is contained in:
@@ -7,9 +7,12 @@ The module system is a language for handling configuration, implemented as a Nix
|
||||
Compared to plain Nix, it adds documentation, type checking and composition or extensibility.
|
||||
|
||||
::: {.note}
|
||||
This chapter is new and not complete yet. For a gentle introduction to the module system, in the context of NixOS, see [Writing NixOS Modules](https://nixos.org/manual/nixos/unstable/index.html#sec-writing-modules) in the NixOS manual.
|
||||
:::
|
||||
This chapter is new and not complete yet.
|
||||
|
||||
See also:
|
||||
- Introduction to the module system, in the context of NixOS, see [Writing NixOS Modules](https://nixos.org/manual/nixos/unstable/index.html#sec-writing-modules) in the NixOS manual.
|
||||
- Generic guide to the module system on [nix.dev](https://nix.dev/tutorials/module-system/index.html).
|
||||
:::
|
||||
|
||||
## `lib.evalModules` {#module-system-lib-evalModules}
|
||||
|
||||
|
||||
@@ -5988,6 +5988,12 @@
|
||||
githubId = 57304299;
|
||||
keys = [ { fingerprint = "33CD 5C0A 673C C54D 661E 5E4C 0DB5 361B EEE5 30AB"; } ];
|
||||
};
|
||||
dopplerian = {
|
||||
name = "Dopplerian";
|
||||
github = "Dopplerian";
|
||||
githubId = 53937537;
|
||||
keys = [ { fingerprint = "BBC4 C071 516B A147 8D07 F9DC D2FD E6EC 2E8C 2BF4"; } ];
|
||||
};
|
||||
doriath = {
|
||||
email = "tomasz.zurkowski@gmail.com";
|
||||
github = "doriath";
|
||||
@@ -22308,6 +22314,12 @@
|
||||
github = "teatwig";
|
||||
githubId = 18734648;
|
||||
};
|
||||
tebriel = {
|
||||
email = "tebriel@frodux.in";
|
||||
name = "tebriel";
|
||||
github = "tebriel";
|
||||
githubId = 821688;
|
||||
};
|
||||
techknowlogick = {
|
||||
email = "techknowlogick@gitea.com";
|
||||
github = "techknowlogick";
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
|
||||
- [networking.modemmanager](options.html#opt-networking.modemmanager) has been split out of [networking.networkmanager](options.html#opt-networking.networkmanager). NetworkManager still enables ModemManager by default, but options exist now to run NetworkManager without ModemManager.
|
||||
|
||||
- [ncps](https://github.com/kalbasit/ncps), a Nix binary cache proxy service implemented in Go using [go-nix](https://github.com/nix-community/go-nix). Available as [services.ncps](options.html#opt-services.ncps.enable).
|
||||
|
||||
- [Conduwuit](https://conduwuit.puppyirl.gay/), a federated chat server implementing the Matrix protocol, forked from Conduit. Available as [services.conduwuit](#opt-services.conduwuit.enable).
|
||||
|
||||
- [Traccar](https://www.traccar.org/), a modern GPS Tracking Platform. Available as [services.traccar](#opt-services.traccar.enable).
|
||||
@@ -306,6 +308,8 @@
|
||||
|
||||
- For matrix homeserver Synapse we are now following the upstream recommendation to enable jemalloc as the memory allocator by default.
|
||||
|
||||
- `services.kmonad` now creates a determinate symlink (in `/dev/input/by-id/`) to each of KMonad virtual devices.
|
||||
|
||||
- `bind.cacheNetworks` now only controls access for recursive queries, where it previously controlled access for all queries.
|
||||
|
||||
- Caddy can now be built with plugins by using `caddy.withPlugins`, a `passthru` function that accepts an attribute set as a parameter. The `plugins` argument represents a list of Caddy plugins, with each Caddy plugin being a versioned module. The `hash` argument represents the `vendorHash` of the resulting Caddy source code with the plugins added.
|
||||
|
||||
@@ -1160,6 +1160,7 @@
|
||||
./services/networking/nats.nix
|
||||
./services/networking/nbd.nix
|
||||
./services/networking/ncdns.nix
|
||||
./services/networking/ncps.nix
|
||||
./services/networking/ndppd.nix
|
||||
./services/networking/nebula.nix
|
||||
./services/networking/netbird.nix
|
||||
|
||||
@@ -75,7 +75,7 @@ let
|
||||
{
|
||||
freeformType = attrsOf (either scalarType (listOf scalarType));
|
||||
# Client system-options file directives are explained here:
|
||||
# https://www.ibm.com/docs/en/storage-protect/8.1.24?topic=commands-processing-options
|
||||
# https://www.ibm.com/docs/en/storage-protect/8.1.25?topic=commands-processing-options
|
||||
options.servername = mkOption {
|
||||
type = servernameType;
|
||||
default = name;
|
||||
|
||||
@@ -89,7 +89,7 @@ in
|
||||
environment.HOME = "/var/lib/tsm-backup";
|
||||
serviceConfig = {
|
||||
# for exit status description see
|
||||
# https://www.ibm.com/docs/en/storage-protect/8.1.24?topic=clients-client-return-codes
|
||||
# https://www.ibm.com/docs/en/storage-protect/8.1.25?topic=clients-client-return-codes
|
||||
SuccessExitStatus = "4 8";
|
||||
# The `-se` option must come after the command.
|
||||
# The `-optfile` option suppresses a `dsm.opt`-not-found warning.
|
||||
|
||||
@@ -205,9 +205,14 @@ in
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
description = "Kubernetes kubelet extra configuration file entries.";
|
||||
description = ''
|
||||
Kubernetes kubelet extra configuration file entries.
|
||||
|
||||
See also [Set Kubelet Parameters Via A Configuration File](https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/)
|
||||
and [Kubelet Configuration](https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/).
|
||||
'';
|
||||
default = { };
|
||||
type = attrsOf attrs;
|
||||
type = attrsOf ((pkgs.formats.json { }).type);
|
||||
};
|
||||
|
||||
featureGates = mkOption {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
|
||||
@@ -118,19 +119,8 @@ let
|
||||
# Build a systemd service that starts KMonad:
|
||||
mkService =
|
||||
keyboard:
|
||||
let
|
||||
cmd =
|
||||
[
|
||||
(lib.getExe cfg.package)
|
||||
"--input"
|
||||
''device-file "${keyboard.device}"''
|
||||
]
|
||||
++ cfg.extraArgs
|
||||
++ [ "${mkCfg keyboard}" ];
|
||||
in
|
||||
lib.nameValuePair (mkName keyboard.name) {
|
||||
description = "KMonad for ${keyboard.device}";
|
||||
script = lib.escapeShellArgs cmd;
|
||||
unitConfig = {
|
||||
# Control rate limiting.
|
||||
# Stop the restart logic if we restart more than
|
||||
@@ -139,6 +129,10 @@ let
|
||||
StartLimitBurst = 5;
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${lib.getExe cfg.package} ${mkCfg keyboard} \
|
||||
${utils.escapeSystemdExecArgs cfg.extraArgs}
|
||||
'';
|
||||
Restart = "always";
|
||||
# Restart at increasing intervals from 2s to 1m
|
||||
RestartSec = 2;
|
||||
@@ -195,6 +189,17 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
hardware.uinput.enable = true;
|
||||
|
||||
services.udev.extraRules =
|
||||
let
|
||||
mkRule = name: ''
|
||||
ACTION=="add", KERNEL=="event*", SUBSYSTEM=="input", ATTRS{name}=="${name}", ATTRS{id/product}=="5679", ATTRS{id/vendor}=="1235", SYMLINK+="input/by-id/${name}"
|
||||
'';
|
||||
in
|
||||
lib.foldlAttrs (
|
||||
rules: _: keyboard:
|
||||
rules + "\n" + mkRule (mkName keyboard.name)
|
||||
) "" cfg.keyboards;
|
||||
|
||||
systemd = {
|
||||
paths = lib.mapAttrs' (_: mkPath) cfg.keyboards;
|
||||
services = lib.mapAttrs' (_: mkService) cfg.keyboards;
|
||||
|
||||
@@ -0,0 +1,326 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.ncps;
|
||||
|
||||
logLevels = [
|
||||
"trace"
|
||||
"debug"
|
||||
"info"
|
||||
"warn"
|
||||
"error"
|
||||
"fatal"
|
||||
"panic"
|
||||
];
|
||||
|
||||
globalFlags = lib.concatStringsSep " " (
|
||||
[ "--log-level='${cfg.logLevel}'" ]
|
||||
++ (lib.optionals cfg.openTelemetry.enable (
|
||||
[
|
||||
"--otel-enabled"
|
||||
]
|
||||
++ (lib.optional (
|
||||
cfg.openTelemetry.grpcURL != null
|
||||
) "--otel-grpc-url='${cfg.openTelemetry.grpcURL}'")
|
||||
))
|
||||
);
|
||||
|
||||
serveFlags = lib.concatStringsSep " " (
|
||||
[
|
||||
"--cache-hostname='${cfg.cache.hostName}'"
|
||||
"--cache-data-path='${cfg.cache.dataPath}'"
|
||||
"--cache-database-url='${cfg.cache.databaseURL}'"
|
||||
"--server-addr='${cfg.server.addr}'"
|
||||
]
|
||||
++ (lib.optional cfg.cache.allowDeleteVerb "--cache-allow-delete-verb")
|
||||
++ (lib.optional cfg.cache.allowPutVerb "--cache-allow-put-verb")
|
||||
++ (lib.optional (cfg.cache.maxSize != null) "--cache-max-size='${cfg.cache.maxSize}'")
|
||||
++ (lib.optionals (cfg.cache.lru.schedule != null) [
|
||||
"--cache-lru-schedule='${cfg.cache.lru.schedule}'"
|
||||
"--cache-lru-schedule-timezone='${cfg.cache.lru.scheduleTimeZone}'"
|
||||
])
|
||||
++ (lib.optional (cfg.cache.secretKeyPath != null) "--cache-secret-key-path='%d/secretKey'")
|
||||
++ (lib.forEach cfg.upstream.caches (url: "--upstream-cache='${url}'"))
|
||||
++ (lib.forEach cfg.upstream.publicKeys (pk: "--upstream-public-key='${pk}'"))
|
||||
);
|
||||
|
||||
isSqlite = lib.strings.hasPrefix "sqlite:" cfg.cache.databaseURL;
|
||||
|
||||
dbPath = lib.removePrefix "sqlite:" cfg.cache.databaseURL;
|
||||
dbDir = dirOf dbPath;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.ncps = {
|
||||
enable = lib.mkEnableOption "ncps: Nix binary cache proxy service implemented in Go";
|
||||
|
||||
package = lib.mkPackageOption pkgs "ncps" { };
|
||||
|
||||
dbmatePackage = lib.mkPackageOption pkgs "dbmate" { };
|
||||
|
||||
openTelemetry = {
|
||||
enable = lib.mkEnableOption "Enable OpenTelemetry logs, metrics, and tracing";
|
||||
|
||||
grpcURL = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Configure OpenTelemetry gRPC URL. Missing or "https" scheme enables
|
||||
secure gRPC, "insecure" otherwise. Omit to emit telemetry to
|
||||
stdout.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
logLevel = lib.mkOption {
|
||||
type = lib.types.enum logLevels;
|
||||
default = "info";
|
||||
description = ''
|
||||
Set the level for logging. Refer to
|
||||
<https://pkg.go.dev/github.com/rs/zerolog#readme-leveled-logging> for
|
||||
more information.
|
||||
'';
|
||||
};
|
||||
|
||||
cache = {
|
||||
allowDeleteVerb = lib.mkEnableOption ''
|
||||
Whether to allow the DELETE verb to delete narinfo and nar files from
|
||||
the cache.
|
||||
'';
|
||||
|
||||
allowPutVerb = lib.mkEnableOption ''
|
||||
Whether to allow the PUT verb to push narinfo and nar files directly
|
||||
to the cache.
|
||||
'';
|
||||
|
||||
hostName = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The hostname of the cache server. **This is used to generate the
|
||||
private key used for signing store paths (.narinfo)**
|
||||
'';
|
||||
};
|
||||
|
||||
dataPath = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/var/lib/ncps";
|
||||
description = ''
|
||||
The local directory for storing configuration and cached store paths
|
||||
'';
|
||||
};
|
||||
|
||||
databaseURL = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "sqlite:${cfg.cache.dataPath}/db/db.sqlite";
|
||||
defaultText = "sqlite:/var/lib/ncps/db/db.sqlite";
|
||||
description = ''
|
||||
The URL of the database (currently only SQLite is supported)
|
||||
'';
|
||||
};
|
||||
|
||||
lru = {
|
||||
schedule = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
example = "0 2 * * *";
|
||||
description = ''
|
||||
The cron spec for cleaning the store to keep it under
|
||||
config.ncps.cache.maxSize. Refer to
|
||||
https://pkg.go.dev/github.com/robfig/cron/v3#hdr-Usage for
|
||||
documentation.
|
||||
'';
|
||||
};
|
||||
|
||||
scheduleTimeZone = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "Local";
|
||||
example = "America/Los_Angeles";
|
||||
description = ''
|
||||
The name of the timezone to use for the cron schedule. See
|
||||
<https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>
|
||||
for a comprehensive list of possible values for this setting.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
maxSize = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
example = "100G";
|
||||
description = ''
|
||||
The maximum size of the store. It can be given with units such as
|
||||
5K, 10G etc. Supported units: B, K, M, G, T.
|
||||
'';
|
||||
};
|
||||
|
||||
secretKeyPath = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
The path to load the secretKey for signing narinfos. Leave this
|
||||
empty to automatically generate a private/public key.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
server = {
|
||||
addr = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = ":8501";
|
||||
description = ''
|
||||
The address and port the server listens on.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
upstream = {
|
||||
caches = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
example = [ "https://cache.nixos.org" ];
|
||||
description = ''
|
||||
A list of URLs of upstream binary caches.
|
||||
'';
|
||||
};
|
||||
|
||||
publicKeys = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
|
||||
description = ''
|
||||
A list of public keys of upstream caches in the format
|
||||
`host[-[0-9]*]:public-key`. This flag is used to verify the
|
||||
signatures of store paths downloaded from upstream caches.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.cache.lru.schedule == null || cfg.cache.maxSize != null;
|
||||
message = "You must specify config.ncps.cache.lru.schedule when config.ncps.cache.maxSize is set";
|
||||
}
|
||||
|
||||
{
|
||||
assertion = cfg.cache.secretKeyPath == null || (builtins.pathExists cfg.cache.secretKeyPath);
|
||||
message = "config.ncps.cache.secresecretKeyPath=${cfg.cache.secretKeyPath} must exist but does not";
|
||||
}
|
||||
];
|
||||
|
||||
users.users.ncps = {
|
||||
isSystemUser = true;
|
||||
group = "ncps";
|
||||
};
|
||||
users.groups.ncps = { };
|
||||
|
||||
systemd.services.ncps-create-datadirs = {
|
||||
description = "Created required directories by ncps";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
UMask = "0066";
|
||||
};
|
||||
script =
|
||||
(lib.optionalString (cfg.cache.dataPath != "/var/lib/ncps") ''
|
||||
if ! test -d ${cfg.cache.dataPath}; then
|
||||
mkdir -p ${cfg.cache.dataPath}
|
||||
chown ncps:ncps ${cfg.cache.dataPath}
|
||||
fi
|
||||
'')
|
||||
+ (lib.optionalString isSqlite ''
|
||||
if ! test -d ${dbDir}; then
|
||||
mkdir -p ${dbDir}
|
||||
chown ncps:ncps ${dbDir}
|
||||
fi
|
||||
'');
|
||||
wantedBy = [ "ncps.service" ];
|
||||
before = [ "ncps.service" ];
|
||||
};
|
||||
|
||||
systemd.services.ncps = {
|
||||
description = "ncps binary cache proxy service";
|
||||
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
preStart = ''
|
||||
${lib.getExe cfg.dbmatePackage} --migrations-dir=${cfg.package}/share/ncps/db/migrations --url=${cfg.cache.databaseURL} up
|
||||
'';
|
||||
|
||||
serviceConfig = lib.mkMerge [
|
||||
{
|
||||
ExecStart = "${lib.getExe cfg.package} ${globalFlags} serve ${serveFlags}";
|
||||
User = "ncps";
|
||||
Group = "ncps";
|
||||
Restart = "on-failure";
|
||||
RuntimeDirectory = "ncps";
|
||||
}
|
||||
|
||||
# credentials
|
||||
(lib.mkIf (cfg.cache.secretKeyPath != null) {
|
||||
LoadCredential = "secretKey:${cfg.cache.secretKeyPath}";
|
||||
})
|
||||
|
||||
# ensure permissions on required directories
|
||||
(lib.mkIf (cfg.cache.dataPath != "/var/lib/ncps") {
|
||||
ReadWritePaths = [ cfg.cache.dataPath ];
|
||||
})
|
||||
(lib.mkIf (cfg.cache.dataPath == "/var/lib/ncps") {
|
||||
StateDirectory = "ncps";
|
||||
StateDirectoryMode = "0700";
|
||||
})
|
||||
(lib.mkIf (isSqlite && !lib.strings.hasPrefix "/var/lib/ncps" dbDir) {
|
||||
ReadWritePaths = [ dbDir ];
|
||||
})
|
||||
|
||||
# Hardening
|
||||
{
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
"~@privileged"
|
||||
"~@resources"
|
||||
];
|
||||
CapabilityBoundingSet = "";
|
||||
PrivateUsers = true;
|
||||
DevicePolicy = "closed";
|
||||
DeviceAllow = [ "" ];
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectHostname = true;
|
||||
ProtectClock = true;
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = true;
|
||||
RestrictSUIDSGID = true;
|
||||
RestrictRealtime = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
ProcSubset = "pid";
|
||||
RestrictNamespaces = true;
|
||||
SystemCallArchitectures = "native";
|
||||
PrivateNetwork = false;
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
NoNewPrivileges = true;
|
||||
LockPersonality = true;
|
||||
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
|
||||
LimitNOFILE = 65536;
|
||||
UMask = "0066";
|
||||
}
|
||||
];
|
||||
|
||||
unitConfig.RequiresMountsFor = lib.concatStringsSep " " (
|
||||
[ "${cfg.cache.dataPath}" ] ++ lib.optional (isSqlite) dbDir
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ kalbasit ];
|
||||
}
|
||||
@@ -9,18 +9,31 @@ let
|
||||
cfg = config.services.komga;
|
||||
inherit (lib) mkOption mkEnableOption maintainers;
|
||||
inherit (lib.types) port str bool;
|
||||
|
||||
settingsFormat = pkgs.formats.yaml { };
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
(lib.mkRenamedOptionModule
|
||||
[
|
||||
"services"
|
||||
"komga"
|
||||
"port"
|
||||
]
|
||||
[
|
||||
"services"
|
||||
"komga"
|
||||
"settings"
|
||||
"server"
|
||||
"port"
|
||||
]
|
||||
)
|
||||
];
|
||||
|
||||
options = {
|
||||
services.komga = {
|
||||
enable = mkEnableOption "Komga, a free and open source comics/mangas media server";
|
||||
|
||||
port = mkOption {
|
||||
type = port;
|
||||
default = 8080;
|
||||
description = "The port that Komga will listen on.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = str;
|
||||
default = "komga";
|
||||
@@ -39,10 +52,25 @@ in
|
||||
description = "State and configuration directory Komga will use.";
|
||||
};
|
||||
|
||||
settings = lib.mkOption {
|
||||
inherit (settingsFormat) type;
|
||||
default = { };
|
||||
defaultText = lib.literalExpression ''
|
||||
{
|
||||
server.port = 8080;
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Komga configuration.
|
||||
|
||||
See [documentation](https://komga.org/docs/installation/configuration).
|
||||
'';
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = "Whether to open the firewall for the port in {option}`services.komga.port`.";
|
||||
description = "Whether to open the firewall for the port in {option}`services.komga.settings.server.port`.";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -52,6 +80,16 @@ in
|
||||
inherit (lib) mkIf getExe;
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = (cfg.settings.komga.config-dir or cfg.stateDir) == cfg.stateDir;
|
||||
message = "You must use the `services.komga.stateDir` option to properly configure `komga.config-dir`.";
|
||||
}
|
||||
];
|
||||
|
||||
services.komga.settings = {
|
||||
server.port = lib.mkDefault 8080;
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.port ];
|
||||
|
||||
@@ -66,9 +104,17 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
systemd.tmpfiles.settings."10-komga" = {
|
||||
${cfg.stateDir}.d = {
|
||||
inherit (cfg) user group;
|
||||
};
|
||||
"${cfg.stateDir}/application.yml"."L+" = {
|
||||
argument = builtins.toString (settingsFormat.generate "application.yml" cfg.settings);
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.komga = {
|
||||
environment = {
|
||||
SERVER_PORT = builtins.toString cfg.port;
|
||||
KOMGA_CONFIGDIR = cfg.stateDir;
|
||||
};
|
||||
|
||||
|
||||
@@ -88,9 +88,13 @@ in
|
||||
]
|
||||
}
|
||||
pushd $out
|
||||
tar -Sc $diskImage | gzip -${toString cfg.compressionLevel} > \
|
||||
# RTFM:
|
||||
# https://cloud.google.com/compute/docs/images/create-custom
|
||||
# https://cloud.google.com/compute/docs/import/import-existing-image
|
||||
mv $diskImage disk.raw
|
||||
tar -Sc disk.raw | gzip -${toString cfg.compressionLevel} > \
|
||||
${config.image.fileName}
|
||||
rm $diskImage
|
||||
rm disk.raw
|
||||
popd
|
||||
'';
|
||||
format = "raw";
|
||||
|
||||
@@ -660,6 +660,11 @@ in {
|
||||
navidrome = handleTest ./navidrome.nix {};
|
||||
nbd = handleTest ./nbd.nix {};
|
||||
ncdns = handleTest ./ncdns.nix {};
|
||||
ncps = runTest ./ncps.nix;
|
||||
ncps-custom-cache-datapath = runTest {
|
||||
imports = [ ./ncps.nix ];
|
||||
defaults.services.ncps.cache.dataPath = "/path/to/ncps";
|
||||
};
|
||||
ndppd = handleTest ./ndppd.nix {};
|
||||
nix-channel = pkgs.callPackage ../modules/config/nix-channel/test.nix { };
|
||||
nebula = handleTest ./nebula.nix {};
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
machine = {
|
||||
services.kmonad = {
|
||||
enable = true;
|
||||
extraArgs = [
|
||||
"--log-level=debug"
|
||||
];
|
||||
keyboards = {
|
||||
defaultKbd = {
|
||||
device = "/dev/input/by-id/vm-default-kbd";
|
||||
@@ -43,5 +46,7 @@
|
||||
|
||||
with subtest("kmonad is running"):
|
||||
machine.succeed(f"systemctl status {service_name}")
|
||||
with subtest("kmonad symlink is created"):
|
||||
machine.wait_for_file(f"/dev/input/by-id/{service_name}", timeout=5)
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import ./make-test-python.nix ({ lib, ... }:
|
||||
{ pkgs, ... }:
|
||||
{ services.komga = {
|
||||
enable = true;
|
||||
port = 1234;
|
||||
settings.server.port = 1234;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
name = "ncps";
|
||||
|
||||
nodes = {
|
||||
harmonia = {
|
||||
services.harmonia = {
|
||||
enable = true;
|
||||
signKeyPaths = [
|
||||
(pkgs.writeText "cache-key" "cache.example.com-1:9FhO0w+7HjZrhvmzT1VlAZw4OSAlFGTgC24Seg3tmPl4gZBdwZClzTTHr9cVzJpwsRSYLTu7hEAQe3ljy92CWg==")
|
||||
];
|
||||
settings.priority = 35;
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 5000 ];
|
||||
system.extraDependencies = [ pkgs.emptyFile ];
|
||||
};
|
||||
|
||||
ncps = {
|
||||
services.ncps = {
|
||||
enable = true;
|
||||
|
||||
cache = {
|
||||
hostName = "ncps";
|
||||
secretKeyPath = builtins.toString (
|
||||
pkgs.writeText "ncps-cache-key" "ncps:dcrGsrku0KvltFhrR5lVIMqyloAdo0y8vYZOeIFUSLJS2IToL7dPHSSCk/fi+PJf8EorpBn8PU7MNhfvZoI8mA=="
|
||||
);
|
||||
};
|
||||
|
||||
upstream = {
|
||||
caches = [ "http://harmonia:5000" ];
|
||||
publicKeys = [
|
||||
"cache.example.com-1:eIGQXcGQpc00x6/XFcyacLEUmC07u4RAEHt5Y8vdglo="
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 8501 ];
|
||||
};
|
||||
|
||||
client01 = {
|
||||
nix.settings = {
|
||||
substituters = lib.mkForce [ "http://ncps:8501" ];
|
||||
trusted-public-keys = lib.mkForce [
|
||||
"ncps:UtiE6C+3Tx0kgpP34vjyX/BKK6QZ/D1OzDYX72aCPJg="
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
narinfoName =
|
||||
(lib.strings.removePrefix "/nix/store/" (
|
||||
lib.strings.removeSuffix "-empty-file" pkgs.emptyFile.outPath
|
||||
))
|
||||
+ ".narinfo";
|
||||
|
||||
narinfoNameChars = lib.strings.stringToCharacters narinfoName;
|
||||
|
||||
narinfoPath = lib.concatStringsSep "/" [
|
||||
nodes.ncps.services.ncps.cache.dataPath
|
||||
"store/narinfo"
|
||||
(lib.lists.elemAt narinfoNameChars 0)
|
||||
((lib.lists.elemAt narinfoNameChars 0) + (lib.lists.elemAt narinfoNameChars 1))
|
||||
narinfoName
|
||||
];
|
||||
in
|
||||
''
|
||||
start_all()
|
||||
|
||||
harmonia.wait_for_unit("harmonia.service")
|
||||
|
||||
ncps.wait_for_unit("ncps.service")
|
||||
|
||||
client01.wait_until_succeeds("curl -f http://ncps:8501/ | grep '\"hostname\":\"${toString nodes.ncps.services.ncps.cache.hostName}\"' >&2")
|
||||
|
||||
client01.succeed("cat /etc/nix/nix.conf >&2")
|
||||
client01.succeed("nix-store --realise ${pkgs.emptyFile}")
|
||||
|
||||
ncps.succeed("cat ${narinfoPath} >&2")
|
||||
'';
|
||||
}
|
||||
@@ -761,6 +761,9 @@ let
|
||||
# Optimizer error: too much on the stack
|
||||
ack-menu = ignoreCompilationError super.ack-menu;
|
||||
|
||||
# https://github.com/skeeto/emacs-aio/issues/31
|
||||
aio = ignoreCompilationError super.aio;
|
||||
|
||||
# https://github.com/gongo/airplay-el/issues/2
|
||||
airplay = addPackageRequires super.airplay [ self.request-deferred ];
|
||||
|
||||
|
||||
@@ -9785,6 +9785,18 @@ final: prev:
|
||||
meta.homepage = "https://github.com/RRethy/nvim-treesitter-textsubjects/";
|
||||
};
|
||||
|
||||
nvim-trevJ-lua = buildVimPlugin {
|
||||
pname = "nvim-trevJ.lua";
|
||||
version = "2024-12-23";
|
||||
src = fetchFromGitHub {
|
||||
owner = "AckslD";
|
||||
repo = "nvim-trevJ.lua";
|
||||
rev = "86445d0143d47aede944b6daa5c0a463e9d3e730";
|
||||
sha256 = "0wrmzk7wyr4mk8y0c7hq0qqk19ngdwvvd80690vqs3vby89a5zkj";
|
||||
};
|
||||
meta.homepage = "https://github.com/AckslD/nvim-trevJ.lua/";
|
||||
};
|
||||
|
||||
nvim-ts-autotag = buildVimPlugin {
|
||||
pname = "nvim-ts-autotag";
|
||||
version = "2024-12-02";
|
||||
|
||||
@@ -2308,6 +2308,11 @@ in
|
||||
dependencies = [ self.nvim-treesitter ];
|
||||
};
|
||||
|
||||
nvim-trevJ-lua = super.nvim-trevJ-lua.overrideAttrs {
|
||||
dependencies = [ self.nvim-treesitter ];
|
||||
nvimRequireCheck = "trevj";
|
||||
};
|
||||
|
||||
nvim-ufo = super.nvim-ufo.overrideAttrs {
|
||||
dependencies = [ self.promise-async ];
|
||||
nvimRequireCheck = "ufo";
|
||||
|
||||
@@ -812,6 +812,7 @@ https://github.com/nvim-treesitter/nvim-treesitter-refactor/,,
|
||||
https://github.com/PaterJason/nvim-treesitter-sexp/,HEAD,
|
||||
https://github.com/nvim-treesitter/nvim-treesitter-textobjects/,,
|
||||
https://github.com/RRethy/nvim-treesitter-textsubjects/,HEAD,
|
||||
https://github.com/AckslD/nvim-trevJ.lua/,HEAD,
|
||||
https://github.com/windwp/nvim-ts-autotag/,,
|
||||
https://github.com/joosepalviste/nvim-ts-context-commentstring/,,
|
||||
https://github.com/kevinhwang91/nvim-ufo/,HEAD,
|
||||
|
||||
@@ -199,7 +199,7 @@ stdenv.mkDerivation {
|
||||
description = "Native debugger extension for VSCode based on LLDB";
|
||||
homepage = "https://github.com/vadimcn/vscode-lldb";
|
||||
license = [ lib.licenses.mit ];
|
||||
maintainers = [ lib.maintainers.nigelgbanks ];
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
git,
|
||||
python3,
|
||||
swig,
|
||||
boost180,
|
||||
boost,
|
||||
cbc, # for clp
|
||||
cimg,
|
||||
clp, # for or-tools
|
||||
@@ -70,7 +70,7 @@ mkDerivation rec {
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost180
|
||||
boost
|
||||
cbc
|
||||
cimg
|
||||
clp
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "abracadabra";
|
||||
version = "2.8.0";
|
||||
version = "2.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "KejPi";
|
||||
repo = "AbracaDABra";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-bzRXGxSWoiBqvx8r2coNVPQKilOAKFoqBcB4F0uAV8g=";
|
||||
hash = "sha256-PPG71W5HeLr4R8je88K4VXPiSbJn5T7dP3M05C+bkv0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -12,7 +12,7 @@ rustPlatform.buildRustPackage rec {
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://git.deuxfleurs.fr/Deuxfleurs/aerogramme/";
|
||||
rev = "refs/tags/${version}";
|
||||
tag = version;
|
||||
hash = "sha256-ER+P/XGqNzTLwDLK5EBZq/Dl29ZZKl2FdxDb+oLEJ8Y=";
|
||||
};
|
||||
|
||||
@@ -20,16 +20,8 @@ rustPlatform.buildRustPackage rec {
|
||||
./0001-update-time-rs.patch
|
||||
];
|
||||
|
||||
# must use our own Cargo.lock due to git dependencies
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"imap-codec-2.0.0" = "sha256-o64Q74Q84xLRfU4K4JtcjyS0J8mfoApvUs9siscd0RA=";
|
||||
"imap-flow-0.1.0" = "sha256-IopxybuVt5OW6vFiw/4MxojzaNZrKu2xyfaX6F8IYlA=";
|
||||
"k2v-client-0.0.4" = "sha256-V71FCIsgK3VStFOzVntm8P0vXRobF5rQ74qar+cKyik=";
|
||||
"smtp-message-0.1.0" = "sha256-FoSakm3D1xg1vefLf/zkyvzsij1G0QstK3CRo+LbByE=";
|
||||
};
|
||||
};
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-GPj8qhfKgfAadQD9DJafN4ec8L6oY62PS/w/ljkPHpw=";
|
||||
|
||||
# disable network tests as Nix sandbox breaks them
|
||||
doCheck = false;
|
||||
@@ -50,6 +42,5 @@ rustPlatform.buildRustPackage rec {
|
||||
maintainers = with lib.maintainers; [ supinie ];
|
||||
mainProgram = "aerogramme";
|
||||
platforms = lib.platforms.linux;
|
||||
broken = true; # https://github.com/rust-lang/rust/issues/129811
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
{
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
stdenv,
|
||||
makeWrapper,
|
||||
xorg,
|
||||
ncurses,
|
||||
coreutils,
|
||||
bashInteractive,
|
||||
gnused,
|
||||
gnugrep,
|
||||
glibc,
|
||||
xterm,
|
||||
util-linux,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bashrun2";
|
||||
version = "0.2.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hbekel";
|
||||
repo = "bashrun2";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-U2ntplhyv8KAkaMd2D6wRsUIYkhJzxdgHo2xsbNRfqM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
xorg.libX11
|
||||
];
|
||||
|
||||
patches = [
|
||||
./remote-permissions.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace \
|
||||
man/bashrun2.1 \
|
||||
--replace-fail '/usr/bin/brwctl' "$out/bin/brwctl"
|
||||
|
||||
substituteInPlace \
|
||||
src/bindings \
|
||||
src/registry \
|
||||
src/utils \
|
||||
src/bashrun2 \
|
||||
src/frontend \
|
||||
src/remote \
|
||||
src/plugin \
|
||||
src/engine \
|
||||
src/bookmarks \
|
||||
--replace-fail '/bin/rm' '${coreutils}/bin/rm'
|
||||
|
||||
substituteInPlace \
|
||||
src/bashrun2 \
|
||||
--replace-fail '#!/usr/bin/env bash' '#!${lib.getExe bashInteractive}'
|
||||
|
||||
substituteInPlace \
|
||||
src/remote \
|
||||
--replace-fail '/bin/cp' '${coreutils}/bin/cp'
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/bashrun2 \
|
||||
--prefix PATH : "$out/bin:${
|
||||
lib.makeBinPath [
|
||||
ncurses
|
||||
coreutils
|
||||
gnused
|
||||
gnugrep
|
||||
glibc
|
||||
bashInteractive
|
||||
xterm
|
||||
util-linux
|
||||
]
|
||||
}" \
|
||||
--prefix XDG_CONFIG_DIRS : "$out/etc/xdg"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ dopplerian ];
|
||||
mainProgram = "bashrun2";
|
||||
homepage = "http://henning-liebenau.de/bashrun2/";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
description = "Application launcher based on a modified bash session in a small terminal window";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
diff --git a/src/remote b/src/remote
|
||||
index 07674ca..07a6b25 100644
|
||||
--- a/src/remote
|
||||
+++ b/src/remote
|
||||
@@ -97,6 +97,7 @@ function §remote.interface.create {
|
||||
local bookmarks="$bashrun_cache_home/remote-bookmarks.bash"
|
||||
|
||||
/bin/cp "$bashrun_site/interface" "$interface"
|
||||
+ chmod +w "$interface"
|
||||
printf '%s\n' "$bashrun_remote_interface" >> "$interface"
|
||||
|
||||
printf '%s\n' "source $bindings" >> "$interface"
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication {
|
||||
pname = "chirp";
|
||||
version = "0.4.0-unstable-2024-12-17";
|
||||
version = "0.4.0-unstable-2024-12-26";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kk7ds";
|
||||
repo = "chirp";
|
||||
rev = "605037deb68994bbb3114c2a35db7a7a7e4755a6";
|
||||
hash = "sha256-5AwoXX5Qa4ROjt5wSdcElLJ7ZVguKK3urn0ygVDJiGQ=";
|
||||
rev = "43449629fb3c2ae0b71e8b7cb7d49e8e97a00c64";
|
||||
hash = "sha256-zn9pInfJ/QbwgvBqkqzdW7txVGZVU1EPDo4I4ZQDdLY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
python3,
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "cve-prioritizer";
|
||||
version = "1.8.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "TURROKS";
|
||||
repo = "CVE_Prioritizer";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-ade/gcRrdvVsp5F61ZndsNL3s3gq8TDk/dZvPc55S/8=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Add script, https://github.com/TURROKS/CVE_Prioritizer/pull/33
|
||||
(fetchpatch {
|
||||
name = "add-script.patch";
|
||||
url = "https://github.com/TURROKS/CVE_Prioritizer/commit/c29f2332cde7d79e0c9f34c0a1811611a8fb73c9.patch";
|
||||
hash = "sha256-/hnS+YKO4zNGVGTG+KsugJH7Bt2OE8Q2F+7ZX+uhFlU=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# https://github.com/TURROKS/CVE_Prioritizer/pull/32
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "CVE Prioritizer" "cve-prioritizer"
|
||||
'';
|
||||
|
||||
build-system = with python3.pkgs; [ setuptools ];
|
||||
|
||||
dependencies = with python3.pkgs; [
|
||||
click
|
||||
pandas
|
||||
python-dotenv
|
||||
requests
|
||||
termcolor
|
||||
];
|
||||
|
||||
# Project has no tests
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "cve_prioritizer" ];
|
||||
|
||||
meta = {
|
||||
description = "Vulnerability patching with CVSS, EPSS, and CISA's Known Exploited Vulnerabilities";
|
||||
homepage = "https://github.com/TURROKS/CVE_Prioritizer";
|
||||
changelog = "https://github.com/TURROKS/CVE_Prioritizer/releases/tag/v${version}";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = with lib.maintainers; [ fab ];
|
||||
mainProgram = "cve-prioritizer";
|
||||
};
|
||||
}
|
||||
@@ -29,6 +29,9 @@ stdenv.mkDerivation rec {
|
||||
-DINI_FILE='"'"$out/share/fairymax/fmax.ini"'"'
|
||||
'';
|
||||
|
||||
# errors by default in GCC 14
|
||||
NIX_CFLAGS_COMPILE = "-Wno-error=return-mismatch -Wno-error=implicit-int";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out"/{bin,share/fairymax}
|
||||
cp fairymax "$out/bin"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
jdk17,
|
||||
gradle_8,
|
||||
which,
|
||||
copyDesktopItems,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -31,6 +32,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
makeBinaryWrapper
|
||||
jdk
|
||||
gradle
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
mitmCache = gradle.fetchDeps {
|
||||
|
||||
@@ -25,6 +25,12 @@ stdenv.mkDerivation rec {
|
||||
|
||||
patches = [ ./wxgtk-3.2.patch ];
|
||||
|
||||
# use correct wx-config for cross-compiling
|
||||
postPatch = ''
|
||||
substituteInPlace makefile \
|
||||
--replace-fail 'wx-config' "${lib.getExe' wxGTK32 "wx-config"}"
|
||||
'';
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
@@ -45,6 +51,10 @@ stdenv.mkDerivation rec {
|
||||
sed -re '/ctrans_prob/s/energy\[center][+]energy\[other]/(int)(fmin(energy[center]+energy[other],99))/g' -i Canvas.cpp
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"CPP=${stdenv.cc.targetPrefix}c++"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/libexec
|
||||
cp sand $out/libexec
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "git-delete-merged-branches";
|
||||
version = "7.4.1";
|
||||
version = "7.4.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hartwork";
|
||||
repo = pname;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "sha256-1CUwac2TPU5s1uLS1zPvtXZEGCWYwm1y935jqbI173Q=";
|
||||
tag = version;
|
||||
sha256 = "sha256-l+R4gINZJ8bJdhcK+U9jOuIoAm2/bd5P+w9AbwPZMrk=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
|
||||
@@ -7,25 +7,26 @@
|
||||
pam,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "gradm";
|
||||
version = "3.1-202102241600";
|
||||
version = "3.1-202111052217";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://grsecurity.net/stable/${pname}-${version}.tar.gz";
|
||||
sha256 = "02ni34hpggv00140p9gvh0lqi173zdddd2qhfi96hyr1axd5pl50";
|
||||
url = "https://grsecurity.net/stable/gradm-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-JFkpDzZ6R8ihzk6i7Ag1l5nqM9wV7UQ2Q5WWzogoT7k=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
bison
|
||||
flex
|
||||
];
|
||||
|
||||
buildInputs = [ pam ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
makeFlags = [
|
||||
"DESTDIR=$(out)"
|
||||
"DESTDIR=${placeholder "out"}"
|
||||
"LEX=${flex}/bin/flex"
|
||||
"MANDIR=/share/man"
|
||||
"MKNOD=true"
|
||||
@@ -48,14 +49,14 @@ stdenv.mkDerivation rec {
|
||||
|
||||
postInstall = "rmdir $out/dev";
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "grsecurity RBAC administration and policy analysis utility";
|
||||
homepage = "https://grsecurity.net";
|
||||
license = licenses.gpl2Only;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [
|
||||
license = lib.licenses.gpl2Only;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [
|
||||
thoughtpolice
|
||||
joachifm
|
||||
];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
stdenvNoCC,
|
||||
fetchurl,
|
||||
makeWrapper,
|
||||
jdk17_headless,
|
||||
jdk23_headless,
|
||||
nixosTests,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "komga";
|
||||
version = "1.15.0";
|
||||
version = "1.15.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/gotson/${pname}/releases/download/${version}/${pname}-${version}.jar";
|
||||
sha256 = "sha256-mgPGhBdZ7FyxkVNPJkfFjQ6mJDbQ049PKzacTN6cajk=";
|
||||
sha256 = "sha256-Gv0AaW3aTjLjNAzC5FJMVfvZyIN23ezPpRk15OYyKKs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -21,7 +21,7 @@ stdenvNoCC.mkDerivation rec {
|
||||
];
|
||||
|
||||
buildCommand = ''
|
||||
makeWrapper ${jdk17_headless}/bin/java $out/bin/komga --add-flags "-jar $src"
|
||||
makeWrapper ${jdk23_headless}/bin/java $out/bin/komga --add-flags "-jar $src"
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
@@ -32,9 +32,12 @@ stdenvNoCC.mkDerivation rec {
|
||||
description = "Free and open source comics/mangas server";
|
||||
homepage = "https://komga.org/";
|
||||
license = lib.licenses.mit;
|
||||
platforms = jdk17_headless.meta.platforms;
|
||||
maintainers = with lib.maintainers; [ govanify ];
|
||||
platforms = jdk23_headless.meta.platforms;
|
||||
maintainers = with lib.maintainers; [
|
||||
tebriel
|
||||
govanify
|
||||
];
|
||||
mainProgram = "komga";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "legcord";
|
||||
version = "1.0.5";
|
||||
version = "1.0.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Legcord";
|
||||
repo = "Legcord";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-9CicqDZDetxElD36OLizyVNxkqz3rQOjAtUNTGWVwss=";
|
||||
hash = "sha256-0dVuSqViMqhWBMEY36ZcXM1FYnMcDH5brp5gsMWg3Rc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
pnpmDeps = pnpm.fetchDeps {
|
||||
inherit pname version src;
|
||||
hash = "sha256-5GE/I2xLmu2Wu9mjzZMk1YZvtS5PgpwgXnxuY+4nimQ=";
|
||||
hash = "sha256-QTePf/QE85OzXIcnwLJsCJJyRxwoV+FNef2Z9nAt35E=";
|
||||
};
|
||||
|
||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
|
||||
@@ -19,6 +19,11 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "sha256-7aFz+6XJOVEA/Fmi0ywd6rZdTW8sHq8MoHqXR0Hc2o4=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/CMakeLists.txt \
|
||||
--replace-warn " -Werror " " "
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -7,10 +7,11 @@
|
||||
erlang,
|
||||
fetchFromGitHub,
|
||||
nixosTests,
|
||||
nix-update-script,
|
||||
}:
|
||||
beamPackages.mixRelease rec {
|
||||
pname = "livebook";
|
||||
version = "0.14.4";
|
||||
version = "0.14.5";
|
||||
|
||||
inherit elixir;
|
||||
|
||||
@@ -21,14 +22,14 @@ beamPackages.mixRelease rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "livebook-dev";
|
||||
repo = "livebook";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-XpBJlPLr7E3OqTnLxnSmKCgDyiU1hT8WfOhWeRGYROA=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-VSxW+X5zt6npV4tVVgTEvQhjA+jTramSX5h92BWWaQM=";
|
||||
};
|
||||
|
||||
mixFodDeps = beamPackages.fetchMixDeps {
|
||||
pname = "mix-deps-${pname}";
|
||||
inherit src version;
|
||||
hash = "sha256-jB6IOBX3LwdrEtaWY3gglo1HO2OhdiK8j3BgzfZ1nAU=";
|
||||
hash = "sha256-FrkM82LO7GIFpKQfhlEUrAuKu33BzPBs6OrWW4C6pI0=";
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
@@ -42,18 +43,21 @@ beamPackages.mixRelease rec {
|
||||
--set MIX_REBAR3 ${rebar3}/bin/rebar3
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
livebook-service = nixosTests.livebook-service;
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
tests = {
|
||||
livebook-service = nixosTests.livebook-service;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
license = licenses.asl20;
|
||||
meta = {
|
||||
license = lib.licenses.asl20;
|
||||
homepage = "https://livebook.dev/";
|
||||
description = "Automate code & data workflows with interactive Elixir notebooks";
|
||||
maintainers = with maintainers; [
|
||||
maintainers = with lib.maintainers; [
|
||||
munksgaard
|
||||
scvalex
|
||||
];
|
||||
platforms = platforms.unix;
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "lock";
|
||||
version = "1.3.6";
|
||||
version = "1.3.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "konstantintutsch";
|
||||
repo = "Lock";
|
||||
rev = "refs/tags/v${finalAttrs.version}";
|
||||
hash = "sha256-Zd0fVCeE/QTvptoxbyDxcPiBrZ/qZMx/A0tB1wZbX6A=";
|
||||
hash = "sha256-UZt8SlkwhtVRLUMf1uYNLchzkWnL+6e7xLYZ81+YQsw=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
@@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
|
||||
"CC=${stdenv.cc.targetPrefix}cc"
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = "-fpermissive";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kfl";
|
||||
repo = "mosml";
|
||||
|
||||
@@ -9,18 +9,20 @@
|
||||
sudo,
|
||||
python3Packages,
|
||||
gitUpdater,
|
||||
util-linux,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "pmbootstrap";
|
||||
version = "3.0.0";
|
||||
version = "3.1.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "postmarketOS";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-hUrWMU4V7tf/qVR4geR5FsCQ+BZA+zCPTdCZGN1PMKk=";
|
||||
tag = version;
|
||||
hash = "sha256-ijXyX+VJqiS0z5IOXGjeL2SGZ/4ledhnq/Zr1ZLW/Io=";
|
||||
domain = "gitlab.postmarketos.org";
|
||||
};
|
||||
|
||||
@@ -34,103 +36,46 @@ python3Packages.buildPythonApplication rec {
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
python3Packages.pytestCheckHook
|
||||
git
|
||||
multipath-tools
|
||||
openssl
|
||||
ps
|
||||
python3Packages.pytestCheckHook
|
||||
sudo
|
||||
util-linux
|
||||
versionCheckHook
|
||||
];
|
||||
|
||||
# Add test dependency in PATH
|
||||
preCheck = "export PYTHONPATH=$PYTHONPATH:${pmb_test}";
|
||||
preCheck = ''
|
||||
export PYTHONPATH=$PYTHONPATH:${pmb_test}
|
||||
'';
|
||||
|
||||
# skip impure tests
|
||||
disabledTests = [
|
||||
"test_apk_static"
|
||||
"test_aportgen"
|
||||
"test_aportgen_device_wizard"
|
||||
"test_bootimg"
|
||||
"test_build_abuild_leftovers"
|
||||
"test_build_depends_binary_outdated"
|
||||
"test_build_depends_high_level"
|
||||
"test_build_depends_no_binary_error"
|
||||
"test_build_is_necessary"
|
||||
"test_build_local_source_high_level"
|
||||
"test_build_src_invalid_path"
|
||||
"test_check"
|
||||
"test_can_fast_forward"
|
||||
"test_check_build_for_arch"
|
||||
"test_check_config"
|
||||
"test_chroot_arguments"
|
||||
"test_chroot_interactive_shell"
|
||||
"test_chroot_interactive_shell_user"
|
||||
"test_chroot_mount"
|
||||
"test_clean_worktree"
|
||||
"test_config_user"
|
||||
"test_cross_compile_distcc"
|
||||
"test_crossdirect"
|
||||
"test_extract_arch"
|
||||
"test_extract_version"
|
||||
"test_file"
|
||||
"test_filter_aport_packages"
|
||||
"test_filter_missing_packages_binary_exists"
|
||||
"test_filter_missing_packages_invalid"
|
||||
"test_filter_missing_packages_pmaports"
|
||||
"test_finish"
|
||||
"test_folder_size"
|
||||
"test_get_all_component_names"
|
||||
"test_get_apkbuild"
|
||||
"test_get_depends"
|
||||
"test_get_upstream_remote"
|
||||
"test_helpers_lint"
|
||||
"test_helpers_package_get_apkindex"
|
||||
"test_helpers_repo"
|
||||
"test_helpers_ui"
|
||||
"test_init_buildenv"
|
||||
"test_kconfig_check"
|
||||
"test_keys"
|
||||
"test_newapkbuild"
|
||||
"test_package"
|
||||
"test_package_from_aports"
|
||||
"test_pkgrepo_pmaports"
|
||||
"test_pkgrel_bump"
|
||||
"test_pmbootstrap_status"
|
||||
"test_print_checks_git_repo"
|
||||
"test_proxy"
|
||||
"test_pull"
|
||||
"test_qemu_running_processes"
|
||||
"test_questions_additional_options"
|
||||
"test_questions_bootimg"
|
||||
"test_questions_channel"
|
||||
"test_questions_keymaps"
|
||||
"test_questions_work_path"
|
||||
"test_read_config_channel"
|
||||
"test_recurse_invalid"
|
||||
"test_run_abuild"
|
||||
"test_run_core"
|
||||
"test_shell_escape"
|
||||
"test_skip_already_built"
|
||||
"test_switch_to_channel_branch"
|
||||
"test_version"
|
||||
];
|
||||
|
||||
versionCheckProgramArg = "--version";
|
||||
|
||||
makeWrapperArgs = [
|
||||
"--prefix PATH : ${
|
||||
lib.makeBinPath [
|
||||
git
|
||||
openssl
|
||||
multipath-tools
|
||||
util-linux
|
||||
]
|
||||
}"
|
||||
];
|
||||
|
||||
passthru.updateScript = gitUpdater { };
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Sophisticated chroot/build/flash tool to develop and install postmarketOS";
|
||||
homepage = "https://gitlab.com/postmarketOS/pmbootstrap";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [
|
||||
onny
|
||||
lucasew
|
||||
];
|
||||
|
||||
@@ -2,42 +2,45 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
makeWrapper,
|
||||
perl,
|
||||
perlPackages,
|
||||
runtimeShell,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
let
|
||||
perlDeps = [
|
||||
perlPackages.ParseWin32Registry
|
||||
];
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "regripper";
|
||||
version = "0-unstable-2024-11-02";
|
||||
version = "0-unstable-2024-12-12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "keydet89";
|
||||
repo = "RegRipper3.0";
|
||||
rev = "89f3cac57e10bce1a79627e6038353e8e8a0c378";
|
||||
hash = "sha256-dW3Gr4HQH484i47Bg+CEnBYoGQQRMBJr88+YeuU+iV4=";
|
||||
rev = "bdf7ac2500a41319479846fe07202b7e8a61ca1f";
|
||||
hash = "sha256-JEBwTpDck0w85l0q5WjF1d20NyU+GJ89yAzbkUVOsu0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
perl
|
||||
perlPackages.ParseWin32Registry
|
||||
];
|
||||
] ++ perlDeps;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,share}
|
||||
|
||||
rm -r *.md *.exe *.bat *.dll
|
||||
rm -r *.md *.exe *.bat *.dll *.zip
|
||||
|
||||
cp -aR . "$out/share/regripper/"
|
||||
|
||||
cat > "$out/bin/regripper" << EOF
|
||||
#!${runtimeShell}
|
||||
exec ${perl}/bin/perl $out/share/regripper/rip.pl "\$@"
|
||||
EOF
|
||||
|
||||
chmod u+x "$out/bin/regripper"
|
||||
makeWrapper ${perl}/bin/perl $out/bin/regripper \
|
||||
--add-flags "$out/share/regripper/rip.pl" \
|
||||
--set PERL5LIB ${perlPackages.makeFullPerlPath perlDeps}
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "reindeer";
|
||||
version = "2024.12.16.00";
|
||||
version = "2024.12.30.00";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "facebookincubator";
|
||||
repo = "reindeer";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-yM+iVX+5caiSW6K45EbkHgHEhceIvauCIYwlLTYpzbQ=";
|
||||
hash = "sha256-o8PHtGG3Ndz6Ei9ZBoAdeNmBb70m4c+jCvHCGOjaA+w=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-TWu2p6d/jec7zZpFP8Gly4RdgkL18yU2VWsFHVZLDJY=";
|
||||
cargoHash = "sha256-guRi+kYLjPHFLm4eN3kJ2kHYIBZ5JXMb3ii8416e+IA=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "sarasa-gothic";
|
||||
version = "1.0.26";
|
||||
version = "1.0.27";
|
||||
|
||||
src = fetchurl {
|
||||
# Use the 'ttc' files here for a smaller closure size.
|
||||
# (Using 'ttf' files gives a closure size about 15x larger, as of November 2021.)
|
||||
url = "https://github.com/be5invis/Sarasa-Gothic/releases/download/v${finalAttrs.version}/Sarasa-TTC-${finalAttrs.version}.zip";
|
||||
hash = "sha256-Z2J8yW9yLnkGh+nNb57+xyz8uZFwePpuSlBdRxfPABA=";
|
||||
hash = "sha256-/pN3NIwkJZ4a5g87Z3kr71Xvef0TIbN2UzsfvXJryNk=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
@@ -19,18 +19,18 @@ in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sby";
|
||||
version = "0.47";
|
||||
version = "0.48";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "YosysHQ";
|
||||
repo = "sby";
|
||||
rev = "yosys-${version}";
|
||||
hash = "sha256-Il2pXw2doaoZrVme2p0dSUUa8dCQtJJrmYitn1MkTD4=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-icOlWutvajHMCi2YUIGU4v5S63YobXw4fYYUvPoSzo4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ bash ];
|
||||
buildInputs = [
|
||||
pythonEnv
|
||||
nativeCheckInputs = [
|
||||
python3
|
||||
python3.pkgs.xmlschema
|
||||
yosys
|
||||
boolector
|
||||
yices
|
||||
@@ -40,7 +40,8 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs docs/source/conf.py \
|
||||
patchShebangs --build \
|
||||
docs/source/conf.py \
|
||||
docs/source/conf.diff \
|
||||
tests/autotune/*.sh \
|
||||
tests/keepgoing/*.sh \
|
||||
@@ -64,8 +65,6 @@ stdenv.mkDerivation rec {
|
||||
--replace-fail '/usr/bin/env python3' '${pythonEnv}/bin/python'
|
||||
substituteInPlace sbysrc/sby_autotune.py \
|
||||
--replace-fail '["btorsim", "--vcd"]' '["${btor2tools}/bin/btorsim", "--vcd"]'
|
||||
substituteInPlace tests/make/required_tools.py \
|
||||
--replace-fail '["btorsim", "--vcd"]' '["${btor2tools}/bin/btorsim", "--vcd"]'
|
||||
'';
|
||||
|
||||
dontBuild = true;
|
||||
@@ -89,12 +88,7 @@ stdenv.mkDerivation rec {
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"yosys-([0-9].*)"
|
||||
];
|
||||
};
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "SymbiYosys, a front-end for Yosys-based formal verification flows";
|
||||
|
||||
@@ -35,20 +35,20 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "siyuan";
|
||||
version = "3.1.16";
|
||||
version = "3.1.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "siyuan-note";
|
||||
repo = "siyuan";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-8+Gz9AuxmK2hOApRZ2b1+rROOG94EBJR3pyp8YwtgiA=";
|
||||
hash = "sha256-hUPHWVULyHQgGNTpLZKDk6hUlBIK1ouYAYecr0oUe/M=";
|
||||
};
|
||||
|
||||
kernel = buildGo123Module {
|
||||
name = "${finalAttrs.pname}-${finalAttrs.version}-kernel";
|
||||
inherit (finalAttrs) src;
|
||||
sourceRoot = "${finalAttrs.src.name}/kernel";
|
||||
vendorHash = "sha256-B2pGXs0IN5WhNHoFgTufd46q60RNvWzNdwoCxpayYC8=";
|
||||
vendorHash = "sha256-1JwUQ/WhR1O3LTevI2kWk+FNpH4FBVgF46d+W6M7UBg=";
|
||||
|
||||
patches = [
|
||||
(replaceVars ./set-pandoc-path.patch {
|
||||
@@ -89,7 +89,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
src
|
||||
sourceRoot
|
||||
;
|
||||
hash = "sha256-LlQdfRGsBn3IZWKSUqH5tAljXnWanuFXO2x+Wi3on7E=";
|
||||
hash = "sha256-357iBgxevtXus0Dpa8+LHKsO42HoHibkhRSy+tpD8jo=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/app";
|
||||
|
||||
@@ -35,7 +35,7 @@ in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "tdlib";
|
||||
version = "1.8.41";
|
||||
version = "1.8.42";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tdlib";
|
||||
@@ -44,8 +44,8 @@ stdenv.mkDerivation {
|
||||
# The tdlib authors do not set tags for minor versions, but
|
||||
# external programs depending on tdlib constrain the minor
|
||||
# version, hence we set a specific commit with a known version.
|
||||
rev = "5b974c298d4ed551d3ad2c061ad7b8280d137c7e";
|
||||
hash = "sha256-1TyGv2yMjX75+ccZSox/2m6SMmwEZAkShIhLfCeNmZg=";
|
||||
rev = "ef580cd3dd0e5223c2be503342dc29e128be866e";
|
||||
hash = "sha256-k1YQpQXYmEdoiyWeAcj2KRU+BcWuWbHpd4etxLspEoo=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "templ";
|
||||
version = "0.2.793";
|
||||
version = "0.3.819";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "a-h";
|
||||
repo = "templ";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-0KGht5IMbJV8KkXgT5qJxA9bcmWevzXXAVPMQTm0ccw=";
|
||||
hash = "sha256-kTP/DLnou3KETZRtvHdeiMmRW6xldgZBAn9O9p9s/MA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-ZWY19f11+UI18jeHYIEZjdb9Ii74mD6w+dYRLPkdfBU=";
|
||||
vendorHash = "sha256-ipLn52MsgX7KQOJixYcwMR9TCeHz55kQQ7fgkIgnu7w=";
|
||||
|
||||
subPackages = [ "cmd/templ" ];
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
# For an explanation of optional packages
|
||||
# (features provided by them, version limits), see
|
||||
# https://www.ibm.com/support/pages/node/660813#Version%208.1
|
||||
# https://web.archive.org/web/20240118051918/https://www.ibm.com/support/pages/node/660813#Version%208.1
|
||||
|
||||
# IBM Tivoli Storage Manager Client uses a system-wide
|
||||
# client system-options file `dsm.sys` and expects it
|
||||
@@ -44,26 +44,13 @@
|
||||
# point to this derivations `/dsmi_dir` directory symlink.
|
||||
# Other environment variables might be necessary,
|
||||
# depending on local configuration or usage; see:
|
||||
# https://www.ibm.com/docs/en/storage-protect/8.1.24?topic=solaris-set-api-environment-variables
|
||||
|
||||
# The newest version of TSM client should be discoverable by
|
||||
# going to the `downloadPage` (see `meta` below).
|
||||
# Find the "Backup-archive client" table on that page.
|
||||
# Look for "Download Documents" of the latest release.
|
||||
# Follow the "Download Information" link.
|
||||
# Look for the "Linux x86_64 ..." rows in the table at
|
||||
# the bottom of the page and follow their "HTTPS" links (one
|
||||
# link per row -- each link might point to the latest release).
|
||||
# In the directory listings to show up,
|
||||
# check the big `.tar` file.
|
||||
#
|
||||
# (as of 2023-07-01)
|
||||
# https://www.ibm.com/docs/en/storage-protect/8.1.25?topic=solaris-set-api-environment-variables
|
||||
|
||||
let
|
||||
|
||||
meta = {
|
||||
homepage = "https://www.ibm.com/products/storage-protect";
|
||||
downloadPage = "https://www.ibm.com/support/pages/ibm-storage-protect-downloads-latest-fix-packs-and-interim-fixes";
|
||||
downloadPage = "https://www.ibm.com/support/fixcentral/swg/selectFixes?product=ibm/StorageSoftware/IBM+Spectrum+Protect";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
mainProgram = "dsmc";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
@@ -104,10 +91,10 @@ let
|
||||
|
||||
unwrapped = stdenv.mkDerivation (finalAttrs: {
|
||||
name = "tsm-client-${finalAttrs.version}-unwrapped";
|
||||
version = "8.1.24.0";
|
||||
version = "8.1.25.0";
|
||||
src = fetchurl {
|
||||
url = mkSrcUrl finalAttrs.version;
|
||||
hash = "sha512-TqTDE2oJK/Wu/MNYUCqxmOE6asAqDLz4GtdcFZuKqvfT8pJUCYKz9yjRPIrM3u2XfLH0wDq+Q8ER4ui680mswA==";
|
||||
hash = "sha512-OPNjSMnWJ/8Ogy9O0wG0H4cEbYiOwyCVzkWhpG00v/Vm0LDxLzPteMnMOyH8L1egIDhy7lmQYSzI/EC4WWUDDA==";
|
||||
};
|
||||
inherit meta passthru;
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "urlfinder";
|
||||
version = "0.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "projectdiscovery";
|
||||
repo = "urlfinder";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-hORZzeGNcRTcFsvY8pfs8f1JNpdTJjMdO/lJHR83DfY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Wu9itQfcrwWuzRHtTKk+lF7n6eIzSfATWtI+8xLQQsI=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Tool for passively gathering URLs without active scanning";
|
||||
homepage = "https://github.com/projectdiscovery/urlfinder";
|
||||
changelog = "https://github.com/projectdiscovery/urlfinder/releases/tag/v${version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ fab ];
|
||||
mainProgram = "urlfinder";
|
||||
};
|
||||
}
|
||||
@@ -1,45 +1,18 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
fetchurl,
|
||||
unzip,
|
||||
autoPatchelfHook,
|
||||
}:
|
||||
|
||||
let
|
||||
platformInfoTable = {
|
||||
"x86_64-linux" = {
|
||||
id = "linux-x64";
|
||||
hash = "sha256-/PD5e0bWgnIsIrvyOypoJw30VkgbOFWV1NJpPS2G0WM=";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
id = "linux-arm64";
|
||||
hash = "sha256-zfiorXZyIISZPXPwmcdYeHceDmQXkUhsvTkNZScg648=";
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
id = "osx-x64";
|
||||
hash = "sha256-cdNdV1fVPkz6B7vtKZiPsLQGqnIiDtYa9KTcwSkjdJg=";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
id = "osx-arm64";
|
||||
hash = "sha256-Z1dq2t/HBQulbPF23ZCihOrcZHMpTXEQ6yXKORZaFPk=";
|
||||
};
|
||||
};
|
||||
|
||||
platformInfo =
|
||||
platformInfoTable.${stdenv.hostPlatform.system}
|
||||
or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "voicevox-core";
|
||||
version = "0.15.4";
|
||||
version = "0.15.7";
|
||||
|
||||
# Note: Only the prebuilt binaries are able to decrypt the encrypted voice models
|
||||
src = fetchzip {
|
||||
url = "https://github.com/VOICEVOX/voicevox_core/releases/download/${finalAttrs.version}/voicevox_core-${platformInfo.id}-cpu-${finalAttrs.version}.zip";
|
||||
inherit (platformInfo) hash;
|
||||
};
|
||||
src = finalAttrs.passthru.sources.${stdenv.hostPlatform.system};
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [ unzip ] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
|
||||
|
||||
buildInputs = [ stdenv.cc.cc.lib ];
|
||||
|
||||
@@ -54,6 +27,37 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# When updating, run the following command to fetch all FODs:
|
||||
# nix-build -A voicevox-core.sources --keep-going
|
||||
passthru.sources =
|
||||
let
|
||||
# Note: Only the prebuilt binaries are able to decrypt the encrypted voice models
|
||||
fetchCoreArtifact =
|
||||
{ id, hash }:
|
||||
fetchurl {
|
||||
url = "https://github.com/VOICEVOX/voicevox_core/releases/download/${finalAttrs.version}/voicevox_core-${id}-cpu-${finalAttrs.version}.zip";
|
||||
inherit hash;
|
||||
};
|
||||
in
|
||||
{
|
||||
"x86_64-linux" = fetchCoreArtifact {
|
||||
id = "linux-x64";
|
||||
hash = "sha256-7FgrJ1HlB8l5MHd2KM4lYRx2bYdxrD2+su1G33/ugUA=";
|
||||
};
|
||||
"aarch64-linux" = fetchCoreArtifact {
|
||||
id = "linux-arm64";
|
||||
hash = "sha256-fD7YMTo9jeB4vJibnVwX8VrukCUeAwS6VXGOr3VXG+c=";
|
||||
};
|
||||
"x86_64-darwin" = fetchCoreArtifact {
|
||||
id = "osx-x64";
|
||||
hash = "sha256-5h9qEKbdcvip50TLs3vf6lXkSv24VEjOrx6CTUo7Q4Q=";
|
||||
};
|
||||
"aarch64-darwin" = fetchCoreArtifact {
|
||||
id = "osx-arm64";
|
||||
hash = "sha256-0bFLhvP7LqDzuk3pyM9QZfc8eLMW0IgqVkaXsuS3qlY=";
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/VOICEVOX/voicevox_core/releases/tag/${finalAttrs.version}";
|
||||
description = "Core library for the VOICEVOX speech synthesis software";
|
||||
@@ -67,8 +71,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
redistributable = true;
|
||||
})
|
||||
];
|
||||
maintainers = with lib.maintainers; [ tomasajt ];
|
||||
platforms = lib.attrNames platformInfoTable;
|
||||
maintainers = with lib.maintainers; [
|
||||
tomasajt
|
||||
eljamm
|
||||
];
|
||||
platforms = lib.attrNames finalAttrs.passthru.sources;
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -8,14 +8,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "voicevox-engine";
|
||||
version = "0.20.0";
|
||||
version = "0.22.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "VOICEVOX";
|
||||
repo = "voicevox_engine";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-Gib5R7oleg+XXyu2V65EqrflQ1oiAR7a09a0MFhSITc=";
|
||||
tag = version;
|
||||
hash = "sha256-TZycd3xX5d4dNk4ze2JozyO7zDpGAuO+O7xHAx7QXUI=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -95,6 +95,10 @@ python3Packages.buildPythonApplication rec {
|
||||
# this test checks the behaviour of openapi
|
||||
# one of the functions returns a slightly different output due to openapi version differences
|
||||
"test_OpenAPIの形が変わっていないことを確認"
|
||||
|
||||
# these tests fail due to some tiny floating point discrepancies
|
||||
"test_upspeak_voiced_last_mora"
|
||||
"test_upspeak_voiced_N_last_mora"
|
||||
];
|
||||
|
||||
nativeCheckInputs = with python3Packages; [
|
||||
@@ -105,22 +109,26 @@ python3Packages.buildPythonApplication rec {
|
||||
|
||||
passthru = {
|
||||
resources = fetchFromGitHub {
|
||||
name = "voicevox-resource-${version}"; # this contains ${version} to invalidate the hash upon updating the package
|
||||
owner = "VOICEVOX";
|
||||
repo = "voicevox_resource";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-m888DF9qgGbK30RSwNnAoT9D0tRJk6cD5QY72FRkatM=";
|
||||
tag = version;
|
||||
hash = "sha256-oeWJESm1v0wicAXXFAyZT8z4QRVv9c+3vsWksmuY5wY=";
|
||||
};
|
||||
|
||||
pyopenjtalk = python3Packages.callPackage ./pyopenjtalk.nix { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/VOICEVOX/voicevox_engine/releases/tag/${version}";
|
||||
changelog = "https://github.com/VOICEVOX/voicevox_engine/releases/tag/${src.tag}";
|
||||
description = "Engine for the VOICEVOX speech synthesis software";
|
||||
homepage = "https://github.com/VOICEVOX/voicevox_engine";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
mainProgram = "voicevox-engine";
|
||||
maintainers = with lib.maintainers; [ tomasajt ];
|
||||
maintainers = with lib.maintainers; [
|
||||
tomasajt
|
||||
eljamm
|
||||
];
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -12,30 +12,29 @@ index 5b0dcb0..5848ccd 100644
|
||||
"host": "http://127.0.0.1:50021"
|
||||
}
|
||||
diff --git a/electron-builder.config.js b/electron-builder.config.js
|
||||
index 462e6f2..10a9bff 100644
|
||||
index 196a0d7..7e313c2 100644
|
||||
--- a/electron-builder.config.js
|
||||
+++ b/electron-builder.config.js
|
||||
@@ -35,19 +35,6 @@ const isMac = process.platform === "darwin";
|
||||
@@ -37,18 +37,7 @@ const isArm64 = process.arch === "arm64";
|
||||
// cf: https://k-hyoda.hatenablog.com/entry/2021/10/23/000349#%E8%BF%BD%E5%8A%A0%E5%B1%95%E9%96%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%85%88%E3%81%AE%E8%A8%AD%E5%AE%9A
|
||||
const extraFilePrefix = isMac ? "MacOS/" : "";
|
||||
|
||||
-const sevenZipFile = fs
|
||||
- .readdirSync(path.resolve(__dirname, "build", "vendored", "7z"))
|
||||
- .readdirSync(path.resolve(__dirname, "vendored", "7z"))
|
||||
- .find(
|
||||
- // Windows: 7za.exe, Linux: 7zzs, macOS: 7zz
|
||||
- (fileName) => ["7za.exe", "7zzs", "7zz"].includes(fileName),
|
||||
- );
|
||||
-
|
||||
|
||||
-if (!sevenZipFile) {
|
||||
- throw new Error(
|
||||
- "7z binary file not found. Run `node ./build/download7z.js` first.",
|
||||
- "7z binary file not found. Run `node ./tools/download7z.js` first.",
|
||||
- );
|
||||
-}
|
||||
-
|
||||
|
||||
/** @type {import("electron-builder").Configuration} */
|
||||
const builderOptions = {
|
||||
beforeBuild: async () => {
|
||||
@@ -88,14 +75,6 @@ const builderOptions = {
|
||||
@@ -90,14 +79,6 @@ const builderOptions = {
|
||||
from: "build/README.txt",
|
||||
to: extraFilePrefix + "README.txt",
|
||||
},
|
||||
@@ -44,17 +43,17 @@ index 462e6f2..10a9bff 100644
|
||||
- to: path.join(extraFilePrefix, "vv-engine"),
|
||||
- },
|
||||
- {
|
||||
- from: path.resolve(__dirname, "build", "vendored", "7z", sevenZipFile),
|
||||
- from: path.resolve(__dirname, "vendored", "7z", sevenZipFile),
|
||||
- to: extraFilePrefix + sevenZipFile,
|
||||
- },
|
||||
],
|
||||
// electron-builder installer
|
||||
productName: "VOICEVOX",
|
||||
diff --git a/src/backend/electron/manager/vvppManager.ts b/src/backend/electron/manager/vvppManager.ts
|
||||
index 6aa17b6..b8b52b7 100644
|
||||
index edd3177..22d0114 100644
|
||||
--- a/src/backend/electron/manager/vvppManager.ts
|
||||
+++ b/src/backend/electron/manager/vvppManager.ts
|
||||
@@ -196,16 +196,8 @@ export class VvppManager {
|
||||
@@ -184,16 +184,8 @@ export class VvppManager {
|
||||
|
||||
const args = ["x", "-o" + outputDir, archiveFile, "-t" + format];
|
||||
|
||||
|
||||
@@ -10,17 +10,18 @@
|
||||
electron,
|
||||
_7zz,
|
||||
voicevox-engine,
|
||||
dart-sass,
|
||||
}:
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "voicevox";
|
||||
version = "0.20.0";
|
||||
version = "0.22.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "VOICEVOX";
|
||||
repo = "voicevox";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-05WTecNc1xxe7SGDPZbLtRELNghFkMTqI4pkX4PsVWI=";
|
||||
tag = version;
|
||||
hash = "sha256-6z+A4bJIDfN/K8IjEdt2TqEa/EDt4uQpGh+zSWfP74I=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -36,7 +37,10 @@ buildNpmPackage rec {
|
||||
--replace-fail "postinstall" "_postinstall"
|
||||
'';
|
||||
|
||||
npmDepsHash = "sha256-g3avCj3S96qYPAyGXn4yvrZ4gteJld+g4eV4aRtv/3g=";
|
||||
npmDepsHash = "sha256-NuKFhDb/J6G3pFYHZedKnY2hDC5GCp70DpqrST4bJMA=";
|
||||
|
||||
# unlock very specific node version bounds specified by upstream
|
||||
npmInstallFlags = [ "--engine-strict=false" ];
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
@@ -54,6 +58,10 @@ buildNpmPackage rec {
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
# force sass-embedded to use our own sass instead of the bundled one
|
||||
substituteInPlace node_modules/sass-embedded/dist/lib/src/compiler-path.js \
|
||||
--replace-fail 'compilerCommand = (() => {' 'compilerCommand = (() => { return ["${lib.getExe dart-sass}"];'
|
||||
|
||||
# build command taken from the definition of the `electron:build` npm script
|
||||
VITE_TARGET=electron npm exec vite build
|
||||
|
||||
@@ -105,12 +113,15 @@ buildNpmPackage rec {
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/VOICEVOX/voicevox/releases/tag/${version}";
|
||||
changelog = "https://github.com/VOICEVOX/voicevox/releases/tag/${src.tag}";
|
||||
description = "Editor for the VOICEVOX speech synthesis software";
|
||||
homepage = "https://github.com/VOICEVOX/voicevox";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
mainProgram = "voicevox";
|
||||
maintainers = with lib.maintainers; [ tomasajt ];
|
||||
maintainers = with lib.maintainers; [
|
||||
tomasajt
|
||||
eljamm
|
||||
];
|
||||
platforms = electron.meta.platforms;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,31 +1,54 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchFromGitHub,
|
||||
autoreconfHook,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "zsync";
|
||||
version = "0.6.2";
|
||||
version = "0.6.2-unstable-2017-04-25";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://zsync.moria.org.uk/download/zsync-${version}.tar.bz2";
|
||||
hash = "sha256-C51TQzOHqk8EY0psY6XvqCAwcPIpivcqcF+b492mWvI=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "cph6";
|
||||
repo = "zsync";
|
||||
rev = "6cfe374f8f2310cbd624664ca98e5bb28244ba7a";
|
||||
hash = "sha256-SnCzNDMyhMx+2JmgsrjtYDa31Ki1EWix9iBfaduDnro=";
|
||||
};
|
||||
|
||||
env = lib.optionalAttrs stdenv.cc.isClang {
|
||||
# Suppress error "call to undeclared library function 'strcasecmp'" during compilation.
|
||||
# The function is found by the linker correctly, so this doesn't introduce any issues.
|
||||
NIX_CFLAGS_COMPILE = " -Wno-implicit-function-declaration";
|
||||
};
|
||||
sourceRoot = "${src.name}/c";
|
||||
|
||||
patches = [
|
||||
./remove-inexisting-rsumtest.patch
|
||||
./read-blocksums-declaration-fix.patch
|
||||
];
|
||||
|
||||
makeFlags = [ "AR=${stdenv.cc.bintools.targetPrefix}ar" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://zsync.moria.org.uk/";
|
||||
# Suppress error "call to undeclared library function 'strcasecmp'" during compilation.
|
||||
# The function is found by the linker correctly, so this doesn't introduce any issues.
|
||||
# Also supress errors that come from incompatible pointer types due to GCC 14 changes.
|
||||
env.NIX_CFLAGS_COMPILE = toString (
|
||||
lib.optionals stdenv.cc.isClang [
|
||||
"-Wno-implicit-function-declaration"
|
||||
]
|
||||
++ lib.optionals stdenv.cc.isGNU [
|
||||
"-Wno-error=incompatible-pointer-types"
|
||||
]
|
||||
);
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/cph6/zsync";
|
||||
description = "File distribution system using the rsync algorithm";
|
||||
license = licenses.artistic2;
|
||||
maintainers = with maintainers; [ viric ];
|
||||
platforms = with platforms; all;
|
||||
license = lib.licenses.artistic2;
|
||||
maintainers = with lib.maintainers; [
|
||||
viric
|
||||
ryand56
|
||||
];
|
||||
platforms = with lib.platforms; all;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/libzsync/zsync.c b/libzsync/zsync.c
|
||||
index 793a426..783c349 100644
|
||||
--- a/libzsync/zsync.c
|
||||
+++ b/libzsync/zsync.c
|
||||
@@ -116,7 +116,7 @@ struct zsync_state {
|
||||
};
|
||||
|
||||
static int zsync_read_blocksums(struct zsync_state *zs, FILE * f,
|
||||
- int rsum_bytes, int checksum_bytes,
|
||||
+ int rsum_bytes, unsigned int checksum_bytes,
|
||||
int seq_matches);
|
||||
static int zsync_sha1(struct zsync_state *zs, int fh);
|
||||
static int zsync_recompress(struct zsync_state *zs);
|
||||
@@ -0,0 +1,17 @@
|
||||
diff --git a/c/librcksum/Makefile.am b/c/librcksum/Makefile.am
|
||||
index 0216e49..f4fce72 100644
|
||||
--- a/librcksum/Makefile.am
|
||||
+++ b/librcksum/Makefile.am
|
||||
@@ -2,9 +2,8 @@
|
||||
|
||||
noinst_LIBRARIES = librcksum.a
|
||||
|
||||
-TESTS = md4test rsumtest
|
||||
-noinst_PROGRAMS = md4test rsumtest
|
||||
+TESTS = md4test
|
||||
+noinst_PROGRAMS = md4test
|
||||
|
||||
md4test_SOURCES = md4test.c md4.h md4.c
|
||||
-rsumtest_SOURCES = rsum.c rsumtest.c hash.c range.c state.c md4.c ../progress.c
|
||||
librcksum_a_SOURCES = internal.h rcksum.h md4.h rsum.c hash.c state.c range.c md4.c
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From 36354a7aca58753893148d62a889ca9e27381ac0 Mon Sep 17 00:00:00 2001
|
||||
From: David McFarland <corngood@gmail.com>
|
||||
Date: Thu, 2 Jan 2025 15:30:16 -0400
|
||||
Subject: [PATCH] fix clang19 build
|
||||
|
||||
---
|
||||
src/runtime/src/coreclr/vm/comreflectioncache.hpp | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/runtime/src/coreclr/vm/comreflectioncache.hpp b/src/runtime/src/coreclr/vm/comreflectioncache.hpp
|
||||
index 08d173e616..12db55251d 100644
|
||||
--- a/src/runtime/src/coreclr/vm/comreflectioncache.hpp
|
||||
+++ b/src/runtime/src/coreclr/vm/comreflectioncache.hpp
|
||||
@@ -26,6 +26,7 @@ public:
|
||||
|
||||
void Init();
|
||||
|
||||
+#ifndef DACCESS_COMPILE
|
||||
BOOL GetFromCache(Element *pElement, CacheType& rv)
|
||||
{
|
||||
CONTRACTL
|
||||
@@ -102,6 +103,7 @@ public:
|
||||
AdjustStamp(TRUE);
|
||||
this->LeaveWrite();
|
||||
}
|
||||
+#endif // !DACCESS_COMPILE
|
||||
|
||||
private:
|
||||
// Lock must have been taken before calling this.
|
||||
@@ -141,6 +143,7 @@ private:
|
||||
return CacheSize;
|
||||
}
|
||||
|
||||
+#ifndef DACCESS_COMPILE
|
||||
void AdjustStamp(BOOL hasWriterLock)
|
||||
{
|
||||
CONTRACTL
|
||||
@@ -170,6 +173,7 @@ private:
|
||||
if (!hasWriterLock)
|
||||
this->LeaveWrite();
|
||||
}
|
||||
+#endif // !DACCESS_COMPILE
|
||||
|
||||
void UpdateHashTable(SIZE_T hash, int slot)
|
||||
{
|
||||
--
|
||||
2.47.0
|
||||
|
||||
@@ -148,6 +148,7 @@ stdenv.mkDerivation rec {
|
||||
]
|
||||
++ lib.optionals (lib.versionOlder version "9") [
|
||||
./fix-aspnetcore-portable-build.patch
|
||||
./fix-clang19-build.patch
|
||||
];
|
||||
|
||||
postPatch =
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "croniter";
|
||||
version = "3.0.3";
|
||||
version = "6.0.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-NBF+wXQfEKe9DsOtfY8OuPpFei/rm+MuaiJQ4ViVdmg=";
|
||||
hash = "sha256-N8UEsxOVYRSpg+ziwrB3kLHxCU/p2BzJRzkhR0glVXc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ setuptools ];
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "gotenberg-client";
|
||||
version = "0.7.0";
|
||||
version = "0.8.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
disabled = pythonOlder "3.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stumpylog";
|
||||
repo = "gotenberg-client";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-pkxu9WIsyHW2iTepv5B2naKkK+yw8lT+i3EwobE+u1M=";
|
||||
tag = version;
|
||||
hash = "sha256-EMukzSY8nfm1L1metGhiEc9VqnI/vaLz7ITgbZi0fBw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ hatchling ];
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "griffe";
|
||||
version = "1.5.1";
|
||||
version = "1.5.4";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
@@ -22,8 +22,8 @@ buildPythonPackage rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "mkdocstrings";
|
||||
repo = "griffe";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-DeXmKswapXPYGTiJLq2yvCwJywCNl79XYHSau0VCCIY=";
|
||||
tag = version;
|
||||
hash = "sha256-F1/SjWy32d/CU86ZR/PK0QPiRMEbUNNeomZOBP/3K/k=";
|
||||
};
|
||||
|
||||
build-system = [ pdm-backend ];
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "ipympl";
|
||||
version = "0.9.4";
|
||||
version = "0.9.5";
|
||||
format = "wheel";
|
||||
|
||||
disabled = pythonOlder "3.5";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version format;
|
||||
hash = "sha256-WwwIxvT26mVbpYI5NjRXwQ+5IVV/UDjBpG20RX1taw4=";
|
||||
hash = "sha256-/xSjV/Q1UuySWC64svdrhEtGmqL6doM/FerX+lhMGfw=";
|
||||
dist = "py3";
|
||||
python = "py3";
|
||||
};
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "minio";
|
||||
version = "7.2.12";
|
||||
version = "7.2.13";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
@@ -30,8 +30,8 @@ buildPythonPackage rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "minio";
|
||||
repo = "minio-py";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-8CthbR62TZ7MFC3OCwtbHtGwmlQeFLgBtkyRX1P5SYU=";
|
||||
tag = version;
|
||||
hash = "sha256-RauPMoqVp4xnS4CXLH0HVTjA8o/BstoEWKWFHvjVllA=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
rustc,
|
||||
setuptools-rust,
|
||||
|
||||
# buildInputs
|
||||
libiconv,
|
||||
|
||||
# tests
|
||||
h5py,
|
||||
numpy,
|
||||
@@ -22,20 +19,20 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "safetensors";
|
||||
version = "0.4.5";
|
||||
version = "0.5.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "huggingface";
|
||||
repo = "safetensors";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-gr4hBbecaGHaoNhRQQXWfLfNB0/wQPKftSiTnGgngog=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-rs9mYl/2KNdV9e+L/kZr59kLw7ckW9UQPZwkaGyl1Iw=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
sourceRoot = "${src.name}/bindings/python";
|
||||
hash = "sha256-zDXzEVvmJF1dEVUFGBc3losr9U1q/qJCjNFkdJ/pCd4=";
|
||||
hash = "sha256-bQkLBiuhVm2dzrf6hq+S04+zoXUszA7be8iS0WJSoOU=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/bindings/python";
|
||||
@@ -48,8 +45,6 @@ buildPythonPackage rec {
|
||||
setuptools-rust
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
|
||||
|
||||
nativeCheckInputs = [
|
||||
h5py
|
||||
numpy
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "slixmpp";
|
||||
version = "1.8.5";
|
||||
version = "1.8.6";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
disabled = pythonOlder "3.9";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-dePwrUhVX39ckijnBmwdQ1izPWQLT753PsNLA7f66aM=";
|
||||
hash = "sha256-YK/Kp8laD7nn8RWctwRkpVWIBterrinNMeP8iD+biws=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "tencentcloud-sdk-python";
|
||||
version = "3.0.1293";
|
||||
version = "3.0.1294";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.9";
|
||||
@@ -19,7 +19,7 @@ buildPythonPackage rec {
|
||||
owner = "TencentCloud";
|
||||
repo = "tencentcloud-sdk-python";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-ho1RneF7xRO6Lc7i4BxAVjHA9UZiEZA2+olnasv4RSw=";
|
||||
hash = "sha256-6Xuih0E+i5dxTlkYzYa0J3T0aNpCoGnnBo1tpfuzWQM=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "tika-client";
|
||||
version = "0.7.0";
|
||||
version = "0.8.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
disabled = pythonOlder "3.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stumpylog";
|
||||
repo = "tika-client";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-0cv2HaquIUQOb5CPkCxSYvXDzu3OV7WKIT80jI+pjpY=";
|
||||
tag = version;
|
||||
hash = "sha256-UXd6GnwwFVUbBXhskBXDQaYlURQyrhgvMsncOwaLT1o=";
|
||||
};
|
||||
|
||||
build-system = [ hatchling ];
|
||||
|
||||
@@ -454,59 +454,11 @@ buildPythonPackage rec {
|
||||
|
||||
env =
|
||||
{
|
||||
# Suppress a weird warning in mkl-dnn, part of ideep in pytorch
|
||||
# (upstream seems to have fixed this in the wrong place?)
|
||||
# https://github.com/intel/mkl-dnn/commit/8134d346cdb7fe1695a2aa55771071d455fae0bc
|
||||
# https://github.com/pytorch/pytorch/issues/22346
|
||||
#
|
||||
# disable warnings as errors as they break the build on every compiler
|
||||
# bump, among other things.
|
||||
# Also of interest: pytorch ignores CXXFLAGS uses CFLAGS for both C and C++:
|
||||
# https://github.com/pytorch/pytorch/blob/v1.11.0/setup.py#L17
|
||||
NIX_CFLAGS_COMPILE = toString (
|
||||
(
|
||||
lib.optionals (blas.implementation == "mkl") [ "-Wno-error=array-bounds" ]
|
||||
# Suppress gcc regression: avx512 math function raises uninitialized variable warning
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105593
|
||||
# See also: Fails to compile with GCC 12.1.0 https://github.com/pytorch/pytorch/issues/77939
|
||||
++ lib.optionals (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "12.0.0") [
|
||||
"-Wno-error=maybe-uninitialized"
|
||||
"-Wno-error=uninitialized"
|
||||
]
|
||||
# Since pytorch 2.0:
|
||||
# gcc-12.2.0/include/c++/12.2.0/bits/new_allocator.h:158:33: error: ‘void operator delete(void*, std::size_t)’
|
||||
# ... called on pointer ‘<unknown>’ with nonzero offset [1, 9223372036854775800] [-Werror=free-nonheap-object]
|
||||
++ lib.optionals (stdenv.cc.isGNU && lib.versions.major stdenv.cc.version == "12") [
|
||||
"-Wno-error=free-nonheap-object"
|
||||
]
|
||||
# .../source/torch/csrc/autograd/generated/python_functions_0.cpp:85:3:
|
||||
# error: cast from ... to ... converts to incompatible function type [-Werror,-Wcast-function-type-strict]
|
||||
++ lib.optionals (stdenv.cc.isClang && lib.versionAtLeast stdenv.cc.version "16") [
|
||||
"-Wno-error=cast-function-type-strict"
|
||||
# Suppresses the most spammy warnings.
|
||||
# This is mainly to fix https://github.com/NixOS/nixpkgs/issues/266895.
|
||||
]
|
||||
++ lib.optionals rocmSupport [
|
||||
"-Wno-#warnings"
|
||||
"-Wno-cpp"
|
||||
"-Wno-unknown-warning-option"
|
||||
"-Wno-ignored-attributes"
|
||||
"-Wno-deprecated-declarations"
|
||||
"-Wno-defaulted-function-deleted"
|
||||
"-Wno-pass-failed"
|
||||
]
|
||||
++ [
|
||||
"-Wno-unused-command-line-argument"
|
||||
"-Wno-uninitialized"
|
||||
"-Wno-array-bounds"
|
||||
"-Wno-free-nonheap-object"
|
||||
"-Wno-unused-result"
|
||||
]
|
||||
++ lib.optionals stdenv.cc.isGNU [
|
||||
"-Wno-maybe-uninitialized"
|
||||
"-Wno-stringop-overflow"
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-Wno-error";
|
||||
USE_VULKAN = setBool vulkanSupport;
|
||||
}
|
||||
// lib.optionalAttrs vulkanSupport {
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "wagtail-localize";
|
||||
version = "1.10";
|
||||
version = "1.11.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.9";
|
||||
@@ -26,8 +26,8 @@ buildPythonPackage rec {
|
||||
src = fetchFromGitHub {
|
||||
repo = "wagtail-localize";
|
||||
owner = "wagtail";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-khGzJj7LBxz5WPU8l20CmQjC9p5umk6spSyMMHBBguc=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-HBc5t74zA7kUE8pvaYRZtslVInWrTw0UkmrGd+xaW0Q=";
|
||||
};
|
||||
|
||||
build-system = [ flit-core ];
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "ytmusicapi";
|
||||
version = "1.8.2";
|
||||
version = "1.9.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.9";
|
||||
@@ -17,8 +17,8 @@ buildPythonPackage rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "sigma67";
|
||||
repo = "ytmusicapi";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-SZ5YsQNrE91ycSXy/NjtjXp0E6msVKlV0f+Td0AwYpQ=";
|
||||
tag = version;
|
||||
hash = "sha256-yg8wjJTbx6LaVrln+Qdfn7XKnnI2n4W56YQZRYXrtLI=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools-scm ];
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
lib,
|
||||
aiohttp,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
pytestCheckHook,
|
||||
pythonOlder,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "zabbix-utils";
|
||||
version = "2.0.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zabbix";
|
||||
repo = "python-zabbix-utils";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-rRPen/FzWT0cCnXWiSdoybtXeP1pxYqnjq5b0QPVs1I=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [ aiohttp ];
|
||||
|
||||
nativeCheckInputs = [ pytestCheckHook ];
|
||||
|
||||
pythonImportsCheck = [ "zabbix_utils" ];
|
||||
|
||||
meta = {
|
||||
description = "Library for zabbix";
|
||||
homepage = "https://github.com/zabbix/python-zabbix-utils";
|
||||
changelog = "https://github.com/zabbix/python-zabbix-utils/blob/${src.rev}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ fab ];
|
||||
};
|
||||
}
|
||||
@@ -58,6 +58,7 @@ gem 'ffi'
|
||||
gem 'ffi-rzmq-core'
|
||||
gem 'fog-dnsimple'
|
||||
gem 'gdk_pixbuf2'
|
||||
gem 'gettext'
|
||||
gem 'gio2'
|
||||
gem 'git'
|
||||
gem 'github-pages'
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/mix.exs b/mix.exs
|
||||
index 8338abf8..883e6987 100644
|
||||
--- a/mix.exs
|
||||
+++ b/mix.exs
|
||||
@@ -1,7 +1,7 @@
|
||||
defmodule Mobilizon.Mixfile do
|
||||
use Mix.Project
|
||||
|
||||
- @version "5.1.0"
|
||||
+ @version "5.1.1"
|
||||
|
||||
def project do
|
||||
[
|
||||
@@ -19,6 +19,11 @@ in
|
||||
mixRelease rec {
|
||||
inherit (common) pname version src;
|
||||
|
||||
# Version 5.1.1 failed to bump their internal package version,
|
||||
# which causes issues with static file serving in the NixOS module.
|
||||
# See https://github.com/NixOS/nixpkgs/pull/370277
|
||||
patches = [ ./0001-fix-version.patch ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
git
|
||||
cmake
|
||||
|
||||
@@ -146,29 +146,51 @@ let
|
||||
"lib"
|
||||
"man"
|
||||
];
|
||||
outputChecks.out = {
|
||||
disallowedReferences = [
|
||||
"dev"
|
||||
"doc"
|
||||
"man"
|
||||
];
|
||||
disallowedRequisites = [
|
||||
stdenv'.cc
|
||||
llvmPackages.llvm.out
|
||||
] ++ (map lib.getDev (builtins.filter (drv: drv ? "dev") finalAttrs.buildInputs));
|
||||
};
|
||||
outputChecks.lib = {
|
||||
disallowedReferences = [
|
||||
"out"
|
||||
"dev"
|
||||
"doc"
|
||||
"man"
|
||||
];
|
||||
disallowedRequisites = [
|
||||
stdenv'.cc
|
||||
llvmPackages.llvm.out
|
||||
] ++ (map lib.getDev (builtins.filter (drv: drv ? "dev") finalAttrs.buildInputs));
|
||||
};
|
||||
outputChecks =
|
||||
{
|
||||
out = {
|
||||
disallowedReferences = [
|
||||
"dev"
|
||||
"doc"
|
||||
"man"
|
||||
];
|
||||
disallowedRequisites = [
|
||||
stdenv'.cc
|
||||
llvmPackages.llvm.out
|
||||
] ++ (map lib.getDev (builtins.filter (drv: drv ? "dev") finalAttrs.buildInputs));
|
||||
};
|
||||
|
||||
lib = {
|
||||
disallowedReferences = [
|
||||
"out"
|
||||
"dev"
|
||||
"doc"
|
||||
"man"
|
||||
];
|
||||
disallowedRequisites = [
|
||||
stdenv'.cc
|
||||
llvmPackages.llvm.out
|
||||
] ++ (map lib.getDev (builtins.filter (drv: drv ? "dev") finalAttrs.buildInputs));
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs (atLeast "14" && olderThan "15") {
|
||||
# TODO: Make this unconditional via staging because of number of rebuilds.
|
||||
doc = {
|
||||
disallowedReferences = [
|
||||
"out"
|
||||
"dev"
|
||||
"man"
|
||||
];
|
||||
};
|
||||
|
||||
man = {
|
||||
disallowedReferences = [
|
||||
"out"
|
||||
"dev"
|
||||
"doc"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
|
||||
@@ -18367,6 +18367,8 @@ self: super: with self; {
|
||||
pname = "z3-solver";
|
||||
}))).python;
|
||||
|
||||
zabbix-utils = callPackage ../development/python-modules/zabbix-utils { };
|
||||
|
||||
zadnegoale = callPackage ../development/python-modules/zadnegoale { };
|
||||
|
||||
zamg = callPackage ../development/python-modules/zamg { };
|
||||
|
||||
@@ -1113,6 +1113,16 @@
|
||||
};
|
||||
version = "1.1.0";
|
||||
};
|
||||
forwardable = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1b5g1i3xdvmxxpq4qp0z4v78ivqnazz26w110fh4cvzsdayz8zgi";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.3.3";
|
||||
};
|
||||
forwardable-extended = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
@@ -1155,6 +1165,17 @@
|
||||
};
|
||||
version = "3.0.1";
|
||||
};
|
||||
gettext = {
|
||||
dependencies = ["erubi" "locale" "prime" "racc" "text"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "16h0kda5z4s4zqygyk0f52xzs9mlz9r4lnhjwk729hhmdbz68a19";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.9";
|
||||
};
|
||||
gio2 = {
|
||||
dependencies = ["fiddle" "gobject-introspection"];
|
||||
groups = ["default"];
|
||||
@@ -2141,6 +2162,16 @@
|
||||
};
|
||||
version = "0.5.0";
|
||||
};
|
||||
locale = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "107pm4ccmla23z963kyjldgngfigvchnv85wr6m69viyxxrrjbsj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.1.4";
|
||||
};
|
||||
loofah = {
|
||||
dependencies = ["crass" "nokogiri"];
|
||||
groups = ["default"];
|
||||
@@ -2748,6 +2779,17 @@
|
||||
};
|
||||
version = "1.2.1";
|
||||
};
|
||||
prime = {
|
||||
dependencies = ["forwardable" "singleton"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1qsk9q2n4yb80f5mwslxzfzm2ckar25grghk95cj7sbc1p2k3w5s";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.1.3";
|
||||
};
|
||||
prism = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
@@ -3600,6 +3642,16 @@
|
||||
};
|
||||
version = "4.0.0";
|
||||
};
|
||||
singleton = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0y2pc7lr979pab5n5lvk3jhsi99fhskl5f2s6004v8sabz51psl3";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.3.0";
|
||||
};
|
||||
slather = {
|
||||
dependencies = ["clamp" "xcodeproj"];
|
||||
groups = ["default"];
|
||||
@@ -3779,6 +3831,16 @@
|
||||
};
|
||||
version = "1.6.0";
|
||||
};
|
||||
text = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.3.1";
|
||||
};
|
||||
thor = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
|
||||
Reference in New Issue
Block a user