Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2024-08-19 00:15:06 +00:00 committed by GitHub
commit 0f0aff203c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
322 changed files with 6733 additions and 3345 deletions

View File

@ -162,3 +162,6 @@ fc7a83f8b62e90de5679e993d4d49ca014ea013d
# darwin.stdenv: format with nixfmt-rfc-style (#333962)
93c10ac9e561c6594d3baaeaff2341907390d9b8
# nrr: format with nixfmt-rfc-style (#334578)
cffc27daf06c77c0d76bc35d24b929cb9d68c3c9

View File

@ -9597,6 +9597,12 @@
githubId = 2502736;
name = "James Hillyerd";
};
jhollowe = {
email = "jhollowe@johnhollowell.com";
github = "jhollowe";
githubId = 2881268;
name = "John Hollowell";
};
j-hui = {
email = "j-hui@cs.columbia.edu";
github = "j-hui";
@ -22780,6 +22786,11 @@
name = "Yusuf Bera Ertan";
keys = [ { fingerprint = "9270 66BD 8125 A45B 4AC4 0326 6180 7181 F60E FCB2"; } ];
};
yusuf-duran = {
github = "yusuf-duran";
githubId = 37774475;
name = "Yusuf Duran";
};
yuu = {
email = "yuunix@grrlz.net";
matrix = "@yuu:matrix.org";

View File

@ -51,6 +51,8 @@
- [Immersed VR](https://immersed.com/), a closed-source coworking platform. Available as [programs.immersed-vr](#opt-programs.immersed-vr.enable).
- [HomeBox](https://github.com/hay-kot/homebox/): the inventory and organization system built for the Home User. Available as [services.homebox](#opt-services.homebox.enable).
- [Renovate](https://github.com/renovatebot/renovate), a dependency updating tool for various git forges and language ecosystems. Available as [services.renovate](#opt-services.renovate.enable).
- [Music Assistant](https://music-assistant.io/), a music library manager for your offline and online music sources which can easily stream your favourite music to a wide range of supported players. Available as [services.music-assistant](#opt-services.music-assistant.enable).
@ -184,6 +186,8 @@
- `services.ddclient.use` has been deprecated: `ddclient` now supports separate IPv4 and IPv6 configuration. Use `services.ddclient.usev4` and `services.ddclient.usev6` instead.
- `services.pgbouncer` systemd service is configured with `Type=notify-reload` and allows reloading configuration without process restart. PgBouncer configuration options were moved to the free-form type option named [`services.pgbouncer.settings`](#opt-services.pgbouncer.settings) according to the NixOS RFC 0042.
- `teleport` has been upgraded from major version 15 to major version 16.
Refer to upstream [upgrade instructions](https://goteleport.com/docs/management/operations/upgrading/)
and [release notes for v16](https://goteleport.com/docs/changelog/#1600-061324).

View File

@ -214,6 +214,7 @@
./programs/iay.nix
./programs/iftop.nix
./programs/i3lock.nix
./programs/iio-hyprland.nix
./programs/immersed-vr.nix
./programs/iotop.nix
./programs/java.nix
@ -1417,6 +1418,7 @@
./services/web-apps/healthchecks.nix
./services/web-apps/hedgedoc.nix
./services/web-apps/hledger-web.nix
./services/web-apps/homebox.nix
./services/web-apps/honk.nix
./services/web-apps/icingaweb2/icingaweb2.nix
./services/web-apps/icingaweb2/module-monitoring.nix

View File

@ -0,0 +1,24 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.programs.iio-hyprland;
in
{
options = {
programs.iio-hyprland = {
enable = lib.mkEnableOption "iio-hyprland and iio-sensor-proxy";
package = lib.mkPackageOption pkgs "iio-hyprland" { };
};
};
config = lib.mkIf cfg.enable {
hardware.sensor.iio.enable = lib.mkDefault true;
environment.systemPackages = [ cfg.package ];
};
meta.maintainers = with lib.maintainers; [ yusuf-duran ];
}

View File

@ -19,6 +19,6 @@ in
# To make a cardboard session available for certain DMs like SDDM
services.displayManager.sessionPackages = [ cfg.package ];
}
(import ./wayland-session.nix { inherit lib pkgs; })
(import ./wayland-session.nix { inherit lib; })
]);
}

View File

@ -70,7 +70,7 @@ in
}
(import ./wayland-session.nix {
inherit lib pkgs;
inherit lib;
enableXWayland = cfg.xwayland.enable;
enableWlrPortal = lib.mkDefault false; # Hyprland has its own portal, wlr is not needed
})

View File

@ -20,6 +20,6 @@ in
# To make a labwc session available for certain DMs like SDDM
services.displayManager.sessionPackages = [ cfg.package ];
}
(import ./wayland-session.nix { inherit lib pkgs; })
(import ./wayland-session.nix { inherit lib; })
]);
}

View File

@ -30,7 +30,7 @@ in
}
(import ./wayland-session.nix {
inherit lib pkgs;
inherit lib;
# Hardcoded path in Mir, not really possible to disable
enableXWayland = true;
# No portal support yet: https://github.com/mattkae/miracle-wm/issues/164

View File

@ -56,7 +56,7 @@ in
}
(import ./wayland-session.nix {
inherit lib pkgs;
inherit lib;
enableXWayland = cfg.xwayland.enable;
})
]);

View File

@ -129,8 +129,6 @@ in
};
};
programs.gnupg.agent.pinentryPackage = lib.mkDefault pkgs.pinentry-gnome3;
# To make a Sway session available if a display manager like SDDM is enabled:
services.displayManager.sessionPackages = lib.optional (cfg.package != null) cfg.package;
@ -139,7 +137,7 @@ in
}
(import ./wayland-session.nix {
inherit lib pkgs;
inherit lib;
enableXWayland = cfg.xwayland.enable;
})
]);

View File

@ -52,8 +52,6 @@ in
services.displayManager.sessionPackages = [ finalPackage ];
xdg.icons.enable = true;
xdg.portal = {
enable = lib.mkDefault true;
wlr.enable = lib.mkDefault true;
@ -65,7 +63,7 @@ in
};
}
(import ./wayland-session.nix {
inherit lib pkgs;
inherit lib;
enableXWayland = cfg.xwayland.enable;
})
]

View File

@ -1,6 +1,5 @@
{
lib,
pkgs,
enableXWayland ? true,
enableWlrPortal ? true,
}:
@ -11,15 +10,12 @@
pam.services.swaylock = {};
};
hardware.graphics.enable = lib.mkDefault true;
fonts.enableDefaultPackages = lib.mkDefault true;
programs = {
dconf.enable = lib.mkDefault true;
xwayland.enable = lib.mkDefault enableXWayland;
};
xdg.icons.enable = true;
services.graphical-desktop.enable = true;
xdg.portal.wlr.enable = enableWlrPortal;

View File

@ -1,543 +1,138 @@
{ lib, pkgs, config, ... } :
with lib;
{ config, lib, utils, pkgs, ... }:
let
cfg = config.services.pgbouncer;
confFile = pkgs.writeTextFile {
name = "pgbouncer.ini";
text = ''
[databases]
${concatStringsSep "\n"
(mapAttrsToList (dbname : settings : "${dbname} = ${settings}") cfg.databases)}
[users]
${concatStringsSep "\n"
(mapAttrsToList (username : settings : "${username} = ${settings}") cfg.users)}
[peers]
${concatStringsSep "\n"
(mapAttrsToList (peerid : settings : "${peerid} = ${settings}") cfg.peers)}
[pgbouncer]
# general
${optionalString (cfg.ignoreStartupParameters != null) "ignore_startup_parameters = ${cfg.ignoreStartupParameters}"}
listen_port = ${toString cfg.listenPort}
${optionalString (cfg.listenAddress != null) "listen_addr = ${cfg.listenAddress}"}
pool_mode = ${cfg.poolMode}
max_client_conn = ${toString cfg.maxClientConn}
default_pool_size = ${toString cfg.defaultPoolSize}
max_user_connections = ${toString cfg.maxUserConnections}
max_db_connections = ${toString cfg.maxDbConnections}
#auth
auth_type = ${cfg.authType}
${optionalString (cfg.authHbaFile != null) "auth_hba_file = ${cfg.authHbaFile}"}
${optionalString (cfg.authFile != null) "auth_file = ${cfg.authFile}"}
${optionalString (cfg.authUser != null) "auth_user = ${cfg.authUser}"}
${optionalString (cfg.authQuery != null) "auth_query = ${cfg.authQuery}"}
${optionalString (cfg.authDbname != null) "auth_dbname = ${cfg.authDbname}"}
# TLS
${optionalString (cfg.tls.client != null) ''
client_tls_sslmode = ${cfg.tls.client.sslmode}
client_tls_key_file = ${cfg.tls.client.keyFile}
client_tls_cert_file = ${cfg.tls.client.certFile}
client_tls_ca_file = ${cfg.tls.client.caFile}
''}
${optionalString (cfg.tls.server != null) ''
server_tls_sslmode = ${cfg.tls.server.sslmode}
server_tls_key_file = ${cfg.tls.server.keyFile}
server_tls_cert_file = ${cfg.tls.server.certFile}
server_tls_ca_file = ${cfg.tls.server.caFile}
''}
# log
${optionalString (cfg.logFile != null) "logfile = ${cfg.homeDir}/${cfg.logFile}"}
${optionalString (cfg.syslog != null) ''
syslog = ${if cfg.syslog.enable then "1" else "0"}
syslog_ident = ${cfg.syslog.syslogIdent}
syslog_facility = ${cfg.syslog.syslogFacility}
''}
${optionalString (cfg.verbose != null) "verbose = ${toString cfg.verbose}"}
# console access
${optionalString (cfg.adminUsers != null) "admin_users = ${cfg.adminUsers}"}
${optionalString (cfg.statsUsers != null) "stats_users = ${cfg.statsUsers}"}
# extra
${cfg.extraConfig}
'';
};
in {
settingsFormat = pkgs.formats.ini { };
configFile = settingsFormat.generate "pgbouncer.ini" cfg.settings;
configPath = "pgbouncer/pgbouncer.ini";
in
{
imports = [
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "logFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "log_file" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "listenAddress" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "listen_addr" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "listenPort" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "listen_port" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "poolMode" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "pool_mode" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "maxClientConn" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "max_client_conn" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "defaultPoolSize" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "default_pool_size" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "maxDbConnections" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "max_db_connections" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "maxUserConnections" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "max_user_connections" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "ignoreStartupParameters" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "ignore_startup_parameters" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "databases" ]
[ "services" "pgbouncer" "settings" "databases" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "users" ]
[ "services" "pgbouncer" "settings" "users" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "peers" ]
[ "services" "pgbouncer" "settings" "peers" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "authType" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "auth_type" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "authHbaFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "auth_hba_file" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "authFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "auth_file" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "authUser" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "auth_user" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "authQuery" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "auth_query" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "authDbname" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "auth_dbname" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "adminUsers" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "admin_users" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "statsUsers" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "stats_users" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "verbose" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "verbose" ])
(lib.mkChangedOptionModule
[ "services" "pgbouncer" "syslog" "enable" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "syslog" ]
(config:
let
enable = lib.getAttrFromPath
[ "services" "pgbouncer" "syslog" "enable" ]
config;
in
if enable then 1 else 0))
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "syslog" "syslogIdent" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "syslog_ident" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "syslog" "syslogFacility" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "syslog_facility" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "tls" "client" "sslmode" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "client_tls_sslmode" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "tls" "client" "keyFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "client_tls_key_file" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "tls" "client" "certFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "client_tls_cert_file" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "tls" "client" "caFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "client_tls_ca_file" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "tls" "server" "sslmode" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "server_tls_sslmode" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "tls" "server" "keyFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "server_tls_key_file" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "tls" "server" "certFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "server_tls_cert_file" ])
(lib.mkRenamedOptionModule
[ "services" "pgbouncer" "tls" "server" "caFile" ]
[ "services" "pgbouncer" "settings" "pgbouncer" "server_tls_ca_file" ])
(lib.mkRemovedOptionModule [ "services" "pgbouncer" "extraConfig" ] "Use services.pgbouncer.settings instead.")
];
options.services.pgbouncer = {
enable = lib.mkEnableOption "PostgreSQL connection pooler";
# NixOS settings
package = lib.mkPackageOption pkgs "pgbouncer" { };
enable = mkEnableOption "PostgreSQL connection pooler";
package = mkPackageOption pkgs "pgbouncer" { };
openFirewall = mkOption {
type = types.bool;
openFirewall = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to automatically open the specified TCP port in the firewall.
'';
};
# Generic settings
logFile = mkOption {
type = types.nullOr types.str;
default = null;
settings = lib.mkOption {
type = settingsFormat.type;
default = { };
description = ''
Specifies a log file in addition to journald.
'';
};
listenAddress = mkOption {
type = types.nullOr types.commas;
example = "*";
default = null;
description = ''
Specifies a list (comma-separated) of addresses where to listen for TCP connections.
You may also use * meaning listen on all addresses.
When not set, only Unix socket connections are accepted.
Addresses can be specified numerically (IPv4/IPv6) or by name.
'';
};
listenPort = mkOption {
type = types.port;
default = 6432;
description = ''
Which port to listen on. Applies to both TCP and Unix sockets.
'';
};
poolMode = mkOption {
type = types.enum [ "session" "transaction" "statement" ];
default = "session";
description = ''
Specifies when a server connection can be reused by other clients.
session
Server is released back to pool after client disconnects. Default.
transaction
Server is released back to pool after transaction finishes.
statement
Server is released back to pool after query finishes.
Transactions spanning multiple statements are disallowed in this mode.
'';
};
maxClientConn = mkOption {
type = types.int;
default = 100;
description = ''
Maximum number of client connections allowed.
When this setting is increased, then the file descriptor limits in the operating system
might also have to be increased. Note that the number of file descriptors potentially
used is more than maxClientConn. If each user connects under its own user name to the server,
the theoretical maximum used is:
maxClientConn + (max pool_size * total databases * total users)
If a database user is specified in the connection string (all users connect under the same user name),
the theoretical maximum is:
maxClientConn + (max pool_size * total databases)
The theoretical maximum should never be reached, unless somebody deliberately crafts a special load for it.
Still, it means you should set the number of file descriptors to a safely high number.
'';
};
defaultPoolSize = mkOption {
type = types.int;
default = 20;
description = ''
How many server connections to allow per user/database pair.
Can be overridden in the per-database configuration.
'';
};
maxDbConnections = mkOption {
type = types.int;
default = 0;
description = ''
Do not allow more than this many server connections per database (regardless of user).
This considers the PgBouncer database that the client has connected to,
not the PostgreSQL database of the outgoing connection.
This can also be set per database in the [databases] section.
Note that when you hit the limit, closing a client connection to one pool will
not immediately allow a server connection to be established for another pool,
because the server connection for the first pool is still open.
Once the server connection closes (due to idle timeout),
a new server connection will immediately be opened for the waiting pool.
0 = unlimited
'';
};
maxUserConnections = mkOption {
type = types.int;
default = 0;
description = ''
Do not allow more than this many server connections per user (regardless of database).
This considers the PgBouncer user that is associated with a pool,
which is either the user specified for the server connection
or in absence of that the user the client has connected as.
This can also be set per user in the [users] section.
Note that when you hit the limit, closing a client connection to one pool
will not immediately allow a server connection to be established for another pool,
because the server connection for the first pool is still open.
Once the server connection closes (due to idle timeout), a new server connection
will immediately be opened for the waiting pool.
0 = unlimited
'';
};
ignoreStartupParameters = mkOption {
type = types.nullOr types.commas;
example = "extra_float_digits";
default = null;
description = ''
By default, PgBouncer allows only parameters it can keep track of in startup packets:
client_encoding, datestyle, timezone and standard_conforming_strings.
All others parameters will raise an error.
To allow others parameters, they can be specified here, so that PgBouncer knows that
they are handled by the admin and it can ignore them.
If you need to specify multiple values, use a comma-separated list.
IMPORTANT: When using prometheus-pgbouncer-exporter, you need:
extra_float_digits
<https://github.com/prometheus-community/pgbouncer_exporter#pgbouncer-configuration>
'';
};
# Section [databases]
databases = mkOption {
type = types.attrsOf types.str;
default = {};
example = {
exampledb = "host=/run/postgresql/ port=5432 auth_user=exampleuser dbname=exampledb sslmode=require";
bardb = "host=localhost dbname=bazdb";
foodb = "host=host1.example.com port=5432";
};
description = ''
Detailed information about PostgreSQL database definitions:
<https://www.pgbouncer.org/config.html#section-databases>
'';
};
# Section [users]
users = mkOption {
type = types.attrsOf types.str;
default = {};
example = {
user1 = "pool_mode=session";
};
description = ''
Optional.
Detailed information about PostgreSQL user definitions:
<https://www.pgbouncer.org/config.html#section-users>
'';
};
# Section [peers]
peers = mkOption {
type = types.attrsOf types.str;
default = {};
example = {
"1" = "host=host1.example.com";
"2" = "host=/tmp/pgbouncer-2 port=5555";
};
description = ''
Optional.
Detailed information about PostgreSQL database definitions:
<https://www.pgbouncer.org/config.html#section-peers>
'';
};
# Authentication settings
authType = mkOption {
type = types.enum [ "cert" "md5" "scram-sha-256" "plain" "trust" "any" "hba" "pam" ];
default = "md5";
description = ''
How to authenticate users.
cert
Client must connect over TLS connection with a valid client certificate.
The user name is then taken from the CommonName field from the certificate.
md5
Use MD5-based password check. This is the default authentication method.
authFile may contain both MD5-encrypted and plain-text passwords.
If md5 is configured and a user has a SCRAM secret, then SCRAM authentication is used automatically instead.
scram-sha-256
Use password check with SCRAM-SHA-256. authFile has to contain SCRAM secrets or plain-text passwords.
plain
The clear-text password is sent over the wire. Deprecated.
trust
No authentication is done. The user name must still exist in authFile.
any
Like the trust method, but the user name given is ignored.
Requires that all databases are configured to log in as a specific user.
Additionally, the console database allows any user to log in as admin.
hba
The actual authentication type is loaded from authHbaFile.
This allows different authentication methods for different access paths,
for example: connections over Unix socket use the peer auth method, connections over TCP must use TLS.
pam
PAM is used to authenticate users, authFile is ignored.
This method is not compatible with databases using the authUser option.
The service name reported to PAM is pgbouncer. pam is not supported in the HBA configuration file.
'';
};
authHbaFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/secrets/pgbouncer_hba";
description = ''
HBA configuration file to use when authType is hba.
See HBA file format details:
<https://www.pgbouncer.org/config.html#hba-file-format>
'';
};
authFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/secrets/pgbouncer_authfile";
description = ''
The name of the file to load user names and passwords from.
See section Authentication file format details:
<https://www.pgbouncer.org/config.html#authentication-file-format>
Most authentication types require that either authFile or authUser be set;
otherwise there would be no users defined.
'';
};
authUser = mkOption {
type = types.nullOr types.str;
default = null;
example = "pgbouncer";
description = ''
If authUser is set, then any user not specified in authFile will be queried
through the authQuery query from pg_shadow in the database, using authUser.
The password of authUser will be taken from authFile.
(If the authUser does not require a password then it does not need to be defined in authFile.)
Direct access to pg_shadow requires admin rights.
It's preferable to use a non-superuser that calls a SECURITY DEFINER function instead.
'';
};
authQuery = mkOption {
type = types.nullOr types.str;
default = null;
example = "SELECT usename, passwd FROM pg_shadow WHERE usename=$1";
description = ''
Query to load user's password from database.
Direct access to pg_shadow requires admin rights.
It's preferable to use a non-superuser that calls a SECURITY DEFINER function instead.
Note that the query is run inside the target database.
So if a function is used, it needs to be installed into each database.
'';
};
authDbname = mkOption {
type = types.nullOr types.str;
default = null;
example = "authdb";
description = ''
Database name in the [database] section to be used for authentication purposes.
This option can be either global or overriden in the connection string if this parameter is specified.
'';
};
# TLS settings
tls.client = mkOption {
type = types.nullOr (types.submodule {
options = {
sslmode = mkOption {
type = types.enum [ "disable" "allow" "prefer" "require" "verify-ca" "verify-full" ];
default = "disable";
description = ''
TLS mode to use for connections from clients.
TLS connections are disabled by default.
When enabled, tls.client.keyFile and tls.client.certFile
must be also configured to set up the key and certificate
PgBouncer uses to accept client connections.
disable
Plain TCP. If client requests TLS, it's ignored. Default.
allow
If client requests TLS, it is used. If not, plain TCP is used.
If the client presents a client certificate, it is not validated.
prefer
Same as allow.
require
Client must use TLS. If not, the client connection is rejected.
If the client presents a client certificate, it is not validated.
verify-ca
Client must use TLS with valid client certificate.
verify-full
Same as verify-ca
'';
};
certFile = mkOption {
type = types.path;
example = "/secrets/pgbouncer.key";
description = "Path to certificate for private key. Clients can validate it";
};
keyFile = mkOption {
type = types.path;
example = "/secrets/pgbouncer.crt";
description = "Path to private key for PgBouncer to accept client connections";
};
caFile = mkOption {
type = types.path;
example = "/secrets/pgbouncer.crt";
description = "Path to root certificate file to validate client certificates";
};
};
});
default = null;
description = ''
<https://www.pgbouncer.org/config.html#tls-settings>
'';
};
tls.server = mkOption {
type = types.nullOr (types.submodule {
options = {
sslmode = mkOption {
type = types.enum [ "disable" "allow" "prefer" "require" "verify-ca" "verify-full" ];
default = "disable";
description = ''
TLS mode to use for connections to PostgreSQL servers.
TLS connections are disabled by default.
disable
Plain TCP. TLS is not even requested from the server. Default.
allow
FIXME: if server rejects plain, try TLS?
prefer
TLS connection is always requested first from PostgreSQL.
If refused, the connection will be established over plain TCP.
Server certificate is not validated.
require
Connection must go over TLS. If server rejects it, plain TCP is not attempted.
Server certificate is not validated.
verify-ca
Connection must go over TLS and server certificate must be valid according to tls.server.caFile.
Server host name is not checked against certificate.
verify-full
Connection must go over TLS and server certificate must be valid according to tls.server.caFile.
Server host name must match certificate information.
'';
};
certFile = mkOption {
type = types.path;
example = "/secrets/pgbouncer_server.key";
description = "Certificate for private key. PostgreSQL server can validate it.";
};
keyFile = mkOption {
type = types.path;
example = "/secrets/pgbouncer_server.crt";
description = "Private key for PgBouncer to authenticate against PostgreSQL server.";
};
caFile = mkOption {
type = types.path;
example = "/secrets/pgbouncer_server.crt";
description = "Root certificate file to validate PostgreSQL server certificates.";
};
};
});
default = null;
description = ''
<https://www.pgbouncer.org/config.html#tls-settings>
'';
};
# Log settings
syslog = mkOption {
type = types.nullOr (types.submodule {
options = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Toggles syslog on/off.
'';
};
syslogIdent = mkOption {
type = types.str;
default = "pgbouncer";
description = ''
Under what name to send logs to syslog.
'';
};
syslogFacility = mkOption {
type = types.enum [ "auth" "authpriv" "daemon" "user" "local0" "local1" "local2" "local3" "local4" "local5" "local6" "local7" ];
default = "daemon";
description = ''
Under what facility to send logs to syslog.
'';
};
};
});
default = null;
description = ''
<https://www.pgbouncer.org/config.html#log-settings>
'';
};
verbose = lib.mkOption {
type = lib.types.int;
default = 0;
description = ''
Increase verbosity. Mirrors the -v switch on the command line.
'';
};
# Console access control
adminUsers = mkOption {
type = types.nullOr types.commas;
default = null;
description = ''
Comma-separated list of database users that are allowed to connect and run all commands on the console.
Ignored when authType is any, in which case any user name is allowed in as admin.
'';
};
statsUsers = mkOption {
type = types.nullOr types.commas;
default = null;
description = ''
Comma-separated list of database users that are allowed to connect and run read-only queries on the console.
That means all SHOW commands except SHOW FDS.
Configuration for PgBouncer, see <https://www.pgbouncer.org/config.html>
for supported values.
'';
};
@ -550,42 +145,32 @@ in {
'';
};
user = mkOption {
type = types.str;
user = lib.mkOption {
type = lib.types.str;
default = "pgbouncer";
description = ''
The user pgbouncer is run as.
'';
};
group = mkOption {
type = types.str;
group = lib.mkOption {
type = lib.types.str;
default = "pgbouncer";
description = ''
The group pgbouncer is run as.
'';
};
homeDir = mkOption {
type = types.path;
homeDir = lib.mkOption {
type = lib.types.path;
default = "/var/lib/pgbouncer";
description = ''
Specifies the home directory.
'';
};
# Extra settings
extraConfig = mkOption {
type = types.lines;
description = ''
Any additional text to be appended to config.ini
<https://www.pgbouncer.org/config.html>.
'';
default = "";
};
};
config = mkIf cfg.enable {
config = lib.mkIf cfg.enable {
users.groups.${cfg.group} = { };
users.users.${cfg.user} = {
description = "PgBouncer service user";
@ -595,26 +180,36 @@ in {
isSystemUser = true;
};
environment.etc.${configPath}.source = configFile;
# Default to RuntimeDirectory instead of /tmp.
services.pgbouncer.settings.pgbouncer.unix_socket_dir = lib.mkDefault "/run/pgbouncer";
systemd.services.pgbouncer = {
description = "PgBouncer - PostgreSQL connection pooler";
wants = [ "network-online.target" ] ++ lib.optional config.services.postgresql.enable "postgresql.service";
after = [ "network-online.target" ] ++ lib.optional config.services.postgresql.enable "postgresql.service";
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
reloadTriggers = [ configFile ];
serviceConfig = {
Type = "notify";
Type = "notify-reload";
User = cfg.user;
Group = cfg.group;
ExecStart = "${lib.getExe pkgs.pgbouncer} ${confFile}";
ExecReload = "${pkgs.coreutils}/bin/kill -SIGHUP $MAINPID";
ExecStart = utils.escapeSystemdExecArgs [
(lib.getExe pkgs.pgbouncer)
"/etc/${configPath}"
];
RuntimeDirectory = "pgbouncer";
LimitNOFILE = cfg.openFilesLimit;
};
};
networking.firewall.allowedTCPPorts = optional cfg.openFirewall cfg.listenPort;
networking.firewall = lib.mkIf cfg.openFirewall {
allowedTCPPorts = [
(cfg.settings.pgbouncer.listen_port or 6432)
];
};
};
meta.maintainers = [ maintainers._1000101 ];
meta.maintainers = [ lib.maintainers._1000101 ];
}

View File

@ -125,6 +125,8 @@ in
Graphical session to pre-select in the session chooser (only effective for GDM, LightDM and SDDM).
On GDM, LightDM and SDDM, it will also be used as a session for auto-login.
Set this option to empty string to get an error with a list of currently available sessions.
'';
};

View File

@ -5,11 +5,22 @@
...
}:
let
cfg = config.services.graphical-desktop;
xcfg = config.services.xserver;
dmcfg = config.services.displayManager;
in
{
config = lib.mkIf (xcfg.enable || dmcfg.enable) {
options = {
services.graphical-desktop.enable =
lib.mkEnableOption "bits and pieces required for a graphical desktop session"
// {
default = xcfg.enable || dmcfg.enable;
defaultText = lib.literalExpression "(config.services.xserver.enable || config.services.displayManager.enable)";
internal = true;
};
};
config = lib.mkIf cfg.enable {
# The default max inotify watches is 8192.
# Nowadays most apps require a good number of inotify watches,
# the value below is used by default on several other distros.

View File

@ -367,18 +367,6 @@ in
message = ''
PgBouncer exporter needs either connectionStringFile or connectionString configured"
'';
} {
assertion = cfg.pgbouncer.enable -> (
config.services.pgbouncer.ignoreStartupParameters != null && builtins.match ".*extra_float_digits.*" config.services.pgbouncer.ignoreStartupParameters != null
);
message = ''
Prometheus PgBouncer exporter requires including `extra_float_digits` in services.pgbouncer.ignoreStartupParameters
Example:
services.pgbouncer.ignoreStartupParameters = extra_float_digits;
See https://github.com/prometheus-community/pgbouncer_exporter#pgbouncer-configuration
'';
} {
assertion = cfg.sql.enable -> (
(cfg.sql.configFile == null) != (cfg.sql.configuration == null)
@ -437,11 +425,6 @@ in
config.services.prometheus.exporters.pgbouncer.connectionString is insecure. Use connectionStringFile instead.
''
)
(mkIf
(cfg.pgbouncer.enable && config.services.pgbouncer.authType != "any") ''
Admin user (with password or passwordless) MUST exist in the services.pgbouncer.authFile if authType other than any is used.
''
)
] ++ config.services.prometheus.exporters.warnings;
}] ++ [(mkIf config.services.prometheus.exporters.rtl_433.enable {
hardware.rtl-sdr.enable = mkDefault true;

View File

@ -4,15 +4,21 @@ let
cfg = config.services.prometheus.exporters.pgbouncer;
inherit (lib)
mkOption
mkPackageOption
types
optionals
optionalString
getExe
getExe'
escapeShellArg
escapeShellArgs
concatStringsSep
;
in
{
port = 9127;
extraOpts = {
package = mkPackageOption pkgs "prometheus-pgbouncer-exporter" { };
telemetryPath = mkOption {
type = types.str;
@ -31,8 +37,10 @@ in
NOTE: You MUST keep pgbouncer as database name (special internal db)!!!
NOTE: Admin user (with password or passwordless) MUST exist
in the services.pgbouncer.authFile if authType other than any is used.
NOTE: ignore_startup_parameters MUST contain "extra_float_digits".
NOTE: Admin user (with password or passwordless) MUST exist in the
auth_file if auth_type other than "any" is used.
WARNING: this secret is stored in the world-readable Nix store!
Use {option}`connectionStringFile` instead.
@ -49,8 +57,10 @@ in
NOTE: You MUST keep pgbouncer as database name (special internal db)!!!
NOTE: Admin user (with password or passwordless) MUST exist
in the services.pgbouncer.authFile if authType other than any is used.
NOTE: ignore_startup_parameters MUST contain "extra_float_digits".
NOTE: Admin user (with password or passwordless) MUST exist in the
auth_file if auth_type other than "any" is used.
{option}`connectionStringFile` takes precedence over {option}`connectionString`
'';
@ -81,7 +91,7 @@ in
};
logLevel = mkOption {
type = types.enum ["debug" "info" "warn" "error" ];
type = types.enum [ "debug" "info" "warn" "error" ];
default = "info";
description = ''
Only log messages with the given severity or above.
@ -89,7 +99,7 @@ in
};
logFormat = mkOption {
type = types.enum ["logfmt" "json"];
type = types.enum [ "logfmt" "json" ];
default = "logfmt";
description = ''
Output format of log messages. One of: [logfmt, json]
@ -116,35 +126,30 @@ in
serviceOpts = {
after = [ "pgbouncer.service" ];
serviceConfig = let
startScript = pkgs.writeShellScriptBin "pgbouncer-start" "${concatStringsSep " " ([
"${pkgs.prometheus-pgbouncer-exporter}/bin/pgbouncer_exporter"
"--web.listen-address ${cfg.listenAddress}:${toString cfg.port}"
"--pgBouncer.connectionString ${if cfg.connectionStringFile != null then
"$(head -n1 ${cfg.connectionStringFile})" else "${escapeShellArg cfg.connectionString}"}"
]
++ optionals (cfg.telemetryPath != null) [
"--web.telemetry-path ${escapeShellArg cfg.telemetryPath}"
]
++ optionals (cfg.pidFile != null) [
"--pgBouncer.pid-file= ${escapeShellArg cfg.pidFile}"
]
++ optionals (cfg.logLevel != null) [
"--log.level ${escapeShellArg cfg.logLevel}"
]
++ optionals (cfg.logFormat != null) [
"--log.format ${escapeShellArg cfg.logFormat}"
]
++ optionals (cfg.webSystemdSocket != false) [
"--web.systemd-socket ${escapeShellArg cfg.webSystemdSocket}"
]
++ optionals (cfg.webConfigFile != null) [
"--web.config.file ${escapeShellArg cfg.webConfigFile}"
]
++ cfg.extraFlags)}";
in
{
ExecStart = "${startScript}/bin/pgbouncer-start";
};
script = optionalString (cfg.connectionStringFile != null) ''
connectionString=$(${escapeShellArgs [
(getExe' pkgs.coreutils "cat") "--" cfg.connectionStringFile
]})
'' + concatStringsSep " " ([
"exec -- ${escapeShellArg (getExe cfg.package)}"
"--web.listen-address ${cfg.listenAddress}:${toString cfg.port}"
"--pgBouncer.connectionString ${if cfg.connectionStringFile != null
then "\"$connectionString\""
else "${escapeShellArg cfg.connectionString}"}"
] ++ optionals (cfg.telemetryPath != null) [
"--web.telemetry-path ${escapeShellArg cfg.telemetryPath}"
] ++ optionals (cfg.pidFile != null) [
"--pgBouncer.pid-file ${escapeShellArg cfg.pidFile}"
] ++ optionals (cfg.logLevel != null) [
"--log.level ${escapeShellArg cfg.logLevel}"
] ++ optionals (cfg.logFormat != null) [
"--log.format ${escapeShellArg cfg.logFormat}"
] ++ optionals (cfg.webSystemdSocket != false) [
"--web.systemd-socket ${escapeShellArg cfg.webSystemdSocket}"
] ++ optionals (cfg.webConfigFile != null) [
"--web.config.file ${escapeShellArg cfg.webConfigFile}"
] ++ cfg.extraFlags);
serviceConfig.RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" ];
};
}

View File

@ -0,0 +1,98 @@
{
lib,
config,
pkgs,
...
}:
let
cfg = config.services.homebox;
inherit (lib)
mkEnableOption
mkPackageOption
mkDefault
types
mkIf
;
in
{
options.services.homebox = {
enable = mkEnableOption "homebox";
package = mkPackageOption pkgs "homebox" { };
settings = lib.mkOption {
type = types.attrsOf types.str;
defaultText = ''
HBOX_STORAGE_DATA = "/var/lib/homebox/data";
HBOX_STORAGE_SQLITE_URL = "/var/lib/homebox/data/homebox.db?_pragma=busy_timeout=999&_pragma=journal_mode=WAL&_fk=1";
HBOX_OPTIONS_ALLOW_REGISTRATION = "false";
HBOX_MODE = "production";
'';
description = ''
The homebox configuration as Environment variables. For definitions and available options see the upstream
[documentation](https://hay-kot.github.io/homebox/quick-start/#env-variables-configuration).
'';
};
};
config = mkIf cfg.enable {
users.users.homebox = {
isSystemUser = true;
group = "homebox";
};
users.groups.homebox = { };
services.homebox.settings = {
HBOX_STORAGE_DATA = mkDefault "/var/lib/homebox/data";
HBOX_STORAGE_SQLITE_URL = mkDefault "/var/lib/homebox/data/homebox.db?_pragma=busy_timeout=999&_pragma=journal_mode=WAL&_fk=1";
HBOX_OPTIONS_ALLOW_REGISTRATION = mkDefault "false";
HBOX_MODE = mkDefault "production";
};
systemd.services.homebox = {
after = [ "network.target" ];
environment = cfg.settings;
serviceConfig = {
User = "homebox";
Group = "homebox";
ExecStart = lib.getExe cfg.package;
StateDirectory = "homebox";
WorkingDirectory = "/var/lib/homebox";
LimitNOFILE = "1048576";
PrivateTmp = true;
PrivateDevices = true;
StateDirectoryMode = "0700";
Restart = "always";
# Hardening
CapabilityBoundingSet = "";
LockPersonality = true;
MemoryDenyWriteExecute = true;
PrivateUsers = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProcSubset = "pid";
ProtectSystem = "strict";
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
"AF_NETLINK"
];
RestrictNamespaces = true;
RestrictRealtime = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
"@system-service"
"@pkey"
];
RestrictSUIDSGID = true;
PrivateMounts = true;
UMask = "0077";
};
wantedBy = [ "multi-user.target" ];
};
};
meta.maintainers = with lib.maintainers; [ patrickdag ];
}

View File

@ -421,6 +421,7 @@ in {
hddfancontrol = handleTest ./hddfancontrol.nix {};
hedgedoc = handleTest ./hedgedoc.nix {};
herbstluftwm = handleTest ./herbstluftwm.nix {};
homebox = handleTest ./homebox.nix {};
homepage-dashboard = handleTest ./homepage-dashboard.nix {};
honk = runTest ./honk.nix;
installed-tests = pkgs.recurseIntoAttrs (handleTest ./installed-tests {});

26
nixos/tests/homebox.nix Normal file
View File

@ -0,0 +1,26 @@
import ./make-test-python.nix (
{ pkgs, ... }:
let
port = "7745";
in
{
name = "homebox";
meta = with pkgs.lib.maintainers; {
maintainers = [ patrickdag ];
};
nodes.machine = {
services.homebox = {
enable = true;
settings.HBOX_WEB_PORT = port;
};
};
testScript = ''
machine.wait_for_unit("homebox.service")
machine.wait_for_open_port(${port})
machine.succeed("curl --fail -X GET 'http://localhost:${port}/'")
out = machine.succeed("curl --fail 'http://localhost:${port}/api/v1/status'")
assert '"health":true' in out
'';
}
)

View File

@ -1,20 +1,12 @@
import ./make-test-python.nix ({ pkgs, ... } :
let
testAuthFile = pkgs.writeTextFile {
name = "authFile";
text = ''
"testuser" "testpass"
'';
};
in
{
import ./make-test-python.nix ({ lib, pkgs, ... }: {
name = "pgbouncer";
meta = with pkgs.lib.maintainers; {
meta = with lib.maintainers; {
maintainers = [ _1000101 ];
};
nodes = {
one = { config, pkgs, ... }: {
nodes = {
one = { pkgs, ... }: {
systemd.services.postgresql = {
postStart = ''
${pkgs.postgresql}/bin/psql -U postgres -c "ALTER ROLE testuser WITH LOGIN PASSWORD 'testpass'";
@ -26,10 +18,7 @@ in
postgresql = {
enable = true;
ensureDatabases = [ "testdb" ];
ensureUsers = [
{
name = "testuser";
}];
ensureUsers = [{ name = "testuser"; }];
authentication = ''
local testdb testuser scram-sha-256
'';
@ -37,10 +26,19 @@ in
pgbouncer = {
enable = true;
listenAddress = "localhost";
databases = { test = "host=/run/postgresql/ port=5432 auth_user=testuser dbname=testdb"; };
authType = "scram-sha-256";
authFile = testAuthFile;
openFirewall = true;
settings = {
pgbouncer = {
listen_addr = "localhost";
auth_type = "scram-sha-256";
auth_file = builtins.toFile "pgbouncer-users.txt" ''
"testuser" "testpass"
'';
};
databases = {
test = "host=/run/postgresql port=5432 auth_user=testuser dbname=testdb";
};
};
};
};
};

View File

@ -1001,13 +1001,24 @@ let
metricProvider = {
services.postgresql.enable = true;
services.pgbouncer = {
# https://github.com/prometheus-community/pgbouncer_exporter#pgbouncer-configuration
ignoreStartupParameters = "extra_float_digits";
enable = true;
listenAddress = "*";
databases = { postgres = "host=/run/postgresql/ port=5432 auth_user=postgres dbname=postgres"; };
authType = "any";
maxClientConn = 99;
settings = {
pgbouncer = {
listen_addr = "*";
auth_type = "any";
max_client_conn = 99;
# https://github.com/prometheus-community/pgbouncer_exporter#pgbouncer-configuration
ignore_startup_parameters = "extra_float_digits";
};
databases = {
postgres = concatStringsSep " " [
"host=/run/postgresql"
"port=5432"
"auth_user=postgres"
"dbname=postgres"
];
};
};
};
};
exporterTest = ''

View File

@ -366,9 +366,7 @@ Example: Given a project that has no tags / released versions at all, or applies
Because every version of a package in Nixpkgs creates a potential maintenance burden, old versions of a package should not be kept unless there is a good reason to do so. For instance, Nixpkgs contains several versions of GCC because other packages dont build with the latest version of GCC. Other examples are having both the latest stable and latest pre-release version of a package, or to keep several major releases of an application that differ significantly in functionality.
If there is only one version of a package, its Nix expression should be named `e2fsprogs/default.nix`. If there are multiple versions, this should be reflected in the filename, e.g. `e2fsprogs/1.41.8.nix` and `e2fsprogs/1.41.9.nix`. The version in the filename should leave out unnecessary detail. For instance, if we keep the latest Firefox 2.0.x and 3.5.x versions in Nixpkgs, they should be named `firefox/2.0.nix` and `firefox/3.5.nix`, respectively (which, at a given point, might contain versions `2.0.0.20` and `3.5.4`). If a version requires many auxiliary files, you can use a subdirectory for each version, e.g. `firefox/2.0/default.nix` and `firefox/3.5/default.nix`.
All versions of a package _must_ be included in `all-packages.nix` to make sure that they evaluate correctly.
If there is only one version of a package, its Nix expression should be named (e.g) `pkgs/by-name/xy/xyz/package.nix`. If there are multiple versions, this should be reflected in the attribute name. If you wish to share code between the Nix expressions of each version, you cannot rely upon `pkgs/by-name`'s automatic attribute creation, and must create the attributes yourself in `all-packages.nix`. See also [`pkgs/by-name/README.md`'s section on this topic](https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/README.md#recommendation-for-new-packages-with-multiple-versions).
## Meta attributes

View File

@ -8,11 +8,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "amarok";
version = "3.0.1";
version = "3.1.0";
src = fetchurl {
url = "mirror://kde/stable/amarok/${finalAttrs.version}/amarok-${finalAttrs.version}.tar.xz";
sha256 = "sha256-S+zyrp3cvoYRA+ZCFDaireIvU4yxw2ANTmZ/cb6ljys=";
sha256 = "sha256-yXuZZ/qPFbjp9N+2YYTKxqfsncZloQW8UWjY5yD+Fus=";
};
outputs = [ "out" "doc" ];

View File

@ -27,7 +27,7 @@ python311Packages.buildPythonApplication rec {
./disable-autoupdate.patch
];
postPatch = with lib; ''
postPatch = ''
sed -i -re 's,^( *gpodder_dir *= *).*,\1"'"$out"'",' bin/gpodder
'';

View File

@ -4,13 +4,13 @@
stdenv.mkDerivation rec {
pname = "seq66";
version = "0.99.12";
version = "0.99.13";
src = fetchFromGitHub {
owner = "ahlstromcj";
repo = "seq66";
rev = version;
hash = "sha256-+EU0UdmZaDnhN142yR/r0tK1FKBbuFPmde6iSS26Tjo=";
hash = "sha256-hR8kEt3tKnH96JmmkMuY0WWxxp9YTcSvsJvICKNjvyQ=";
};
nativeBuildInputs = [ autoreconfHook pkg-config qttools which wrapQtAppsHook ];

View File

@ -2,7 +2,7 @@
let
pname = "erigon";
version = "2.60.5";
version = "2.60.6";
in
buildGoModule {
inherit pname version;
@ -11,11 +11,11 @@ buildGoModule {
owner = "ledgerwatch";
repo = pname;
rev = "v${version}";
hash = "sha256-sI5XlPoHjAN3QsNWJXhi+qHDPVpcLqgX1hMa6gN5Iwc=";
hash = "sha256-208gJTLaVEikH92ZDEULPtfnKJyZhZCRCDfCxewABK4=";
fetchSubmodules = true;
};
vendorHash = "sha256-2Gx3ZUq1FDGEPW4qTwK916AGVMwoIDY97rkuEzRXP1U=";
vendorHash = "sha256-TUK7obI1wOXroI1NE1GfIP+NMW909+z92Wpy9B/soY0=";
proxyVendor = true;
# Build errors in mdbx when format hardening is enabled:

View File

@ -10,8 +10,6 @@
name ? "zig-packages",
}:
with lib;
let
unpackZigArtifact =
{ name, artifact }:
@ -39,9 +37,9 @@ let
hash,
}:
let
parts = splitString "#" url;
base = elemAt parts 0;
rev = elemAt parts 1;
parts = lib.splitString "#" url;
base = lib.elemAt parts 0;
rev = lib.elemAt parts 1;
in
fetchgit {
inherit name rev hash;
@ -56,9 +54,9 @@ let
hash,
}:
let
parts = splitString "://" url;
proto = elemAt parts 0;
path = elemAt parts 1;
parts = lib.splitString "://" url;
proto = lib.elemAt parts 0;
path = lib.elemAt parts 1;
fetcher = {
"git+http" = fetchGitZig {
inherit name hash;

View File

@ -17,8 +17,8 @@ let
sha256Hash = "sha256-Qn5NNW2Rt6f9QiEUamIumme45uUVeTiMJ/9niAC6ilM=";
};
latestVersion = {
version = "2024.2.1.1"; # "Android Studio Ladybug | 2024.2.1 Canary 5"
sha256Hash = "sha256-yfb23cYwRghUA04Ckf4I2yfqmdED9sf//0FSeWL+ze4=";
version = "2024.2.1.3"; # "Android Studio Ladybug | 2024.2.1 Canary 7"
sha256Hash = "sha256-HECowgJ7b6PjYHb+lRuFLzl9wWwWfFWNI0cSijwG7LA=";
};
in {
# Attributes are named by their corresponding release channels

View File

@ -210,9 +210,7 @@ in rec {
# Gather up the desired plugins.
pluginEnv = buildEnv {
name = "eclipse-plugins";
paths =
with lib;
filter (x: x ? isEclipsePlugin) (closePropagation plugins);
paths = lib.filter (x: x ? isEclipsePlugin) (lib.closePropagation plugins);
};
# Prepare the JVM arguments to add to the ini file. We here also

View File

@ -72,14 +72,14 @@ self: let
sourceRoot = "ada-mode-${self.ada-mode.version}";
nativeBuildInputs = [
nativeBuildInputs = old.nativeBuildInputs ++ [
buildPackages.gnat
buildPackages.gprbuild
buildPackages.dos2unix
buildPackages.re2c
];
buildInputs = [
buildInputs = old.buildInputs ++ [
pkgs.gnatPackages.gnatcoll-xref
];

View File

@ -15,6 +15,10 @@ lib.packagesFromDirectoryRecursive {
inherit (pkgs) codeium;
};
consult-gh = callPackage ./manual-packages/consult-gh {
inherit (pkgs) gh;
};
lsp-bridge = callPackage ./manual-packages/lsp-bridge {
inherit (pkgs) basedpyright git go gopls python3;
};

View File

@ -2,8 +2,12 @@
lib,
fetchFromGitHub,
rustPlatform,
stdenv,
}:
let
libExt = stdenv.hostPlatform.extensions.sharedLibrary;
in
rustPlatform.buildRustPackage {
pname = "lspce-module";
version = "1.1.0-unstable-2024-07-14";
@ -22,13 +26,8 @@ rustPlatform.buildRustPackage {
"--skip=msg::tests::serialize_request_with_null_params"
];
# rename module without changing either suffix or location
# use for loop because there seems to be two modules on darwin systems
# https://github.com/zbelial/lspce/issues/7#issue-1783708570
postInstall = ''
for f in $out/lib/*; do
mv --verbose $f $out/lib/lspce-module.''${f##*.}
done
mv --verbose $out/lib/liblspce_module${libExt} $out/lib/lspce-module${libExt}
'';
meta = {

View File

@ -1,29 +1,27 @@
{ stdenv, fetchurl, emacs, lib }:
{
melpaBuild,
fetchzip,
lib,
}:
stdenv.mkDerivation rec {
melpaBuild rec {
pname = "session-management-for-emacs";
ename = "session";
version = "2.2a";
src = fetchurl {
src = fetchzip {
url = "mirror://sourceforge/emacs-session/session-${version}.tar.gz";
sha256 = "37dfba7420b5164eab90dafa9e8bf9a2c8f76505fe2fefa14a64e81fa76d0144";
hash = "sha256-lc6NIX+lx97qCs5JqG7x0iVE6ki09Gy7DEQuPW2c+7s=";
};
buildInputs = [ emacs ];
installPhase = ''
mkdir -p "$out/share/emacs/site-lisp"
cp lisp/*.el "$out/share/emacs/site-lisp/"
'';
meta = with lib; {
/* installation: add to your ~/.emacs
meta = {
/*
installation: add to your ~/.emacs
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
*/
description = "Small session management for emacs";
homepage = "https://emacs-session.sourceforge.net/";
license = licenses.gpl2;
maintainers = [ ];
license = lib.licenses.gpl2;
};
}

View File

@ -199,7 +199,7 @@ let
stripDebugList = [ "share" ];
});
emacsql-sqlite = super.emacsql-sqlite.overrideAttrs (old: {
emacsql-sqlite = super.emacsql-sqlite.overrideAttrs (old: lib.optionalAttrs (lib.versionOlder old.version "20240808.2016") {
buildInputs = old.buildInputs ++ [ pkgs.sqlite ];
postBuild = ''
@ -321,9 +321,8 @@ let
'';
dontUseCmakeBuildDir = true;
doCheck = pkgs.stdenv.isLinux;
packageRequires = [ self.emacs ];
buildInputs = [ pkgs.llvmPackages.libclang self.emacs ];
nativeBuildInputs = [ pkgs.cmake pkgs.llvmPackages.llvm ];
buildInputs = old.buildInputs ++ [ pkgs.llvmPackages.libclang ];
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.cmake pkgs.llvmPackages.llvm ];
});
# tries to write a log file to $HOME
@ -545,7 +544,7 @@ let
# Telega has a server portion for it's network protocol
telega = super.telega.overrideAttrs (old: {
buildInputs = old.buildInputs ++ [ pkgs.tdlib ];
nativeBuildInputs = [ pkgs.pkg-config ];
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.pkg-config ];
postPatch = ''
substituteInPlace telega-customize.el \
@ -601,7 +600,7 @@ let
export EZMQ_LIBDIR=$(mktemp -d)
make
'';
nativeBuildInputs = [
nativeBuildInputs = old.nativeBuildInputs ++ [
pkgs.autoconf
pkgs.automake
pkgs.pkg-config
@ -687,7 +686,7 @@ let
};
vterm = super.vterm.overrideAttrs (old: {
nativeBuildInputs = [ pkgs.cmake ];
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.cmake ];
buildInputs = old.buildInputs ++ [ self.emacs pkgs.libvterm-neovim ];
cmakeFlags = [
"-DEMACS_SOURCE=${self.emacs.src}"

View File

@ -35,7 +35,23 @@ let
super = imported;
overrides = { };
overrides = {
p4-16-mode = super.p4-16-mode.overrideAttrs {
# workaround https://github.com/NixOS/nixpkgs/issues/301795
prePatch = ''
mkdir tmp-untar-dir
pushd tmp-untar-dir
tar --extract --verbose --file=$src
content_directory=$(echo p4-16-mode-*)
cp --verbose $content_directory/p4-16-mode-pkg.el $content_directory/p4-pkg.el
src=$PWD/$content_directory.tar
tar --create --verbose --file=$src $content_directory
popd
'';
};
};
in
super // overrides

View File

@ -30,6 +30,21 @@ self: let
super = imported;
overrides = {
p4-16-mode = super.p4-16-mode.overrideAttrs {
# workaround https://github.com/NixOS/nixpkgs/issues/301795
prePatch = ''
mkdir tmp-untar-dir
pushd tmp-untar-dir
tar --extract --verbose --file=$src
content_directory=$(echo p4-16-mode-*)
cp --verbose $content_directory/p4-16-mode-pkg.el $content_directory/p4-pkg.el
src=$PWD/$content_directory.tar
tar --create --verbose --file=$src $content_directory
popd
'';
};
};
in super // overrides);

View File

@ -26,7 +26,7 @@ in
# Definitions is an attribute set.
create = { definitions ? default }: with lib; stdenv.mkDerivation {
create = { definitions ? default }: stdenv.mkDerivation {
name = "jupyter-kernels";
@ -37,14 +37,14 @@ in
installPhase = ''
mkdir kernels
${concatStringsSep "\n" (mapAttrsToList (kernelName: unfilteredKernel:
${lib.concatStringsSep "\n" (lib.mapAttrsToList (kernelName: unfilteredKernel:
let
allowedKernelKeys = ["argv" "displayName" "language" "interruptMode" "env" "metadata" "logo32" "logo64" "extraPaths"];
kernel = filterAttrs (n: v: (any (x: x == n) allowedKernelKeys)) unfilteredKernel;
kernel = lib.filterAttrs (n: v: (lib.any (x: x == n) allowedKernelKeys)) unfilteredKernel;
config = builtins.toJSON (
kernel
// {display_name = if (kernel.displayName != "") then kernel.displayName else kernelName;}
// (optionalAttrs (kernel ? interruptMode) { interrupt_mode = kernel.interruptMode; })
// (lib.optionalAttrs (kernel ? interruptMode) { interrupt_mode = kernel.interruptMode; })
);
extraPaths = kernel.extraPaths or {}
// lib.optionalAttrs (kernel.logo32 != null) { "logo-32x32.png" = kernel.logo32; }
@ -64,7 +64,7 @@ in
meta = {
description = "Wrapper to create jupyter notebook kernel definitions";
homepage = "https://jupyter.org/";
maintainers = with maintainers; [ aborsu ];
maintainers = with lib.maintainers; [ aborsu ];
};
};
}

View File

@ -2,21 +2,19 @@
lib: overridden:
with overridden;
let
# Removing recurseForDerivation prevents derivations of aliased attribute
# set to appear while listing all the packages available.
removeRecurseForDerivations = alias: with lib;
removeRecurseForDerivations = alias:
if alias.recurseForDerivations or false then
removeAttrs alias ["recurseForDerivations"]
lib.removeAttrs alias ["recurseForDerivations"]
else alias;
# Disabling distribution prevents top-level aliases for non-recursed package
# sets from building on Hydra.
removeDistribute = alias: with lib;
if isDerivation alias then
dontDistribute alias
removeDistribute = alias:
if lib.isDerivation alias then
lib.dontDistribute alias
else alias;
# Make sure that we are not shadowing something from
@ -37,11 +35,11 @@ let
in
mapAliases ({
kak-auto-pairs = auto-pairs-kak; # backwards compat, added 2021-01-04
kak-buffers = kakoune-buffers; # backwards compat, added 2021-01-04
kak-byline = byline-kak; # backwards compat, added 2023-10-22
kak-fzf = fzf-kak; # backwards compat, added 2021-01-04
kak-powerline = powerline-kak; # backwards compat, added 2021-01-04
kak-prelude = prelude-kak; # backwards compat, added 2021-01-04
kak-vertical-selection = kakoune-vertical-selection; # backwards compat, added 2021-01-04
kak-auto-pairs = overridden.auto-pairs-kak; # backwards compat, added 2021-01-04
kak-buffers = overridden.kakoune-buffers; # backwards compat, added 2021-01-04
kak-byline = overridden.byline-kak; # backwards compat, added 2023-10-22
kak-fzf = overridden.fzf-kak; # backwards compat, added 2021-01-04
kak-powerline = overridden.powerline-kak; # backwards compat, added 2021-01-04
kak-prelude = overridden.prelude-kak; # backwards compat, added 2021-01-04
kak-vertical-selection = overridden.kakoune-vertical-selection; # backwards compat, added 2021-01-04
} // deprecations)

View File

@ -158,13 +158,13 @@ in
--replace-fail '@quarto@' ${quarto}
'';
hunspellDictionaries = with lib; filter isDerivation (unique (attrValues hunspellDicts));
hunspellDictionaries = lib.filter lib.isDerivation (lib.unique (lib.attrValues hunspellDicts));
# These dicts contain identically-named dict files, so we only keep the
# -large versions in case of clashes
largeDicts = with lib; filter (d: hasInfix "-large-wordlist" d.name) hunspellDictionaries;
otherDicts = with lib; filter
(d: !(hasAttr "dictFileName" d &&
elem d.dictFileName (map (d: d.dictFileName) largeDicts)))
largeDicts = lib.filter (d: lib.hasInfix "-large-wordlist" d.name) hunspellDictionaries;
otherDicts = lib.filter
(d: !(lib.hasAttr "dictFileName" d &&
lib.elem d.dictFileName (map (d: d.dictFileName) largeDicts)))
hunspellDictionaries;
dictionaries = largeDicts ++ otherDicts;

View File

@ -6,16 +6,16 @@ final: prev:
let
# Removing recurseForDerivation prevents derivations of aliased attribute
# set to appear while listing all the packages available.
removeRecurseForDerivations = alias: with lib;
removeRecurseForDerivations = alias:
if alias.recurseForDerivations or false then
removeAttrs alias ["recurseForDerivations"]
lib.removeAttrs alias ["recurseForDerivations"]
else alias;
# Disabling distribution prevents top-level aliases for non-recursed package
# sets from building on Hydra.
removeDistribute = alias: with lib;
if isDerivation alias then
dontDistribute alias
removeDistribute = alias:
if lib.isDerivation alias then
lib.dontDistribute alias
else alias;
# Make sure that we are not shadowing something from

View File

@ -3923,6 +3923,18 @@ final: prev:
meta.homepage = "https://github.com/megaannum/forms/";
};
fortune-nvim = buildVimPlugin {
pname = "fortune.nvim";
version = "2024-07-18";
src = fetchFromGitHub {
owner = "rubiin";
repo = "fortune.nvim";
rev = "29a99fbf887a2d48693f1eaa1893f84cde60af54";
sha256 = "0kyi2pl5d1h7ycxsdvqdyg5zmjfxj7jpx7lk3bf2d14wvnvcwpb4";
};
meta.homepage = "https://github.com/rubiin/fortune.nvim/";
};
friendly-snippets = buildVimPlugin {
pname = "friendly-snippets";
version = "2024-07-15";
@ -4905,6 +4917,18 @@ final: prev:
meta.homepage = "https://github.com/3rd/image.nvim/";
};
img-clip-nvim = buildVimPlugin {
pname = "img-clip.nvim";
version = "2024-06-05";
src = fetchFromGitHub {
owner = "HakonHarnes";
repo = "img-clip.nvim";
rev = "1924e20ab19afec9779109d083b6e5f8bee8fb17";
sha256 = "0q4bv6bca8bhkc98gc4lmlp3b2nrh6bj7yyb99bk3lnccr0jmj6g";
};
meta.homepage = "https://github.com/HakonHarnes/img-clip.nvim/";
};
impatient-nvim = buildVimPlugin {
pname = "impatient.nvim";
version = "2023-05-05";

View File

@ -326,6 +326,7 @@ https://github.com/akinsho/flutter-tools.nvim/,HEAD,
https://github.com/anuvyklack/fold-preview.nvim/,HEAD,
https://github.com/mhartington/formatter.nvim/,,
https://github.com/megaannum/forms/,,
https://github.com/rubiin/fortune.nvim/,HEAD,
https://github.com/rafamadriz/friendly-snippets/,,
https://github.com/raghur/fruzzy/,,
https://github.com/shumphrey/fugitive-gitlab.vim/,,
@ -411,6 +412,7 @@ https://github.com/ShinKage/idris2-nvim/,,
https://github.com/edwinb/idris2-vim/,,
https://github.com/3rd/image.nvim/,HEAD,
https://github.com/samodostal/image.nvim/,HEAD,samodostal-image-nvim
https://github.com/HakonHarnes/img-clip.nvim/,HEAD,
https://github.com/lewis6991/impatient.nvim/,,
https://github.com/backdround/improved-search.nvim/,HEAD,
https://github.com/smjonas/inc-rename.nvim/,HEAD,

View File

@ -65,10 +65,10 @@
"src": {
"owner": "libretro",
"repo": "beetle-pce-fast-libretro",
"rev": "3f1c0a14b16802998f4f32ea27b0c8ad81d3b9e7",
"hash": "sha256-azdHkzMGDJYfZ3GrmLhJYhw9VGgdWBBXto3kqmpTdpQ="
"rev": "1c7342061ec00bc9f4253f3bfa4d1d7cfd1be769",
"hash": "sha256-gXp3jBszow0pwkP1iIFyFuHIJa65IjxAxW16tF4s1bQ="
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-16"
},
"beetle-pcfx": {
"fetcher": "fetchFromGitHub",
@ -85,10 +85,10 @@
"src": {
"owner": "libretro",
"repo": "beetle-psx-libretro",
"rev": "99a46bdb949a33ea1f827a1c6dfdd324e26486bf",
"hash": "sha256-DvHcT1SJdeVz7M5jRhiil9QaHRBs5cGve+9uNRbBbWI="
"rev": "b47a157182ca02af988363f472446ee40f18597b",
"hash": "sha256-c49AARmoMxFI7RGPCAGLVyouyQ/E8mYqeWehs41uLmo="
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-16"
},
"beetle-saturn": {
"fetcher": "fetchFromGitHub",
@ -115,10 +115,10 @@
"src": {
"owner": "libretro",
"repo": "beetle-supergrafx-libretro",
"rev": "dfff1f9c032b9556a070ae6848d1e28df3023e4d",
"hash": "sha256-nMu+sXxTtMKA+OajEYa2/OMsLThRr7C3PEC5UwrtCzI="
"rev": "2379eedc1d057e6b0ec465e4519e20c0fd66c5dc",
"hash": "sha256-zeKs0NcdZo3AY3Zv11nK4iLSq2l6jBZcAI4gbUg3gjQ="
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-16"
},
"beetle-vb": {
"fetcher": "fetchFromGitHub",
@ -165,10 +165,10 @@
"src": {
"owner": "libretro",
"repo": "bsnes-libretro",
"rev": "7e81fc46a7aa7a58030413ed0ae0707832c8d9e6",
"hash": "sha256-I6ZPqvN2EL/mCfS7yPgRTbgdLp57xd9+uFfkP1l9DOc="
"rev": "4da6b84bf20c36f1a1d097b5f8431d6bf0e4bd48",
"hash": "sha256-Ic4EENOMzQAVW7QVSqrJ2ZZZnymbSvotDLQp9IF708k="
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-16"
},
"bsnes-hd": {
"fetcher": "fetchFromGitHub",
@ -246,10 +246,10 @@
"src": {
"owner": "schellingb",
"repo": "dosbox-pure",
"rev": "16a5f9cb92653426e1586cd4b0e52663b394dbac",
"hash": "sha256-UivkKTMYETfLP9juYB42de4BxItq/fJVZvk4FrWr2Kc="
"rev": "53dfb5b89d38c2a3315282494d614bf01006c225",
"hash": "sha256-8IgQsg3UaGOKCuDymA+cYfAK6HLwdxwkbU3pROBd82I="
},
"version": "unstable-2024-08-10"
"version": "unstable-2024-08-16"
},
"easyrpg": {
"fetcher": "fetchFromGitHub",
@ -287,10 +287,10 @@
"src": {
"owner": "libretro",
"repo": "fbneo",
"rev": "981bd35179e0b4dc4471bdd4c8f093b206ed578b",
"hash": "sha256-x1VdryO2GBIPWD72tMI3EHDD/a7uUTSMjDrdr4m4ovg="
"rev": "a77738cbe9c75823f62a23e35bdfcf05e23d45b3",
"hash": "sha256-a4w9UO37iOTAkT0cj0p64HgxZHF7PFtIEo3CIKSe/NU="
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-17"
},
"fceumm": {
"fetcher": "fetchFromGitHub",
@ -307,11 +307,11 @@
"src": {
"owner": "flyinghead",
"repo": "flycast",
"rev": "45bf218df428123f739714ef4e65e1b96c0959b7",
"hash": "sha256-TB8cSwvwyfG3tNsMf2qXDZGMTuwnNeRlhyH8fzDnvQM=",
"rev": "6061d402bdbd1a07d0ba43fe6db272365a309e9f",
"hash": "sha256-2kLhb4biq4rokI44/PWr1jmMNSsUG+3aoBgQfZyyL+8=",
"fetchSubmodules": true
},
"version": "unstable-2024-07-29"
"version": "unstable-2024-08-17"
},
"fmsx": {
"fetcher": "fetchFromGitHub",
@ -348,20 +348,20 @@
"src": {
"owner": "libretro",
"repo": "gambatte-libretro",
"rev": "f122ffc63e3969e29b232de8700e57095c305a53",
"hash": "sha256-NqrH2ncfmPZRmldNboCDTCkznHokc6p2aKnDVmt0+Pc="
"rev": "238a6b89461e821a4b0c0757166cec93fec0b6aa",
"hash": "sha256-VHly5E82WugUGsM7WLLtWF8vVEzU6X+g37AEx0Jlnvo="
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-16"
},
"genesis-plus-gx": {
"fetcher": "fetchFromGitHub",
"src": {
"owner": "libretro",
"repo": "Genesis-Plus-GX",
"rev": "53a4af8fa4061fe7b60b9a1de5080dfa40617e57",
"hash": "sha256-Q5FtgIH0yIBUuZmPJ75k7LCon0wzlq+lzj3yo1BfCek="
"rev": "9529e915074269cf67393fdf67166f0be9d14d97",
"hash": "sha256-wg1vmBUUrRAUCtHMD2HxjiQ5Y+PC9UMnskOVJ0Ix2QM="
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-16"
},
"gpsp": {
"fetcher": "fetchFromGitHub",
@ -429,20 +429,20 @@
"src": {
"owner": "libretro",
"repo": "mame2003-libretro",
"rev": "f0d4ffbded87ead2cccd603a9d6f8b6c46c37b6f",
"hash": "sha256-rdOZLGoxB5cVOwhMwzoJiSum3gxPRkoNZXVz5QFvXf8="
"rev": "ac11b67168c92caab5012d8d7365d36fe5c94b3e",
"hash": "sha256-SlEvXbqv4v51njU5QhpimJWnkvGEJlRLjsNg8s4fkBc="
},
"version": "unstable-2024-08-08"
"version": "unstable-2024-08-18"
},
"mame2003-plus": {
"fetcher": "fetchFromGitHub",
"src": {
"owner": "libretro",
"repo": "mame2003-plus-libretro",
"rev": "444bc10c2ab1553b3ed59b7d6afb54da39b891de",
"hash": "sha256-dfnISpXAt5JE0i7s75t2MdweTVJ0KarsGxKNtmFViCc="
"rev": "95806c35f7dcb7c88b07ff2ba15e6e0077e8e69f",
"hash": "sha256-Wt7Z1QNJXbbznqY0TICxJFjgBXIgBT4EHi06hPF+hBc="
},
"version": "unstable-2024-08-08"
"version": "unstable-2024-08-18"
},
"mame2010": {
"fetcher": "fetchFromGitHub",
@ -540,10 +540,10 @@
"src": {
"owner": "libretro",
"repo": "mupen64plus-libretro-nx",
"rev": "c7cd8edcd015ddcbd4a2e984573c9c1d1ddd0b6e",
"hash": "sha256-QSGPfl29darzo5p8TiJbSMvezYkfRxon/XiObh5PULY="
"rev": "af797557b0e6d339d047b43f73d0ade021da1637",
"hash": "sha256-P/AqgijQ8rHTMM3X/9ZjDG5/1NGS51dZYlLy4cEYbng="
},
"version": "unstable-2024-07-19"
"version": "unstable-2024-08-13"
},
"neocd": {
"fetcher": "fetchFromGitHub",
@ -631,10 +631,10 @@
"src": {
"owner": "libretro",
"repo": "pcsx_rearmed",
"rev": "19f1a7d2de3a136810a84341db77d4f5eb8f3361",
"hash": "sha256-RnR6KuZa5cxw/Z+ZIZ2RhNrPRWlZupR9TDUhc2puBqQ="
"rev": "89a8e88a616301c0cec4cbfebf96301ce9d5244c",
"hash": "sha256-Y+vR3a891qRsnY7A3UTF6LHle/3M/OAIU6N0VXinbkg="
},
"version": "unstable-2024-07-24"
"version": "unstable-2024-08-16"
},
"picodrive": {
"fetcher": "fetchFromGitHub",
@ -652,22 +652,22 @@
"src": {
"owner": "jpd002",
"repo": "Play-",
"rev": "d1c28b63e0c684025886787c39c4b7f92014d79e",
"hash": "sha256-zNcrCIsRVP0AFzFs0S7i4Cuon0JIyFzPrK26hJFqijQ=",
"rev": "92a11bf45c192300415e14d95da7a442ffc1f71c",
"hash": "sha256-5bErkTiFIFkRqk+NLLujPgGLkPjX2hgHarO4K3fIrKM=",
"fetchSubmodules": true
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-16"
},
"ppsspp": {
"fetcher": "fetchFromGitHub",
"src": {
"owner": "hrydgard",
"repo": "ppsspp",
"rev": "169736dff64cb426d8eba559f76475d2f762e368",
"hash": "sha256-93rZl2vec6NSlJ2WGJvn/M1nsA+bJgfOxiPESYv6oK8=",
"rev": "8f300cf5bb715038489f91f371e06cefdd3e3cdc",
"hash": "sha256-bUj6Xa4k5EwjhFWOrHodLWgwLFrJcsHjsu3zdd/gqJQ=",
"fetchSubmodules": true
},
"version": "unstable-2024-08-09"
"version": "unstable-2024-08-15"
},
"prboom": {
"fetcher": "fetchFromGitHub",
@ -794,10 +794,10 @@
"src": {
"owner": "stella-emu",
"repo": "stella",
"rev": "8e9149a233fa66e894261bef18d20afb575902b1",
"hash": "sha256-agMd0/FiMQ3tvNg8imEz55a4AqjyRu085eYL42cNBfI="
"rev": "d64ff2e5b7cb202155b2782b55c8d359c2a9c8ce",
"hash": "sha256-aKqOLmFpWLxHeXVq/YP/xinnpKhDPFlgA2FEnSZjftU="
},
"version": "unstable-2024-08-10"
"version": "unstable-2024-08-16"
},
"stella2014": {
"fetcher": "fetchFromGitHub",

View File

@ -1,8 +1,8 @@
{ stdenv, lib, fetchurl, callPackage, patchelf, makeWrapper, libusb-compat-0_1 }:
let
myPatchElf = file: with lib; ''
myPatchElf = file: ''
patchelf --set-interpreter \
${stdenv.cc.libc}/lib/ld-linux${optionalString stdenv.is64bit "-x86-64"}.so.2 \
${stdenv.cc.libc}/lib/ld-linux${lib.optionalString stdenv.is64bit "-x86-64"}.so.2 \
${file}
'';
@ -43,13 +43,13 @@ stdenv.mkDerivation rec {
done
'';
installPhase = with lib; ''
installPhase = ''
runHook preInstall
PATH_TO_BRSCAN4="opt/brother/scanner/brscan4"
mkdir -p $out/$PATH_TO_BRSCAN4
cp -rp $PATH_TO_BRSCAN4/* $out/$PATH_TO_BRSCAN4
mkdir -p $out/lib/sane
cp -rp usr/lib${optionalString stdenv.is64bit "64"}/sane/* $out/lib/sane
cp -rp usr/lib${lib.optionalString stdenv.is64bit "64"}/sane/* $out/lib/sane
# Symbolic links were absolute. Fix them so that they point to $out.
pushd "$out/lib/sane" > /dev/null

View File

@ -1,8 +1,8 @@
{ stdenv, lib, fetchurl, patchelf, makeWrapper, libusb1, avahi-compat, glib, libredirect, nixosTests }:
let
myPatchElf = file: with lib; ''
myPatchElf = file: ''
patchelf --set-interpreter \
${stdenv.cc.libc}/lib/ld-linux${optionalString stdenv.is64bit "-x86-64"}.so.2 \
${stdenv.cc.libc}/lib/ld-linux${lib.optionalString stdenv.is64bit "-x86-64"}.so.2 \
${file}
'';
system = stdenv.hostPlatform.system;
@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
printf '/etc/opt/brother/scanner/models\x00' | dd of=opt/brother/scanner/brscan5/libsane-brother5.so.1.0.7 bs=1 seek=${toString patchOffsetBytes} conv=notrunc
'';
installPhase = with lib; ''
installPhase = ''
runHook preInstall
PATH_TO_BRSCAN5="opt/brother/scanner/brscan5"
mkdir -p $out/$PATH_TO_BRSCAN5

View File

@ -38,11 +38,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "shotwell";
version = "0.32.7";
version = "0.32.8";
src = fetchurl {
url = "mirror://gnome/sources/shotwell/${lib.versions.majorMinor finalAttrs.version}/shotwell-${finalAttrs.version}.tar.xz";
sha256 = "sha256-EvMl4BnD5jjCuWFXG8IEd2dh6CYUZ+8btodViJM11fc=";
sha256 = "sha256-RwY8AXnl2A9TQ3PcVg4c6Ad6rdWE7u8GxSOkYOL5KcM=";
};
nativeBuildInputs = [

View File

@ -4,5 +4,5 @@ callPackage ./. {
pname = "ape-clex";
lexiconPath = "${attemptoClex}/clex_lexicon.pl";
description = "Parser for Attempto Controlled English (ACE) with a large lexicon (~100,000 entries)";
license = with lib; [ licenses.lgpl3 licenses.gpl3 ];
license = with lib.licenses; [ lgpl3 gpl3 ];
}

View File

@ -3,7 +3,7 @@
lexiconPath ? "prolog/lexicon/clex_lexicon.pl",
pname ? "ape",
description ? "Parser for Attempto Controlled English (ACE)",
license ? with lib; licenses.lgpl3
license ? lib.licenses.lgpl3
}:
stdenv.mkDerivation rec {

View File

@ -20,15 +20,15 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [ pkg-config scdoc ]
++ lib.optionals waylandSupport [ wayland-scanner ];
buildInputs = with lib; [
buildInputs = [
cairo
fribidi
harfbuzz
libxkbcommon
pango
] ++ optional ncursesSupport ncurses
++ optionals waylandSupport [ wayland wayland-protocols ]
++ optionals x11Support [
] ++ lib.optional ncursesSupport ncurses
++ lib.optionals waylandSupport [ wayland wayland-protocols ]
++ lib.optionals x11Support [
xorg.libX11 xorg.libXinerama xorg.libXft
xorg.libXdmcp xorg.libpthreadstubs xorg.libxcb
];

View File

@ -29,16 +29,16 @@ stdenv.mkDerivation rec {
sed -i "s@pkg_get_variable(POLKIT_ACTION_DIR.*@set(POLKIT_ACTION_DIR $POLKIT_ACTION_DIR)@" CMakeLists.txt
'';
cmakeFlags = with lib;
cmakeFlags =
[ "-DSYSTEMD_SERVICE_DIR=${placeholder "out"}/lib/systemd/system"
"-DDBUS_CONFIG_DIR=${placeholder "out"}/etc/dbus-1/system.d"
# systemd.pc has prefix=${systemd.out}
"-DMODULE_LOAD_DIR=${placeholder "out"}/lib/modules-load.d"
] ++ optional enableDdc "-DENABLE_DDC=1"
++ optional enableDpms "-DENABLE_DPMS=1"
++ optional enableGamma "-DENABLE_GAMMA=1"
++ optional enableScreen "-DENABLE_SCREEN=1"
++ optional enableYoctolight "-DENABLE_YOCTOLIGHT=1";
] ++ lib.optional enableDdc "-DENABLE_DDC=1"
++ lib.optional enableDpms "-DENABLE_DPMS=1"
++ lib.optional enableGamma "-DENABLE_GAMMA=1"
++ lib.optional enableScreen "-DENABLE_SCREEN=1"
++ lib.optional enableYoctolight "-DENABLE_YOCTOLIGHT=1";
nativeBuildInputs = [
dbus
@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
pkg-config
];
buildInputs = with lib; [
buildInputs = [
glib
udev
polkit
@ -58,10 +58,10 @@ stdenv.mkDerivation rec {
libXdmcp
util-linux
libpthreadstubs
] ++ optionals enableDdc [ ddcutil ]
++ optionals enableDpms [ libXext ]
++ optionals enableGamma [ libXrandr ]
++ optionals (enableDpms || enableGamma || enableScreen) [ libdrm wayland ];
] ++ lib.optionals enableDdc [ ddcutil ]
++ lib.optionals enableDpms [ libXext ]
++ lib.optionals enableGamma [ libXrandr ]
++ lib.optionals (enableDpms || enableGamma || enableScreen) [ libdrm wayland ];
postInstall = ''
mkdir -p $out/bin

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
bash-completion
];
buildInputs = with lib; [
buildInputs = [
gsl
popt
upower
@ -31,8 +31,8 @@ stdenv.mkDerivation rec {
geoclue2
libconfig
libmodule
] ++ optional withGeoclue geoclue2
++ optional withUpower upower;
] ++ lib.optional withGeoclue geoclue2
++ lib.optional withUpower upower;
cmakeFlags = [
"-DSESSION_BUS_DIR=${placeholder "out"}/share/dbus-1/services"

View File

@ -58,7 +58,7 @@ in mkDerivation rec {
sha256 = "ig3+TdYv277D9GVnkRSX6nc6D6qruUOw/IQdQCK6FoA=";
};
nativeBuildInputs = with lib; [
nativeBuildInputs = [
autoreconfHook
curl
git

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "exercism";
version = "3.4.0";
version = "3.4.1";
src = fetchFromGitHub {
owner = "exercism";
repo = "cli";
rev = "refs/tags/v${version}";
hash = "sha256-+Tg9b7JZtriF5b+mnLgOeTTLiswH/dSGg3Mj1TBt4Wk=";
hash = "sha256-ohqfwK0RWSY7/GsUa/VTAD5pcuzQIkx8z3n5rKEb7hY=";
};
vendorHash = "sha256-xY3C3emqtPIKyxIN9aEkrLXhTxWNmo0EJXNZVtbtIvs=";

View File

@ -44,15 +44,15 @@ stdenv.mkDerivation rec {
++ lib.optionals withFFmpeg [ libao ffmpeg ]
++ lib.optional withZim zstd;
qmakeFlags = with lib; [
qmakeFlags = [
"goldendict.pro"
(optional withCC "CONFIG+=chinese_conversion_support")
(optional (!withCC) "CONFIG+=no_chinese_conversion_support")
(optional (!withEpwing) "CONFIG+=no_epwing_support")
(optional (!withExtraTiff) "CONFIG+=no_extra_tiff_handler")
(optional (!withFFmpeg) "CONFIG+=no_ffmpeg_player")
(optional (!withMultimedia)"CONFIG+=no_qtmultimedia_player")
(optional withZim "CONFIG+=zim_support")
(lib.optional withCC "CONFIG+=chinese_conversion_support")
(lib.optional (!withCC) "CONFIG+=no_chinese_conversion_support")
(lib.optional (!withEpwing) "CONFIG+=no_epwing_support")
(lib.optional (!withExtraTiff) "CONFIG+=no_extra_tiff_handler")
(lib.optional (!withFFmpeg) "CONFIG+=no_ffmpeg_player")
(lib.optional (!withMultimedia)"CONFIG+=no_qtmultimedia_player")
(lib.optional withZim "CONFIG+=zim_support")
];
postInstall = lib.optionalString stdenv.isDarwin ''

View File

@ -8,13 +8,13 @@ let config-module = "github.com/f1bonacc1/process-compose/src/config";
in
buildGoModule rec {
pname = "process-compose";
version = "1.18.0";
version = "1.24.0";
src = fetchFromGitHub {
owner = "F1bonacc1";
repo = pname;
rev = "v${version}";
hash = "sha256-S4MmE1LeX23dBceWoOPpd5xp+A0IxACzb9RSxtkf5tg=";
hash = "sha256-CrirbzsPAoS6eNMCzQilWlLvZGm05ojkVYUiYVY/uHo=";
# populate values that require us to use git. By doing this in postFetch we
# can delete .git afterwards and maintain better reproducibility of the src.
leaveDotGit = true;

View File

@ -1,24 +1,36 @@
{ lib, stdenv, fetchFromGitHub }:
{ lib, buildGoModule, fetchFromGitea, installShellFiles, perl }:
stdenv.mkDerivation rec {
buildGoModule rec {
pname = "ssh-tools";
version = "1.7";
version = "1.8-unstable-2024-03-18";
src = fetchFromGitHub {
src = fetchFromGitea {
domain = "codeberg.org";
owner = "vaporup";
repo = pname;
rev = "v${version}";
sha256 = "sha256-PDoljR/e/qraPhG9RRjHx1gBIMtTJ815TZDJws8Qg6o=";
repo = "ssh-tools";
rev = "69c73844b2498c46f1293b129808bfdce8822c28";
hash = "sha256-cG75Jn331G0HZZyrE+JWC05f6DgYBz6sx8MTCxsG/vw=";
};
installPhase = ''
mkdir -p $out/bin
cp ssh-* $out/bin/
vendorHash = "sha256-GSFhz3cIRl4XUA18HUeUkrw+AJyOkU3ZrZKYTGsWbug=";
subPackages = [
"cmd/go/ssh-authorized-keys"
"cmd/go/ssh-sig"
];
nativeBuildInputs = [ installShellFiles ];
buildInputs = [ perl ];
postInstall = ''
install cmd/{bash,perl}/ssh-*/ssh-* -t $out/bin
installManPage man/*.1
'';
meta = with lib; {
description = "Collection of various tools using ssh";
homepage = "https://github.com/vaporup/ssh-tools/";
description = "Making SSH more convenient";
homepage = "https://codeberg.org/vaporup/ssh-tools";
license = licenses.gpl3Only;
maintainers = with maintainers; [ SuperSandro2000 ];
};

View File

@ -14,10 +14,7 @@
let
sweetExec = with lib;
m: "sweethome3d-"
+ removeSuffix "libraryeditor" (toLower m)
+ "-editor";
sweetExec = m: "sweethome3d-" + lib.removeSuffix "libraryeditor" (lib.toLower m) + "-editor";
mkEditorProject =
{ pname, module, version, src, license, description, desktopName }:

View File

@ -40,8 +40,7 @@ stdenv.mkDerivation rec {
src = fetchFromGitHub {
repo = "workrave";
owner = "rcaelers";
rev = with lib;
"v" + concatStringsSep "_" (splitVersion version);
rev = "v" + lib.concatStringsSep "_" (lib.splitVersion version);
sha256 = "sha256-U39zr8XGIDbyY480bla2yTaRQLP3wMrL8RLWjlTa5uY=";
};

View File

@ -21,16 +21,16 @@ buildGoModule rec {
subPackages = [ "." ];
ldflags = [ "-s" "-w" ] ++ (with lib;
mapAttrsToList (n: v: "-X github.com/sahib/brig/version.${n}=${v}")
(with versions; {
Major = major version;
Minor = minor version;
Patch = patch version;
ldflags = [ "-s" "-w" ] ++
lib.mapAttrsToList (n: v: "-X github.com/sahib/brig/version.${n}=${v}")
{
Major = lib.versions.major version;
Minor = lib.versions.minor version;
Patch = lib.versions.patch version;
ReleaseType = "";
BuildTime = "1970-01-01T00:00:00+0000";
GitRev = src.rev;
}));
};
postInstall = ''
installShellCompletion --cmd brig \

View File

@ -117,12 +117,12 @@ in stdenv.mkDerivation {
browserBinary = "${chromiumWV}/libexec/chromium/chromium";
libPath = lib.makeLibraryPath [ libva pipewire wayland gtk3 gtk4 libkrb5 ];
in with lib; ''
in ''
mkdir -p "$out/bin"
makeWrapper "${browserBinary}" "$out/bin/chromium" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
--add-flags ${escapeShellArg commandLineArgs}
--add-flags ${lib.escapeShellArg commandLineArgs}
ed -v -s "$out/bin/chromium" << EOF
2i

View File

@ -27,8 +27,8 @@
version = "2024-06-06";
};
ungoogled-patches = {
hash = "sha256-m1H/7JsSF7Akm5eBlPB/F4mAdFjUPtOQIUoXup09w40=";
rev = "127.0.6533.119-1";
hash = "sha256-m7x7tPrJfddPER9uiSp983xGn3YSH+Bq01l14vOlwrU=";
rev = "127.0.6533.119-2";
};
};
hash = "sha256-LuUDEpYCJLR/X+zjsF26aum4/Wfu2MNowofPu8iRVxI=";

View File

@ -16,11 +16,11 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-IqqWwLOOGm+PftnXpBZ6R/w3JGCXdZ72BZ7Pj56teZg=";
};
buildInputs = with lib;
buildInputs =
[ libev librsvg libpng libjpeg libtiff libavif openssl xz bzip2 zlib ]
++ optionals stdenv.isLinux [ gpm ]
++ optionals enableX11 [ libX11 libXau libXt ]
++ optionals enableDirectFB [ directfb ];
++ lib.optionals stdenv.isLinux [ gpm ]
++ lib.optionals enableX11 [ libX11 libXau libXt ]
++ lib.optionals enableDirectFB [ directfb ];
nativeBuildInputs = [ pkg-config bzip2 ];

View File

@ -24,7 +24,7 @@ let
vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
in stdenv.mkDerivation rec {
pname = "vivaldi";
version = "6.8.3381.48";
version = "6.8.3381.53";
suffix = {
aarch64-linux = "arm64";
@ -34,8 +34,8 @@ in stdenv.mkDerivation rec {
src = fetchurl {
url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}-1_${suffix}.deb";
hash = {
aarch64-linux = "sha256-VLX2nWcpwWqI5QtBFyXRieaO+kLXMeeyWwFIVgz8XIo=";
x86_64-linux = "sha256-ZlrL4eOQnQjIBzOiLLDHZFjf6nr9KiyapZmqJFkDqX8=";
aarch64-linux = "sha256-wcfEaUcl/FUhhrp977/xg5+dE+93vy8wn5x6m8qX1EU=";
x86_64-linux = "sha256-6WLGvd9Kp6fRG1HxMOjK4MhK4eoYjwEgYGJROI7lM2Y=";
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
};

View File

@ -7,13 +7,13 @@
buildGoModule rec {
pname = "cloudflared";
version = "2024.7.3";
version = "2024.8.2";
src = fetchFromGitHub {
owner = "cloudflare";
repo = "cloudflared";
rev = "refs/tags/${version}";
hash = "sha256-zz8xwIgGnMJjSv2XXUgsaUKXvHtXVuc2jyahrZ/yxmE=";
hash = "sha256-CAg5mBDcwIFstp8YrWpqwLSzK46+u35ZcaifV8Zk+rE=";
};
vendorHash = null;

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "atmos";
version = "1.85.0";
version = "1.86.0";
src = fetchFromGitHub {
owner = "cloudposse";
repo = pname;
rev = "v${version}";
sha256 = "sha256-nIW7Wt4mThxjnHHF+rD6q9vZ7KsB//nSpkWtkiTo16Y=";
sha256 = "sha256-IlvIZMfsANw6+BrVObn0pBcoEcSKXVcN1V3B0f4BDno=";
};
vendorHash = "sha256-swQN0WjVfLo/LjZrvjX46CnfBGnrVzLj8Cv4IP0eL7Y=";
vendorHash = "sha256-87C3MPKlYVnpNJvPJY9eCrSy8qfP8Kj36a9vi+kiP44=";
ldflags = [ "-s" "-w" "-X github.com/cloudposse/atmos/cmd.Version=v${version}" ];

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "clusterctl";
version = "1.7.4";
version = "1.8.0";
src = fetchFromGitHub {
owner = "kubernetes-sigs";
repo = "cluster-api";
rev = "v${version}";
hash = "sha256-ziW+ROuUmrgsIWHXKL2Yw+9gC6VgE/7Ri3zc3sveyU8=";
hash = "sha256-x82ek6KsfmVjG9P9EaGlvbncGaORqMB2lMxannZT4YE=";
};
vendorHash = "sha256-ALRnccGjPGuAITtuz79Cao95NhvSczAzspSMXytlw+A=";
vendorHash = "sha256-z859ZjuvY53HqHXNo8zZkK9XAtMOxh57FeXgGfno3G0=";
subPackages = [ "cmd/clusterctl" ];

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "signalbackup-tools";
version = "20240805-1";
version = "20240816";
src = fetchFromGitHub {
owner = "bepaald";
repo = pname;
repo = "signalbackup-tools";
rev = version;
hash = "sha256-n1mFIyrZ8d9h2m6rUzIVSt9Xdw1VlBLlXY15JLoIaVA=";
hash = "sha256-8r3XpKqCR2ElfQnRuuBaDDIUwAASTTfGSihOounIVZQ=";
};
postPatch = ''

View File

@ -11,16 +11,16 @@
rustPlatform.buildRustPackage rec {
pname = "twitch-tui";
version = "2.6.14";
version = "2.6.15";
src = fetchFromGitHub {
owner = "Xithrius";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-a/tPRGqD6YBw1Ls28kJNxQYNMc8mUq8wLgSg0yiJR+U=";
hash = "sha256-nuGfdhwlT47gdTu1FbXKOnyBmkvATuL930U0AYgMEUY=";
};
cargoHash = "sha256-MRbwA/riOECCv2/AzNIma9sMAyRrEDb6HDOaGVDxr1Q=";
cargoHash = "sha256-C15d6XrqQYaVBklR+sfYGB974cPkSTcNRh50X4GEIzI=";
nativeBuildInputs = [
pkg-config

View File

@ -51,30 +51,28 @@ let
outputs = [ "out" "man" ] ++ map (p: p.name) enabledPlugins;
cmakeFlags = with lib; [
cmakeFlags = [
"-DENABLE_MAN=ON"
"-DENABLE_DOC=ON"
"-DENABLE_DOC_INCOMPLETE=ON"
"-DENABLE_TESTS=${if enableTests then "ON" else "OFF"}"
]
++ optionals stdenv.isDarwin ["-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib"]
++ lib.optionals stdenv.isDarwin ["-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib"]
++ map (p: "-D${p.cmakeFlag}=" + (if p.enabled then "ON" else "OFF")) plugins
;
nativeBuildInputs = [ cmake pkg-config asciidoctor ] ++ lib.optional enableTests cpputest;
buildInputs = with lib; [
ncurses openssl aspell cjson gnutls gettext zlib curl
libgcrypt ]
++ optionals stdenv.isDarwin [ libobjc libresolv ]
++ concatMap (p: p.buildInputs) enabledPlugins
buildInputs = [ ncurses openssl aspell cjson gnutls gettext zlib curl libgcrypt ]
++ lib.optionals stdenv.isDarwin [ libobjc libresolv ]
++ lib.concatMap (p: p.buildInputs) enabledPlugins
++ extraBuildInputs;
env.NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}"
# Fix '_res_9_init: undefined symbol' error
+ (lib.optionalString stdenv.isDarwin "-DBIND_8_COMPAT=1 -lresolv");
postInstall = with lib; ''
for p in ${concatMapStringsSep " " (p: p.name) enabledPlugins}; do
postInstall = ''
for p in ${lib.concatMapStringsSep " " (p: p.name) enabledPlugins}; do
from=$out/lib/weechat/plugins/$p.so
to=''${!p}/lib/weechat/plugins/$p.so
mkdir -p $(dirname $to)

View File

@ -19,10 +19,10 @@ stdenv.mkDerivation {
[ autoreconfHook ]
++ lib.optional withReadline readline;
enableParallelBuilding = true;
configureFlags = with lib;
optional (!withReadline) "--without-readline"
++ optional enableEmu "--enable-emu"
++ optional enableSpy "--enable-spy";
configureFlags =
lib.optional (!withReadline) "--without-readline"
++ lib.optional enableEmu "--enable-emu"
++ lib.optional enableSpy "--enable-spy";
meta = with lib; {
description = "Netgear switch (NSDP) administration tool";

View File

@ -5,9 +5,9 @@
, useGeoIP ? false # Require /var/lib/geoip-databases/GeoIP.dat
}:
let
wrapperPath = with lib; makeBinPath (
optional x11Support xclip ++
optional stdenv.isDarwin pbcopy
wrapperPath = lib.makeBinPath (
lib.optional x11Support xclip ++
lib.optional stdenv.isDarwin pbcopy
);
in
python3Packages.buildPythonApplication rec {

View File

@ -3,7 +3,7 @@ let
pname = "synology-drive-client";
baseUrl = "https://global.synologydownload.com/download/Utility/SynologyDriveClient";
version = "3.5.0-16084";
buildNumber = with lib; last (splitString "-" version);
buildNumber = lib.last (lib.splitString "-" version);
meta = with lib; {
description = "Desktop application to synchronize files and folders between the computer and the Synology Drive server";
homepage = "https://www.synology.com/en-global/dsm/feature/drive";

View File

@ -24,19 +24,18 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkg-config file ];
buildInputs = with lib;
[ gtk2 fftw ] ++
optionals openglSupport [ gnome2.gtkglext libGL ] ++
optional openexrSupport openexr ++
optional libXmuSupport xorg.libXmu ++
optional fitsSupport cfitsio ++
optional libpngSupport libpng ++
optional libxsltSupport libxslt ++
optional libxml2Support libxml2 ++
optional libwebpSupport libwebp ++
optional zlibSupport zlib ++
optional libuniqueSupport libunique ++
optional libzipSupport libzip;
buildInputs = [ gtk2 fftw ] ++
lib.optionals openglSupport [ gnome2.gtkglext libGL ] ++
lib.optional openexrSupport openexr ++
lib.optional libXmuSupport xorg.libXmu ++
lib.optional fitsSupport cfitsio ++
lib.optional libpngSupport libpng ++
lib.optional libxsltSupport libxslt ++
lib.optional libxml2Support libxml2 ++
lib.optional libwebpSupport libwebp ++
lib.optional zlibSupport zlib ++
lib.optional libuniqueSupport libunique ++
lib.optional libzipSupport libzip;
# This patch corrects problems with python support, but should apply cleanly
# regardless of whether python support is enabled, and have no effects if

View File

@ -15,13 +15,12 @@
] }:
let
shared_meta = lib:
with lib; {
homepage = "https://www.picotech.com/downloads/linux";
maintainers = with maintainers; [ expipiplus1 wirew0rm ] ++ teams.lumiguide.members;
platforms = [ "x86_64-linux" ];
license = licenses.unfree;
};
shared_meta = lib: {
homepage = "https://www.picotech.com/downloads/linux";
maintainers = with lib.maintainers; [ expipiplus1 wirew0rm ] ++ lib.teams.lumiguide.members;
platforms = [ "x86_64-linux" ];
license = lib.licenses.unfree;
};
libpicoipp = callPackage ({ stdenv, lib, fetchurl, autoPatchelfHook, dpkg }:
stdenv.mkDerivation rec {
@ -39,11 +38,10 @@ let
install -Dt $out/usr/share/doc/libpicoipp usr/share/doc/libpicoipp/copyright
runHook postInstall
'';
meta = with lib;
shared_meta lib // {
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
description = "library for picotech oscilloscope software";
};
meta = shared_meta lib // {
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
description = "library for picotech oscilloscope software";
};
}) { };
# If we don't have a platform available, put a dummy version here, so at

View File

@ -15,10 +15,9 @@
, csdp ? null
, version, coq-version ? null
}@args:
let lib' = lib; in
let lib = import ../../../../build-support/coq/extra-lib.nix {lib = lib';}; in
with builtins; with lib;
let
lib = import ../../../../build-support/coq/extra-lib.nix { inherit (args) lib; };
release = {
"8.5pl1".sha256 = "1976ki5xjg2r907xj9p7gs0kpdinywbwcqlgxqw75dgp0hkgi00n";
"8.5pl2".sha256 = "109rrcrx7mz0fj7725kjjghfg5ydwb24hjsa5hspa27b4caah7rh";
@ -67,29 +66,29 @@ let
{ inherit release releaseRev; location = { owner = "coq"; repo = "coq";}; }
args.version;
version = fetched.version;
coq-version = args.coq-version or (if version != "dev" then versions.majorMinor version else "dev");
coqAtLeast = v: coq-version == "dev" || versionAtLeast coq-version v;
coq-version = args.coq-version or (if version != "dev" then lib.versions.majorMinor version else "dev");
coqAtLeast = v: coq-version == "dev" || lib.versionAtLeast coq-version v;
buildIde = args.buildIde or (!coqAtLeast "8.14");
ideFlags = optionalString (buildIde && !coqAtLeast "8.10")
ideFlags = lib.optionalString (buildIde && !coqAtLeast "8.10")
"-lablgtkdir ${ocamlPackages.lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt";
csdpPatch = lib.optionalString (csdp != null) ''
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
'';
ocamlPackages = if customOCamlPackages != null then customOCamlPackages
else with versions; switch coq-version [
{ case = range "8.16" "8.18"; out = ocamlPackages_4_14; }
{ case = range "8.14" "8.15"; out = ocamlPackages_4_12; }
{ case = range "8.11" "8.13"; out = ocamlPackages_4_10; }
{ case = range "8.7" "8.10"; out = ocamlPackages_4_09; }
{ case = range "8.5" "8.6"; out = ocamlPackages_4_05; }
else lib.switch coq-version [
{ case = lib.versions.range "8.16" "8.18"; out = ocamlPackages_4_14; }
{ case = lib.versions.range "8.14" "8.15"; out = ocamlPackages_4_12; }
{ case = lib.versions.range "8.11" "8.13"; out = ocamlPackages_4_10; }
{ case = lib.versions.range "8.7" "8.10"; out = ocamlPackages_4_09; }
{ case = lib.versions.range "8.5" "8.6"; out = ocamlPackages_4_05; }
] ocamlPackages_4_14;
ocamlNativeBuildInputs = with ocamlPackages; [ ocaml findlib ]
++ optional (coqAtLeast "8.14") dune_3;
ocamlNativeBuildInputs = [ ocamlPackages.ocaml ocamlPackages.findlib ]
++ lib.optional (coqAtLeast "8.14") ocamlPackages.dune_3;
ocamlPropagatedBuildInputs = [ ]
++ optional (!coqAtLeast "8.10") ocamlPackages.camlp5
++ optional (!coqAtLeast "8.13") ocamlPackages.num
++ optional (coqAtLeast "8.13") ocamlPackages.zarith;
++ lib.optional (!coqAtLeast "8.10") ocamlPackages.camlp5
++ lib.optional (!coqAtLeast "8.13") ocamlPackages.num
++ lib.optional (coqAtLeast "8.13") ocamlPackages.zarith;
self = stdenv.mkDerivation {
pname = "coq";
inherit (fetched) version src;
@ -111,7 +110,7 @@ self = stdenv.mkDerivation {
(coq-prog-args))
(mapc (lambda (arg)
(when (file-directory-p (concat arg "/lib/coq/${coq-version}/user-contrib"))
(setenv "COQPATH" (concat (getenv "COQPATH") ":" arg "/lib/coq/${coq-version}/user-contrib")))) '(${concatStringsSep " " (map (pkg: "\"${pkg}\"") pkgs)}))
(setenv "COQPATH" (concat (getenv "COQPATH") ":" arg "/lib/coq/${coq-version}/user-contrib")))) '(${lib.concatStringsSep " " (map (pkg: "\"${pkg}\"") pkgs)}))
; TODO Abstract this pattern from here and nixBufferBuilders.withPackages!
(defvar nixpkgs--coq-buffer-count 0)
(when (eq nixpkgs--coq-buffer-count 0)
@ -148,11 +147,11 @@ self = stdenv.mkDerivation {
nativeBuildInputs = [ pkg-config ]
++ ocamlNativeBuildInputs
++ optional buildIde copyDesktopItems
++ optional (buildIde && coqAtLeast "8.10") wrapGAppsHook3
++ optional (!coqAtLeast "8.6") gnumake42;
++ lib.optional buildIde copyDesktopItems
++ lib.optional (buildIde && coqAtLeast "8.10") wrapGAppsHook3
++ lib.optional (!coqAtLeast "8.6") gnumake42;
buildInputs = [ ncurses ]
++ optionals buildIde
++ lib.optionals buildIde
(if coqAtLeast "8.10"
then [ ocamlPackages.lablgtk3-sourceview3 glib adwaita-icon-theme ]
else [ ocamlPackages.lablgtk ])
@ -188,12 +187,12 @@ self = stdenv.mkDerivation {
prefixKey = "-prefix ";
buildFlags = [ "revision" "coq" ] ++ optional buildIde "coqide" ++ optional (!coqAtLeast "8.14") "bin/votour";
buildFlags = [ "revision" "coq" ] ++ lib.optional buildIde "coqide" ++ lib.optional (!coqAtLeast "8.14") "bin/votour";
enableParallelBuilding = true;
createFindlibDestdir = true;
desktopItems = optional buildIde (makeDesktopItem {
desktopItems = lib.optional buildIde (makeDesktopItem {
name = "coqide";
exec = "coqide";
icon = "coq";
@ -202,18 +201,18 @@ self = stdenv.mkDerivation {
categories = [ "Development" "Science" "Math" "IDE" "GTK" ];
});
postInstall = let suffix = optionalString (coqAtLeast "8.14") "-core"; in optionalString (!coqAtLeast "8.17") ''
postInstall = let suffix = lib.optionalString (coqAtLeast "8.14") "-core"; in lib.optionalString (!coqAtLeast "8.17") ''
cp bin/votour $out/bin/
'' + ''
ln -s $out/lib/coq${suffix} $OCAMLFIND_DESTDIR/coq${suffix}
'' + optionalString (coqAtLeast "8.14") ''
'' + lib.optionalString (coqAtLeast "8.14") ''
ln -s $out/lib/coqide-server $OCAMLFIND_DESTDIR/coqide-server
'' + optionalString buildIde ''
'' + lib.optionalString buildIde ''
mkdir -p "$out/share/pixmaps"
ln -s "$out/share/coq/coq.png" "$out/share/pixmaps/"
'';
meta = {
meta = with lib; {
description = "Coq proof assistant";
longDescription = ''
Coq is a formal proof management system. It provides a formal language

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "tlaplus";
version = "1.7.3";
version = "1.7.4";
src = fetchurl {
url = "https://github.com/tlaplus/tlaplus/releases/download/v${version}/tla2tools.jar";
sha256 = "sha256-5P8V6oH05voSXAgwBDclSxdxdMalrfaNpElkar4IUZ0=";
sha256 = "sha256-k2omIGHJFGlN/WaaVDviRXPEXVqg/yCouWsj0B4FDog=";
};
nativeBuildInputs = [ makeWrapper ];

View File

@ -4,7 +4,7 @@
, majorVersion ? null
}:
let allVersions = with lib; flip map
let allVersions = lib.flip map
# N.B. Versions in this list should be ordered from newest to oldest.
[
{

View File

@ -2,11 +2,11 @@
python3Packages.buildPythonApplication rec {
pname = "xlsxgrep";
version = "0.0.23";
version = "0.0.29";
src = fetchPypi {
inherit pname version;
sha256 = "014i1nifx67mxi0k9sch00j6bjykb6krzl2q3ara9s1g75inl4rm";
sha256 = "sha256-vgHNu7MVDjULoBiTkk74W8ZLJ02eds60XshTX3iLJGI=";
};
pythonPath = with python3Packages; [ xlrd ];

View File

@ -55,16 +55,16 @@ let
in
rustPlatform.buildRustPackage rec {
pname = "rio";
version = "0.1.1";
version = "0.1.7";
src = fetchFromGitHub {
owner = "raphamorim";
repo = "rio";
rev = "refs/tags/v${version}";
hash = "sha256-Hll9QpCN0/NDJ3tgJFnmNjfIotppGg5/BrHMxGmxOTo=";
hash = "sha256-3isj4FvzJpheUi12oQRNBvOxR8daL/J4RUOGgYLeBXQ=";
};
cargoHash = "sha256-yyxJi0kK2d2I+9GncYHcRKbdngYSltDjsTuChqaDG/U=";
cargoHash = "sha256-T+lXgNsMmq6cvsNe96R3F13SbboRAdd11UHumksqx4A=";
nativeBuildInputs = [
ncurses

View File

@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
cp -a contrib/git-* $out/bin/
'';
wrapperPath = with lib; makeBinPath ([
wrapperPath = lib.makeBinPath ([
coreutils
git
gnugrep

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "git-town";
version = "15.0.0";
version = "15.1.0";
src = fetchFromGitHub {
owner = "git-town";
repo = "git-town";
rev = "v${version}";
hash = "sha256-Gp2X9DCnueSVbeqFBNxLfvlXh4PzlybVdh8xKjaFICQ=";
hash = "sha256-e4lOyYQHsVOmOYKQ+3B2EdneWL8NEzboTlRKtO8Wdjg=";
};
vendorHash = null;

View File

@ -18,13 +18,13 @@
mkDerivation rec {
pname = "anilibria-winmaclinux";
version = "1.2.17";
version = "2.2.18";
src = fetchFromGitHub {
owner = "anilibria";
repo = "anilibria-winmaclinux";
rev = version;
hash = "sha256-Ij4F5UCt1YOB4MLTlUTAiTt2zN4TkJuf5v6sWb9pJ6k=";
hash = "sha256-gFIz2tkuBaC4DoN/oVNra5pQi23MAuhFJRGxEcZgvAo=";
};
sourceRoot = "${src.name}/src";

View File

@ -87,14 +87,14 @@ let
in stdenv.mkDerivation (finalAttrs: {
pname = "kodi";
version = "21.0";
version = "21.1";
kodiReleaseName = "Omega";
src = fetchFromGitHub {
owner = "xbmc";
repo = "xbmc";
rev = "${finalAttrs.version}-${finalAttrs.kodiReleaseName}";
hash = "sha256-xrFWqgwTkurEwt3/+/e4SCM6Uk9nxuW62SrCFWWqZO0=";
hash = "sha256-NjId1T1cw9dl0Fx1QDsijiN1VUpuQ/EFl1kxWSESCR4=";
};
patches = [

View File

@ -86,38 +86,37 @@ stdenv.mkDerivation rec {
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [ pkg-config yasm ];
buildInputs = with lib;
[ freetype ffmpeg_6 ]
++ optional aalibSupport aalib
++ optional fontconfigSupport fontconfig
++ optional fribidiSupport fribidi
++ optionals x11Support [ libX11 libXext libGLU libGL ]
++ optional alsaSupport alsa-lib
++ optional xvSupport libXv
++ optional theoraSupport libtheora
++ optional cacaSupport libcaca
++ optional xineramaSupport libXinerama
++ optional dvdnavSupport libdvdnav
++ optional dvdreadSupport libdvdread
++ optional bluraySupport libbluray
++ optional cddaSupport cdparanoia
++ optional jackaudioSupport libjack2
++ optionals amrSupport [ amrnb amrwb ]
++ optional x264Support x264
++ optional pulseSupport libpulseaudio
++ optional screenSaverSupport libXScrnSaver
++ optional lameSupport lame
++ optional vdpauSupport libvdpau
++ optional speexSupport speex
++ optional libpngSupport libpng
++ optional libjpegSupport libjpeg
++ optional bs2bSupport libbs2b
++ optional v4lSupport libv4l
++ (with darwin.apple_sdk.frameworks; optionals stdenv.isDarwin [ Cocoa OpenGL ])
buildInputs = [ freetype ffmpeg_6 ]
++ lib.optional aalibSupport aalib
++ lib.optional fontconfigSupport fontconfig
++ lib.optional fribidiSupport fribidi
++ lib.optionals x11Support [ libX11 libXext libGLU libGL ]
++ lib.optional alsaSupport alsa-lib
++ lib.optional xvSupport libXv
++ lib.optional theoraSupport libtheora
++ lib.optional cacaSupport libcaca
++ lib.optional xineramaSupport libXinerama
++ lib.optional dvdnavSupport libdvdnav
++ lib.optional dvdreadSupport libdvdread
++ lib.optional bluraySupport libbluray
++ lib.optional cddaSupport cdparanoia
++ lib.optional jackaudioSupport libjack2
++ lib.optionals amrSupport [ amrnb amrwb ]
++ lib.optional x264Support x264
++ lib.optional pulseSupport libpulseaudio
++ lib.optional screenSaverSupport libXScrnSaver
++ lib.optional lameSupport lame
++ lib.optional vdpauSupport libvdpau
++ lib.optional speexSupport speex
++ lib.optional libpngSupport libpng
++ lib.optional libjpegSupport libjpeg
++ lib.optional bs2bSupport libbs2b
++ lib.optional v4lSupport libv4l
++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa darwin.apple_sdk.frameworks.OpenGL ]
;
configurePlatforms = [ ];
configureFlags = with lib; [
configureFlags = [
"--enable-freetype"
(if fontconfigSupport then "--enable-fontconfig" else "--disable-fontconfig")
(if x11Support then "--enable-x11 --enable-gl" else "--disable-x11 --disable-gl")
@ -143,18 +142,14 @@ stdenv.mkDerivation rec {
"--disable-ossaudio"
"--disable-ffmpeg_a"
"--yasm=${buildPackages.yasm}/bin/yasm"
# Note, the `target` vs `host` confusion is intensional.
# Note, the `target` vs `host` confusion is intentional.
"--target=${stdenv.hostPlatform.config}"
] ++ optional
(useUnfreeCodecs && codecs != null && !crossBuild)
"--codecsdir=${codecs}"
++ optional
(stdenv.hostPlatform.isx86 && !crossBuild)
"--enable-runtime-cpudetection"
++ optional fribidiSupport "--enable-fribidi"
++ optional (stdenv.isLinux && !stdenv.isAarch64) "--enable-vidix"
++ optional stdenv.isLinux "--enable-fbdev"
++ optionals (crossBuild) [
] ++ lib.optional (useUnfreeCodecs && codecs != null && !crossBuild) "--codecsdir=${codecs}"
++ lib.optional (stdenv.hostPlatform.isx86 && !crossBuild) "--enable-runtime-cpudetection"
++ lib.optional fribidiSupport "--enable-fribidi"
++ lib.optional (stdenv.isLinux && !stdenv.isAarch64) "--enable-vidix"
++ lib.optional stdenv.isLinux "--enable-fbdev"
++ lib.optionals (crossBuild) [
"--enable-cross-compile"
"--disable-vidix-pcidb"
"--with-vidix-drivers=no"
@ -179,11 +174,11 @@ stdenv.mkDerivation rec {
# Fixes compilation with newer versions of clang that make these warnings errors by default.
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-int-conversion -Wno-incompatible-function-pointer-types";
NIX_LDFLAGS = with lib; toString (
optional fontconfigSupport "-lfontconfig"
++ optional fribidiSupport "-lfribidi"
++ optionals x11Support [ "-lX11" "-lXext" ]
++ optional x264Support "-lx264"
NIX_LDFLAGS = toString (
lib.optional fontconfigSupport "-lfontconfig"
++ lib.optional fribidiSupport "-lfribidi"
++ lib.optionals x11Support [ "-lX11" "-lXext" ]
++ lib.optional x264Support "-lx264"
++ [ "-lfreetype" ]
);

View File

@ -41,40 +41,38 @@ let
}
# can't check whether `fullScriptPath` is a directory, in pure-evaluation mode
(
with lib;
optionalAttrs
(
!any (s: hasSuffix s drv.passthru.scriptName) [
".js"
".lua"
".so"
]
)
{
single-main-in-script-dir =
runCommand "mpvScripts.${name}.passthru.tests.single-main-in-script-dir"
{
meta.maintainers = with lib.maintainers; [ nicoo ];
preferLocalBuild = true;
(lib.optionalAttrs
(
!lib.any (s: lib.hasSuffix s drv.passthru.scriptName) [
".js"
".lua"
".so"
]
)
{
single-main-in-script-dir =
runCommand "mpvScripts.${name}.passthru.tests.single-main-in-script-dir"
{
meta.maintainers = with lib.maintainers; [ nicoo ];
preferLocalBuild = true;
}
''
die() {
echo "$@" >&2
exit 1
}
''
die() {
echo "$@" >&2
exit 1
}
cd "${drv}/${scriptPath}" # so the glob expands to filenames only
mains=( main.* )
if [ "''${#mains[*]}" -eq 1 ]; then
touch $out
elif [ "''${#mains[*]}" -eq 0 ]; then
die "'${scriptPath}' contains no 'main.*' file"
else
die "'${scriptPath}' contains multiple 'main.*' files:" "''${mains[*]}"
fi
'';
}
cd "${drv}/${scriptPath}" # so the glob expands to filenames only
mains=( main.* )
if [ "''${#mains[*]}" -eq 1 ]; then
touch $out
elif [ "''${#mains[*]}" -eq 0 ]; then
die "'${scriptPath}' contains no 'main.*' file"
else
die "'${scriptPath}' contains multiple 'main.*' files:" "''${mains[*]}"
fi
'';
}
)
];
};

View File

@ -8,11 +8,11 @@ symlinkJoin {
nativeBuildInputs = [ makeWrapper ];
paths = [ obs-studio ] ++ plugins;
postBuild = with lib;
postBuild =
let
# Some plugins needs extra environment, see obs-gstreamer for an example.
pluginArguments =
lists.concatMap (plugin: plugin.obsWrapperArguments or []) plugins;
lib.lists.concatMap (plugin: plugin.obsWrapperArguments or []) plugins;
pluginsJoined = symlinkJoin {
name = "obs-studio-plugins";
@ -24,9 +24,9 @@ symlinkJoin {
"$out/bin/obs"
''--set OBS_PLUGINS_PATH "${pluginsJoined}/lib/obs-plugins"''
''--set OBS_PLUGINS_DATA_PATH "${pluginsJoined}/share/obs/obs-plugins"''
] ++ lists.unique pluginArguments;
] ++ lib.lists.unique pluginArguments;
in ''
${concatStringsSep " " wrapCommandLine}
${lib.concatStringsSep " " wrapCommandLine}
# Remove unused obs-plugins dir to not cause confusion
rm -r $out/share/obs/obs-plugins

View File

@ -39,13 +39,13 @@ let
in
stdenv.mkDerivation rec {
pname = "crun";
version = "1.16";
version = "1.16.1";
src = fetchFromGitHub {
owner = "containers";
repo = pname;
rev = version;
hash = "sha256-/dGnmZAFQ/e6EEfz8g75Eiefi2uz94moirWMLZRumdg=";
hash = "sha256-OhDzScs8xGs7kRn/xZRPwyqIszD0OuuY4ymrJ9QVDvM=";
fetchSubmodules = true;
};

View File

@ -326,26 +326,23 @@ in
''}
'';
meta =
with lib;
{
description = "Application containers for linux" + extraDescription;
longDescription = ''
Singularity (the upstream) renamed themselves to Apptainer
to distinguish themselves from a fork made by Sylabs Inc.. See
meta = {
description = "Application containers for linux" + extraDescription;
longDescription = ''
Singularity (the upstream) renamed themselves to Apptainer
to distinguish themselves from a fork made by Sylabs Inc.. See
https://sylabs.io/2021/05/singularity-community-edition
https://apptainer.org/news/community-announcement-20211130
'';
license = licenses.bsd3;
platforms = platforms.linux;
maintainers = with maintainers; [
jbedo
ShamrockLee
];
mainProgram = projectName;
}
// extraMeta;
https://sylabs.io/2021/05/singularity-community-edition
https://apptainer.org/news/community-announcement-20211130
'';
license = lib.licenses.bsd3;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
jbedo
ShamrockLee
];
mainProgram = projectName;
} // extraMeta;
}).overrideAttrs
(
finalAttrs: prevAttrs: {

View File

@ -1,88 +0,0 @@
{ lib
, mkDerivation
, fetchFromGitHub
, qtquickcontrols2
, cmake
, extra-cmake-modules
, krunner
, prison
, knotifyconfig
, kidletime
, kpeople
, kdesu
, kactivities-stats
, ktexteditor
, kinit
, kunitconversion
, kitemmodels
, phonon
, polkit-qt
, polkit
, mauikit
, mauikit-filebrowsing
, bluedevil
, plasma-nm
, plasma-pa
, bluez-qt
, maui-core
, cask-server
, mauiman
, mauikit-calendar
, qtmultimedia
}:
mkDerivation rec {
pname = "maui-shell";
version = "0.6.6";
src = fetchFromGitHub {
owner = "Nitrux";
repo = pname;
rev = "refs/tags/v${version}";
sha256 = "sha256-8D3rlYrqLfyDZQFRSaVlxLaEblbv8w787v8Np2aW3yc=";
};
nativeBuildInputs = [
cmake
extra-cmake-modules
];
buildInputs = [
bluedevil
bluez-qt
cask-server
kactivities-stats
kdesu
kidletime
kinit
kitemmodels
knotifyconfig
krunner
kunitconversion
kpeople
ktexteditor
mauikit
mauikit-calendar
mauikit-filebrowsing
mauiman
maui-core
phonon
plasma-nm
plasma-pa
polkit
polkit-qt
prison
qtmultimedia
qtquickcontrols2
];
meta = with lib; {
description = "Convergent shell for desktops, tablets, and phones";
homepage = "https://github.com/Nitrux/maui-shell";
license = licenses.lgpl3;
maintainers = with maintainers; [ onny ];
platforms = platforms.linux;
# https://github.com/Nitrux/maui-shell/issues/56
broken = true;
};
}

View File

@ -1,8 +1,4 @@
{
lib,
xorg,
runCommand,
}:
{ lib, runCommand }:
/**
Compresses files of a given derivation, and returns a new derivation with
compressed files
@ -72,7 +68,11 @@ let
in
runCommand "${drv.name}-compressed" { } ''
mkdir $out
(cd $out; ${xorg.lndir}/bin/lndir ${drv})
# cannot use lndir here, because it also symlinks directories,
# which we do not need; we only need to symlink files.
(cd ${drv}; find -L -type d -exec mkdir -p $out/{} ';')
(cd ${drv}; find -L -type f -exec ln -s ${drv}/{} $out/{} ';')
${lib.concatStringsSep "\n\n" (lib.mapAttrsToList mkCmd compressors)}
''

View File

@ -10,15 +10,15 @@
assert sshSupport -> openssh != null;
let
repoName = with lib;
repoName =
let
fst = head;
snd = l: head (tail l);
trd = l: head (tail (tail l));
fst = lib.head;
snd = l: lib.head (lib.tail l);
trd = l: lib.head (lib.tail (lib.tail l));
path_ =
(p: if head p == "" then tail p else p) # ~ drop final slash if any
(reverseList (splitString "/" url));
path = [ (removeSuffix "/" (head path_)) ] ++ (tail path_);
(p: if lib.head p == "" then lib.tail p else p) # ~ drop final slash if any
(lib.reverseList (lib.splitString "/" url));
path = [ (lib.removeSuffix "/" (lib.head path_)) ] ++ (lib.tail path_);
in
# ../repo/trunk -> repo
if fst path == "trunk" then snd path

View File

@ -3,16 +3,16 @@ lib: prev:
let
# Removing recurseForDerivation prevents derivations of aliased attribute
# set to appear while listing all the packages available.
removeRecurseForDerivations = alias: with lib;
removeRecurseForDerivations = alias:
if alias.recurseForDerivations or false then
removeAttrs alias ["recurseForDerivations"]
lib.removeAttrs alias ["recurseForDerivations"]
else alias;
# Disabling distribution prevents top-level aliases for non-recursed package
# sets from building on Hydra.
removeDistribute = alias: with lib;
if isDerivation alias then
dontDistribute alias
removeDistribute = alias:
if lib.isDerivation alias then
lib.dontDistribute alias
else alias;
# Make sure that we are not shadowing something from

View File

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec {
pname = "ab-av1";
version = "0.7.16";
version = "0.7.17";
src = fetchFromGitHub {
owner = "alexheretic";
repo = "ab-av1";
rev = "v${version}";
hash = "sha256-gZdlitOu0Tyur2xdPBYLZg/N2eL6oT6BasVzmx0lHE4=";
hash = "sha256-QPelXqJT3zbVP+lNiczrCR+JD4icimSyCravlIwTAyw=";
};
cargoHash = "sha256-aws8miz+HWdfL33c+BmBo01ooXJMKB9Ekdji+Uh58AQ=";
cargoHash = "sha256-7h1Hbtsk0pnoPXX5sFfzcZoH/sqcb0YTpmJp6yCzTG0=";
nativeBuildInputs = [ installShellFiles ];

View File

@ -7,13 +7,13 @@
stdenvNoCC.mkDerivation {
pname = "ananicy-rules-cachyos";
version = "0-unstable-2024-07-23";
version = "0-unstable-2024-07-27";
src = fetchFromGitHub {
owner = "CachyOS";
repo = "ananicy-rules";
rev = "2453e457d44422164c616b548114ffc5c13bc11b";
hash = "sha256-aILzlb/sZy3UuYlnaqYEj93hzuzCx1ZwDjU5iC5Mjpc=";
rev = "c6153c9e909475bbb08b4e56af152179ff7f171f";
hash = "sha256-sAWHm3PK9mM+AtHdDhq3RIQBo58eEZtD1l7QfCTpl0s=";
};
dontConfigure = true;

View File

@ -2,21 +2,19 @@
let
pname = "anytype";
version = "0.42.3";
version = "0.42.4";
name = "Anytype-${version}";
src = fetchurl {
url = "https://github.com/anyproto/anytype-ts/releases/download/v${version}/${name}.AppImage";
name = "Anytype-${version}.AppImage";
hash = "sha256-4Tz080lNQXqTq+LEax4fYV27/DDSRUalpkO46KZ1ay8=";
hash = "sha256-SFLjjr+L7eTqaZ2teug7mzXhIU+eVebBqrE4q5aasLk=";
};
appimageContents = appimageTools.extractType2 { inherit name src; };
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in appimageTools.wrapType2 {
inherit name src;
inherit pname version src;
extraPkgs = pkgs: [ pkgs.libsecret ];
extraInstallCommands = ''
mv $out/bin/${name} $out/bin/${pname}
source "${makeWrapper}/nix-support/setup-hook"
wrapProgram $out/bin/${pname} \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
@ -33,6 +31,7 @@ in appimageTools.wrapType2 {
description = "P2P note-taking tool";
homepage = "https://anytype.io/";
license = licenses.unfree;
mainProgram = "anytype";
maintainers = with maintainers; [ running-grass ];
platforms = [ "x86_64-linux" ];
};

View File

@ -2,7 +2,7 @@
## Updating the CLI
- Update `version` and `src.hash` in default.nix
- Update `version` and `src.hash` in package.nix
- Check out the changes made to the azure-cli [setup.py](https://github.com/Azure/azure-cli/blob/dev/src/azure-cli/setup.py) since the last release
- Try build the CLI, will likely fail with `ModuleNotFoundError`, for example
```

View File

@ -32,19 +32,17 @@ stdenv.mkDerivation rec {
install -Dm755 btrfs-auto-snapshot $out/bin/btrfs-auto-snapshot
'';
wrapperPath =
with lib;
makeBinPath (
[
coreutils
getopt
gnugrep
gnused
gawk
btrfs-progs
]
++ optional syslogSupport util-linux
);
wrapperPath = lib.makeBinPath (
[
coreutils
getopt
gnugrep
gnused
gawk
btrfs-progs
]
++ lib.optional syslogSupport util-linux
);
postFixup = ''
wrapProgram $out/bin/btrfs-auto-snapshot \

Some files were not shown because too many files have changed in this diff Show More