Merge master into haskell-updates
This commit is contained in:
commit
0f0aff203c
@ -162,3 +162,6 @@ fc7a83f8b62e90de5679e993d4d49ca014ea013d
|
||||
|
||||
# darwin.stdenv: format with nixfmt-rfc-style (#333962)
|
||||
93c10ac9e561c6594d3baaeaff2341907390d9b8
|
||||
|
||||
# nrr: format with nixfmt-rfc-style (#334578)
|
||||
cffc27daf06c77c0d76bc35d24b929cb9d68c3c9
|
||||
|
@ -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";
|
||||
|
@ -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).
|
||||
|
@ -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
|
||||
|
24
nixos/modules/programs/iio-hyprland.nix
Normal file
24
nixos/modules/programs/iio-hyprland.nix
Normal 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 ];
|
||||
}
|
@ -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; })
|
||||
]);
|
||||
}
|
||||
|
@ -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
|
||||
})
|
||||
|
@ -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; })
|
||||
]);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -56,7 +56,7 @@ in
|
||||
}
|
||||
|
||||
(import ./wayland-session.nix {
|
||||
inherit lib pkgs;
|
||||
inherit lib;
|
||||
enableXWayland = cfg.xwayland.enable;
|
||||
})
|
||||
]);
|
||||
|
@ -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;
|
||||
})
|
||||
]);
|
||||
|
@ -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;
|
||||
})
|
||||
]
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 ];
|
||||
}
|
||||
|
@ -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.
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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" ];
|
||||
};
|
||||
}
|
||||
|
98
nixos/modules/services/web-apps/homebox.nix
Normal file
98
nixos/modules/services/web-apps/homebox.nix
Normal 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 ];
|
||||
}
|
@ -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
26
nixos/tests/homebox.nix
Normal 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
|
||||
'';
|
||||
}
|
||||
)
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -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 = ''
|
||||
|
@ -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 don’t 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
|
||||
|
||||
|
@ -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" ];
|
||||
|
@ -27,7 +27,7 @@ python311Packages.buildPythonApplication rec {
|
||||
./disable-autoupdate.patch
|
||||
];
|
||||
|
||||
postPatch = with lib; ''
|
||||
postPatch = ''
|
||||
sed -i -re 's,^( *gpodder_dir *= *).*,\1"'"$out"'",' bin/gpodder
|
||||
'';
|
||||
|
||||
|
@ -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 ];
|
||||
|
@ -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:
|
||||
|
14
pkgs/applications/display-managers/ly/deps.nix
generated
14
pkgs/applications/display-managers/ly/deps.nix
generated
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
];
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 = {
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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}"
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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 ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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";
|
||||
|
@ -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,
|
||||
|
@ -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",
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 = [
|
||||
|
@ -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 ];
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
];
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -58,7 +58,7 @@ in mkDerivation rec {
|
||||
sha256 = "ig3+TdYv277D9GVnkRSX6nc6D6qruUOw/IQdQCK6FoA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with lib; [
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
curl
|
||||
git
|
||||
|
@ -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=";
|
||||
|
@ -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 ''
|
||||
|
@ -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;
|
||||
|
@ -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 ];
|
||||
};
|
||||
|
@ -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 }:
|
||||
|
@ -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=";
|
||||
};
|
||||
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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=";
|
||||
|
@ -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 ];
|
||||
|
||||
|
@ -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}");
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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}" ];
|
||||
|
||||
|
@ -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" ];
|
||||
|
||||
|
@ -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 = ''
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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";
|
||||
|
@ -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 {
|
||||
|
@ -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";
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 ];
|
||||
|
@ -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.
|
||||
[
|
||||
{
|
||||
|
@ -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 ];
|
||||
|
@ -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
|
||||
|
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
|
||||
cp -a contrib/git-* $out/bin/
|
||||
'';
|
||||
|
||||
wrapperPath = with lib; makeBinPath ([
|
||||
wrapperPath = lib.makeBinPath ([
|
||||
coreutils
|
||||
git
|
||||
gnugrep
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
@ -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 = [
|
||||
|
@ -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" ]
|
||||
);
|
||||
|
||||
|
@ -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
|
||||
'';
|
||||
}
|
||||
)
|
||||
];
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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: {
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
@ -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)}
|
||||
''
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 ];
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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" ];
|
||||
};
|
||||
|
@ -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
|
||||
```
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user