Merge remote-tracking branch 'origin/master' into staging-next

This commit is contained in:
K900
2025-06-16 12:41:22 +03:00
60 changed files with 1755 additions and 325 deletions
+1 -5
View File
@@ -56,11 +56,7 @@ Make sure that your local files aren't added to Git history by adding the follow
#### `devmode`
The shell in the manual source directory makes available a command, `devmode`.
It is a daemon, that:
1. watches the manual's source for changes and when they occur — rebuilds
2. HTTP serves the manual, injecting a script that triggers reload on changes
3. opens the manual in the default browser
Use [`devmode`](../pkgs/by-name/de/devmode/README.md) for a live preview when editing the manual.
### Testing redirects
@@ -37,7 +37,9 @@ Make sure that your local files aren't added to Git history by adding the follow
/**/.direnv
```
You might want to also use [`devmode`](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md#devmode) while editing the manual.
### `devmode` {#sec-contributing-devmode}
Use [`devmode`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/de/devmode/README.md) for a live preview when editing the manual.
## Testing redirects {#sec-contributing-redirects}
+15
View File
@@ -95,6 +95,9 @@
"sec-contributing-development-env": [
"index.html#sec-contributing-development-env"
],
"sec-contributing-devmode": [
"index.html#sec-contributing-devmode"
],
"sec-mattermost": [
"index.html#sec-mattermost"
],
@@ -551,6 +554,18 @@
"module-services-youtrack-upgrade-2022_3-2023_1": [
"index.html#module-services-youtrack-upgrade-2022_3-2023_1"
],
"module-services-szurubooru": [
"index.html#module-services-szurubooru"
],
"module-services-szurubooru-basic-usage": [
"index.html#module-services-szurubooru-basic-usage"
],
"module-services-szurubooru-reverse-proxy-configuration": [
"index.html#module-services-szurubooru-reverse-proxy-configuration"
],
"module-services-szurubooru-extra-config": [
"index.html#module-services-szurubooru-extra-config"
],
"module-services-suwayomi-server": [
"index.html#module-services-suwayomi-server"
],
@@ -32,6 +32,10 @@
- [postfix-tlspol](https://github.com/Zuplu/postfix-tlspol), MTA-STS and DANE resolver and TLS policy server for Postfix. Available as [services.postfix-tlspol](#opt-services.postfix-tlspol.enable).
- [Szurubooru](https://github.com/rr-/szurubooru), an image board engine inspired by services such as Danbooru, dedicated for small and medium communities. Available as [services.szurubooru](#opt-services.szurubooru.enable).
- [nix-store-veritysetup](https://github.com/nikstur/nix-store-veritysetup-generator), a systemd generator to unlock the Nix Store as a dm-verity protected block device. Available as [boot.initrd.nix-store-veritysetup](options.html#opt-boot.initrd.nix-store-veritysetup.enable).
- [SuiteNumérique Docs](https://github.com/suitenumerique/docs), a collaborative note taking, wiki and documentation web platform and alternative to Notion or Outline. Available as [services.lasuite-docs](#opt-services.lasuite-docs.enable).
[dwl](https://codeberg.org/dwl/dwl), a compact, hackable compositor for Wayland based on wlroots. Available as [programs.dwl](#opt-programs.dwl.enable).
+2
View File
@@ -1663,6 +1663,7 @@
./services/web-apps/stirling-pdf.nix
./services/web-apps/strfry.nix
./services/web-apps/suwayomi-server.nix
./services/web-apps/szurubooru.nix
./services/web-apps/trilium.nix
./services/web-apps/tt-rss.nix
./services/web-apps/vikunja.nix
@@ -1785,6 +1786,7 @@
./system/boot/luksroot.nix
./system/boot/modprobe.nix
./system/boot/networkd.nix
./system/boot/nix-store-veritysetup.nix
./system/boot/plymouth.nix
./system/boot/resolved.nix
./system/boot/shutdown.nix
@@ -0,0 +1,80 @@
# Szurubooru {#module-services-szurubooru}
An image board engine dedicated for small and medium communities.
## Configuration {#module-services-szurubooru-basic-usage}
By default the module will execute Szurubooru server only, the web client only contains static files that can be reached via a reverse proxy.
Here is a basic configuration:
```nix
{
services.szurubooru = {
enable = true;
server = {
port = 8080;
settings = {
domain = "https://szurubooru.domain.tld";
secretFile = /path/to/secret/file;
};
};
database = {
passwordFile = /path/to/secret/file;
};
};
}
```
## Reverse proxy configuration {#module-services-szurubooru-reverse-proxy-configuration}
The prefered method to run this service is behind a reverse proxy not to expose an open port. For example, here is a minimal Nginx configuration:
```nix
{
services.szurubooru = {
enable = true;
server = {
port = 8080;
...
};
...
};
services.nginx.virtualHosts."szurubooru.domain.tld" = {
locations = {
"/api/".proxyPass = "http://localhost:8080/";
"/data/".root = config.services.szurubooru.dataDir;
"/" = {
root = config.services.szurubooru.client.package;
tryFiles = "$uri /index.htm";
};
};
};
}
```
## Extra configuration {#module-services-szurubooru-extra-config}
Not all configuration options of the server are available directly in this module, but you can add them in `services.szurubooru.server.settings`:
```nix
{
services.szurubooru = {
enable = true;
server.settings = {
domain = "https://szurubooru.domain.tld";
delete_source_files = "yes";
contact_email = "example@domain.tld";
};
};
}
```
You can find all of the options in the default config file available [here](https://github.com/rr-/szurubooru/blob/master/server/config.yaml.dist).
@@ -0,0 +1,331 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.services.szurubooru;
inherit (lib)
mkOption
mkEnableOption
mkIf
mkPackageOption
types
;
format = pkgs.formats.yaml { };
python = pkgs.python312;
in
{
options = {
services.szurubooru = {
enable = mkEnableOption "Szurubooru, an image board engine dedicated for small and medium communities";
user = mkOption {
type = types.str;
default = "szurubooru";
description = ''
User account under which Szurubooru runs.
'';
};
group = mkOption {
type = types.str;
default = "szurubooru";
description = ''
Group under which Szurubooru runs.
'';
};
dataDir = mkOption {
type = types.path;
default = "/var/lib/szurubooru";
example = "/var/lib/szuru";
description = ''
The path to the data directory in which Szurubooru will store its data.
'';
};
openFirewall = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether to open the firewall for the port in {option}`services.szurubooru.server.port`.
'';
};
server = {
package = mkPackageOption pkgs [
"szurubooru"
"server"
] { };
port = mkOption {
type = types.port;
default = 8080;
example = 9000;
description = ''
Port to expose HTTP service.
'';
};
threads = mkOption {
type = types.int;
default = 4;
example = 6;
description = ''Number of waitress threads to start.'';
};
settings = mkOption {
type = types.submodule {
freeformType = format.type;
options = {
name = mkOption {
type = types.str;
default = "szurubooru";
example = "Szuru";
description = ''Name shown in the website title and on the front page.'';
};
domain = mkOption {
type = types.str;
example = "http://example.com";
description = ''Full URL to the homepage of this szurubooru site (with no trailing slash).'';
};
# NOTE: this is not a real upstream option
secretFile = mkOption {
type = types.path;
example = "/run/secrets/szurubooru-server-secret";
description = ''
File containing a secret used to salt the users' password hashes and generate filenames for static content.
'';
};
delete_source_files = mkOption {
type = types.enum [
"yes"
"no"
];
default = "no";
example = "yes";
description = ''Whether to delete thumbnails and source files on post delete.'';
};
smtp = {
host = mkOption {
type = types.nullOr types.str;
default = null;
example = "localhost";
description = ''Host of the SMTP server used to send reset password.'';
};
port = mkOption {
type = types.nullOr types.port;
default = null;
example = 25;
description = ''Port of the SMTP server.'';
};
user = mkOption {
type = types.nullOr types.str;
default = null;
example = "bot";
description = ''User to connect to the SMTP server.'';
};
# NOTE: this is not a real upstream option
passFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/secrets/szurubooru-smtp-pass";
description = ''File containing the password associated to the given user for the SMTP server.'';
};
};
data_url = mkOption {
type = types.str;
default = "${cfg.server.settings.domain}/data/";
defaultText = lib.literalExpression ''"''${services.szurubooru.server.settings.domain}/data/"'';
example = "http://example.com/content/";
description = ''Full URL to the data endpoint.'';
};
data_dir = mkOption {
type = types.path;
default = "${cfg.dataDir}/data";
defaultText = lib.literalExpression ''"''${services.szurubooru.dataDir}/data"'';
example = "/srv/szurubooru/data";
description = ''Path to the static files.'';
};
debug = mkOption {
type = types.int;
default = 0;
example = 1;
description = ''Whether to generate server logs.'';
};
show_sql = mkOption {
type = types.int;
default = 0;
example = 1;
description = ''Whether to show SQL in server logs.'';
};
};
};
description = ''
Configuration to write to {file}`config.yaml`.
See <https://github.com/rr-/szurubooru/blob/master/server/config.yaml.dist> for more information.
'';
};
};
client = {
package = mkPackageOption pkgs [
"szurubooru"
"client"
] { };
};
database = {
host = mkOption {
type = types.str;
default = "localhost";
example = "192.168.1.2";
description = ''Host on which the PostgreSQL database runs.'';
};
port = mkOption {
type = types.port;
default = 5432;
description = ''The port under which PostgreSQL listens to.'';
};
name = mkOption {
type = types.str;
default = cfg.database.user;
defaultText = lib.literalExpression "szurubooru.database.name";
example = "szuru";
description = ''Name of the PostgreSQL database.'';
};
user = mkOption {
type = types.str;
default = "szurubooru";
example = "szuru";
description = ''PostgreSQL user.'';
};
passwordFile = mkOption {
type = types.path;
example = "/run/secrets/szurubooru-db-password";
description = ''A file containing the password for the PostgreSQL user.'';
};
};
};
};
config = mkIf cfg.enable {
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.server.port ];
users.groups = mkIf (cfg.group == "szurubooru") {
szurubooru = { };
};
users.users = mkIf (cfg.user == "szurubooru") {
szurubooru = {
group = cfg.group;
description = "Szurubooru Daemon user";
isSystemUser = true;
};
};
systemd.services.szurubooru =
let
configFile = format.generate "config.yaml" (
lib.pipe cfg.server.settings [
(
settings:
lib.recursiveUpdate settings {
secretFile = null;
secret = "$SZURUBOORU_SECRET";
smtp.pass = if settings.smtp.passFile != null then "$SZURUBOORU_SMTP_PASS" else null;
smtp.passFile = null;
smtp.enable = null;
database = "postgresql://${cfg.database.user}:$SZURUBOORU_DATABASE_PASSWORD@${cfg.database.host}:${toString cfg.database.port}/${cfg.database.name}";
}
)
(lib.filterAttrsRecursive (_: x: x != null))
]
);
pyenv = python.buildEnv.override {
extraLibs = [ (python.pkgs.toPythonModule cfg.server.package) ];
};
in
{
description = "Server of Szurubooru, an image board engine dedicated for small and medium communities";
wantedBy = [
"multi-user.target"
"szurubooru-client.service"
];
before = [ "szurubooru-client.service" ];
after = [
"network.target"
"network-online.target"
];
wants = [ "network-online.target" ];
environment = {
PYTHONPATH = "${pyenv}/${pyenv.sitePackages}/";
};
path =
with pkgs;
[
envsubst
ffmpeg_4-full
]
++ (with python.pkgs; [
alembic
waitress
]);
script = ''
export SZURUBOORU_SECRET="$(<${cfg.server.settings.secretFile})"
export SZURUBOORU_DATABASE_PASSWORD="$(<${cfg.database.passwordFile})"
${lib.optionalString (cfg.server.settings.smtp.passFile != null) ''
export SZURUBOORU_SMTP_PASS=$(<${cfg.server.settings.smtp.passFile})
''}
install -m0640 ${cfg.server.package.src}/config.yaml.dist ${cfg.dataDir}/config.yaml.dist
envsubst -i ${configFile} -o ${cfg.dataDir}/config.yaml
sed 's|script_location = |script_location = ${cfg.server.package.src}/|' ${cfg.server.package.src}/alembic.ini > ${cfg.dataDir}/alembic.ini
alembic upgrade head
waitress-serve --port ${toString cfg.server.port} --threads ${toString cfg.server.threads} szurubooru.facade:app
'';
serviceConfig = {
User = cfg.user;
Group = cfg.group;
Type = "simple";
Restart = "on-failure";
StateDirectory = mkIf (cfg.dataDir == "/var/lib/szurubooru") "szurubooru";
WorkingDirectory = cfg.dataDir;
};
};
};
meta = {
maintainers = with lib.maintainers; [ ratcornu ];
doc = ./szurubooru.md;
};
}
@@ -0,0 +1,38 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.boot.initrd.nix-store-veritysetup;
in
{
meta.maintainers = with lib.maintainers; [ nikstur ];
options.boot.initrd.nix-store-veritysetup = {
enable = lib.mkEnableOption "nix-store-veritysetup";
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion = config.boot.initrd.systemd.dmVerity.enable;
message = "nix-store-veritysetup requires dm-verity in the systemd initrd.";
}
];
boot.initrd.systemd = {
contents = {
"/etc/systemd/system-generators/nix-store-veritysetup-generator".source =
"${lib.getExe pkgs.nix-store-veritysetup-generator}";
};
storePaths = [
"${config.boot.initrd.systemd.package}/bin/systemd-escape"
];
};
};
}
+3 -1
View File
@@ -306,7 +306,7 @@ in
cinnamon-wayland = runTest ./cinnamon-wayland.nix;
cjdns = runTest ./cjdns.nix;
clatd = runTest ./clatd.nix;
clickhouse = runTest ./clickhouse.nix;
clickhouse = import ./clickhouse { inherit runTest; };
cloud-init = handleTest ./cloud-init.nix { };
cloud-init-hostname = handleTest ./cloud-init-hostname.nix { };
cloudlog = runTest ./cloudlog.nix;
@@ -938,6 +938,7 @@ in
nix-required-mounts = runTest ./nix-required-mounts;
nix-serve = runTest ./nix-serve.nix;
nix-serve-ssh = runTest ./nix-serve-ssh.nix;
nix-store-veritysetup = runTest ./nix-store-veritysetup.nix;
nixops = handleTest ./nixops/default.nix { };
nixos-generate-config = runTest ./nixos-generate-config.nix;
nixos-rebuild-install-bootloader = handleTestOn [
@@ -1372,6 +1373,7 @@ in
systemd-homed = runTest ./systemd-homed.nix;
systemtap = handleTest ./systemtap.nix { };
startx = import ./startx.nix { inherit pkgs runTest; };
szurubooru = handleTest ./szurubooru.nix { };
taler = handleTest ./taler { };
tandoor-recipes = runTest ./tandoor-recipes.nix;
tandoor-recipes-script-name = runTest ./tandoor-recipes-script-name.nix;
@@ -1,7 +1,7 @@
{ pkgs, ... }:
{
name = "clickhouse";
meta.maintainers = with pkgs.lib.maintainers; [ ];
meta.maintainers = with pkgs.lib.maintainers; [ jpds ];
nodes.machine = {
services.clickhouse.enable = true;
+8
View File
@@ -0,0 +1,8 @@
{ runTest }:
{
base = runTest ./base.nix;
kafka = runTest ./kafka.nix;
keeper = runTest ./keeper.nix;
s3 = runTest ./s3.nix;
}
+172
View File
@@ -0,0 +1,172 @@
{ pkgs, ... }:
let
kafkaNamedCollectionConfig = ''
<clickhouse>
<named_collections>
<cluster_1>
<!-- ClickHouse Kafka engine parameters -->
<kafka_broker_list>kafka:9092</kafka_broker_list>
<kafka_topic_list>test_topic</kafka_topic_list>
<kafka_group_name>clickhouse</kafka_group_name>
<kafka_format>JSONEachRow</kafka_format>
<kafka_commit_every_batch>0</kafka_commit_every_batch>
<kafka_num_consumers>1</kafka_num_consumers>
<kafka_thread_per_consumer>1</kafka_thread_per_consumer>
<!-- Kafka extended configuration -->
<kafka>
<debug>all</debug>
<auto_offset_reset>earliest</auto_offset_reset>
</kafka>
</cluster_1>
</named_collections>
</clickhouse>
'';
kafkaNamedCollection = pkgs.writeText "kafka.xml" kafkaNamedCollectionConfig;
in
{
name = "clickhouse-kafka";
meta.maintainers = with pkgs.lib.maintainers; [ jpds ];
nodes = {
clickhouse = {
environment.etc = {
"clickhouse-server/config.d/kafka.xml" = {
source = "${kafkaNamedCollection}";
};
};
services.clickhouse.enable = true;
virtualisation.memorySize = 4096;
};
kafka = {
networking.firewall.allowedTCPPorts = [
9092
9093
];
environment.systemPackages = [
pkgs.apacheKafka
pkgs.jq
];
services.apache-kafka = {
enable = true;
# Randomly generated uuid. You can get one by running:
# kafka-storage.sh random-uuid
clusterId = "b81s-MuGSwyt_B9_h37wtQ";
formatLogDirs = true;
settings = {
listeners = [
"PLAINTEXT://:9092"
"CONTROLLER://:9093"
];
"listener.security.protocol.map" = [
"PLAINTEXT:PLAINTEXT"
"CONTROLLER:PLAINTEXT"
];
"controller.quorum.voters" = [
"1@kafka:9093"
];
"controller.listener.names" = [ "CONTROLLER" ];
"node.id" = 1;
"broker.rack" = 1;
"process.roles" = [
"broker"
"controller"
];
"log.dirs" = [ "/var/lib/apache-kafka" ];
"num.partitions" = 1;
"offsets.topic.replication.factor" = 1;
"transaction.state.log.replication.factor" = 1;
"transaction.state.log.min.isr" = 1;
};
};
systemd.services.apache-kafka.serviceConfig.StateDirectory = "apache-kafka";
};
};
testScript =
let
jsonTestMessage = pkgs.writeText "kafka-test-data.json" ''
{ "id": 1, "first_name": "Fred", "age": 32 }
{ "id": 2, "first_name": "Barbara", "age": 30 }
{ "id": 3, "first_name": "Nicola", "age": 12 }
'';
# work around quote/substitution complexity by Nix, Perl, bash and SQL.
tableKafkaDDL = pkgs.writeText "ddl-kafka.sql" ''
CREATE TABLE `test_kafka_topic` (
`id` UInt32,
`first_name` String,
`age` UInt32
) ENGINE = Kafka(cluster_1);
'';
tableDDL = pkgs.writeText "ddl.sql" ''
CREATE TABLE `test_topic` (
`id` UInt32,
`first_name` String,
`age` UInt32
) ENGINE = MergeTree ORDER BY id;
'';
viewDDL = pkgs.writeText "view.sql" ''
CREATE MATERIALIZED VIEW kafka_view TO test_topic AS
SELECT
id,
first_name,
age,
FROM test_kafka_topic;
'';
selectQuery = pkgs.writeText "select.sql" "SELECT sum(age) from `test_topic`";
in
''
kafka.start()
kafka.wait_for_unit("apache-kafka")
kafka.wait_for_open_port(9092)
clickhouse.start()
clickhouse.wait_for_unit("clickhouse")
clickhouse.wait_for_open_port(9000)
clickhouse.wait_until_succeeds(
"""
journalctl -o cat -u clickhouse.service | grep "Merging configuration file '/etc/clickhouse-server/config.d/kafka.xml'"
"""
)
clickhouse.succeed(
"cat ${tableKafkaDDL} | clickhouse-client"
)
clickhouse.succeed(
"cat ${tableDDL} | clickhouse-client"
)
clickhouse.succeed(
"cat ${viewDDL} | clickhouse-client"
)
kafka.succeed(
"jq -rc . ${jsonTestMessage} | kafka-console-producer.sh --topic test_topic --bootstrap-server kafka:9092"
)
kafka.wait_until_succeeds(
"journalctl -o cat -u apache-kafka.service | grep 'Created a new member id ClickHouse-clickhouse-default-test_kafka_topic'"
)
clickhouse.wait_until_succeeds(
"cat ${selectQuery} | clickhouse-client | grep 74"
)
'';
}
+183
View File
@@ -0,0 +1,183 @@
{ lib, pkgs, ... }:
rec {
name = "clickhouse-keeper";
meta.maintainers = with pkgs.lib.maintainers; [ jpds ];
nodes =
let
node = i: {
environment.etc = {
"clickhouse-server/config.d/cluster.xml".text = ''
<clickhouse>
<remote_servers>
<perftest_2shards_1replicas>
${lib.concatStrings (
lib.imap0 (j: name: ''
<shard>
<replica>
<host>${name}</host>
<port>9000</port>
</replica>
</shard>
'') (builtins.attrNames nodes)
)}
</perftest_2shards_1replicas>
</remote_servers>
</clickhouse>
'';
"clickhouse-server/config.d/keeper.xml".text = ''
<clickhouse>
<keeper_server>
<server_id>${toString i}</server_id>
<tcp_port>9181</tcp_port>
<log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path>
<snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>
<coordination_settings>
<operation_timeout_ms>10000</operation_timeout_ms>
<session_timeout_ms>30000</session_timeout_ms>
<raft_logs_level>trace</raft_logs_level>
<rotate_log_storage_interval>10000</rotate_log_storage_interval>
</coordination_settings>
<raft_configuration>
${lib.concatStrings (
lib.imap1 (j: name: ''
<server>
<id>${toString j}</id>
<hostname>${name}</hostname>
<port>9444</port>
</server>
'') (builtins.attrNames nodes)
)}
</raft_configuration>
</keeper_server>
<zookeeper>
${lib.concatStrings (
lib.imap0 (j: name: ''
<node>
<host>${name}</host>
<port>9181</port>
</node>
'') (builtins.attrNames nodes)
)}
</zookeeper>
<distributed_ddl>
<path>/clickhouse/testcluster/task_queue/ddl</path>
</distributed_ddl>
</clickhouse>
'';
"clickhouse-server/config.d/listen.xml".text = ''
<clickhouse>
<listen_host>::</listen_host>
</clickhouse>
'';
"clickhouse-server/config.d/macros.xml".text = ''
<clickhouse>
<macros>
<replica>${toString i}</replica>
<cluster>perftest_2shards_1replicas</cluster>
</macros>
</clickhouse>
'';
};
networking.firewall.allowedTCPPorts = [
9009
9181
9444
];
services.clickhouse.enable = true;
systemd.services.clickhouse = {
after = [ "network-online.target" ];
requires = [ "network-online.target" ];
};
virtualisation.memorySize = 1024 * 4;
virtualisation.diskSize = 1024 * 10;
};
in
{
clickhouse1 = node 1;
clickhouse2 = node 2;
};
testScript =
let
# work around quote/substitution complexity by Nix, Perl, bash and SQL.
clustersQuery = pkgs.writeText "clusters.sql" "SHOW clusters";
keeperQuery = pkgs.writeText "keeper.sql" "SELECT * FROM system.zookeeper WHERE path IN ('/', '/clickhouse') FORMAT VERTICAL";
systemClustersQuery = pkgs.writeText "system-clusters.sql" "SELECT host_name, host_address, replica_num FROM system.clusters WHERE cluster = 'perftest_2shards_1replicas'";
tableDDL = pkgs.writeText "table.sql" ''
CREATE TABLE test ON cluster 'perftest_2shards_1replicas' ( A Int64, S String)
Engine = ReplicatedMergeTree('/clickhouse/{cluster}/tables/{database}/{table}', '{replica}')
ORDER BY A;
'';
insertDDL = pkgs.writeText "insert.sql" "
INSERT INTO test SELECT number, '' FROM numbers(100000000);
";
selectCountQuery = pkgs.writeText "select-count.sql" "
select count() from test;
";
in
''
clickhouse1.start()
clickhouse2.start()
for machine in clickhouse1, clickhouse2:
machine.wait_for_unit("clickhouse.service")
machine.wait_for_open_port(9000)
machine.wait_for_open_port(9009)
machine.wait_for_open_port(9181)
machine.wait_for_open_port(9444)
machine.wait_until_succeeds(
"""
journalctl -o cat -u clickhouse.service | grep "Merging configuration file '/etc/clickhouse-server/config.d/keeper.xml'"
"""
)
machine.log(machine.succeed(
"cat ${clustersQuery} | clickhouse-client | grep perftest_2shards_1replicas"
))
machine.log(machine.succeed(
"cat ${keeperQuery} | clickhouse-client"
))
machine.succeed(
"cat ${systemClustersQuery} | clickhouse-client | grep clickhouse1"
)
machine.succeed(
"cat ${systemClustersQuery} | clickhouse-client | grep clickhouse2"
)
machine.succeed(
"ls /var/lib/clickhouse/coordination/log | grep changelog"
)
clickhouse2.succeed(
"cat ${tableDDL} | clickhouse-client"
)
clickhouse2.succeed(
"cat ${insertDDL} | clickhouse-client"
)
for machine in clickhouse1, clickhouse2:
machine.wait_until_succeeds(
"cat ${selectCountQuery} | clickhouse-client | grep 100000000"
)
'';
}
+121
View File
@@ -0,0 +1,121 @@
{ pkgs, ... }:
let
s3 = {
bucket = "clickhouse-bucket";
accessKey = "BKIKJAA5BMMU2RHO6IBB";
secretKey = "V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12";
};
clickhouseS3StorageConfig = ''
<clickhouse>
<storage_configuration>
<disks>
<s3_disk>
<type>s3</type>
<endpoint>http://minio:9000/${s3.bucket}/</endpoint>
<access_key_id>${s3.accessKey}</access_key_id>
<secret_access_key>${s3.secretKey}</secret_access_key>
<metadata_path>/var/lib/clickhouse/disks/s3_disk/</metadata_path>
</s3_disk>
<s3_cache>
<type>cache</type>
<disk>s3_disk</disk>
<path>/var/lib/clickhouse/disks/s3_cache/</path>
<max_size>10Gi</max_size>
</s3_cache>
</disks>
<policies>
<s3_main>
<volumes>
<main>
<disk>s3_disk</disk>
</main>
</volumes>
</s3_main>
</policies>
</storage_configuration>
</clickhouse>
'';
in
{
name = "clickhouse-s3";
meta.maintainers = with pkgs.lib.maintainers; [ jpds ];
nodes = {
clickhouse = {
environment.etc = {
"clickhouse-server/config.d/s3.xml" = {
text = "${clickhouseS3StorageConfig}";
};
};
services.clickhouse.enable = true;
virtualisation.diskSize = 15 * 1024;
virtualisation.memorySize = 4 * 1024;
};
minio =
{ pkgs, ... }:
{
virtualisation.diskSize = 2 * 1024;
networking.firewall.allowedTCPPorts = [ 9000 ];
services.minio = {
enable = true;
inherit (s3) accessKey secretKey;
};
environment.systemPackages = [ pkgs.minio-client ];
};
};
testScript =
let
# work around quote/substitution complexity by Nix, Perl, bash and SQL.
tableDDL = pkgs.writeText "ddl.sql" ''
CREATE TABLE `demo` (
`value` String
)
ENGINE = MergeTree
ORDER BY value
SETTINGS storage_policy = 's3_main';
'';
insertQuery = pkgs.writeText "insert.sql" "INSERT INTO `demo` (`value`) VALUES ('foo');";
selectQuery = pkgs.writeText "select.sql" "SELECT * from `demo`";
in
''
minio.wait_for_unit("minio")
minio.wait_for_open_port(9000)
minio.succeed(
"mc alias set minio "
+ "http://localhost:9000 "
+ "${s3.accessKey} ${s3.secretKey} --api s3v4",
"mc mb minio/${s3.bucket}",
)
clickhouse.start()
clickhouse.wait_for_unit("clickhouse.service")
clickhouse.wait_for_open_port(9000)
clickhouse.wait_until_succeeds(
"""
journalctl -o cat -u clickhouse.service | grep "Merging configuration file '/etc/clickhouse-server/config.d/s3.xml'"
"""
)
clickhouse.succeed(
"cat ${tableDDL} | clickhouse-client"
)
clickhouse.succeed(
"cat ${insertQuery} | clickhouse-client"
)
clickhouse.succeed(
"cat ${selectQuery} | clickhouse-client | grep foo"
)
minio.log(minio.succeed(
"mc ls minio/${s3.bucket}",
))
'';
}
+108
View File
@@ -0,0 +1,108 @@
{ lib, ... }:
{
name = "nix-store-veritysetup";
meta.maintainers = with lib.maintainers; [ nikstur ];
nodes.machine =
{ config, modulesPath, ... }:
{
imports = [
"${modulesPath}/image/repart.nix"
];
image.repart = {
name = "nix-store";
partitions = {
"nix-store" = {
storePaths = [ config.system.build.toplevel ];
stripNixStorePrefix = true;
repartConfig = {
Type = "linux-generic";
Label = "nix-store";
Format = "erofs";
Minimize = "best";
Verity = "data";
VerityMatchKey = "nix-store";
};
};
"nix-store-verity" = {
repartConfig = {
Type = "linux-generic";
Label = "nix-store-verity";
Verity = "hash";
VerityMatchKey = "nix-store";
Minimize = "best";
};
};
};
};
boot.initrd = {
systemd = {
enable = true;
dmVerity.enable = true;
};
nix-store-veritysetup.enable = true;
};
virtualisation = {
mountHostNixStore = false;
qemu.drives = [
{
name = "nix-store";
file = ''"$NIX_STORE"'';
}
];
fileSystems = {
"/nix/store" = {
fsType = "erofs";
device = "/dev/mapper/nix-store";
};
};
};
};
testScript =
{ nodes, ... }:
''
import os
import json
import subprocess
import tempfile
with open("${nodes.machine.system.build.image}/repart-output.json") as f:
data = json.load(f)
storehash = data[0]["roothash"]
os.environ["QEMU_KERNEL_PARAMS"] = f"storehash={storehash}"
tmp_disk_image = tempfile.NamedTemporaryFile()
subprocess.run([
"${nodes.machine.virtualisation.qemu.package}/bin/qemu-img",
"create",
"-f",
"qcow2",
"-b",
"${nodes.machine.system.build.image}/${nodes.machine.image.repart.imageFile}",
"-F",
"raw",
tmp_disk_image.name,
])
os.environ["NIX_STORE"] = tmp_disk_image.name
machine.start()
print(machine.succeed("findmnt"))
print(machine.succeed("dmsetup info nix-store"))
machine.wait_for_unit("multi-user.target")
'';
}
+52
View File
@@ -0,0 +1,52 @@
import ./make-test-python.nix (
{ lib, pkgs, ... }:
{
name = "szurubooru";
meta.maintainers = with lib.maintainers; [ ratcornu ];
nodes.machine =
let
dbpass = "changeme";
in
{ config, ... }:
{
services.postgresql = {
enable = true;
initialScript = pkgs.writeText "init.sql" ''
CREATE USER ${config.services.szurubooru.database.user} WITH PASSWORD '${dbpass}';
CREATE DATABASE ${config.services.szurubooru.database.name} WITH OWNER ${config.services.szurubooru.database.user};
'';
};
services.szurubooru = {
enable = true;
dataDir = "/var/lib/szurubooru";
server = {
port = 6666;
settings = {
domain = "http://127.0.0.1";
secretFile = pkgs.writeText "secret" "secret";
debug = 1;
};
};
database = {
host = "localhost";
port = 5432;
name = "szurubooru";
user = "szurubooru";
passwordFile = pkgs.writeText "pass" "${dbpass}";
};
};
};
testScript = ''
machine.wait_for_unit("szurubooru.service")
machine.wait_for_open_port(6666)
machine.succeed('curl -H "Content-Type: application/json" -H "Accept: application/json" --fail http://127.0.0.1:6666/info')
'';
}
)
@@ -13199,6 +13199,19 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
search-and-replace-nvim = buildVimPlugin {
pname = "search-and-replace.nvim";
version = "2025-06-16";
src = fetchFromGitHub {
owner = "mahyarmirrashed";
repo = "search-and-replace.nvim";
rev = "12dce26afc7f3c66d6ffbf2eae91ce19d4cdcc74";
sha256 = "0i197fs58qk6mgqsxi7cacba8sya7kh9cdnnz6sa79ry42cdff6a";
};
meta.homepage = "https://github.com/mahyarmirrashed/search-and-replace.nvim/";
meta.hydraPlatforms = [ ];
};
searchbox-nvim = buildVimPlugin {
pname = "searchbox.nvim";
version = "2025-01-09";
@@ -124,6 +124,9 @@
uv,
# nvim-vstsl dependencies
vtsls,
# search-and-replace.nvim dependencies
fd,
sad,
}:
self: super:
let
@@ -3022,6 +3025,13 @@ in
dependencies = [ self.nui-nvim ];
};
search-and-replace-nvim = super.search-and-replace-nvim.overrideAttrs {
runtimeDeps = [
fd
sad
];
};
skim = buildVimPlugin {
pname = "skim";
inherit (skim) version;
@@ -1,56 +1,58 @@
#!/usr/bin/env nix-shell
#!nix-shell update-shell.nix -i python
#!nix-shell ./update-shell.nix -i python
import json
import logging
import os
import subprocess
from concurrent.futures import ThreadPoolExecutor
from pathlib import Path
import requests
log = logging.getLogger("vim-updater")
NURR_JSON_URL = "https://raw.githubusercontent.com/nvim-neorocks/nurr/main/tree-sitter-parsers.json"
NURR_JSON_URL = (
"https://raw.githubusercontent.com/nvim-neorocks/nurr/main/tree-sitter-parsers.json"
)
def generate_grammar(lang, parser_info):
"""Generate grammar for a language based on the parser info"""
try:
if "install_info" not in parser_info:
log.warning(f"Parser {lang} does not have install_info, skipping")
return ""
if "install_info" not in parser_info:
log.warning(f"Parser {lang} does not have install_info, skipping")
return ""
install_info = parser_info["install_info"]
install_info = parser_info["install_info"]
url = install_info["url"]
rev = install_info["revision"]
url = install_info["url"]
rev = install_info["revision"]
generated = f""" {lang} = buildGrammar {{
generated = f""" {lang} = buildGrammar {{
language = "{lang}";
version = "0.0.0+rev={rev[:7]}";
src = """
generated += subprocess.check_output(["nurl", url, rev, "--indent=4"], text=True)
generated += ";"
generated += subprocess.check_output(
["nurl", url, rev, "--indent=4"], text=True
)
generated += ";"
location = install_info.get("location", "")
if location:
generated += f"""
location = install_info.get("location", "")
if location:
generated += f"""
location = "{location}";"""
if install_info.get("generate", False):
generated += """
if install_info.get("generate", False):
generated += """
generate = true;"""
generated += f"""
generated += f"""
meta.homepage = "{url}";
}};
"""
return generated
except Exception as e:
log.error(f"Error generating grammar for {lang}: {e}")
return ""
return generated
def fetch_nurr_parsers():
@@ -81,12 +83,7 @@ def fetch_nurr_parsers():
def process_parser_info(parser_info):
"""Process a single parser info entry and generate grammar for it"""
try:
lang = parser_info["lang"]
return generate_grammar(lang, parser_info)
except Exception as e:
log.error(f"Error processing parser: {e}")
return ""
return generate_grammar(parser_info["lang"], parser_info)
def update_grammars():
@@ -119,13 +116,10 @@ def update_grammars():
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
generated = update_grammars()
output_path = os.path.join(
os.path.dirname(__file__),
"../../nvim-treesitter/generated.nix"
)
output_path = Path(__file__).parent.parent / "nvim-treesitter/generated.nix"
log.info("Writing output to %s", output_path)
with open(output_path, "w") as f:
f.write(generated)
@@ -1013,6 +1013,7 @@ https://github.com/tiagovla/scope.nvim/,HEAD,
https://github.com/0xJohnnyboy/scretch.nvim/,HEAD,
https://github.com/Xuyuanp/scrollbar.nvim/,,
https://github.com/cakebaker/scss-syntax.vim/,,
https://github.com/mahyarmirrashed/search-and-replace.nvim/,HEAD,
https://github.com/VonHeikemen/searchbox.nvim/,,
https://github.com/RobertAudi/securemodelines/,,
https://github.com/megaannum/self/,,
@@ -2129,8 +2129,8 @@ let
mktplcRef = {
name = "gitlab-workflow";
publisher = "gitlab";
version = "6.21.0";
hash = "sha256-vaOAk4ovQjUcnBtxqMlRstYLvR6uzmqGk3Sx6zV6wvY=";
version = "6.25.0";
hash = "sha256-Y4NeeT2CddHj++hE0JxionmEPQHaIeibsrwztCjHYHs=";
};
meta = {
description = "GitLab extension for Visual Studio Code";
@@ -21,15 +21,22 @@ assert
stdenv.mkDerivation (finalAttrs: {
pname = "box64";
version = "0.3.4";
version = "0.3.6";
src = fetchFromGitHub {
owner = "ptitSeb";
repo = "box64";
rev = "v${finalAttrs.version}";
hash = "sha256-CY5Emg5TsMVs++2EukhVzqn9440kF/BO8HZGQgCpGu4=";
hash = "sha256-Z8r7aonVj7VSifgLKx/L7VRdGNnQtTvS4mjI+2+uPxY=";
};
# Setting cpu doesn't seem to work (or maybe isn't enough / gets overwritten by the wrapper's arch flag?), errors about unsupported instructions for target
# (this is for code that gets executed conditionally if the cpu at runtime supports their features, so setting this should be fine)
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail 'ASMFLAGS -pipe -mcpu=cortex-a76' 'ASMFLAGS -pipe -march=armv8.2-a+fp16+dotprod'
'';
nativeBuildInputs = [
cmake
python3
@@ -1,77 +0,0 @@
{
lib,
gccStdenv,
fetchFromGitLab,
zlib,
}:
let
stdenv = gccStdenv;
meta = with lib; {
description = "Fast and exact comparison and clustering of sequences";
homepage = "https://metabarcoding.org/sumatra";
maintainers = [ maintainers.bzizou ];
platforms = platforms.unix;
};
in
rec {
# Suma library
sumalibs = stdenv.mkDerivation rec {
version = "1.0.34";
pname = "sumalibs";
src = fetchFromGitLab {
domain = "git.metabarcoding.org";
owner = "obitools";
repo = pname;
rev = "sumalib_v${version}";
sha256 = "0hwkrxzfz7m5wdjvmrhkjg8kis378iaqr5n4nhdhkwwhn8x1jn5a";
};
makeFlags = [ "PREFIX=$(out)" ];
inherit meta;
};
# Sumatra
sumatra = stdenv.mkDerivation rec {
version = "1.0.34";
pname = "sumatra";
src = fetchFromGitLab {
domain = "git.metabarcoding.org";
owner = "obitools";
repo = pname;
rev = "${pname}_v${version}";
sha256 = "1bbpbdkshdc3xffqnr1qfy8qk64ldsmdc3s8mrcrlx132rgbi5f6";
};
buildInputs = [
sumalibs
zlib
];
makeFlags = [
"LIBSUMA=${sumalibs}/lib/libsuma.a"
"LIBSUMAPATH=-L${sumalibs}"
"PREFIX=$(out)"
];
inherit meta;
};
# Sumaclust
sumaclust = stdenv.mkDerivation rec {
version = "1.0.34";
pname = "sumaclust";
src = fetchFromGitLab {
domain = "git.metabarcoding.org";
owner = "obitools";
repo = pname;
rev = "${pname}_v${version}";
sha256 = "0x8yi3k3jxhmv2krp4rcjlj2f9zg0qrk7gx4kpclf9c3yxgsgrds";
};
buildInputs = [ sumalibs ];
makeFlags = [
"LIBSUMA=${sumalibs}/lib/libsuma.a"
"LIBSUMAPATH=-L${sumalibs}"
"PREFIX=$(out)"
];
inherit meta;
};
}
+2 -2
View File
@@ -1,10 +1,10 @@
{
lib,
stdenv,
stdenvNoCC,
fetchFromGitHub,
}:
stdenv.mkDerivation {
stdenvNoCC.mkDerivation {
pname = "antonio";
version = "0-unstable-2013-11-21";
@@ -0,0 +1,21 @@
The clean command line compiler clm uses timestamps of dcl, icl, abc and o files
to decide what must be rebuild. However as for chroot builds, all of the
library files will have equal timestamps, this leads to clm trying to rebuild
the library modules distributed with the Clean installation every time a user
compiles any file, which fails ue to the absence of write permission on the Nix
store.
This patch changes the freshness check to use less than instead of less than or
equal to in order to avoid this.
--- b/src/clm/clm.c
+++ a/src/clm/clm.c
@@ -250,7 +250,7 @@
|| (t1.dwHighDateTime==t2.dwHighDateTime && (unsigned)(t1.dwLowDateTime)<=(unsigned)(t2.dwLowDateTime)))
#else
typedef unsigned long FileTime;
-# define FILE_TIME_LE(t1,t2) (t1<=t2)
+# define FILE_TIME_LE(t1,t2) (t1<t2)
#endif
typedef struct project_node {
@@ -0,0 +1,22 @@
--- a/src/RuntimeSystem/scon.c
+++ b/src/RuntimeSystem/scon.c
@@ -858,6 +858,8 @@
int execution_aborted;
int return_code;
+extern void abc_main (void);
+
int main (int argc,char **argv)
{
int arg_n;
--- a/src/clm/cachingcompiler.h
+++ b/src/clm/cachingcompiler.h
@@ -1,6 +1,7 @@
Clean (:: *Thread :== Int)
int start_caching_compiler (CleanCharArray compiler_path);
Clean (start_caching_compiler :: {#Char} Thread -> (Int, Thread))
+int start_caching_compiler_with_args (CleanCharArray coc_path, char** cocl_argv, int cocl_argv_size);
int call_caching_compiler (CleanCharArray args);
Clean (call_caching_compiler :: {#Char} Thread -> (Int, Thread))
int stop_caching_compiler (void);
+80
View File
@@ -0,0 +1,80 @@
{
binutils,
fetchurl,
gcc,
lib,
runCommand,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "clean";
version = "3.1";
src =
if stdenv.hostPlatform.system == "i686-linux" then
(fetchurl {
url = "https://ftp.cs.ru.nl/Clean/Clean31/linux/clean3.1_32_boot.tar.gz";
sha256 = "Ls0IKf+o7yhRLhtSV61jzmnYukfh5x5fogHaP5ke/Ck=";
})
else if stdenv.hostPlatform.system == "x86_64-linux" then
(fetchurl {
url = "https://ftp.cs.ru.nl/Clean/Clean31/linux/clean3.1_64_boot.tar.gz";
sha256 = "Gg5CVZjrwDBtV7Vuw21Xj6Rn+qN1Mf6B3ls6r/16oBc=";
})
else
throw "Architecture not supported";
hardeningDisable = [ "pic" ];
patches = [
./chroot-build-support-do-not-rebuild-equal-timestamps.patch
./declare-functions-explicitly-for-gcc14.patch
];
postPatch = ''
substituteInPlace Makefile \
--replace-fail 'INSTALL_DIR = $(CURRENTDIR)' "INSTALL_DIR = $out"
substituteInPlace src/clm/clm.c \
--replace-fail /usr/bin/as ${binutils}/bin/as \
--replace-fail /usr/bin/gcc ${gcc}/bin/gcc
'';
buildFlags = [ "-C src/" ];
# do not strip libraries and executables since all symbols since they are
# required as is for compilation. Especially the labels of unused section need
# to be kept.
dontStrip = true;
passthru.tests.compile-hello-world = runCommand "compile-hello-world" { } ''
cat >HelloWorld.icl <<EOF
module HelloWorld
Start = "Hello, world!"
EOF
${finalAttrs.finalPackage}/bin/clm HelloWorld -o hello-world
touch $out
'';
meta = {
description = "General purpose, state-of-the-art, pure and lazy functional programming language";
longDescription = ''
Clean is a general purpose, state-of-the-art, pure and lazy functional
programming language designed for making real-world applications. Some
of its most notable language features are uniqueness typing, dynamic typing,
and generic functions.
'';
homepage = "http://wiki.clean.cs.ru.nl/Clean";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [
bmrips
erin
];
platforms = [
"i686-linux"
"x86_64-linux"
];
mainProgram = "clean";
};
})
@@ -45,11 +45,11 @@ let
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "copilot-language-server";
version = "1.330.0";
version = "1.335.0";
src = fetchzip {
url = "https://github.com/github/copilot-language-server-release/releases/download/${finalAttrs.version}/copilot-language-server-native-${finalAttrs.version}.zip";
hash = "sha256-/Em00UVEg46gEI52fG7aQo2rqKwqrF3V1tAVx2hpyMc=";
hash = "sha256-ZMnbfVLe1ZtYYCaMhSNqeWfHEtKJf8BImiipypa57w0=";
stripRoot = false;
};
+5 -3
View File
@@ -14,12 +14,14 @@ stdenvNoCC.mkDerivation (finalAttrs: {
hash = "sha256-XYL76L266MKqClxfbPn/C6+x/vcs7AD56DtiDmQam2A=";
};
sourceRoot = "${finalAttrs.src.name}/DepartureMono-${finalAttrs.version}";
installPhase = ''
runHook preInstall
install -D -m 444 DepartureMono-1.500/*.otf -t $out/share/fonts/otf
install -D -m 444 DepartureMono-1.500/*.woff -t $out/share/fonts/woff
install -D -m 444 DepartureMono-1.500/*.woff2 -t $out/share/fonts/woff2
install -D -m 444 *.otf -t $out/share/fonts/otf
install -D -m 444 *.woff -t $out/share/fonts/woff
install -D -m 444 *.woff2 -t $out/share/fonts/woff2
runHook postInstall
'';
@@ -1,43 +0,0 @@
{
lib,
appimageTools,
fetchurl,
}:
let
version = "0.7.2";
pname = "devdocs-desktop";
src = fetchurl {
url = "https://github.com/egoist/devdocs-desktop/releases/download/v${version}/DevDocs-${version}.AppImage";
sha256 = "sha256-4ugpzh0Dweae6tKb6uqRhEW9HT+iVIo8MQRbVKTdRFw=";
};
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
in
appimageTools.wrapType2 rec {
inherit pname version src;
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/devdocs.desktop $out/share/applications/devdocs.desktop
install -m 444 -D ${appimageContents}/devdocs.png $out/share/icons/hicolor/0x0/apps/devdocs.png
substituteInPlace $out/share/applications/devdocs.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
'';
meta = with lib; {
description = "Full-featured desktop app for DevDocs.io";
longDescription = ''
DevDocs.io combines multiple API documentations in a fast, organized, and searchable interface. This is an unofficial desktop app for it.
'';
homepage = "https://github.com/egoist/devdocs-desktop";
downloadPage = "https://github.com/egoist/devdocs-desktop/releases";
license = licenses.mit;
maintainers = with maintainers; [ ymarkus ];
platforms = [ "x86_64-linux" ];
mainProgram = "devdocs-desktop";
};
}
+6
View File
@@ -0,0 +1,6 @@
# `devmode`
`devmode` is a daemon, that:
1. watches the manual's source for changes and when they occur — rebuilds
2. HTTP serves the manual, injecting a script that triggers reload on changes
3. opens the manual in the default browser
+7 -8
View File
@@ -3,17 +3,16 @@
buildGoModule,
fetchFromGitHub,
testers,
goreman,
}:
buildGoModule rec {
buildGoModule (finalAttrs: {
pname = "goreman";
version = "0.3.16";
src = fetchFromGitHub {
owner = "mattn";
repo = "goreman";
rev = "v${version}";
tag = "v${finalAttrs.version}";
hash = "sha256-hOFnLxHsrauOrsbJYKNrwFFT5yYX/rdZUVjscBIGDLo=";
};
@@ -25,15 +24,15 @@ buildGoModule rec {
];
passthru.tests.version = testers.testVersion {
package = goreman;
package = finalAttrs.finalPackage;
command = "goreman version";
};
meta = with lib; {
meta = {
description = "foreman clone written in go language";
mainProgram = "goreman";
homepage = "https://github.com/mattn/goreman";
license = licenses.mit;
maintainers = with maintainers; [ zimbatm ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ zimbatm ];
};
}
})
-44
View File
@@ -1,44 +0,0 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
libjack2,
ladspaH,
gtk2,
alsa-lib,
libxml2,
lrdf,
}:
stdenv.mkDerivation rec {
pname = "jack-rack";
version = "1.4.7";
src = fetchurl {
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
sha256 = "1lmibx9gicagcpcisacj6qhq6i08lkl5x8szysjqvbgpxl9qg045";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
libjack2
ladspaH
gtk2
alsa-lib
libxml2
lrdf
];
NIX_LDFLAGS = "-lm -lpthread";
meta = {
description = ''An effects "rack" for the JACK low latency audio API'';
longDescription = ''
JACK Rack is an effects "rack" for the JACK low latency audio
API. The rack can be filled with LADSPA effects plugins and can
be controlled using the ALSA sequencer. It's phat; it turns your
computer into an effects box.
'';
homepage = "https://jack-rack.sourceforge.net/";
license = lib.licenses.gpl2Plus;
maintainers = [ lib.maintainers.astsmtl ];
platforms = lib.platforms.linux;
};
}
+3 -3
View File
@@ -8,16 +8,16 @@
buildNpmPackage rec {
pname = "lint-staged";
version = "16.1.0";
version = "16.1.1";
src = fetchFromGitHub {
owner = "okonet";
repo = "lint-staged";
rev = "v${version}";
hash = "sha256-dR0z/60CHDqCl9pEc9KQww1S5aSZ4XGsfNqxBSZe0Ig=";
hash = "sha256-DBLS0hMu2mG4+sGhhGjIlfj2y2A33RccEP3plweaKio=";
};
npmDepsHash = "sha256-MznWvv61Z+8t+Nicj6yWlQqUHVx7AAtkDXu2L2E5dw8=";
npmDepsHash = "sha256-LJipxwO5B01KlfjOVhlhw5veH2+wpzWm0EwcRdVFleQ=";
dontNpmBuild = true;
+8
View File
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
++ lib.optionals withPython [
swig
python3.pkgs.setuptools
python3.pkgs.pythonImportsCheckHook
];
buildInputs = [
@@ -82,6 +83,13 @@ stdenv.mkDerivation rec {
(lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true)
];
postInstall = lib.optionalString withPython ''
mkdir -p $out/${python3.sitePackages}
cp -r src/mapscript/python/mapscript $out/${python3.sitePackages}
'';
pythonImportsCheck = [ "mapscript" ];
meta = {
description = "Platform for publishing spatial data and interactive mapping applications to the web";
homepage = "https://mapserver.org/";
+9 -9
View File
@@ -1,21 +1,21 @@
{
"version": "3.143.0",
"version": "3.144.0",
"assets": {
"x86_64-linux": {
"url": "https://github.com/metalbear-co/mirrord/releases/download/3.143.0/mirrord_linux_x86_64",
"hash": "sha256-0wu90iNAP7OQYENHIPsTSPk8Ko2jK0uBdZWe2d1URS8="
"url": "https://github.com/metalbear-co/mirrord/releases/download/3.144.0/mirrord_linux_x86_64",
"hash": "sha256-XbveB71EIChiuPVfqOshEhPZHnTGd7xJt48/zuyq5TA="
},
"aarch64-linux": {
"url": "https://github.com/metalbear-co/mirrord/releases/download/3.143.0/mirrord_linux_aarch64",
"hash": "sha256-MWQ5k9Tk6q7f5QQ3Og9O5dyEDd+wNi3FFYqbFpa7uxM="
"url": "https://github.com/metalbear-co/mirrord/releases/download/3.144.0/mirrord_linux_aarch64",
"hash": "sha256-4Tw68aWpNsjfi6d7qgBhbVvAMsHwUsttfVSpx3Kv2Nk="
},
"aarch64-darwin": {
"url": "https://github.com/metalbear-co/mirrord/releases/download/3.143.0/mirrord_mac_universal",
"hash": "sha256-GdwZWtNTuiUf+DcuZkVUm0YVH0EKfT6V6clcv1E7BxY="
"url": "https://github.com/metalbear-co/mirrord/releases/download/3.144.0/mirrord_mac_universal",
"hash": "sha256-FhRgopH7QRH+30Bofoiwdx3Vlne6D/ftaqhGuUnyH0g="
},
"x86_64-darwin": {
"url": "https://github.com/metalbear-co/mirrord/releases/download/3.143.0/mirrord_mac_universal",
"hash": "sha256-GdwZWtNTuiUf+DcuZkVUm0YVH0EKfT6V6clcv1E7BxY="
"url": "https://github.com/metalbear-co/mirrord/releases/download/3.144.0/mirrord_mac_universal",
"hash": "sha256-FhRgopH7QRH+30Bofoiwdx3Vlne6D/ftaqhGuUnyH0g="
}
}
}
@@ -40,5 +40,6 @@ rustPlatform.buildRustPackage rec {
homepage = "https://github.com/nikstur/nix-store-veritysetup-generator";
license = licenses.mit;
maintainers = with lib.maintainers; [ nikstur ];
mainProgram = "nix-store-veritysetup-generator";
};
}
+3 -3
View File
@@ -11,17 +11,17 @@
rustPlatform.buildRustPackage rec {
pname = "novops";
version = "0.19.0";
version = "0.20.0";
src = fetchFromGitHub {
owner = "PierreBeucher";
repo = "novops";
rev = "v${version}";
hash = "sha256-bpv8Ybrsb2CAV8Qxj69F2E/mekYsOuAiZWuDNHDtxw0=";
hash = "sha256-TvlbA9RXuAPm1rN3VaIrVKMfyePT9oLSh87Bqclwcj8=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-w5jBCVoLm0zzLMa7COHsQbHq+TlJZCnabNZyO8nlTKk=";
cargoHash = "sha256-oXOK8LQZ2+u566HIi0DYuocEsZMfj1ogkHciH8hFVR8=";
buildInputs =
[
+2 -2
View File
@@ -8,13 +8,13 @@
stdenvNoCC.mkDerivation rec {
pname = "pfetch";
version = "1.9.0";
version = "1.9.1";
src = fetchFromGitHub {
owner = "Un1q32";
repo = "pfetch";
tag = version;
hash = "sha256-DWntcAowiia4gEiYcZCJ6+uDGQ5h2eh/XwSSW+ThPKY=";
hash = "sha256-a2ay+Ag9vYwGGENRPCcFLCmtyOCyHhF6/P7NAn/CzSI=";
};
dontBuild = true;
+6 -3
View File
@@ -109,9 +109,12 @@ stdenv.mkDerivation (finalAttrs: {
done
# Rewrite library references for all executables.
find "$out" -executable -type f | while read executable; do
install_name_tool "''${change_args[@]}" "$executable"
done
find "$out" -type f -executable -path "*/bin/*" -o -type f -executable -path "*/share/*/samples/*" \
| while read executable; do
if isMachO "$executable"; then
install_name_tool "''${change_args[@]}" "$executable"
fi
done
'';
# We need the libgcc_s.so.1 loadable (for pthread_cancel to work)
@@ -3,19 +3,15 @@
fetchgit,
fetchFromGitHub,
rustPlatform,
pkg-config,
pkgconf,
openssl,
fuse3,
libuuid,
acl,
libxcrypt,
git,
installShellFiles,
sphinx,
systemd,
stdenv,
fetchpatch,
versionCheckHook,
}:
@@ -113,12 +109,19 @@ rustPlatform.buildRustPackage {
cp ${./Cargo.lock} Cargo.lock
rm .cargo/config.toml
# avoid some unnecessary dependendcies, stemming from greedy linkage by rustc
# see also upstream Makefile for similar workaround
mkdir -p .dep-stubs
echo '!<arch>' >.dep-stubs/libsystemd.a
echo '!<arch>' >.dep-stubs/libuuid.a
echo '!<arch>' >.dep-stubs/libcrypt.a
'';
postBuild = ''
make -C docs \
DEB_VERSION=${version} DEB_VERSION_UPSTREAM=${version} \
RUSTC_TARGET=${stdenv.hostPlatform.config} \
RUSTC_TARGET=${stdenv.targetPlatform.rust.rustcTarget} \
BUILD_MODE=release \
proxmox-backup-client.1 pxar.1
'';
@@ -147,25 +150,28 @@ rustPlatform.buildRustPackage {
"--bin=pxar"
];
RUSTFLAGS = [ "-L.dep-stubs" ];
doCheck = false;
# pbs-buildcfg requires this set, would be the git commit id
REPOID = "";
nativeBuildInputs = [
git
pkg-config
pkgconf
rustPlatform.bindgenHook
installShellFiles
sphinx
];
buildInputs = [
openssl
fuse3
libuuid
acl
libxcrypt
systemd.dev
];
strictDeps = true;
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "version";
+2 -2
View File
@@ -10,13 +10,13 @@
buildGoModule (finalAttrs: {
pname = "s-search";
version = "0.7.2";
version = "0.7.3";
src = fetchFromGitHub {
owner = "zquestz";
repo = "s";
tag = "v${finalAttrs.version}";
hash = "sha256-5hkorROs11nrDK5/BBEPIugVYeVUWtAnpCBBuKTj15g=";
hash = "sha256-g+Gz16U5rP3v+RbutDUh5+1YdTDe+ROFEnNAlNZX1fw=";
};
vendorHash = "sha256-0E/9fONanSxb2Tv5wKIpf1J/A6Hdge23xy3r6pFyV9E=";
@@ -0,0 +1,22 @@
From a4ca664abfac0b7efa7dbc48c6438bc1a5333962 Mon Sep 17 00:00:00 2001
From: Fazzi <faaris.ansari@proton.me>
Date: Sat, 24 May 2025 20:55:50 +0100
Subject: [PATCH] desktopFile: hide entry from app launchers
---
linux-release/com.steamgriddb.SGDBoop.desktop | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux-release/com.steamgriddb.SGDBoop.desktop b/linux-release/com.steamgriddb.SGDBoop.desktop
index 9c84cdb..9899682 100644
--- a/linux-release/com.steamgriddb.SGDBoop.desktop
+++ b/linux-release/com.steamgriddb.SGDBoop.desktop
@@ -4,7 +4,7 @@ Comment=Apply Steam assets from SteamGridDB
Exec=SGDBoop %U
Terminal=false
Type=Application
-NoDisplay=false
+NoDisplay=true
Icon=com.steamgriddb.SGDBoop
MimeType=x-scheme-handler/sgdb
Categories=Utility
+60
View File
@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchFromGitHub,
curl,
pkg-config,
wrapGAppsHook3,
}:
stdenv.mkDerivation rec {
pname = "sgdboop";
version = "1.3.1";
src = fetchFromGitHub {
owner = "SteamGridDB";
repo = "SGDBoop";
tag = "v${version}";
hash = "sha256-FpVQQo2N/qV+cFhYZ1FVm+xlPHSVMH4L+irnQEMlUQs=";
};
patches = [
# Hide the app from app launchers, as it is not meant to be run directly
# Remove when https://github.com/SteamGridDB/SGDBoop/pull/112 is merged
./hide_desktop_entry.patch
];
makeFlags = [
# The flatpak install just copies things to /app - otherwise wants to do things with XDG
"FLATPAK_ID=fake"
];
postPatch = ''
substituteInPlace Makefile \
--replace-fail "/app/" "$out/"
'';
postInstall = ''
rm -r "$out/share/metainfo"
'';
nativeBuildInputs = [
pkg-config
wrapGAppsHook3
];
buildInputs = [
curl
];
meta = {
description = "Applying custom artwork to Steam, using SteamGridDB";
homepage = "https://github.com/SteamGridDB/SGDBoop/";
license = lib.licenses.zlib;
maintainers = with lib.maintainers; [
saturn745
fazzi
];
mainProgram = "SGDBoop";
platforms = lib.platforms.linux;
};
}
+30
View File
@@ -0,0 +1,30 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "smfh";
version = "1.1";
src = fetchFromGitHub {
owner = "feel-co";
repo = "smfh";
tag = finalAttrs.version;
hash = "sha256-/9Ww10kYopxfCNNnNDwENTubs7Wzqlw+O6PJAHNOYQw=";
};
cargoHash = "sha256-MpqbmhjNsE1krs7g3zWSXGxzb4G/A+cz/zxD2Jk2HC8=";
meta = {
description = "Sleek Manifest File Handler";
homepage = "https://github.com/feel-co/smfh";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [
arthsmn
gerg-l
];
mainProgram = "smfh";
};
})
-50
View File
@@ -1,50 +0,0 @@
{
lib,
appimageTools,
fetchurl,
makeWrapper,
nix-update-script,
}:
let
version = "3.3.0";
pname = "station";
src = fetchurl {
url = "https://github.com/getstation/desktop-app/releases/download/v${version}/Station-x86_64.AppImage";
hash = "sha256-OiUVRKpU2W1dJ6z9Dqvxd+W4/oNpG+Zolj43ZHpKaO0=";
};
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = ''
source "${makeWrapper}/nix-support/setup-hook"
wrapProgram $out/bin/${pname} \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
install -m 444 -D ${appimageContents}/station-desktop-app.desktop \
$out/share/applications/station-desktop-app.desktop
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/512x512/apps/station-desktop-app.png \
$out/share/icons/hicolor/512x512/apps/station-desktop-app.png
substituteInPlace $out/share/applications/station-desktop-app.desktop \
--replace-fail 'Exec=AppRun' 'Exec=station'
'';
passthru = {
updateScript = nix-update-script {
extraArgs = [ "--url=https://github.com/getstation/desktop-app" ];
};
};
meta = {
changelog = "https://github.com/getstation/desktop-app/releases/tag/v${version}";
description = "A single place for all of your web applications";
downloadPage = "https://github.com/getstation/desktop-app/releases";
homepage = "https://getstation.com/";
license = lib.licenses.asl20;
mainProgram = "station";
maintainers = with lib.maintainers; [ flexiondotorg ];
platforms = [ "x86_64-linux" ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
}
+3 -3
View File
@@ -13,17 +13,17 @@
rustPlatform.buildRustPackage rec {
pname = "termscp";
version = "0.17.0";
version = "0.18.0";
src = fetchFromGitHub {
owner = "veeso";
repo = "termscp";
tag = "v${version}";
hash = "sha256-ClCPXux1sM3hRbtJ3YngrAmc4btTgQmg/Bg/7uFHCOw=";
hash = "sha256-QBvxXl1+f2617dwoZzSJq9vQY6hOXeHZjEh4xqMyayA=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-k/6+EWHAXd8BN551xDlQkYsBZsP/jgT+NO5GbVXJkVI=";
cargoHash = "sha256-ghJdAou3IsDVmOnDYiYO1yR3BtkrfUek10Bh9GuVH1E=";
nativeBuildInputs = [
pkg-config
@@ -0,0 +1,34 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
cffi,
piexif,
pillow,
}:
buildPythonPackage rec {
pname = "heif-image-plugin";
version = "0.6.2";
format = "setuptools";
src = fetchFromGitHub {
owner = "uploadcare";
repo = "heif-image-plugin";
rev = "v${version}";
hash = "sha256-SlnnlBscNelNH0XkOenq3nolyqzRMK10SzVii61Moi4=";
};
propagatedBuildInputs = [
cffi
piexif
pillow
];
meta = {
description = "Simple HEIF/HEIC images plugin for Pillow base on pyhief library";
homepage = "https://github.com/uploadcare/heif-image-plugin";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ratcornu ];
};
}
@@ -0,0 +1,30 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
libavif,
pillow,
}:
buildPythonPackage rec {
pname = "pillow-avif-plugin";
version = "1.4.6";
pyproject = true;
src = fetchPypi {
inherit pname version;
sha256 = "sha256-hVz1DQP2/Bbh/V42SzzqC3n0v5DTn/ISOWlzXYUeCLo=";
};
nativeBuildInputs = [ setuptools ];
buildInputs = [ libavif ];
propagatedBuildInputs = [ pillow ];
meta = {
description = "Pillow plugin that adds support for AVIF files";
homepage = "https://github.com/fdintino/pillow-avif-plugin";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ ratcornu ];
};
}
@@ -42,6 +42,7 @@ stdenv.mkDerivation {
doc = "share/doc/cpupower";
conf = "etc";
bash_completion_ = "share/bash-completion/completions";
unit = "lib/systemd/system";
};
enableParallelBuilding = true;
@@ -1,7 +1,7 @@
{
"testing": {
"version": "6.16-rc1",
"hash": "sha256:0wi66d2wma4lfs3pbwqg7k1pavxc3wyr54yxii3mmaab81pfdx27"
"version": "6.16-rc2",
"hash": "sha256:1hzkpp5161ss40d8j9nzvzyw6vljslx0pk5fin0klj884l5i8igh"
},
"6.1": {
"version": "6.1.141",
@@ -0,0 +1,36 @@
{
src,
version,
lib,
buildNpmPackage,
}:
buildNpmPackage {
pname = "szurubooru-client";
inherit version;
src = "${src}/client";
npmDepsHash = "sha256-HtcitZl2idgVleB6c0KCTSNLxh7hP8/G/RGdMaQG3iI=";
makeCacheWritable = true;
npmBuildFlags = [
"--gzip"
];
installPhase = ''
runHook preInstall
mkdir $out
mv ./public/* $out
runHook postInstall
'';
meta = with lib; {
description = "Client of szurubooru, an image board engine for small and medium communities";
homepage = "https://github.com/rr-/szurubooru";
license = licenses.gpl3;
maintainers = with maintainers; [ ratcornu ];
};
}
@@ -0,0 +1,20 @@
{
callPackage,
fetchFromGitHub,
recurseIntoAttrs,
}:
let
version = "2.5-unstable-2025-02-11";
src = fetchFromGitHub {
owner = "rr-";
repo = "szurubooru";
rev = "376f687c386f65522b2f65e98b998b21af26ee29";
hash = "sha256-4w1iOYp+CVg60dYxRilj08D4Hle6R9Y0v+Nd3fws1Zc=";
};
in
recurseIntoAttrs {
client = callPackage ./client.nix { inherit src version; };
server = callPackage ./server.nix { inherit src version; };
}
@@ -0,0 +1,85 @@
{
src,
version,
lib,
nixosTests,
fetchPypi,
python3,
}:
let
overrides = [
(self: super: {
alembic = super.alembic.overridePythonAttrs (oldAttrs: rec {
version = "1.14.1";
src = fetchPypi {
pname = "alembic";
inherit version;
sha256 = "sha256-SW6IgkWlOt8UmPyrMXE6Rpxlg2+N524BOZqhw+kN0hM=";
};
doCheck = false;
});
pyheif = super.pyheif.overridePythonAttrs (oldAttrs: {
doCheck = false;
});
sqlalchemy = super.sqlalchemy.overridePythonAttrs (oldAttrs: rec {
version = "1.3.23";
src = fetchPypi {
pname = "SQLAlchemy";
inherit version;
sha256 = "sha256-b8ozZyV4Zm9lfBMVUsTviXnBYG5JT3jNUZl0LfsmkYs=";
};
doCheck = false;
});
})
];
python = python3.override {
self = python;
packageOverrides = lib.composeManyExtensions overrides;
};
in
python.pkgs.buildPythonApplication {
pname = "szurubooru-server";
inherit version;
pyproject = true;
src = "${src}/server";
nativeBuildInputs = with python.pkgs; [ setuptools ];
propagatedBuildInputs = with python.pkgs; [
alembic
certifi
coloredlogs
heif-image-plugin
numpy
pillow-avif-plugin
pillow
psycopg2-binary
pyheif
pynacl
pyrfc3339
pytz
pyyaml
sqlalchemy
yt-dlp
];
postInstall = ''
mkdir $out/bin
install -m0755 $src/szuru-admin $out/bin/szuru-admin
'';
passthru.tests.szurubooru = nixosTests.szurubooru;
meta = with lib; {
description = "Server of szurubooru, an image board engine for small and medium communities";
homepage = "https://github.com/rr-/szurubooru";
license = licenses.gpl3;
maintainers = with maintainers; [ ratcornu ];
};
}
+8 -4
View File
@@ -1,15 +1,19 @@
GEM
remote: https://rubygems.org/
specs:
abbrev (0.1.2)
chronic (0.10.2)
csv (3.3.5)
highline (2.1.0)
matrix (0.4.2)
rchardet (1.8.0)
reckon (0.9.2)
reckon (0.11.1)
abbrev (> 0.1)
chronic (>= 0.3.0)
highline (>= 1.5.2)
csv (> 0.1)
highline (~> 2.0)
matrix (>= 0.4.2)
rchardet (>= 1.8.0)
rchardet (= 1.8.0)
PLATFORMS
ruby
@@ -18,4 +22,4 @@ DEPENDENCIES
reckon
BUNDLED WITH
2.4.13
2.6.6
+9 -1
View File
@@ -5,6 +5,8 @@
bundlerUpdateScript,
makeWrapper,
file,
testers,
reckon,
}:
stdenv.mkDerivation rec {
@@ -31,7 +33,13 @@ stdenv.mkDerivation rec {
runHook postInstall
'';
passthru.updateScript = bundlerUpdateScript "reckon";
passthru = {
tests.version = testers.testVersion {
package = reckon;
version = "${version}";
};
updateScript = bundlerUpdateScript "reckon";
};
meta = with lib; {
description = "Flexibly import bank account CSV files into Ledger for command line accounting";
+24 -2
View File
@@ -1,4 +1,14 @@
{
abbrev = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0hj2qyx7rzpc7awhvqlm597x7qdxwi4kkml4aqnp5jylmsm4w6xd";
type = "gem";
};
version = "0.1.2";
};
chronic = {
groups = [ "default" ];
platforms = [ ];
@@ -9,6 +19,16 @@
};
version = "0.10.2";
};
csv = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0gz7r2kazwwwyrwi95hbnhy54kwkfac5swh2gy5p5vw36fn38lbf";
type = "gem";
};
version = "3.3.5";
};
highline = {
groups = [ "default" ];
platforms = [ ];
@@ -41,7 +61,9 @@
};
reckon = {
dependencies = [
"abbrev"
"chronic"
"csv"
"highline"
"matrix"
"rchardet"
@@ -50,9 +72,9 @@
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0188k41lvz5vnn03qw1hbi6c2i88n5p3183rb0xz9rfjcngh2ly3";
sha256 = "1y4iqjmgzj9nrp22pmayia54mpb4d6ga85q9xzqir7mhcd2bdca1";
type = "gem";
};
version = "0.9.2";
version = "0.11.1";
};
}
+6 -1
View File
@@ -439,7 +439,6 @@ mapAliases {
citra = throw "citra has been removed from nixpkgs, as it has been taken down upstream"; # added 2024-03-04
citra-nightly = throw "citra-nightly has been removed from nixpkgs, as it has been taken down upstream"; # added 2024-03-04
citra-canary = throw "citra-canary has been removed from nixpkgs, as it has been taken down upstream"; # added 2024-03-04
clean = throw "'clean' has been removed from nixpkgs, as it is unmaintained and broken"; # Added 2025-05-18
cloog = throw "cloog has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-09-13
cloog_0_18_0 = throw "cloog_0_18_0 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-09-13
cloogppl = throw "cloogppl has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-09-13
@@ -538,6 +537,7 @@ mapAliases {
demjson = with python3Packages; toPythonApplication demjson; # Added 2022-01-18
devdash = throw "'devdash' has been removed as the upstream project was archived"; # Added 2025-03-27
devdocs-desktop = throw "'devdocs-desktop' has been removed as it is unmaintained upstream and vendors insecure dependencies"; # Added 2025-06-11
dfilemanager = throw "'dfilemanager' has been dropped as it was unmaintained"; # Added 2025-06-03
dgsh = throw "'dgsh' has been removed, as it was broken and unmaintained"; # added 2024-05-09
dibbler = throw "dibbler was removed because it is not maintained anymore"; # Added 2024-05-14
@@ -940,6 +940,7 @@ mapAliases {
### J ###
jack2Full = throw "'jack2Full' has been renamed to/replaced by 'jack2'"; # Converted to throw 2024-10-17
jack_rack = throw "'jack_rack' has been removed due to lack of maintenance upstream."; # Added 2025-06-10
jami-client-qt = jami-client; # Added 2022-11-06
jami-client = jami; # Added 2023-02-10
jami-daemon = jami.daemon; # Added 2023-02-10
@@ -1834,6 +1835,7 @@ mapAliases {
ssm-agent = amazon-ssm-agent; # Added 2023-10-17
starpls-bin = starpls;
starspace = throw "starspace has been removed from nixpkgs, as it was broken"; # Added 2024-07-15
station = throw "station has been removed from nixpkgs, as there were no committers among its maintainers to unblock security issues"; # added 2025-06-16
steamPackages = {
steamArch = throw "`steamPackages.steamArch` has been removed as it's no longer applicable";
steam = lib.warnOnInstantiate "`steamPackages.steam` has been moved to top level as `steam-unwrapped`" steam-unwrapped;
@@ -1855,6 +1857,9 @@ mapAliases {
suidChroot = throw "'suidChroot' has been dropped as it was unmaintained, failed to build and had questionable security considerations"; # Added 2025-05-17
suitesparse_4_2 = throw "'suitesparse_4_2' has been removed as it was unmaintained upstream"; # Added 2025-05-17
suitesparse_4_4 = throw "'suitesparse_4_4' has been removed as it was unmaintained upstream"; # Added 2025-05-17
sumaclust = throw "'sumaclust' has been removed as it was archived upstream and broken with GCC 14"; # Added 2025-06-14
sumalibs = throw "'sumalibs' has been removed as it was archived upstream and broken with GCC 14"; # Added 2025-06-14
sumatra = throw "'sumatra' has been removed as it was archived upstream and broken with GCC 14"; # Added 2025-06-14
sumneko-lua-language-server = lua-language-server; # Added 2023-02-07
sumokoin = throw "sumokoin has been removed as it was abandoned upstream"; # Added 2024-11-23
supertag = throw "supertag has been removed as it was abandoned upstream and fails to build"; # Added 2025-04-20
+2 -6
View File
@@ -9676,6 +9676,8 @@ with pkgs;
svxlink = libsForQt5.callPackage ../applications/radio/svxlink { };
szurubooru = callPackage ../servers/web-apps/szurubooru { };
tclap = tclap_1_2;
tclap_1_2 = callPackage ../development/libraries/tclap/1.2.nix { };
@@ -15498,12 +15500,6 @@ with pkgs;
samtools = callPackage ../applications/science/biology/samtools { };
inherit (callPackages ../applications/science/biology/sumatools { })
sumalibs
sumaclust
sumatra
;
trimmomatic = callPackage ../applications/science/biology/trimmomatic {
jdk = pkgs.jdk21_headless;
# Reduce closure size
+4
View File
@@ -6386,6 +6386,8 @@ self: super: with self; {
hebg = callPackage ../development/python-modules/hebg { };
heif-image-plugin = callPackage ../development/python-modules/heif-image-plugin { };
help2man = callPackage ../development/python-modules/help2man { };
helpdev = callPackage ../development/python-modules/helpdev { };
@@ -11378,6 +11380,8 @@ self: super: with self; {
inherit (pkgs.xorg) libxcb;
};
pillow-avif-plugin = callPackage ../development/python-modules/pillow-avif-plugin { };
pillow-heif = callPackage ../development/python-modules/pillow-heif { };
pillow-jpls = callPackage ../development/python-modules/pillow-jpls { };