Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2025-06-04 17:44:02 +00:00
committed by GitHub
401 changed files with 5799 additions and 3124 deletions
+6
View File
@@ -19511,6 +19511,12 @@
githubId = 7536431;
name = "Jonas Fierlings";
};
pilz = {
name = "Pilz";
email = "nix@pilz.foo";
github = "pilz0";
githubId = 48645439;
};
pimeys = {
email = "julius@nauk.io";
github = "pimeys";
+21
View File
@@ -56,6 +56,12 @@
"module-services-opencloud-basic-usage": [
"index.html#module-services-opencloud-basic-usage"
],
"module-services-networking-pihole-ftl-configuration-inherit-dnsmasq": [
"index.html#module-services-networking-pihole-ftl-configuration-inherit-dnsmasq"
],
"module-services-networking-pihole-ftl-configuration-multiple-interfaces": [
"index.html#module-services-networking-pihole-ftl-configuration-multiple-interfaces"
],
"module-services-strfry": [
"index.html#module-services-strfry"
],
@@ -1448,6 +1454,21 @@
"module-services-input-methods-kime": [
"index.html#module-services-input-methods-kime"
],
"module-services-networking-pihole-ftl": [
"index.html#module-services-networking-pihole-ftl"
],
"module-services-networking-pihole-ftl-administration": [
"index.html#module-services-networking-pihole-ftl-administration"
],
"module-services-networking-pihole-ftl-configuration": [
"index.html#module-services-networking-pihole-ftl-configuration"
],
"module-services-web-apps-pihole-web": [
"index.html#module-services-web-apps-pihole-web"
],
"module-services-web-apps-pihole-web-configuration": [
"index.html#module-services-web-apps-pihole-web-configuration"
],
"ch-profiles": [
"index.html#ch-profiles"
],
@@ -13,6 +13,8 @@
- [gtklock](https://github.com/jovanlanik/gtklock), a GTK-based lockscreen for Wayland. Available as [programs.gtklock](#opt-programs.gtklock.enable).
- [Chrysalis](https://github.com/keyboardio/Chrysalis), a graphical configurator for Kaleidoscope-powered keyboards. Available as [programs.chrysalis](#opt-programs.chrysalis.enable).
- [Pi-hole](https://pi-hole.net/), a DNS sinkhole for advertisements based on Dnsmasq. Available as [services.pihole-ftl](#opt-services.pihole-ftl.enable), and [services.pihole-web](#opt-services.pihole-web.enable) for the web GUI and API.
- [FileBrowser](https://filebrowser.org/), a web application for managing and sharing files. Available as [services.filebrowser](#opt-services.filebrowser.enable).
- [LACT](https://github.com/ilya-zlobintsev/LACT), a GPU monitoring and configuration tool, can now be enabled through [services.lact.enable](#opt-services.lact.enable).
+2
View File
@@ -1268,6 +1268,7 @@
./services/networking/pdnsd.nix
./services/networking/peroxide.nix
./services/networking/picosnitch.nix
./services/networking/pihole-ftl.nix
./services/networking/pixiecore.nix
./services/networking/pleroma.nix
./services/networking/powerdns.nix
@@ -1629,6 +1630,7 @@
./services/web-apps/photoprism.nix
./services/web-apps/phylactery.nix
./services/web-apps/pict-rs.nix
./services/web-apps/pihole-web.nix
./services/web-apps/pingvin-share.nix
./services/web-apps/pixelfed.nix
./services/web-apps/plantuml-server.nix
+1 -1
View File
@@ -25,7 +25,7 @@ let
in
{
pg_dump_command =
if d.name == "all" then
if d.name == "all" && (!(d ? format) || isNull d.format) then
"${as_user}${postgresql}/bin/pg_dumpall"
else
"${as_user}${postgresql}/bin/pg_dump";
+52 -57
View File
@@ -79,8 +79,13 @@ in
)
(mkRemovedOptionModule [ "services" "gitea" "ssh" "enable" ]
"services.gitea.ssh.enable has been migrated into freeform setting services.gitea.settings.server.DISABLE_SSH. Keep in mind that the setting is inverted"
"It has been migrated into freeform setting services.gitea.settings.server.DISABLE_SSH. Keep in mind that the setting is inverted."
)
(mkRemovedOptionModule [
"services"
"gitea"
"useWizard"
] "Has been removed because it was broken and lacked automated testing.")
];
options = {
@@ -93,12 +98,6 @@ in
package = mkPackageOption pkgs "gitea" { };
useWizard = mkOption {
default = false;
type = types.bool;
description = "Do not generate a configuration and use gitea' installation wizard instead. The first registered user will be administrator.";
};
stateDir = mkOption {
default = "/var/lib/gitea";
type = types.str;
@@ -495,9 +494,7 @@ in
This can be disabled by using this option.
*Note:* please keep in mind that this should be added after the initial
deploy unless [](#opt-services.gitea.useWizard)
is `true` as the first registered user will be the administrator if
no install wizard is used.
deploy as the first registered user will be the administrator.
'';
};
};
@@ -752,62 +749,60 @@ in
in
''
# copy custom configuration and generate random secrets if needed
${optionalString (!cfg.useWizard) ''
function gitea_setup {
cp -f '${configFile}' '${runConfig}'
function gitea_setup {
cp -f '${configFile}' '${runConfig}'
if [ ! -s '${secretKey}' ]; then
${exe} generate secret SECRET_KEY > '${secretKey}'
if [ ! -s '${secretKey}' ]; then
${exe} generate secret SECRET_KEY > '${secretKey}'
fi
# Migrate LFS_JWT_SECRET filename
if [[ -s '${oldLfsJwtSecret}' && ! -s '${lfsJwtSecret}' ]]; then
mv '${oldLfsJwtSecret}' '${lfsJwtSecret}'
fi
if [ ! -s '${oauth2JwtSecret}' ]; then
${exe} generate secret JWT_SECRET > '${oauth2JwtSecret}'
fi
${lib.optionalString cfg.lfs.enable ''
if [ ! -s '${lfsJwtSecret}' ]; then
${exe} generate secret LFS_JWT_SECRET > '${lfsJwtSecret}'
fi
''}
# Migrate LFS_JWT_SECRET filename
if [[ -s '${oldLfsJwtSecret}' && ! -s '${lfsJwtSecret}' ]]; then
mv '${oldLfsJwtSecret}' '${lfsJwtSecret}'
fi
if [ ! -s '${internalToken}' ]; then
${exe} generate secret INTERNAL_TOKEN > '${internalToken}'
fi
if [ ! -s '${oauth2JwtSecret}' ]; then
${exe} generate secret JWT_SECRET > '${oauth2JwtSecret}'
fi
chmod u+w '${runConfig}'
${replaceSecretBin} '#secretkey#' '${secretKey}' '${runConfig}'
${replaceSecretBin} '#dbpass#' '${cfg.database.passwordFile}' '${runConfig}'
${replaceSecretBin} '#oauth2jwtsecret#' '${oauth2JwtSecret}' '${runConfig}'
${replaceSecretBin} '#internaltoken#' '${internalToken}' '${runConfig}'
${lib.optionalString cfg.lfs.enable ''
if [ ! -s '${lfsJwtSecret}' ]; then
${exe} generate secret LFS_JWT_SECRET > '${lfsJwtSecret}'
fi
''}
${lib.optionalString cfg.lfs.enable ''
${replaceSecretBin} '#lfsjwtsecret#' '${lfsJwtSecret}' '${runConfig}'
''}
if [ ! -s '${internalToken}' ]; then
${exe} generate secret INTERNAL_TOKEN > '${internalToken}'
fi
${lib.optionalString (cfg.camoHmacKeyFile != null) ''
${replaceSecretBin} '#hmackey#' '${cfg.camoHmacKeyFile}' '${runConfig}'
''}
chmod u+w '${runConfig}'
${replaceSecretBin} '#secretkey#' '${secretKey}' '${runConfig}'
${replaceSecretBin} '#dbpass#' '${cfg.database.passwordFile}' '${runConfig}'
${replaceSecretBin} '#oauth2jwtsecret#' '${oauth2JwtSecret}' '${runConfig}'
${replaceSecretBin} '#internaltoken#' '${internalToken}' '${runConfig}'
${lib.optionalString (cfg.mailerPasswordFile != null) ''
${replaceSecretBin} '#mailerpass#' '${cfg.mailerPasswordFile}' '${runConfig}'
''}
${lib.optionalString cfg.lfs.enable ''
${replaceSecretBin} '#lfsjwtsecret#' '${lfsJwtSecret}' '${runConfig}'
''}
${lib.optionalString (cfg.metricsTokenFile != null) ''
${replaceSecretBin} '#metricstoken#' '${cfg.metricsTokenFile}' '${runConfig}'
''}
${lib.optionalString (cfg.camoHmacKeyFile != null) ''
${replaceSecretBin} '#hmackey#' '${cfg.camoHmacKeyFile}' '${runConfig}'
''}
${lib.optionalString (cfg.mailerPasswordFile != null) ''
${replaceSecretBin} '#mailerpass#' '${cfg.mailerPasswordFile}' '${runConfig}'
''}
${lib.optionalString (cfg.metricsTokenFile != null) ''
${replaceSecretBin} '#metricstoken#' '${cfg.metricsTokenFile}' '${runConfig}'
''}
${lib.optionalString (cfg.captcha.secretFile != null) ''
${replaceSecretBin} '#captchasecret#' '${cfg.captcha.secretFile}' '${runConfig}'
''}
chmod u-w '${runConfig}'
}
(umask 027; gitea_setup)
''}
${lib.optionalString (cfg.captcha.secretFile != null) ''
${replaceSecretBin} '#captchasecret#' '${cfg.captcha.secretFile}' '${runConfig}'
''}
chmod u-w '${runConfig}'
}
(umask 027; gitea_setup)
# run migrations/init the database
${exe} migrate
@@ -115,6 +115,12 @@ in
'';
};
configFile = lib.mkOption {
type = lib.types.package;
default = dnsmasqConf;
internal = true;
};
};
};
@@ -172,7 +178,7 @@ in
serviceConfig = {
Type = "dbus";
BusName = "uk.org.thekelleys.dnsmasq";
ExecStart = "${dnsmasq}/bin/dnsmasq -k --enable-dbus --user=dnsmasq -C ${dnsmasqConf}";
ExecStart = "${dnsmasq}/bin/dnsmasq -k --enable-dbus --user=dnsmasq -C ${cfg.configFile}";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
PrivateTmp = true;
ProtectSystem = true;
@@ -0,0 +1,82 @@
{
cfg,
config,
lib,
pkgs,
}:
let
pihole = pkgs.pihole;
makePayload =
list:
builtins.toJSON {
inherit (list) type enabled;
address = list.url;
comment = list.description;
};
payloads = map makePayload cfg.lists;
in
''
# Can't use -u (unset) because api.sh uses API_URL before it is set
set -eo pipefail
pihole="${lib.getExe pihole}"
jq="${lib.getExe pkgs.jq}"
# If the database doesn't exist, it needs to be created with gravity.sh
if [ ! -f '${cfg.stateDirectory}'/gravity.db ]; then
$pihole -g
# Send SIGRTMIN to FTL, which makes it reload the database, opening the newly created one
${pkgs.procps}/bin/kill -s SIGRTMIN $(systemctl show --property MainPID --value ${config.systemd.services.pihole-ftl.name})
fi
source ${pihole}/usr/share/pihole/advanced/Scripts/api.sh
source ${pihole}/usr/share/pihole/advanced/Scripts/utils.sh
any_failed=0
addList() {
local payload="$1"
echo "Adding list: $payload"
local result=$(PostFTLData "lists" "$payload")
local error="$($jq '.error' <<< "$result")"
if [[ "$error" != "null" ]]; then
echo "Error: $error"
any_failed=1
return
fi
id="$($jq '.lists.[].id?' <<< "$result")"
if [[ "$id" == "null" ]]; then
any_failed=1
error="$($jq '.processed.errors.[].error' <<< "$result")"
echo "Error: $error"
return
fi
echo "Added list ID $id: $result"
}
for i in 1 2 3; do
(TestAPIAvailability) && break
echo "Retrying API shortly..."
${pkgs.coreutils}/bin/sleep .5s
done;
LoginAPI
${builtins.concatStringsSep "\n" (
map (
payload:
lib.pipe payload [
lib.strings.escapeShellArg
(payload: "addList ${payload}")
]
) payloads
)}
# Run gravity.sh to load any new lists
$pihole -g
exit $any_failed
''
@@ -0,0 +1,128 @@
# pihole-FTL {#module-services-networking-pihole-ftl}
*Upstream documentation*: <https://docs.pi-hole.net/ftldns/>
pihole-FTL is a fork of [Dnsmasq](index.html#module-services-networking-dnsmasq),
providing some additional features, including an API for analysis and
statistics.
Note that pihole-FTL and Dnsmasq cannot be enabled at
the same time.
## Configuration {#module-services-networking-pihole-ftl-configuration}
pihole-FTL can be configured with [{option}`services.pihole-ftl.settings`](options.html#opt-services.pihole-ftl.settings), which controls the content of `pihole.toml`.
The template pihole.toml is provided in `pihole-ftl.passthru.settingsTemplate`,
which describes all settings.
Example configuration:
```nix
{
services.pihole-ftl = {
enable = true;
openFirewallDHCP = true;
queryLogDeleter.enable = true;
lists = [
{
url = "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts";
# Alternatively, use the file from nixpkgs. Note its contents won't be
# automatically updated by Pi-hole, as it would with an online URL.
# url = "file://${pkgs.stevenblack-blocklist}/hosts";
description = "Steven Black's unified adlist";
}
];
settings = {
dns = {
domainNeeded = true;
expandHosts = true;
interface = "br-lan";
listeningMode = "BIND";
upstreams = [ "127.0.0.1#5053" ];
};
dhcp = {
active = true;
router = "192.168.10.1";
start = "192.168.10.2";
end = "192.168.10.254";
leaseTime = "1d";
ipv6 = true;
multiDNS = true;
hosts = [
# Static address for the current host
"aa:bb:cc:dd:ee:ff,192.168.10.1,${config.networking.hostName},infinite"
];
rapidCommit = true;
};
misc.dnsmasq_lines = [
# This DHCP server is the only one on the network
"dhcp-authoritative"
# Source: https://data.iana.org/root-anchors/root-anchors.xml
"trust-anchor=.,38696,8,2,683D2D0ACB8C9B712A1948B27F741219298D0A450D612C483AF444A4C0FB2B16"
];
};
};
}
```
### Inheriting configuration from Dnsmasq {#module-services-networking-pihole-ftl-configuration-inherit-dnsmasq}
If [{option}`services.pihole-ftl.useDnsmasqConfig`](options.html#opt-services.pihole-ftl.useDnsmasqConfig) is enabled, the configuration [options of the Dnsmasq
module](index.html#module-services-networking-dnsmasq) will be automatically
used by pihole-FTL. Note that this may cause duplicate option errors
depending on pihole-FTL settings.
See the [Dnsmasq
example](index.html#module-services-networking-dnsmasq-configuration-home) for
an exemplar Dnsmasq configuration. Make sure to set
[{option}`services.dnsmasq.enable`](options.html#opt-services.dnsmasq.enable) to false and
[{option}`services.pihole-ftl.enable`](options.html#opt-services.pihole-ftl.enable) to true instead:
```nix
{
services.pihole-ftl = {
enable = true;
useDnsmasqConfig = true;
};
}
```
### Serving on multiple interfaces {#module-services-networking-pihole-ftl-configuration-multiple-interfaces}
Pi-hole's configuration only supports specifying a single interface. If you want
to configure additional interfaces with different configuration, use
`misc.dnsmasq_lines` to append extra Dnsmasq options.
```nix
{
services.pihole-ftl = {
settings.misc.dnsmasq_lines = [
# Specify the secondary interface
"interface=enp1s0"
# A different device is the router on this network, e.g. the one
# provided by your ISP
"dhcp-option=enp1s0,option:router,192.168.0.1"
# Specify the IPv4 ranges to allocate, with a 1-day lease time
"dhcp-range=enp1s0,192.168.0.10,192.168.0.253,1d"
# Enable IPv6
"dhcp-range=::f,::ff,constructor:enp1s0,ra-names,ra-stateless"
];
};
};
}
```
## Administration {#module-services-networking-pihole-ftl-administration}
*pihole command documentation*: <https://docs.pi-hole.net/main/pihole-command>
Enabling pihole-FTL provides the `pihole` command, which can be used to control
the daemon and some configuration.
Note that in NixOS the script has been patched to remove the reinstallation,
update, and Dnsmasq configuration commands. In NixOS, Pi-hole's configuration is
immutable and must be done with NixOS options.
For more convenient administration and monitoring, see [Pi-hole
Dashboard](#module-services-web-apps-pihole-web)
@@ -0,0 +1,483 @@
{
config,
lib,
pkgs,
...
}:
with {
inherit (lib)
elemAt
getExe
hasAttrByPath
mkEnableOption
mkIf
mkOption
strings
types
;
};
let
mkDefaults = lib.mapAttrsRecursive (n: v: lib.mkDefault v);
cfg = config.services.pihole-ftl;
piholeScript = pkgs.writeScriptBin "pihole" ''
sudo=exec
if [[ "$USER" != '${cfg.user}' ]]; then
sudo='exec /run/wrappers/bin/sudo -u ${cfg.user}'
fi
$sudo ${getExe cfg.piholePackage} "$@"
'';
settingsFormat = pkgs.formats.toml { };
settingsFile = settingsFormat.generate "pihole.toml" cfg.settings;
in
{
options.services.pihole-ftl = {
enable = mkEnableOption "Pi-hole FTL";
package = lib.mkPackageOption pkgs "pihole-ftl" { };
piholePackage = lib.mkPackageOption pkgs "pihole" { };
privacyLevel = mkOption {
type = types.numbers.between 0 3;
description = ''
Level of detail in generated statistics. 0 enables full statistics, 3
shows only anonymous statistics.
See [the documentation](https://docs.pi-hole.net/ftldns/privacylevels).
Also see services.dnsmasq.settings.log-queries to completely disable
query logging.
'';
default = 0;
example = "3";
};
openFirewallDHCP = mkOption {
type = types.bool;
default = false;
description = "Open ports in the firewall for pihole-FTL's DHCP server.";
};
openFirewallWebserver = mkOption {
type = types.bool;
default = false;
description = ''
Open ports in the firewall for pihole-FTL's webserver, as configured in `settings.webserver.port`.
'';
};
configDirectory = mkOption {
type = types.path;
default = "/etc/pihole";
internal = true;
readOnly = true;
description = ''
Path for pihole configuration.
pihole does not currently support any path other than /etc/pihole.
'';
};
stateDirectory = mkOption {
type = types.path;
default = "/var/lib/pihole";
description = ''
Path for pihole state files.
'';
};
logDirectory = mkOption {
type = types.path;
default = "/var/log/pihole";
description = "Path for Pi-hole log files";
};
settings = mkOption {
type = settingsFormat.type;
description = ''
Configuration options for pihole.toml.
See the upstream [documentation](https://docs.pi-hole.net/ftldns/configfile).
'';
};
useDnsmasqConfig = mkOption {
type = types.bool;
default = false;
description = ''
Import options defined in [](#opt-services.dnsmasq.settings) via
misc.dnsmasq_lines in Pi-hole's config.
'';
};
pihole = mkOption {
type = types.package;
default = piholeScript;
internal = true;
description = "Pi-hole admin script";
};
lists =
let
adlistType = types.submodule {
options = {
url = mkOption {
type = types.str;
description = "URL of the domain list";
};
type = mkOption {
type = types.enum [
"allow"
"block"
];
default = "block";
description = "Whether domains on this list should be explicitly allowed, or blocked";
};
enabled = mkOption {
type = types.bool;
default = true;
description = "Whether this list is enabled";
};
description = mkOption {
type = types.str;
description = "Description of the list";
default = "";
};
};
};
in
mkOption {
type = with types; listOf adlistType;
description = "Deny (or allow) domain lists to use";
default = [ ];
example = [
{
url = "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts";
}
];
};
user = mkOption {
type = types.str;
default = "pihole";
description = "User to run the service as.";
};
group = mkOption {
type = types.str;
default = "pihole";
description = "Group to run the service as.";
};
queryLogDeleter = {
enable = mkEnableOption ("Pi-hole FTL DNS query log deleter");
age = mkOption {
type = types.int;
default = 90;
description = ''
Delete DNS query logs older than this many days, if
[](#opt-services.pihole-ftl.queryLogDeleter.enable) is on.
'';
};
interval = mkOption {
type = types.str;
default = "weekly";
description = ''
How often the query log deleter is run. See systemd.time(7) for more
information about the format.
'';
};
};
};
config = mkIf cfg.enable {
assertions = [
{
assertion = !config.services.dnsmasq.enable;
message = "pihole-ftl conflicts with dnsmasq. Please disable one of them.";
}
{
assertion =
builtins.length cfg.lists == 0
|| (
(hasAttrByPath [ "webserver" "port" ] cfg.settings)
&& !builtins.elem cfg.settings.webserver.port [
""
null
]
);
message = ''
The Pi-hole webserver must be enabled for lists set in services.pihole-ftl.lists to be automatically loaded on startup via the web API.
services.pihole-ftl.settings.port must be defined, e.g. by enabling services.pihole-web.enable and defining services.pihole-web.port.
'';
}
{
assertion =
builtins.length cfg.lists == 0
|| !(hasAttrByPath [ "webserver" "api" "cli_pw" ] cfg.settings)
|| cfg.settings.webserver.api.cli_pw == true;
message = ''
services.pihole-ftl.settings.webserver.api.cli_pw must be true for lists set in services.pihole-ftl.lists to be automatically loaded on startup.
This enables an ephemeral password used by the pihole command.
'';
}
];
services.pihole-ftl.settings = lib.mkMerge [
# Defaults
(mkDefaults {
misc.readOnly = true; # Prevent config changes via API or CLI by default
webserver.port = ""; # Disable the webserver by default
misc.privacyLevel = cfg.privacyLevel;
})
# Move state files to cfg.stateDirectory
{
# TODO: Pi-hole currently hardcodes dhcp-leasefile this in its
# generated dnsmasq.conf, and we can't override it
misc.dnsmasq_lines = [
# "dhcp-leasefile=${cfg.stateDirectory}/dhcp.leases"
# "hostsdir=${cfg.stateDirectory}/hosts"
];
files = {
database = "${cfg.stateDirectory}/pihole-FTL.db";
gravity = "${cfg.stateDirectory}/gravity.db";
macvendor = "${cfg.stateDirectory}/gravity.db";
log.ftl = "${cfg.logDirectory}/FTL.log";
log.dnsmasq = "${cfg.logDirectory}/pihole.log";
log.webserver = "${cfg.logDirectory}/webserver.log";
};
webserver.tls = "${cfg.stateDirectory}/tls.pem";
}
(lib.optionalAttrs cfg.useDnsmasqConfig {
misc.dnsmasq_lines = lib.pipe config.services.dnsmasq.configFile [
builtins.readFile
(lib.strings.splitString "\n")
(builtins.filter (s: s != ""))
];
})
];
systemd.tmpfiles.rules = [
"d ${cfg.configDirectory} 0700 ${cfg.user} ${cfg.group} - -"
"d ${cfg.stateDirectory} 0700 ${cfg.user} ${cfg.group} - -"
"d ${cfg.logDirectory} 0700 ${cfg.user} ${cfg.group} - -"
];
systemd.services = {
pihole-ftl =
let
setupService = config.systemd.services.pihole-ftl-setup.name;
in
{
description = "Pi-hole FTL";
after = [ "network.target" ];
before = [ setupService ];
wantedBy = [ "multi-user.target" ];
wants = [ setupService ];
environment = {
# Currently unused, but allows the service to be reloaded
# automatically when the config is changed.
PIHOLE_CONFIG = settingsFile;
# pihole is executed by the /actions/gravity API endpoint
PATH = lib.mkForce (
lib.makeBinPath [
cfg.piholePackage
]
);
};
serviceConfig = {
Type = "simple";
User = cfg.user;
Group = cfg.group;
AmbientCapabilities = [
"CAP_NET_BIND_SERVICE"
"CAP_NET_RAW"
"CAP_NET_ADMIN"
"CAP_SYS_NICE"
"CAP_IPC_LOCK"
"CAP_CHOWN"
"CAP_SYS_TIME"
];
ExecStart = "${getExe cfg.package} no-daemon";
Restart = "on-failure";
RestartSec = 1;
# Hardening
NoNewPrivileges = true;
PrivateTmp = true;
PrivateDevices = true;
DevicePolicy = "closed";
ProtectSystem = "strict";
ProtectHome = "read-only";
ProtectControlGroups = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ReadWritePaths = [
cfg.configDirectory
cfg.stateDirectory
cfg.logDirectory
];
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
MemoryDenyWriteExecute = true;
LockPersonality = true;
};
};
pihole-ftl-setup = {
description = "Pi-hole FTL setup";
# Wait for network so lists can be downloaded
after = [ "network-online.target" ];
requires = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
User = cfg.user;
Group = cfg.group;
# Hardening
NoNewPrivileges = true;
PrivateTmp = true;
PrivateDevices = true;
DevicePolicy = "closed";
ProtectSystem = "strict";
ProtectHome = "read-only";
ProtectControlGroups = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ReadWritePaths = [
cfg.configDirectory
cfg.stateDirectory
cfg.logDirectory
];
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
MemoryDenyWriteExecute = true;
LockPersonality = true;
};
script = import ./pihole-ftl-setup-script.nix {
inherit
cfg
config
lib
pkgs
;
};
};
pihole-ftl-log-deleter = mkIf cfg.queryLogDeleter.enable {
description = "Pi-hole FTL DNS query log deleter";
serviceConfig = {
Type = "oneshot";
User = cfg.user;
Group = cfg.group;
# Hardening
NoNewPrivileges = true;
PrivateTmp = true;
PrivateDevices = true;
DevicePolicy = "closed";
ProtectSystem = "strict";
ProtectHome = "read-only";
ProtectControlGroups = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ReadWritePaths = [ cfg.stateDirectory ];
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK";
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
MemoryDenyWriteExecute = true;
LockPersonality = true;
};
script =
let
days = toString cfg.queryLogDeleter.age;
database = "${cfg.stateDirectory}/pihole-FTL.db";
in
''
set -euo pipefail
echo "Deleting query logs older than ${days} days"
${getExe cfg.package} sqlite3 "${database}" "DELETE FROM query_storage WHERE timestamp <= CAST(strftime('%s', date('now', '-${days} day')) AS INT); select changes() from query_storage limit 1"
'';
};
};
systemd.timers.pihole-ftl-log-deleter = mkIf cfg.queryLogDeleter.enable {
description = "Pi-hole FTL DNS query log deleter";
before = [
config.systemd.services.pihole-ftl.name
config.systemd.services.pihole-ftl-setup.name
];
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = cfg.queryLogDeleter.interval;
Unit = "pihole-ftl-log-deleter.service";
};
};
networking.firewall = lib.mkMerge [
(mkIf cfg.openFirewallDHCP {
allowedUDPPorts = [ 53 ];
allowedTCPPorts = [ 53 ];
})
(mkIf cfg.openFirewallWebserver {
allowedTCPPorts = lib.pipe cfg.settings.webserver.port [
(lib.splitString ",")
(map (
port:
lib.pipe port [
(builtins.split "[[:alpha:]]+")
builtins.head
lib.toInt
]
))
];
})
];
users.users.${cfg.user} = {
group = cfg.group;
isSystemUser = true;
};
users.groups.${cfg.group} = { };
environment.etc."pihole/pihole.toml" = {
source = settingsFile;
user = cfg.user;
group = cfg.group;
mode = "400";
};
environment.systemPackages = [ cfg.pihole ];
services.logrotate.settings.pihole-ftl = {
enable = true;
files = [ "${cfg.logDirectory}/FTL.log" ];
};
};
meta = {
doc = ./pihole-ftl.md;
maintainers = with lib.maintainers; [ williamvds ];
};
}
@@ -0,0 +1,19 @@
# Pi-hole Web Dashboard {#module-services-web-apps-pihole-web}
The Pi-hole suite provides a web GUI for controlling and monitoring
[pihole-FTL](index.html#module-services-networking-pihole-ftl).
## Configuration {#module-services-web-apps-pihole-web-configuration}
Example configuration:
```nix
{
services.pihole-web = {
enable = true;
ports = [ 80 ];
};
}
```
The dashboard can be configured using [{option}`services.pihole-ftl.settings`](options.html#opt-services.pihole-ftl.settings), in particular the `webserver` subsection.
@@ -0,0 +1,104 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.pihole-web;
in
{
options.services.pihole-web = {
enable = lib.mkEnableOption "Pi-hole dashboard";
package = lib.mkPackageOption pkgs "pihole-web" { };
hostName = lib.mkOption {
type = lib.types.str;
description = "Domain name for the website.";
default = "pi.hole";
};
ports =
let
portType = lib.types.submodule {
options = {
port = lib.mkOption {
type = lib.types.port;
description = "Port to bind";
};
optional = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Skip the port if it cannot be bound";
};
redirectSSL = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Redirect from this port to the first configured SSL port";
};
ssl = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Serve SSL on the port";
};
};
};
in
lib.mkOption {
type = lib.types.listOf (
lib.types.oneOf [
lib.types.port
lib.types.str
portType
]
);
description = ''
Port(s) for the webserver to serve on.
If provided as a string, optionally append suffixes to control behaviour:
- `o`: to make the port is optional - failure to bind will not be an error.
- `s`: for the port to be used for SSL.
- `r`: for a non-SSL port to redirect to the first available SSL port.
'';
example = [
"80r"
"443s"
];
apply =
values:
let
convert =
value:
if (builtins.typeOf) value == "int" then
toString value
else if builtins.typeOf value == "set" then
lib.strings.concatStrings [
(toString value.port)
(lib.optionalString value.optional "o")
(lib.optionalString value.redirectSSL "r")
(lib.optionalString value.ssl "s")
]
else
value;
in
lib.strings.concatStringsSep "," (map convert values);
};
};
config = lib.mkIf cfg.enable {
services.pihole-ftl.settings.webserver = {
domain = cfg.hostName;
port = cfg.ports;
paths.webroot = "${cfg.package}/share/";
paths.webhome = "/";
};
};
meta = {
doc = ./pihole-web.md;
maintainers = with lib.maintainers; [ williamvds ];
};
}
+12 -19
View File
@@ -53,45 +53,38 @@ let
driver = Firefox(options=options)
driver.implicitly_wait(20)
driver.get('http://localhost:8080/#/register')
driver.get('http://localhost:8080/#/signup')
wait = WebDriverWait(driver, 10)
wait.until(EC.title_contains("Vaultwarden Web"))
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_email').send_keys(
driver.find_element(By.CSS_SELECTOR, 'input#register-start_form_input_email').send_keys(
'${userEmail}'
)
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_name').send_keys(
driver.find_element(By.CSS_SELECTOR, 'input#register-start_form_input_name').send_keys(
'A Cat'
)
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_master-password').send_keys(
driver.find_element(By.XPATH, "//button[contains(., 'Continue')]").click()
driver.find_element(By.CSS_SELECTOR, 'input#input-password-form_new-password').send_keys(
'${userPassword}'
)
driver.find_element(By.CSS_SELECTOR, 'input#register-form_input_confirm-master-password').send_keys(
driver.find_element(By.CSS_SELECTOR, 'input#input-password-form_confirm-new-password').send_keys(
'${userPassword}'
)
if driver.find_element(By.CSS_SELECTOR, 'input#checkForBreaches').is_selected():
driver.find_element(By.CSS_SELECTOR, 'input#checkForBreaches').click()
if driver.find_element(By.XPATH, '//input[@formcontrolname="checkForBreaches"]').is_selected():
driver.find_element(By.XPATH, '//input[@formcontrolname="checkForBreaches"]').click()
driver.find_element(By.XPATH, "//button[contains(., 'Create account')]").click()
wait.until_not(EC.title_contains("Create account"))
wait.until_not(EC.title_contains("Set a strong password"))
driver.find_element(By.XPATH, "//button[contains(., 'Continue')]").click()
click_when_unobstructed((By.XPATH, "//button[contains(., 'New item')]"))
driver.find_element(By.XPATH, '//input[@type="password"]').send_keys(
'${userPassword}'
)
driver.find_element(By.XPATH, "//button[contains(., 'Log in with master password')]").click()
click_when_unobstructed((By.CSS_SELECTOR, 'button#newItemDropdown'))
driver.find_element(By.XPATH, "//button[contains(., 'Item')]").click()
driver.find_element(By.CSS_SELECTOR, 'input#name').send_keys(
driver.find_element(By.XPATH, '//input[@formcontrolname="name"]').send_keys(
'secrets'
)
driver.find_element(By.CSS_SELECTOR, 'input#loginPassword').send_keys(
driver.find_element(By.XPATH, '//input[@formcontrolname="password"]').send_keys(
'${storedPassword}'
)
@@ -26,11 +26,11 @@ let
hash =
{
x86_64-linux = "sha256-6/ECgQbl7r4KI66BApOijIdJJP4nlDEgRE1JEMJcSDk=";
x86_64-darwin = "sha256-t68Wkwo6p/S0hTf8BiR95nHC4qOLVtBkU0u3dco+jEc=";
aarch64-linux = "sha256-KJ74qd0xOQV9EkoIdWGLCr57ZYJ9U0F2zyW6y9zWSY4=";
aarch64-darwin = "sha256-CPPIYDxDiF07SdRaOe2Cp8fl4YvbVPeaVqobo0PZyrY=";
armv7l-linux = "sha256-ob2Xlgvsk6KFo9stlmuGTPPRyXQpBUACuq5q48haGxs=";
x86_64-linux = "sha256-4zLMqwIFMfeZBuHDmaORx+BK9vqxe0SMwSKUyqVYtb8=";
x86_64-darwin = "sha256-RzvRknMzZPdM2sd/nRIYSWN7TUJ/uBl3NL4H3+ckAUI=";
aarch64-linux = "sha256-rfsfgWmX24783VM9srcCZHNIeCSV1I9J7NoFjtXqdBc=";
aarch64-darwin = "sha256-3fcO8Wy0703j4y2TCe6O5tSuAMSW3kLzxrZ5ztgN9r8=";
armv7l-linux = "sha256-7Qk0V7sZeBohqCp1ciEtccGj073ZYXvvLsxMZ40ZqFg=";
}
.${system} or throwSystem;
@@ -41,7 +41,7 @@ callPackage ./generic.nix rec {
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.100.23258";
version = "1.100.33714";
pname = "vscodium";
executableName = "codium";
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -10,11 +10,11 @@
buildMozillaMach rec {
pname = "firefox-beta";
binaryName = pname;
version = "140.0b3";
version = "140.0b4";
applicationName = "Firefox Beta";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "282b30284e9efa3909e1c1e8b01fd3c8ce5083668a01dea53487aa00d89734889e033051de3ce9aa66d7a84f4d4ac1c6e558fa4e3efe1e51077fc0831e989129";
sha512 = "ec3d3377db8629742d428cceded3c7c92ba952f1b9cb6a15eae7f053213c3a377287a577c33b291a5e4d3cbbf918be52a31c3f4ac5f6d06c1f5edfc6312656fe";
};
meta = {
@@ -10,13 +10,13 @@
buildMozillaMach rec {
pname = "firefox-devedition";
binaryName = pname;
version = "140.0b3";
version = "140.0b4";
applicationName = "Firefox Developer Edition";
requireSigning = false;
branding = "browser/branding/aurora";
src = fetchurl {
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "f7e2382ba9ad9a6fbea4a99ab541a4b70dcc4dd78d52230f5e600e9812eb796c890d424805b9c4d2ad7c981e3e509d654e9ae4e4c79c6a50880388e1b4c83bbe";
sha512 = "bc71e5183b7f527f006b82ba729cb9556a0c756059025392d31ace1e3e49c0a48f5f7c8b64615353c7ae72ab67eb77212f3b573ea06a278f806328093d1424a4";
};
meta = {
+32 -17
View File
@@ -2,7 +2,7 @@
stdenv,
lib,
fetchurl,
dpkg,
squashfsTools,
autoPatchelfHook,
copyDesktopItems,
pango,
@@ -22,14 +22,12 @@
stdenv.mkDerivation rec {
pname = "bluemail";
version = "1.140.8-1922";
version = "1.140.93";
# Taking a snapshot of the DEB release because there are no tagged version releases.
# For new versions, download the upstream release, extract it and check for the version string.
# In case there's a new version, create a snapshot of it on https://archive.org before updating it here.
# To update, check https://search.apps.ubuntu.com/api/v1/package/bluemail and copy the anon_download_url and version.
src = fetchurl {
url = "https://web.archive.org/web/20240208120704/https://download.bluemail.me/BlueMail/deb/BlueMail.deb";
hash = "sha256-dnYOb3Q/9vSDssHGS2ywC/Q24Oq96/mvKF+eqd/4dVw=";
url = "https://api.snapcraft.io/api/v1/snaps/download/ZVlj0qw0GOFd5JgTfL8kk2Y5eIG1IpiH_178.snap";
hash = "sha512-xv7fn+VrtrxauejhgEMdTnmnDXb17TwanXZR6Lqfg5N40MbyDu76XQAWRB8xFU/+GdCTmjv47EaOC7SnnOw4EA==";
};
desktopItems = [
@@ -43,6 +41,7 @@ stdenv.mkDerivation rec {
mimeTypes = [
"x-scheme-handler/me.blueone.linux"
"x-scheme-handler/mailto"
"x-scheme-handler/bluemail-notif"
];
categories = [ "Office" ];
})
@@ -52,10 +51,24 @@ stdenv.mkDerivation rec {
autoPatchelfHook
copyDesktopItems
makeWrapper
dpkg
squashfsTools
wrapGAppsHook3
];
unpackPhase = ''
runHook preUnpack
unsquashfs $src
runHook postUnpack
'';
sourceRoot = "squashfs-root";
postPatch = ''
rm -rf usr libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1
'';
buildInputs = [
pango
gtk3
@@ -75,12 +88,12 @@ stdenv.mkDerivation rec {
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv opt/BlueMail/* $out
ln -s $out/bluemail $out/bin/bluemail
mkdir -p $out/{bin,opt/bluemail}
mv * $out/opt/bluemail
ln -s $out/opt/bluemail/bluemail $out/bin/bluemail
mkdir -p $out/share/icons
mv usr/share/icons/hicolor $out/share/icons/
mkdir -p $out/share/icons/hicolor/1024x1024/apps
ln -s $out/opt/bluemail/resources/assets/icons/bluemailx-icon.png $out/share/icons/hicolor/1024x1024/apps/bluemail.png
runHook postInstall
'';
@@ -97,17 +110,19 @@ stdenv.mkDerivation rec {
];
preFixup = ''
wrapProgram $out/bin/bluemail \
wrapProgram $out/opt/bluemail/bluemail \
''${makeWrapperArgs[@]} \
''${gappsWrapperArgs[@]}
'';
meta = with lib; {
description = "Free, secure, universal email app, capable of managing an unlimited number of mail accounts";
description = "Cross platform email and calendar app, with AI features and a modern design";
homepage = "https://bluemail.me";
license = licenses.unfree;
platforms = platforms.linux;
platforms = [ "x86_64-linux" ];
# Vendored copy of Electron.
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
maintainers = with maintainers; [ onny ];
maintainers = with maintainers; [ ];
mainProgram = "bluemail";
};
}
+5 -5
View File
@@ -3,24 +3,24 @@
let
pname = "brave";
version = "1.79.118";
version = "1.79.119";
allArchives = {
aarch64-linux = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_arm64.deb";
hash = "sha256-OI4B6Uu9TtbV58Eq3854cyC57JZ+j7tBZoDk+zHeeWM=";
hash = "sha256-tz3pCToOqsO6SAu5NeUSmO0aRe31qw0sK2OxtkrYGlo=";
};
x86_64-linux = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
hash = "sha256-4lWsD9OfbgOaallAEc8x3zLSFoBAg4UCjBCiDc7ShDs=";
hash = "sha256-8uX8byw/rp+yj6Y2qBemEHGwt4CQepWjVD8F9KuJZbI=";
};
aarch64-darwin = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-arm64.zip";
hash = "sha256-5yOcEerPleZnRynxMAzeiPPmZAfU6O+wqsBfR+NOvUc=";
hash = "sha256-ynLMWSWywJbmURBH60Nf7TJFERPNNzcI/wdW8AFk7ZA=";
};
x86_64-darwin = {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-x64.zip";
hash = "sha256-3q0vV9cAk8TEWluGYyH3FSw4zKHxl2Dn3eCg2pSs3zU=";
hash = "sha256-ERhKzzabN3NiJQMaTLxdtHCbPMDbPifG56aBmAgke5o=";
};
};
+35
View File
@@ -0,0 +1,35 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule (finalAttrs: {
pname = "buttplug-mcp";
version = "0.0.1";
src = fetchFromGitHub {
owner = "ConAcademy";
repo = "buttplug-mcp";
rev = "v${finalAttrs.version}";
hash = "sha256-C4ZPTO+Gh6g19BrqHugSCF74aAZ888XRTk1AzNpEBok=";
};
vendorHash = "sha256-EoLv7HpdAyEM83m/DTgu9jMh0Nn+v8b2buIavQFJbnY=";
ldflags = [
"-s"
"-w"
"-X main.version=${finalAttrs.version}"
];
__darwinAllowLocalNetworking = true;
meta = {
description = "Buttplug.io Model Context Protocol (MCP) Server";
homepage = "https://github.com/ConAcademy/buttplug-mcp";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pilz ];
mainProgram = "buttplug-mcp";
};
})
+3 -3
View File
@@ -8,17 +8,17 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-component";
version = "0.20.0";
version = "0.21.1";
src = fetchFromGitHub {
owner = "bytecodealliance";
repo = "cargo-component";
rev = "v${version}";
hash = "sha256-pW3hhcsMzKSWmUX8HwAtZCB+v9B4qXw6WUGODhPtW+Q=";
hash = "sha256-Tlx14q/2k/0jZZ1nECX7zF/xNTeMCZg/fN+fhRM4uhc=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-Vnef3ApklZtN417dXhA+YWcsAeSTDSt6wA+7SjBKHm0=";
cargoHash = "sha256-ZwxVhoqAzkaIgcH9GMR+IGkJ6IOQVtmt0qcDjdix6cU=";
nativeBuildInputs = [
pkg-config
+3 -3
View File
@@ -10,17 +10,17 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-udeps";
version = "0.1.55";
version = "0.1.56";
src = fetchFromGitHub {
owner = "est31";
repo = "cargo-udeps";
rev = "v${version}";
sha256 = "sha256-4/JfD2cH46it8PkU58buTHwFXBZI3sytyJCUWl+vSAE=";
sha256 = "sha256-W9COzLyE7A/Yp88HTknSSa9WjufwHMgcmlsqwOYSSCw=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-4fF5nW8G2XMvC2K2nW7fhZL9DvjW4/cZXSCJurSu9NE=";
cargoHash = "sha256-ttIzCro9/oiF0ycRG/UzvgMT+3kXhkVAdkNCIVjIc2g=";
nativeBuildInputs = [ pkg-config ];
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "cirrus-cli";
version = "0.144.0";
version = "0.144.1";
src = fetchFromGitHub {
owner = "cirruslabs";
repo = "cirrus-cli";
rev = "v${version}";
hash = "sha256-pbfLEoc9MF9Zo9P5D8R0WM/ZbzwhdIZhtcWR9tSKzX8=";
hash = "sha256-xU1c7dDYCfzLao6TLQFSijwTnEz0afkcOQnlHeTgaVQ=";
};
vendorHash = "sha256-PH28ZIubrJWk4qTrL9OSx/ylW1iEP0j0iq4uNg9d9ko=";
vendorHash = "sha256-ZFvulF/glMq7Crp1d1lK602G34/anlT5yyyQQcgiuHg=";
ldflags = [
"-X github.com/cirruslabs/cirrus-cli/internal/version.Version=v${version}"
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "civo";
version = "1.2.3";
version = "1.3.0";
src = fetchFromGitHub {
owner = "civo";
repo = "cli";
rev = "v${version}";
hash = "sha256-NREiQA/zAxClwKZDq5SR43/AAT6HqdfR6/ud9Xhe5rM=";
hash = "sha256-XK3FMgtAXOQYKa2il83blgdFhOdzbmP7VnIOijyDsK8=";
};
vendorHash = "sha256-xSvq8ZrkdzRhfD2gPKSJkLnwVQuFuWnSYJ89iUDOpUU=";
vendorHash = "sha256-fGAJUGYbPJ88Dnfi5XWXr2jd9hE6M8p2ZLq5ORMoyL0=";
nativeBuildInputs = [ installShellFiles ];
+3 -4
View File
@@ -10,20 +10,19 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "countryfetch";
version = "0.1.9";
version = "0.2.0";
src = fetchFromGitHub {
owner = "nik-rev";
repo = "countryfetch";
tag = "v${finalAttrs.version}";
hash = "sha256-KdFgY54vXLmq6IZfJzZ1IeZ2eQuNJoCRZUV3rVuPpcY=";
hash = "sha256-povKd1Y/2Mi+6yJd9+RsJ4F19/wvXvBOK2Jgbs4UnP0=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-XJI9k/5hdak8p0/J/x9u6lqJu/DIbX93Wwm3LALkAAw=";
cargoHash = "sha256-0ZBhRheJGapPqVieXbIpoboVV4RLXan042u5SSgrYQk=";
env = {
RUSTC_BOOTSTRAP = 1;
OPENSSL_NO_VENDOR = true;
};
+3 -2
View File
@@ -19,12 +19,12 @@
stdenv.mkDerivation rec {
pname = "dpkg";
version = "1.22.11";
version = "1.22.19";
src = fetchgit {
url = "https://git.launchpad.net/ubuntu/+source/dpkg";
rev = "applied/${version}";
hash = "sha256-mKyS0lPTG3ROcw8AhB4IdjNjvZK2YTGV9pbpjz/OLAc=";
hash = "sha256-lSuq5VqBj5yKusZaT50sOf82/wd2FeS4g2ILaZT0HPM=";
};
configureFlags = [
@@ -112,6 +112,7 @@ stdenv.mkDerivation rec {
homepage = "https://wiki.debian.org/Teams/Dpkg";
license = licenses.gpl2Plus;
platforms = platforms.unix;
broken = stdenv.hostPlatform.isDarwin;
maintainers = with maintainers; [ siriobalmelli ];
};
}
+3 -3
View File
@@ -34,11 +34,11 @@ buildGoModule rec {
"-w"
];
meta = with lib; {
meta = {
description = "Go-based tools for modifying UEFI firmware";
homepage = "https://github.com/linuxboot/fiano";
changelog = "https://github.com/linuxboot/fiano/blob/v${version}/RELEASES.md";
license = licenses.bsd3;
maintainers = [ maintainers.jmbaur ];
license = lib.licenses.bsd3;
maintainers = [ lib.maintainers.jmbaur ];
};
}
+4 -4
View File
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
doCheck = true;
meta = with lib; {
meta = {
description = "Command line pastebin for sharing terminal output";
longDescription = ''
Fiche is a command line pastebin server for sharing terminal output.
@@ -34,9 +34,9 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/solusipse/fiche";
changelog = "https://github.com/solusipse/fiche/releases/tag/${version}";
license = licenses.mit;
maintainers = [ maintainers.pinpox ];
platforms = platforms.all;
license = lib.licenses.mit;
maintainers = [ lib.maintainers.pinpox ];
platforms = lib.platforms.all;
mainProgram = "fiche";
};
}
+3 -3
View File
@@ -27,12 +27,12 @@ python3.pkgs.buildPythonApplication rec {
pythonImportsCheck = [ "fierce" ];
meta = with lib; {
meta = {
description = "DNS reconnaissance tool for locating non-contiguous IP space";
homepage = "https://github.com/mschwager/fierce";
changelog = "https://github.com/mschwager/fierce/blob/${version}/CHANGELOG.md";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ c0bw3b ];
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ c0bw3b ];
mainProgram = "fierce";
};
}
+3 -3
View File
@@ -42,7 +42,7 @@ rustPlatform.buildRustPackage rec {
# There is a failure while the binary is checked
doCheck = false;
meta = with lib; {
meta = {
description = "Host-based file integrity monitoring tool";
longDescription = ''
FIM is a File Integrity Monitoring tool that tracks any event over your
@@ -56,8 +56,8 @@ rustPlatform.buildRustPackage rec {
'';
homepage = "https://github.com/Achiefs/fim";
changelog = "https://github.com/Achiefs/fim/releases/tag/v${version}";
license = licenses.gpl3Only;
maintainers = with maintainers; [ fab ];
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "fim";
};
}
+3 -3
View File
@@ -38,12 +38,12 @@ rustPlatform.buildRustPackage rec {
installManPage findomain.1
'';
meta = with lib; {
meta = {
description = "Fastest and cross-platform subdomain enumerator";
homepage = "https://github.com/Findomain/Findomain";
changelog = "https://github.com/Findomain/Findomain/releases/tag/${version}";
license = licenses.gpl3Plus;
maintainers = with maintainers; [
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
Br1ght0ne
figsoda
];
+3 -3
View File
@@ -25,12 +25,12 @@ buildGoModule rec {
# Tests require network access
doCheck = false;
meta = with lib; {
meta = {
description = "Standalone utility for service discovery on open ports";
mainProgram = "fingerprintx";
homepage = "https://github.com/praetorian-inc/fingerprintx";
changelog = "https://github.com/praetorian-inc/fingerprintx/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [ fab ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
};
}
+3 -3
View File
@@ -83,14 +83,14 @@ rustPlatform.buildRustPackage rec {
runHook postInstall
'';
meta = with lib; {
meta = {
description = "Secure, fast, minimal micro-container virtualization";
homepage = "http://firecracker-microvm.io";
changelog = "https://github.com/firecracker-microvm/firecracker/releases/tag/v${version}";
mainProgram = "firecracker";
license = licenses.asl20;
license = lib.licenses.asl20;
platforms = lib.platforms.linux;
maintainers = with maintainers; [
maintainers = with lib.maintainers; [
usertam
thoughtpolice
qjoly
+3 -3
View File
@@ -61,12 +61,12 @@ python3.pkgs.buildPythonPackage rec {
export HOME=$(mktemp -d)
'';
meta = with lib; {
meta = {
description = "Automatically extract obfuscated strings from malware";
homepage = "https://github.com/mandiant/flare-floss";
changelog = "https://github.com/mandiant/flare-floss/releases/tag/v${version}";
license = licenses.asl20;
license = lib.licenses.asl20;
mainProgram = "floss";
maintainers = with maintainers; [ fab ];
maintainers = with lib.maintainers; [ fab ];
};
}
+3 -3
View File
@@ -32,12 +32,12 @@ rustPlatform.buildRustPackage rec {
--bash <($out/bin/flavours --completions bash)
'';
meta = with lib; {
meta = {
description = "Easy to use base16 scheme manager/builder that integrates with any workflow";
homepage = "https://github.com/Misterio77/flavours";
changelog = "https://github.com/Misterio77/flavours/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
moni
misterio77
];
+3 -3
View File
@@ -29,16 +29,16 @@ rustPlatform.buildRustPackage rec {
"--skip should_verify_memory_layout"
];
meta = with lib; {
meta = {
description = "Adds zero-cost stack overflow protection to your embedded programs";
mainProgram = "flip-link";
homepage = "https://github.com/knurling-rs/flip-link";
changelog = "https://github.com/knurling-rs/flip-link/blob/v${version}/CHANGELOG.md";
license = with licenses; [
license = with lib.licenses; [
asl20 # or
mit
];
maintainers = with maintainers; [
maintainers = with lib.maintainers; [
FlorianFranzen
newam
];
+4 -4
View File
@@ -53,13 +53,13 @@ stdenv.mkDerivation rec {
wrapProgram $out/bin/flycast --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ vulkan-loader ]}
'';
meta = with lib; {
meta = {
homepage = "https://github.com/flyinghead/flycast";
changelog = "https://github.com/flyinghead/flycast/releases/tag/v${version}";
description = "Multi-platform Sega Dreamcast, Naomi and Atomiswave emulator";
mainProgram = "flycast";
license = licenses.gpl2Only;
platforms = platforms.unix;
maintainers = [ ];
license = lib.licenses.gpl2Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ ];
};
}
+3 -3
View File
@@ -50,12 +50,12 @@ stdenv.mkDerivation rec {
webkitgtk_6_0
];
meta = with lib; {
meta = {
description = "Simple and modern GTK eBook reader";
homepage = "https://johnfactotum.github.io/foliate";
changelog = "https://github.com/johnfactotum/foliate/releases/tag/${version}";
license = licenses.gpl3Only;
maintainers = with maintainers; [
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
onny
aleksana
];
+4 -4
View File
@@ -58,7 +58,7 @@ rustPlatform.buildRustPackage rec {
ln -s fortune-kind $out/bin/fortune
'';
meta = with lib; {
meta = {
description = "Kinder, curated fortune, written in rust";
longDescription = ''
Historically, contributions to fortune-mod have had a less-than ideal
@@ -70,9 +70,9 @@ rustPlatform.buildRustPackage rec {
'';
homepage = "https://github.com/cafkafk/fortune-kind";
changelog = "https://github.com/cafkafk/fortune-kind/releases/tag/v${version}";
license = licenses.gpl3Only;
license = lib.licenses.gpl3Only;
mainProgram = "fortune-kind";
maintainers = with maintainers; [ cafkafk ];
platforms = platforms.unix ++ platforms.windows;
maintainers = with lib.maintainers; [ cafkafk ];
platforms = lib.platforms.unix ++ lib.platforms.windows;
};
}
+4 -4
View File
@@ -55,13 +55,13 @@ stdenv.mkDerivation rec {
updateScript = gnome.updateScript { packageName = "four-in-a-row"; };
};
meta = with lib; {
meta = {
homepage = "https://gitlab.gnome.org/GNOME/four-in-a-row";
changelog = "https://gitlab.gnome.org/GNOME/four-in-a-row/-/blob/${version}/NEWS?ref_type=tags";
description = "Make lines of the same color to win";
mainProgram = "four-in-a-row";
teams = [ teams.gnome ];
license = licenses.gpl2;
platforms = platforms.unix;
teams = [ lib.teams.gnome ];
license = lib.licenses.gpl2;
platforms = lib.platforms.unix;
};
}
+4 -4
View File
@@ -107,13 +107,13 @@ stdenv.mkDerivation rec {
updateScript = nix-update-script { };
};
meta = with lib; {
meta = {
description = "Matrix group messaging app";
homepage = "https://gitlab.gnome.org/GNOME/fractal";
changelog = "https://gitlab.gnome.org/World/fractal/-/releases/${version}";
license = licenses.gpl3Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
license = lib.licenses.gpl3Plus;
teams = [ lib.teams.gnome ];
platforms = lib.platforms.linux;
mainProgram = "fractal";
};
}
+3 -3
View File
@@ -43,15 +43,15 @@ rustPlatform.buildRustPackage rec {
# depends on cpu instructions that may not be available on builders
doCheck = false;
meta = with lib; {
meta = {
description = "Small programming language for writing short programs processing textual data";
mainProgram = "frawk";
homepage = "https://github.com/ezrosent/frawk";
changelog = "https://github.com/ezrosent/frawk/releases/tag/v${version}";
license = with licenses; [
license = with lib.licenses; [
mit # or
asl20
];
maintainers = with maintainers; [ figsoda ];
maintainers = with lib.maintainers; [ figsoda ];
};
}
+3 -3
View File
@@ -18,12 +18,12 @@ rustPlatform.buildRustPackage rec {
useFetchCargoVendor = true;
cargoHash = "sha256-07qKG4ju2UOkTcgWAl2U0uqQZyiosK1UH/M2BvwMAaU=";
meta = with lib; {
meta = {
description = "CLI tool for tracking your most-used directories and files";
homepage = "https://github.com/camdencheek/fre";
changelog = "https://github.com/camdencheek/fre/blob/${version}/CHANGELOG.md";
license = with licenses; [ mit ];
maintainers = with maintainers; [ gaykitty ];
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ gaykitty ];
mainProgram = "fre";
};
}
+3 -3
View File
@@ -70,12 +70,12 @@ rustPlatform.buildRustPackage rec {
install -Dm644 "${desktopItem}/share/applications/"* -t $out/share/applications/
'';
meta = with lib; {
meta = {
description = "Clone of the original Duke Nukum 1 Jump'n Run game";
homepage = "https://salsa.debian.org/silwol/freenukum";
changelog = "https://salsa.debian.org/silwol/freenukum/-/blob/v${version}/CHANGELOG.md";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ _0x4A6F ];
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [ _0x4A6F ];
broken = stdenv.hostPlatform.isDarwin;
};
}
+4 -4
View File
@@ -31,12 +31,12 @@ stdenv.mkDerivation rec {
pkg-config
];
meta = with lib; {
meta = {
description = "Libraries to natively talk to Microsoft SQL Server and Sybase databases";
homepage = "https://www.freetds.org";
changelog = "https://github.com/FreeTDS/freetds/releases/tag/v${version}";
license = licenses.lgpl2;
maintainers = with maintainers; [ peterhoeg ];
platforms = platforms.all;
license = lib.licenses.lgpl2;
maintainers = with lib.maintainers; [ peterhoeg ];
platforms = lib.platforms.all;
};
}
+4 -4
View File
@@ -48,16 +48,16 @@ stdenv.mkDerivation rec {
installFlags = [ "PREFIX=$(out)" ];
meta = with lib; {
meta = {
homepage = "https://davidgriffith.gitlab.io/frotz/";
changelog = "https://gitlab.com/DavidGriffith/frotz/-/raw/${version}/NEWS";
description = "Z-machine interpreter for Infocom games and other interactive fiction";
mainProgram = "frotz";
platforms = platforms.unix;
maintainers = with maintainers; [
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
nicknovitski
ddelabru
];
license = licenses.gpl2Plus;
license = lib.licenses.gpl2Plus;
};
}
+4 -4
View File
@@ -38,14 +38,14 @@ buildGoModule rec {
tests.vm = nixosTests.galene.basic;
};
meta = with lib; {
meta = {
description = "Videoconferencing server that is easy to deploy, written in Go";
homepage = "https://github.com/jech/galene";
changelog = "https://github.com/jech/galene/raw/galene-${version}/CHANGES";
license = licenses.mit;
platforms = platforms.linux;
license = lib.licenses.mit;
platforms = lib.platforms.linux;
teams = [ lib.teams.ngi ];
maintainers = with maintainers; [
maintainers = with lib.maintainers; [
rgrunbla
erdnaxe
];
+3 -3
View File
@@ -17,12 +17,12 @@ buildGoModule rec {
vendorHash = "sha256-BS7ZUq8/swZpTaYGjiF5OuZXQpoosZ3mdF9v1euijxo=";
meta = with lib; {
meta = {
description = "Tool to fetch URLs from HTML attributes";
homepage = "https://github.com/dwisiswant0/galer";
changelog = "https://github.com/dwisiswant0/galer/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "galer";
};
}
+4 -4
View File
@@ -46,15 +46,15 @@ python3.pkgs.buildPythonApplication rec {
pythonImportsCheck = [ "gallia" ];
meta = with lib; {
meta = {
description = "Extendable Pentesting Framework for the Automotive Domain";
homepage = "https://github.com/Fraunhofer-AISEC/gallia";
changelog = "https://github.com/Fraunhofer-AISEC/gallia/releases/tag/v${version}";
license = with licenses; [ asl20 ];
maintainers = with maintainers; [
license = with lib.licenses; [ asl20 ];
maintainers = with lib.maintainers; [
fab
rumpelsepp
];
platforms = platforms.linux;
platforms = lib.platforms.linux;
};
}
+3 -3
View File
@@ -63,13 +63,13 @@ python3.pkgs.buildPythonApplication rec {
runHook postCheck
'';
meta = with lib; {
meta = {
description = "Command line management for Google Workspace";
mainProgram = "gam";
homepage = "https://github.com/GAM-team/GAM/wiki";
changelog = "https://github.com/GAM-team/GAM/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [ thanegill ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ thanegill ];
};
}
+4 -4
View File
@@ -23,12 +23,12 @@ rustPlatform.buildRustPackage rec {
propagatedBuildInputs = [ steam-run ];
meta = with lib; {
meta = {
description = "Minimal CLI game launcher for linux";
homepage = "https://github.com/amanse/game-rs";
changelog = "https://github.com/Amanse/game-rs/releases/tag/v${version}";
license = with licenses; [ mit ];
maintainers = with maintainers; [ amanse ];
platforms = platforms.linux;
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ amanse ];
platforms = lib.platforms.linux;
};
}
+3 -3
View File
@@ -40,12 +40,12 @@ python3.pkgs.buildPythonApplication rec {
"gato"
];
meta = with lib; {
meta = {
description = "GitHub Self-Hosted Runner Enumeration and Attack Tool";
homepage = "https://github.com/praetorian-inc/gato";
changelog = "https://github.com/praetorian-inc/gato/releases/tag/${version}";
license = licenses.asl20;
maintainers = with maintainers; [ fab ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "gato";
};
}
+4 -4
View File
@@ -27,13 +27,13 @@ stdenv.mkDerivation rec {
];
buildInputs = [ curl ];
meta = with lib; {
meta = {
description = "Portable Git(Hub|Lab|ea) CLI tool";
homepage = "https://herrhotzenplotz.de/gcli/";
changelog = "https://github.com/herrhotzenplotz/gcli/releases/tag/${version}";
license = licenses.bsd2;
license = lib.licenses.bsd2;
mainProgram = "gcli";
maintainers = with maintainers; [ kenran ];
platforms = platforms.unix;
maintainers = with lib.maintainers; [ kenran ];
platforms = lib.platforms.unix;
};
}
+3 -3
View File
@@ -46,12 +46,12 @@ python3.pkgs.buildPythonApplication rec {
"test_acceptance"
];
meta = with lib; {
meta = {
description = "Comprehensive scanner for Google Cloud";
homepage = "https://github.com/google/gcp_scanner";
changelog = "https://github.com/google/gcp_scanner/blob/${version}/CHANGELOG.md";
license = licenses.asl20;
maintainers = with maintainers; [ fab ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "gcp-scanner";
};
}
+3 -3
View File
@@ -44,12 +44,12 @@ buildGoModule rec {
ln -s $out/bin/mount_gcsfuse $out/bin/mount.fuse.gcsfuse
'';
meta = with lib; {
meta = {
description = "User-space file system for interacting with Google Cloud Storage";
homepage = "https://cloud.google.com/storage/docs/gcs-fuse";
changelog = "https://github.com/GoogleCloudPlatform/gcsfuse/releases/tag/v${version}";
license = licenses.asl20;
maintainers = [ ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ ];
# internal/cache/file/downloader/job.go:386:77: undefined: syscall.O_DIRECT
broken = stdenv.hostPlatform.isDarwin;
};
+4 -4
View File
@@ -151,12 +151,12 @@ stdenv.mkDerivation rec {
};
};
meta = with lib; {
meta = {
homepage = "https://gitlab.gnome.org/GNOME/geary";
changelog = "https://gitlab.gnome.org/GNOME/geary/-/blob/${version}/NEWS?ref_type=tags";
description = "Mail client for GNOME 3";
teams = [ teams.gnome ];
license = licenses.lgpl21Plus;
platforms = platforms.linux;
teams = [ lib.teams.gnome ];
license = lib.licenses.lgpl21Plus;
platforms = lib.platforms.linux;
};
}
+3 -3
View File
@@ -32,12 +32,12 @@ rustPlatform.buildRustPackage rec {
--zsh <($out/bin/genact --print-completions zsh)
'';
meta = with lib; {
meta = {
description = "Nonsense activity generator";
homepage = "https://github.com/svenstaro/genact";
changelog = "https://github.com/svenstaro/genact/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ figsoda ];
mainProgram = "genact";
};
}
+4 -4
View File
@@ -165,7 +165,7 @@ stdenv.mkDerivation rec {
passthru.tests = { inherit (nixosTests) mediatomb; };
meta = with lib; {
meta = {
homepage = "https://docs.gerbera.io/";
changelog = "https://github.com/gerbera/gerbera/releases/tag/v${version}";
description = "UPnP Media Server for 2024";
@@ -174,9 +174,9 @@ stdenv.mkDerivation rec {
It allows to stream your digital media through your home network and consume it on all kinds
of UPnP supporting devices.
'';
license = licenses.gpl2Only;
maintainers = with maintainers; [ ardumont ];
platforms = platforms.linux;
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ ardumont ];
platforms = lib.platforms.linux;
mainProgram = "gerbera";
};
}
+3 -3
View File
@@ -19,12 +19,12 @@ buildGoModule rec {
ldflags = [ "-s" ];
meta = with lib; {
meta = {
description = "Search github issues interactively";
changelog = "https://github.com/gennaro-tedesco/gh-i/releases/tag/v${version}";
homepage = "https://github.com/gennaro-tedesco/gh-i";
license = licenses.asl20;
maintainers = with maintainers; [ phanirithvij ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ phanirithvij ];
mainProgram = "gh-i";
};
}
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "gh-skyline";
version = "0.1.5";
version = "0.1.6";
src = fetchFromGitHub {
owner = "github";
repo = "gh-skyline";
tag = "v${version}";
hash = "sha256-jcdOLoyOXq270SaObMpCD+ts6Hj8wqSAjUZWEg3F9+w=";
hash = "sha256-IMsq+IhuZUJ7JSWZJPvx2bQ9avFsjfc/kOW9Sre5jAo=";
};
vendorHash = "sha256-rCFHYofUQlfRMP7bJav2se7oAkE7rS8KJl1n8kCsSag=";
vendorHash = "sha256-iAqc8RlvpvP9Go8E/b+PnEgKRdpD3+IIQ1JUKVZ1Ces=";
ldflags = [
"-s"
+3 -3
View File
@@ -55,12 +55,12 @@ buildGoModule rec {
package = gh;
};
meta = with lib; {
meta = {
description = "GitHub CLI tool";
homepage = "https://cli.github.com/";
changelog = "https://github.com/cli/cli/releases/tag/v${version}";
license = licenses.mit;
license = lib.licenses.mit;
mainProgram = "gh";
maintainers = with maintainers; [ zowoq ];
maintainers = with lib.maintainers; [ zowoq ];
};
}
+3 -3
View File
@@ -34,12 +34,12 @@ python3.pkgs.buildPythonApplication rec {
"ghauri"
];
meta = with lib; {
meta = {
description = "Tool for detecting and exploiting SQL injection security flaws";
homepage = "https://github.com/r0oth3x49/ghauri";
changelog = "https://github.com/r0oth3x49/ghauri/releases/tag/${version}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "ghauri";
};
}
+3 -3
View File
@@ -38,12 +38,12 @@ rustPlatform.buildRustPackage rec {
export HOME=$(mktemp -d)
'';
meta = with lib; {
meta = {
description = "Github notifications in your terminal";
homepage = "https://github.com/attriaayush/ghostie";
changelog = "https://github.com/attriaayush/ghostie/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ matthiasbeyer ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ matthiasbeyer ];
broken = stdenv.hostPlatform.isx86_64 && stdenv.hostPlatform.isDarwin;
mainProgram = "ghostie";
};
+3 -3
View File
@@ -39,12 +39,12 @@ buildGoModule rec {
podman = nixosTests.podman-tls-ghostunnel;
};
meta = with lib; {
meta = {
description = "TLS proxy with mutual authentication support for securing non-TLS backend applications";
homepage = "https://github.com/ghostunnel/ghostunnel#readme";
changelog = "https://github.com/ghostunnel/ghostunnel/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
roberth
mjm
];
+3 -3
View File
@@ -54,12 +54,12 @@ python3.pkgs.buildPythonApplication rec {
"ghunt"
];
meta = with lib; {
meta = {
description = "Offensive Google framework";
mainProgram = "ghunt";
homepage = "https://github.com/mxrch/ghunt";
changelog = "https://github.com/mxrch/GHunt/releases/tag/v${version}";
license = licenses.agpl3Only;
maintainers = with maintainers; [ fab ];
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ fab ];
};
}
+3 -3
View File
@@ -26,11 +26,11 @@ buildGoModule rec {
mv $out/bin/src $out/bin/$pname
'';
meta = with lib; {
meta = {
description = "Automatically spawn a reverse shell fully interactive for Linux or Windows victim";
homepage = "https://github.com/nodauf/Girsh";
changelog = "https://github.com/nodauf/Girsh/releases/tag/v${version}";
license = licenses.gpl2Only;
maintainers = with maintainers; [ fab ];
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ fab ];
};
}
+3 -3
View File
@@ -40,12 +40,12 @@ rustPlatform.buildRustPackage rec {
installManPage $OUT_DIR/git-cliff.1
'';
meta = with lib; {
meta = {
description = "Highly customizable Changelog Generator that follows Conventional Commit specifications";
homepage = "https://github.com/orhun/git-cliff";
changelog = "https://github.com/orhun/git-cliff/blob/v${version}/CHANGELOG.md";
license = licenses.gpl3Only;
maintainers = with maintainers; [
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
siraben
matthiasbeyer
];
+3 -3
View File
@@ -54,12 +54,12 @@ rustPlatform.buildRustPackage {
--zsh <(${gitGr} completions zsh)
'';
meta = with lib; {
meta = {
homepage = "https://github.com/9999years/git-gr";
changelog = "https://github.com/9999years/git-gr/releases/tag/v${version}";
description = "Gerrit CLI client";
license = [ licenses.mit ];
maintainers = [ maintainers._9999years ];
license = [ lib.licenses.mit ];
maintainers = [ lib.maintainers._9999years ];
mainProgram = "git-gr";
};
@@ -22,12 +22,12 @@ rustPlatform.buildRustPackage rec {
preCheck = "export GIRT_BUILD_GIT_HASH=${version}";
postCheck = "unset GIRT_BUILD_GIT_HASH";
meta = with lib; {
meta = {
homepage = "https://github.com/MitMaro/git-interactive-rebase-tool";
description = "Native cross platform full feature terminal based sequence editor for git interactive rebase";
changelog = "https://github.com/MitMaro/git-interactive-rebase-tool/releases/tag/${version}";
license = licenses.mit;
maintainers = with maintainers; [
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
SuperSandro2000
zowoq
ma27
+53
View File
@@ -0,0 +1,53 @@
{
lib,
fetchFromGitHub,
pkg-config,
gitMinimal,
rustPlatform,
openssl,
}:
rustPlatform.buildRustPackage rec {
pname = "git-metrics";
version = "0.2.6";
src = fetchFromGitHub {
owner = "jdrouet";
repo = "git-metrics";
tag = "v${version}";
hash = "sha256-SdA/FpdrbC36Ny7aBpTUvFldbYXyajSqWGheaDPHYoE=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-e4CdpwoFl8leV5HJWkWBpvPrVrk+7vq49yTPkpeQ2Ng=";
buildInputs = [
openssl
];
nativeCheckInputs = [
pkg-config
gitMinimal
];
checkFlags = [
# requires git author information to be detectable
"--skip=tests::check_budget::execute::with_command_backend"
"--skip=tests::check_budget::execute::with_git2_backend"
"--skip=tests::conflict_different::execute::with_command_backend"
"--skip=tests::conflict_different::execute::with_git2_backend"
"--skip=tests::display_diff::execute"
"--skip=tests::simple_use_case::execute::with_command_backend"
"--skip=tests::simple_use_case::execute::with_git2_backend"
];
meta = {
homepage = "https://github.com/jdrouet/git-metrics";
description = "Git extension to be able to track metrics about your project, within the git repository";
license = [ lib.licenses.mit ];
maintainers = with lib.maintainers; [
matthiasbeyer
];
mainProgram = "git-metrics";
};
}
+3 -3
View File
@@ -44,11 +44,11 @@ rustPlatform.buildRustPackage {
LIBGIT2_NO_VENDOR = 1;
};
meta = with lib; {
meta = {
description = "Minimalist set of hooks to aid pairing and link commits to issues";
homepage = "https://github.com/PurpleBooth/git-mit";
changelog = "https://github.com/PurpleBooth/git-mit/releases/tag/v${version}";
license = licenses.cc0;
maintainers = with maintainers; [ figsoda ];
license = lib.licenses.cc0;
maintainers = with lib.maintainers; [ figsoda ];
};
}
+3 -3
View File
@@ -21,12 +21,12 @@ rustPlatform.buildRustPackage rec {
nativeCheckInputs = [ git ];
meta = with lib; {
meta = {
description = "Synchronize work-in-progress git branches in a light weight fashion";
homepage = "https://github.com/rraval/git-nomad";
changelog = "https://github.com/rraval/git-nomad/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ rraval ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ rraval ];
mainProgram = "git-nomad";
};
}
+3 -3
View File
@@ -22,12 +22,12 @@ buildGoModule rec {
passthru.updateScript = nix-update-script { };
meta = with lib; {
meta = {
description = "Tool for creating Git releases based on Semantic Versioning";
homepage = "https://github.com/git-releaser/git-releaser";
changelog = "https://github.com/git-releaser/git-releaser/releases/tag/v${version}";
maintainers = with maintainers; [ jakuzure ];
license = licenses.asl20;
maintainers = with lib.maintainers; [ jakuzure ];
license = lib.licenses.asl20;
mainProgram = "git-releaser";
};
}
+3 -3
View File
@@ -27,12 +27,12 @@ rustPlatform.buildRustPackage rec {
package = git-stack;
};
meta = with lib; {
meta = {
description = "Stacked branch management for Git";
homepage = "https://github.com/gitext-rs/git-stack";
changelog = "https://github.com/gitext-rs/git-stack/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [ stehessel ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ stehessel ];
mainProgram = "git-stack";
};
}
+3 -3
View File
@@ -25,12 +25,12 @@ rustPlatform.buildRustPackage rec {
useFetchCargoVendor = true;
cargoHash = "sha256-5LKKjHzIlXw0bUmF7GDCVW0cptCxohq6CNPIrMZKorM=";
meta = with lib; {
meta = {
changelog = "https://github.com/kejadlen/git-together/releases/tag/v${version}";
description = "Better commit attribution while pairing without messing with your git workflow";
homepage = "https://github.com/kejadlen/git-together";
license = licenses.mit;
maintainers = with maintainers; [ sentientmonkey ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ sentientmonkey ];
mainProgram = "git-together";
};
}
+3 -3
View File
@@ -19,12 +19,12 @@ buildGoModule rec {
ldflags = [ "-s" ];
meta = with lib; {
meta = {
description = "Scan local git repositories and generate a visual contributions graph";
changelog = "https://github.com/knbr13/gitcs/releases/tag/v${version}";
homepage = "https://github.com/knbr13/gitcs";
license = licenses.mit;
maintainers = with maintainers; [ phanirithvij ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ phanirithvij ];
mainProgram = "gitcs";
};
}
@@ -31,10 +31,10 @@ buildGo123Module rec {
version = "v${version}";
};
meta = with lib; {
meta = {
mainProgram = "act_runner";
maintainers = with maintainers; [ techknowlogick ];
license = licenses.mit;
maintainers = with lib.maintainers; [ techknowlogick ];
license = lib.licenses.mit;
changelog = "https://gitea.com/gitea/act_runner/releases/tag/v${version}";
homepage = "https://gitea.com/gitea/act_runner";
description = "Runner for Gitea based on act";
+4 -4
View File
@@ -89,16 +89,16 @@ stdenv.mkDerivation rec {
strictDeps = true;
meta = with lib; {
meta = {
homepage = "https://gitlab.gnome.org/GNOME/gitg";
changelog = "https://gitlab.gnome.org/GNOME/gitg/-/blob/v${version}/NEWS?ref_type=tags";
description = "GNOME GUI client to view git repositories";
mainProgram = "gitg";
maintainers = with maintainers; [
maintainers = with lib.maintainers; [
domenkozar
Luflosi
];
license = licenses.gpl2Plus;
platforms = platforms.linux;
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
};
}
+5 -5
View File
@@ -335,12 +335,12 @@ buildDotnetModule (finalAttrs: {
updateScript = ./update.sh;
};
meta = with lib; {
changelog = "https://github.com/actions/runner/releases/tag/v${version}";
meta = {
changelog = "https://github.com/actions/runner/releases/tag/v${finalAttrs.version}";
description = "Self-hosted runner for GitHub Actions";
homepage = "https://github.com/actions/runner";
license = licenses.mit;
maintainers = with maintainers; [
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
veehaitch
kfollesdal
aanderse
@@ -352,6 +352,6 @@ buildDotnetModule (finalAttrs: {
"x86_64-darwin"
"aarch64-darwin"
];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
+3 -3
View File
@@ -19,12 +19,12 @@ buildGoModule rec {
vendorHash = "sha256-BjCwPt1duDINHP7L0qT2KNTjOZ62bWgVij88ztjjyPg=";
subPackages = [ "." ];
meta = with lib; {
meta = {
description = "Daemon used to serve static websites for GitLab users";
mainProgram = "gitlab-pages";
homepage = "https://gitlab.com/gitlab-org/gitlab-pages";
changelog = "https://gitlab.com/gitlab-org/gitlab-pages/-/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
teams = [ teams.gitlab ];
license = lib.licenses.mit;
teams = [ lib.teams.gitlab ];
};
}
+3 -3
View File
@@ -46,7 +46,7 @@ buildGoModule rec {
passthru.updateScript = nix-update-script { };
meta = with lib; {
meta = {
description = "Scan git repos (or files) for secrets";
longDescription = ''
Gitleaks is a SAST tool for detecting hardcoded secrets like passwords,
@@ -54,8 +54,8 @@ buildGoModule rec {
'';
homepage = "https://github.com/zricethezav/gitleaks";
changelog = "https://github.com/zricethezav/gitleaks/releases/tag/v${version}";
license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ];
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ fab ];
mainProgram = "gitleaks";
};
}
+3 -3
View File
@@ -25,12 +25,12 @@ buildGoModule rec {
version = "v${version}";
};
meta = with lib; {
meta = {
description = "Tools to enumerate git repository URL";
homepage = "https://github.com/hahwul/gitls";
changelog = "https://github.com/hahwul/gitls/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "gitls";
};
}
+3 -3
View File
@@ -32,12 +32,12 @@ buildGoModule rec {
postInstall = "rm $out/bin/cli"; # remove gendoc cli binary
meta = with lib; {
meta = {
changelog = "https://github.com/gittuf/gittuf/blob/v${version}/CHANGELOG.md";
description = "Security layer for Git repositories";
homepage = "https://gittuf.dev";
license = licenses.asl20;
license = lib.licenses.asl20;
mainProgram = "gittuf";
maintainers = with maintainers; [ flandweber ];
maintainers = with lib.maintainers; [ flandweber ];
};
}
+4 -4
View File
@@ -10,13 +10,13 @@ buildDotnetGlobalTool rec {
nugetHash = "sha256-gtkD+egl9zAfJ4ZsOwb7u82IhBabjBFxU+nv9yQ1HHQ=";
meta = with lib; {
meta = {
description = "From git log to SemVer in no time";
homepage = "https://gitversion.net/";
changelog = "https://github.com/GitTools/GitVersion/releases/tag/${version}";
downloadPage = "https://github.com/GitTools/GitVersion";
license = licenses.mit;
platforms = platforms.linux ++ platforms.windows ++ platforms.darwin;
maintainers = with maintainers; [ acesyde ];
license = lib.licenses.mit;
platforms = lib.platforms.linux ++ lib.platforms.windows ++ lib.platforms.darwin;
maintainers = with lib.maintainers; [ acesyde ];
};
}
+3 -3
View File
@@ -77,12 +77,12 @@ buildGo123Module rec {
passthru.updateScript = nix-update-script { };
meta = with lib; {
meta = {
description = "The missing Package Manager for Kubernetes featuring a GUI and a CLI";
homepage = "https://github.com/glasskube/glasskube";
changelog = "https://github.com/glasskube/glasskube/releases/tag/v${version}";
maintainers = with maintainers; [ jakuzure ];
license = licenses.asl20;
maintainers = with lib.maintainers; [ jakuzure ];
license = lib.licenses.asl20;
mainProgram = "glasskube";
};
}
+3 -3
View File
@@ -34,12 +34,12 @@ rustPlatform.buildRustPackage rec {
"runs_correctly"
];
meta = with lib; {
meta = {
description = "Git wrapper that allows you to compress multiple commands into one";
homepage = "https://github.com/milo123459/glitter";
changelog = "https://github.com/Milo123459/glitter/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ figsoda ];
mainProgram = "glitter";
};
}
+3 -3
View File
@@ -36,12 +36,12 @@ buildGoModule rec {
--zsh <($out/bin/glow completion zsh)
'';
meta = with lib; {
meta = {
description = "Render markdown on the CLI, with pizzazz!";
homepage = "https://github.com/charmbracelet/glow";
changelog = "https://github.com/charmbracelet/glow/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
Br1ght0ne
penguwin
];
+3 -3
View File
@@ -24,12 +24,12 @@ buildGoModule rec {
"-w"
];
meta = with lib; {
meta = {
homepage = "https://github.com/kevinburke/go-bindata";
changelog = "https://github.com/kevinburke/go-bindata/blob/v${version}/CHANGELOG.md";
description = "Small utility which generates Go code from any file, useful for embedding binary data in a Go program";
mainProgram = "go-bindata";
maintainers = [ ];
license = licenses.cc0;
maintainers = with lib.maintainers; [ ];
license = lib.licenses.cc0;
};
}
+3 -3
View File
@@ -43,12 +43,12 @@ buildGo124Module rec {
rm pkg/camo/proxy_{,filter_}test.go
'';
meta = with lib; {
meta = {
description = "Camo server is a special type of image proxy that proxies non-secure images over SSL/TLS";
homepage = "https://github.com/cactus/go-camo";
changelog = "https://github.com/cactus/go-camo/releases/tag/v${version}";
license = licenses.mit;
license = lib.licenses.mit;
mainProgram = "go-camo";
maintainers = with maintainers; [ viraptor ];
maintainers = with lib.maintainers; [ viraptor ];
};
}
+3 -3
View File
@@ -20,7 +20,7 @@ buildGoModule rec {
# Tests requires network access
doCheck = false;
meta = with lib; {
meta = {
description = "Lightweight CVE search tool";
mainProgram = "go-cve-search";
longDescription = ''
@@ -29,7 +29,7 @@ buildGoModule rec {
'';
homepage = "https://github.com/s-index/go-cve-search";
changelog = "https://github.com/s-index/go-cve-search/releases/tag/v${version}";
license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ];
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ fab ];
};
}
+3 -3
View File
@@ -17,12 +17,12 @@ buildGoModule rec {
vendorHash = "sha256-6V58RRRPamBMDAf0gg4sQMQkoD5dWauCFtPrwf5EasI=";
meta = with lib; {
meta = {
description = "Dork scanner";
homepage = "https://github.com/dwisiswant0/go-dork";
changelog = "https://github.com/dwisiswant0/go-dork/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "go-dork";
};
}
+3 -3
View File
@@ -23,12 +23,12 @@ buildGoModule rec {
"-X=github.com/vulsio/go-exploitdb/config.Version=${version}"
];
meta = with lib; {
meta = {
description = "Tool for searching Exploits from Exploit Databases, etc";
mainProgram = "go-exploitdb";
homepage = "https://github.com/vulsio/go-exploitdb";
changelog = "https://github.com/vulsio/go-exploitdb/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
};
}
+3 -3
View File
@@ -51,12 +51,12 @@ buildGoModule rec {
# Tests require internet connection
doCheck = false;
meta = with lib; {
meta = {
changelog = "https://github.com/google/go-licenses/releases/tag/v${version}";
description = "Reports on the licenses used by a Go package and its dependencies";
mainProgram = "go-licenses";
homepage = "https://github.com/google/go-licenses";
license = with licenses; [ asl20 ];
maintainers = with maintainers; [ Luflosi ];
license = with lib.licenses; [ asl20 ];
maintainers = with lib.maintainers; [ Luflosi ];
};
}
+3 -3
View File
@@ -22,12 +22,12 @@ buildGoModule rec {
"-w"
];
meta = with lib; {
meta = {
description = "Tool to remotely dump secrets from the Windows registry";
homepage = "https://github.com/jfjallid/go-secdump";
changelog = "https://github.com/jfjallid/go-secdump/releases/tag/${version}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "go-secdump";
platforms = lib.platforms.linux;
};
+3 -3
View File
@@ -28,12 +28,12 @@ buildGoModule rec {
"-X github.com/go-swagger/go-swagger/cmd/swagger/commands.Commit=${src.rev}"
];
meta = with lib; {
meta = {
description = "Golang implementation of Swagger 2.0, representation of your RESTful API";
homepage = "https://github.com/go-swagger/go-swagger";
changelog = "https://github.com/go-swagger/go-swagger/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [ kalbasit ];
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ kalbasit ];
mainProgram = "swagger";
};
}
+3 -3
View File
@@ -26,12 +26,12 @@ buildGoModule rec {
doCheck = false; # tests fail
meta = with lib; {
meta = {
description = "Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MJPEG, HomeKit, FFmpeg, etc";
homepage = "https://github.com/AlexxIT/go2rtc";
changelog = "https://github.com/AlexxIT/go2rtc/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ hexa ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ hexa ];
mainProgram = "go2rtc";
};
}
+3 -3
View File
@@ -45,12 +45,12 @@ buildGoModule rec {
doCheck = false;
meta = with lib; {
meta = {
description = "Cast media files to UPnP/DLNA Media Renderers and Smart TVs";
homepage = "https://github.com/alexballas/go2tv";
changelog = "https://github.com/alexballas/go2tv/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ gdamjan ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ gdamjan ];
mainProgram = pname;
};
}
+3 -3
View File
@@ -22,12 +22,12 @@ buildGoModule rec {
mv $out/bin/Go365 $out/bin/$pname
'';
meta = with lib; {
meta = {
description = "Office 365 enumeration tool";
homepage = "https://github.com/optiv/Go365";
changelog = "https://github.com/optiv/Go365/releases/tag/v${version}";
license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ];
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ fab ];
mainProgram = "Go365";
};
}
+4 -4
View File
@@ -42,13 +42,13 @@ stdenv.mkDerivation rec {
]
);
meta = with lib; {
meta = {
description = "Real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems";
homepage = "https://goaccess.io";
changelog = "https://github.com/allinurl/goaccess/raw/v${version}/ChangeLog";
license = licenses.mit;
maintainers = with maintainers; [ ederoyd46 ];
platforms = platforms.linux ++ platforms.darwin;
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ederoyd46 ];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
mainProgram = "goaccess";
};
}

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