Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2024-05-02 12:02:05 +00:00 committed by GitHub
commit 4e3bc63c95
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
299 changed files with 7148 additions and 16502 deletions

View File

@ -1448,6 +1448,12 @@
githubId = 5411704;
name = "Manuel Sanchez Pinar";
};
aos = {
email = "n@aos.sh";
github = "aos";
githubId = 25783780;
name = "aos";
};
apeschar = {
email = "albert@peschar.net";
github = "apeschar";
@ -5792,6 +5798,15 @@
githubId = 4576666;
name = "Eliza Velasquez";
};
eljamm = {
name = "Fedi Jamoussi";
email = "fedi.jamoussi@protonmail.ch";
github = "eljamm";
githubId = 83901271;
keys = [{
fingerprint = "FF59 E027 4EE2 E792 512B BDC8 7630 FDF7 C8FB 1F3F";
}];
};
elkowar = {
email = "thereal.elkowar@gmail.com";
github = "elkowar";
@ -7702,6 +7717,12 @@
githubId = 10654650;
name = "Guillaume Koenig";
};
guitargeek = {
email = "jonas.rembser@cern.ch";
github = "guitargeek";
githubId = 6578603;
name = "Jonas Rembser";
};
guserav = {
github = "guserav";
githubId = 28863828;
@ -7785,6 +7806,12 @@
github = "HannahMR";
githubId = 9088467;
};
hannesgith = {
email = "nix@h-h.win";
github = "hannesgith";
githubId = 33062605;
name = "Hannes Hattenbach";
};
hansjoergschurr = {
email = "commits@schurr.at";
github = "hansjoergschurr";
@ -15271,6 +15298,12 @@
githubId = 1788628;
name = "pandaman";
};
pandapip1 = {
email = "gavinnjohn@gmail.com";
github = "Pandapip1";
githubId = 45835846;
name = "Gavin John";
};
panicgh = {
email = "nbenes.gh@xandea.de";
github = "panicgh";
@ -15834,6 +15867,13 @@
githubId = 4056630;
name = "Patrick Steinhardt";
};
pkulak = {
name = "Phil Kulak";
email = "phil@kulak.us";
matrix = "@phil:kulak.us";
github = "pkulak";
githubId = 502905;
};
plabadens = {
name = "Pierre Labadens";
email = "labadens.pierre+nixpkgs@gmail.com";
@ -16500,6 +16540,11 @@
githubId = 35229674;
name = "Armin Rothfuss";
};
r3n3gad3p3arl = {
github = "r3n3gad3p3arl";
githubId = 20760527;
name = "Madelyn";
};
raboof = {
email = "arnout@bzzt.net";
matrix = "@raboof:matrix.org";
@ -16803,6 +16848,12 @@
githubId = 18155001;
name = "Gabe Dunn";
};
redyf = {
email = "mateusalvespereira7@gmail.com";
github = "redyf";
githubId = 98139059;
name = "Mateus Alves";
};
reedrw = {
email = "reedrw5601@gmail.com";
github = "reedrw";

View File

@ -131,6 +131,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
- [mautrix-meta](https://github.com/mautrix/meta), a Matrix <-> Facebook and Matrix <-> Instagram hybrid puppeting/relaybot bridge. Available as services.mautrix-meta
- [Jottacloud Command-line Tool](https://docs.jottacloud.com/en/articles/1436834-jottacloud-command-line-tool), a CLI for the [Jottacloud](https://jottacloud.com/) cloud storage provider. Available as [user.services.jotta-cli](#opt-user.services.jotta-cli.enable).
- [transfer-sh](https://github.com/dutchcoders/transfer.sh), a tool that supports easy and fast file sharing from the command-line. Available as [services.transfer-sh](#opt-services.transfer-sh.enable).
- [FCast Receiver](https://fcast.org), an open-source alternative to Chromecast and AirPlay. Available as [programs.fcast-receiver](#opt-programs.fcast-receiver.enable).
@ -401,6 +403,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
- `services.zope2` has been removed as `zope2` is unmaintained and was relying on Python2.
- `services.oauth2_proxy` was renamed to `services.oauth2-proxy`. Also the corresponding service, user and group were renamed.
- `services.avahi.nssmdns` got split into `services.avahi.nssmdns4` and `services.avahi.nssmdns6` which enable the mDNS NSS switch for IPv4 and IPv6 respectively.
Since most mDNS responders only register IPv4 addresses, most users want to keep the IPv6 support disabled to avoid long timeouts.

View File

@ -47,7 +47,7 @@ with lib;
gst_all_1 = super.gst_all_1 // {
gst-plugins-bad = super.gst_all_1.gst-plugins-bad.override { guiSupport = false; };
gst-plugins-base = super.gst_all_1.gst-plugins-base.override { enableWayland = false; enableX11 = false; };
gst-plugins-good = super.gst_all_1.gst-plugins-good.override { enableX11 = false; };
gst-plugins-good = super.gst_all_1.gst-plugins-good.override { enableWayland = false; enableX11 = false; gtkSupport = false; qt5Support = false; qt6Support = false; };
};
imagemagick = super.imagemagick.override { libX11Support = false; libXtSupport = false; };
imagemagickBig = super.imagemagickBig.override { libX11Support = false; libXtSupport = false; };

View File

@ -1029,6 +1029,7 @@
./services/networking/jigasi.nix
./services/networking/jitsi-videobridge.nix
./services/networking/jool.nix
./services/networking/jotta-cli.nix
./services/networking/kea.nix
./services/networking/keepalived/default.nix
./services/networking/keybase.nix
@ -1256,8 +1257,8 @@
./services/security/kanidm.nix
./services/security/munge.nix
./services/security/nginx-sso.nix
./services/security/oauth2_proxy.nix
./services/security/oauth2_proxy_nginx.nix
./services/security/oauth2-proxy.nix
./services/security/oauth2-proxy-nginx.nix
./services/security/opensnitch.nix
./services/security/pass-secret-service.nix
./services/security/physlock.nix

View File

@ -315,6 +315,14 @@ in
'';
};
mailErrorSummaryTo = mkOption {
type = singleLineStr;
default = "";
description = ''
Email address to send a summary to if "send task(s) failed".
'';
};
noDestroy = mkOption {
type = bool;
default = false;
@ -455,6 +463,8 @@ in
"--loglevel=${cfg.logLevel}"
(optionalString cfg.noDestroy "--nodestroy")
(optionalString cfg.autoCreation "--autoCreation")
(optionalString (cfg.mailErrorSummaryTo != "")
"--mailErrorSummaryTo=${cfg.mailErrorSummaryTo}")
(optionalString (enabledFeatures != [])
"--features=${concatStringsSep "," enabledFeatures}")
]; in "${pkgs.znapzend}/bin/znapzend ${args}";

View File

@ -97,50 +97,50 @@ in
logs = {
main = mkOption {
type = types.enum [ "error" "notice" "info" "debug"];
type = types.enum [ "none" "error" "notice" "info" "debug"];
default = "info";
description = ''
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (error|notice|info|debug) [all:notice].
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (none|error|notice|info|debug) [all:notice].
'';
};
network = mkOption {
type = types.enum [ "error" "notice" "info" "debug"];
type = types.enum [ "none" "error" "notice" "info" "debug"];
default = "info";
description = ''
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (error|notice|info|debug) [all:notice].
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (none|error|notice|info|debug) [all:notice].
'';
};
bus = mkOption {
type = types.enum [ "error" "notice" "info" "debug"];
type = types.enum [ "none" "error" "notice" "info" "debug"];
default = "info";
description = ''
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (error|notice|info|debug) [all:notice].
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (none|error|notice|info|debug) [all:notice].
'';
};
update = mkOption {
type = types.enum [ "error" "notice" "info" "debug"];
type = types.enum [ "none" "error" "notice" "info" "debug"];
default = "info";
description = ''
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (error|notice|info|debug) [all:notice].
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (none|error|notice|info|debug) [all:notice].
'';
};
other = mkOption {
type = types.enum [ "error" "notice" "info" "debug"];
type = types.enum [ "none" "error" "notice" "info" "debug"];
default = "info";
description = ''
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (error|notice|info|debug) [all:notice].
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (none|error|notice|info|debug) [all:notice].
'';
};
all = mkOption {
type = types.enum [ "error" "notice" "info" "debug"];
type = types.enum [ "none" "error" "notice" "info" "debug"];
default = "info";
description = ''
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (error|notice|info|debug) [all:notice].
Only write log for matching AREAs (main|network|bus|update|other|all) below or equal to LEVEL (none|error|notice|info|debug) [all:notice].
'';
};
};

View File

@ -224,7 +224,7 @@ in
and users are replaced by dummy users), so tests are complemented by a
logrotate-checkconf service that is enabled by default.
This extra check can be disabled by disabling it at the systemd level with the
{option}`services.systemd.services.logrotate-checkconf.enable` option.
{option}`systemd.services.logrotate-checkconf.enable` option.
Conversely there are still things that might make this check fail incorrectly
(e.g. a file path where we don't have access to intermediate directories):

View File

@ -534,14 +534,11 @@ in {
hyperkittyApiKey=$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 64)
secretKey=$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 64)
mailmanWebCfgTmp=$(mktemp)
jq -n '.MAILMAN_ARCHIVER_KEY=$archiver_key | .SECRET_KEY=$secret_key' \
install -m 0440 -o root -g mailman \
<(jq -n '.MAILMAN_ARCHIVER_KEY=$archiver_key | .SECRET_KEY=$secret_key' \
--arg archiver_key "$hyperkittyApiKey" \
--arg secret_key "$secretKey" \
>"$mailmanWebCfgTmp"
chown root:mailman "$mailmanWebCfgTmp"
chmod 440 "$mailmanWebCfgTmp"
mv -n "$mailmanWebCfgTmp" "$mailmanWebCfg"
--arg secret_key "$secretKey") \
"$mailmanWebCfg"
fi
hyperkittyApiKey="$(jq -r .MAILMAN_ARCHIVER_KEY "$mailmanWebCfg")"

View File

@ -301,7 +301,7 @@ in
description = ''
The addresses to send outgoing mail to.
'';
apply = x: if x == [] then null else lib.concatStringsSep "," x;
apply = x: if x == [] || x == null then null else lib.concatStringsSep "," x;
};
};
@ -438,7 +438,7 @@ in
];
dashboards.settings.providers = lib.mkIf cfg.provision.grafana.dashboard [{
name = "parsedmarc";
options.path = "${pkgs.python3Packages.parsedmarc.dashboard}";
options.path = "${pkgs.parsedmarc.dashboard}";
}];
};
};
@ -446,7 +446,7 @@ in
services.parsedmarc.settings = lib.mkMerge [
(lib.mkIf cfg.provision.elasticsearch {
elasticsearch = {
hosts = [ "localhost:9200" ];
hosts = [ "http://localhost:9200" ];
ssl = false;
};
})
@ -530,7 +530,7 @@ in
MemoryDenyWriteExecute = true;
LockPersonality = true;
SystemCallArchitectures = "native";
ExecStart = "${pkgs.python3Packages.parsedmarc}/bin/parsedmarc -c /run/parsedmarc/parsedmarc.ini";
ExecStart = "${lib.getExe pkgs.parsedmarc} -c /run/parsedmarc/parsedmarc.ini";
};
};

View File

@ -0,0 +1,27 @@
# Jottacloud Command-line Tool {#module-services-jotta-cli}
The [Jottacloud Command-line Tool](https://docs.jottacloud.com/en/articles/1436834-jottacloud-command-line-tool) is a headless [Jottacloud](https://jottacloud.com) client.
## Quick Start {#module-services-jotta-cli-quick-start}
```nix
{
user.services.jotta-cli.enable = true;
}
```
This adds `jotta-cli` to `environment.systemPackages` and starts a user service that runs `jottad` with the default options.
## Example Configuration {#module-services-jotta-cli-example-configuration}
```nix
user.services.jotta-cli = {
enable = true;
options = [ "slow" ];
package = pkgs.jotta-cli;
};
```
This uses `jotta-cli` and `jottad` from the `pkgs.jotta-cli` package and starts `jottad` in low memory mode.
`jottad` is also added to `environment.systemPackages`, so `jottad --help` can be used to explore options.

View File

@ -0,0 +1,43 @@
{ config, lib, pkgs, ... }:
with lib;
let cfg = config.user.services.jotta-cli;
in {
options = {
user.services.jotta-cli = {
enable = mkEnableOption "Jottacloud Command-line Tool";
options = mkOption {
default = [ "stdoutlog" "datadir" "%h/.jottad/" ];
example = [ ];
type = with types; listOf str;
description = "Command-line options passed to jottad.";
};
package = lib.mkPackageOption pkgs "jotta-cli" { };
};
};
config = mkIf cfg.enable {
systemd.user.services.jottad = {
description = "Jottacloud Command-line Tool daemon";
serviceConfig = {
Type = "notify";
EnvironmentFile = "-%h/.config/jotta-cli/jotta-cli.env";
ExecStart = "${lib.getExe' cfg.package "jottad"} ${concatStringsSep " " cfg.options}";
Restart = "on-failure";
};
wantedBy = [ "default.target" ];
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
};
environment.systemPackages = [ pkgs.jotta-cli ];
};
meta.maintainers = with lib.maintainers; [ evenbrenden ];
meta.doc = ./jotta-cli.md;
}

View File

@ -1,56 +1,55 @@
{ config, lib, ... }:
with lib;
let
cfg = config.services.oauth2_proxy.nginx;
cfg = config.services.oauth2-proxy.nginx;
in
{
options.services.oauth2_proxy.nginx = {
proxy = mkOption {
type = types.str;
default = config.services.oauth2_proxy.httpAddress;
defaultText = literalExpression "config.services.oauth2_proxy.httpAddress";
options.services.oauth2-proxy.nginx = {
proxy = lib.mkOption {
type = lib.types.str;
default = config.services.oauth2-proxy.httpAddress;
defaultText = lib.literalExpression "config.services.oauth2-proxy.httpAddress";
description = ''
The address of the reverse proxy endpoint for oauth2_proxy
The address of the reverse proxy endpoint for oauth2-proxy
'';
};
domain = mkOption {
type = types.str;
domain = lib.mkOption {
type = lib.types.str;
description = ''
The domain under which the oauth2_proxy will be accesible and the path of cookies are set to.
The domain under which the oauth2-proxy will be accesible and the path of cookies are set to.
This setting must be set to ensure back-redirects are working properly
if oauth2-proxy is configured with {option}`services.oauth2_proxy.cookie.domain`
or multiple {option}`services.oauth2_proxy.nginx.virtualHosts` that are not on the same domain.
if oauth2-proxy is configured with {option}`services.oauth2-proxy.cookie.domain`
or multiple {option}`services.oauth2-proxy.nginx.virtualHosts` that are not on the same domain.
'';
};
virtualHosts = mkOption {
virtualHosts = lib.mkOption {
type = let
vhostSubmodule = types.submodule {
vhostSubmodule = lib.types.submodule {
options = {
allowed_groups = mkOption {
type = types.nullOr (types.listOf types.str);
allowed_groups = lib.mkOption {
type = lib.types.nullOr (lib.types.listOf lib.types.str);
description = "List of groups to allow access to this vhost, or null to allow all.";
default = null;
};
allowed_emails = mkOption {
type = types.nullOr (types.listOf types.str);
allowed_emails = lib.mkOption {
type = lib.types.nullOr (lib.types.listOf lib.types.str);
description = "List of emails to allow access to this vhost, or null to allow all.";
default = null;
};
allowed_email_domains = mkOption {
type = types.nullOr (types.listOf types.str);
allowed_email_domains = lib.mkOption {
type = lib.types.nullOr (lib.types.listOf lib.types.str);
description = "List of email domains to allow access to this vhost, or null to allow all.";
default = null;
};
};
};
oldType = types.listOf types.str;
oldType = lib.types.listOf lib.types.str;
convertFunc = x:
lib.warn "services.oauth2_proxy.nginx.virtualHosts should be an attrset, found ${lib.generators.toPretty {} x}"
lib.warn "services.oauth2-proxy.nginx.virtualHosts should be an attrset, found ${lib.generators.toPretty {} x}"
lib.genAttrs x (_: {});
newType = types.attrsOf vhostSubmodule;
in types.coercedTo oldType convertFunc newType;
newType = lib.types.attrsOf vhostSubmodule;
in lib.types.coercedTo oldType convertFunc newType;
default = {};
example = {
"protected.foo.com" = {
@ -65,11 +64,11 @@ in
};
};
config.services.oauth2_proxy = mkIf (cfg.virtualHosts != [] && (hasPrefix "127.0.0.1:" cfg.proxy)) {
config.services.oauth2-proxy = lib.mkIf (cfg.virtualHosts != [] && (lib.hasPrefix "127.0.0.1:" cfg.proxy)) {
enable = true;
};
config.services.nginx = mkIf (cfg.virtualHosts != [] && config.services.oauth2_proxy.enable) (mkMerge ([
config.services.nginx = lib.mkIf (cfg.virtualHosts != [] && config.services.oauth2-proxy.enable) (lib.mkMerge ([
{
virtualHosts.${cfg.domain}.locations."/oauth2/" = {
proxyPass = cfg.proxy;
@ -79,7 +78,7 @@ in
'';
};
}
] ++ optional (cfg.virtualHosts != []) {
] ++ lib.optional (cfg.virtualHosts != []) {
recommendedProxySettings = true; # needed because duplicate headers
} ++ (lib.mapAttrsToList (vhost: conf: {
virtualHosts.${vhost} = {

View File

@ -1,15 +1,12 @@
# NixOS module for oauth2_proxy.
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.oauth2_proxy;
cfg = config.services.oauth2-proxy;
# oauth2_proxy provides many options that are only relevant if you are using
# oauth2-proxy provides many options that are only relevant if you are using
# a certain provider. This set maps from provider name to a function that
# takes the configuration and returns a string that can be inserted into the
# command-line to launch oauth2_proxy.
# command-line to launch oauth2-proxy.
providerSpecificOptions = {
azure = cfg: {
azure-tenant = cfg.azure.tenant;
@ -73,28 +70,28 @@ let
} // (getProviderOptions cfg cfg.provider) // cfg.extraConfig;
mapConfig = key: attr:
optionalString (attr != null && attr != []) (
if isDerivation attr then mapConfig key (toString attr) else
if (builtins.typeOf attr) == "set" then concatStringsSep " "
(mapAttrsToList (name: value: mapConfig (key + "-" + name) value) attr) else
if (builtins.typeOf attr) == "list" then concatMapStringsSep " " (mapConfig key) attr else
if (builtins.typeOf attr) == "bool" then "--${key}=${boolToString attr}" else
lib.optionalString (attr != null && attr != []) (
if lib.isDerivation attr then mapConfig key (toString attr) else
if (builtins.typeOf attr) == "set" then lib.concatStringsSep " "
(lib.mapAttrsToList (name: value: mapConfig (key + "-" + name) value) attr) else
if (builtins.typeOf attr) == "list" then lib.concatMapStringsSep " " (mapConfig key) attr else
if (builtins.typeOf attr) == "bool" then "--${key}=${lib.boolToString attr}" else
if (builtins.typeOf attr) == "string" then "--${key}='${attr}'" else
"--${key}=${toString attr}");
configString = concatStringsSep " " (mapAttrsToList mapConfig allConfig);
configString = lib.concatStringsSep " " (lib.mapAttrsToList mapConfig allConfig);
in
{
options.services.oauth2_proxy = {
enable = mkEnableOption "oauth2_proxy";
options.services.oauth2-proxy = {
enable = lib.mkEnableOption "oauth2-proxy";
package = mkPackageOption pkgs "oauth2-proxy" { };
package = lib.mkPackageOption pkgs "oauth2-proxy" { };
##############################################
# PROVIDER configuration
# Taken from: https://github.com/oauth2-proxy/oauth2-proxy/blob/master/providers/providers.go
provider = mkOption {
type = types.enum [
provider = lib.mkOption {
type = lib.types.enum [
"adfs"
"azure"
"bitbucket"
@ -116,24 +113,24 @@ in
'';
};
approvalPrompt = mkOption {
type = types.enum ["force" "auto"];
approvalPrompt = lib.mkOption {
type = lib.types.enum ["force" "auto"];
default = "force";
description = ''
OAuth approval_prompt.
'';
};
clientID = mkOption {
type = types.nullOr types.str;
clientID = lib.mkOption {
type = lib.types.nullOr lib.types.str;
description = ''
The OAuth Client ID.
'';
example = "123456.apps.googleusercontent.com";
};
oidcIssuerUrl = mkOption {
type = types.nullOr types.str;
oidcIssuerUrl = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
The OAuth issuer URL.
@ -141,15 +138,15 @@ in
example = "https://login.microsoftonline.com/{TENANT_ID}/v2.0";
};
clientSecret = mkOption {
type = types.nullOr types.str;
clientSecret = lib.mkOption {
type = lib.types.nullOr lib.types.str;
description = ''
The OAuth Client Secret.
'';
};
skipAuthRegexes = mkOption {
type = types.listOf types.str;
skipAuthRegexes = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = ''
Skip authentication for requests matching any of these regular
@ -159,8 +156,8 @@ in
# XXX: Not clear whether these two options are mutually exclusive or not.
email = {
domains = mkOption {
type = types.listOf types.str;
domains = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = ''
Authenticate emails with the specified domains. Use
@ -168,8 +165,8 @@ in
'';
};
addresses = mkOption {
type = types.nullOr types.lines;
addresses = lib.mkOption {
type = lib.types.nullOr lib.types.lines;
default = null;
description = ''
Line-separated email addresses that are allowed to authenticate.
@ -177,8 +174,8 @@ in
};
};
loginURL = mkOption {
type = types.nullOr types.str;
loginURL = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
Authentication endpoint.
@ -190,8 +187,8 @@ in
example = "https://provider.example.com/oauth/authorize";
};
redeemURL = mkOption {
type = types.nullOr types.str;
redeemURL = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
Token redemption endpoint.
@ -203,8 +200,8 @@ in
example = "https://provider.example.com/oauth/token";
};
validateURL = mkOption {
type = types.nullOr types.str;
validateURL = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
Access token validation endpoint.
@ -216,10 +213,10 @@ in
example = "https://provider.example.com/user/emails";
};
redirectURL = mkOption {
redirectURL = lib.mkOption {
# XXX: jml suspects this is always necessary, but the command-line
# doesn't require it so making it optional.
type = types.nullOr types.str;
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
The OAuth2 redirect URL.
@ -228,16 +225,16 @@ in
};
azure = {
tenant = mkOption {
type = types.str;
tenant = lib.mkOption {
type = lib.types.str;
default = "common";
description = ''
Go to a tenant-specific or common (tenant-independent) endpoint.
'';
};
resource = mkOption {
type = types.str;
resource = lib.mkOption {
type = lib.types.str;
description = ''
The resource that is protected.
'';
@ -245,8 +242,8 @@ in
};
google = {
adminEmail = mkOption {
type = types.str;
adminEmail = lib.mkOption {
type = lib.types.str;
description = ''
The Google Admin to impersonate for API calls.
@ -258,16 +255,16 @@ in
'';
};
groups = mkOption {
type = types.listOf types.str;
groups = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = ''
Restrict logins to members of these Google groups.
'';
};
serviceAccountJSON = mkOption {
type = types.path;
serviceAccountJSON = lib.mkOption {
type = lib.types.path;
description = ''
The path to the service account JSON credentials.
'';
@ -275,16 +272,16 @@ in
};
github = {
org = mkOption {
type = types.nullOr types.str;
org = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
Restrict logins to members of this organisation.
'';
};
team = mkOption {
type = types.nullOr types.str;
team = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
Restrict logins to members of this team.
@ -295,8 +292,8 @@ in
####################################################
# UPSTREAM Configuration
upstream = mkOption {
type = with types; coercedTo str (x: [x]) (listOf str);
upstream = lib.mkOption {
type = with lib.types; coercedTo str (x: [x]) (listOf str);
default = [];
description = ''
The http url(s) of the upstream endpoint or `file://`
@ -304,40 +301,40 @@ in
'';
};
passAccessToken = mkOption {
type = types.bool;
passAccessToken = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Pass OAuth access_token to upstream via X-Forwarded-Access-Token header.
'';
};
passBasicAuth = mkOption {
type = types.bool;
passBasicAuth = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Pass HTTP Basic Auth, X-Forwarded-User and X-Forwarded-Email information to upstream.
'';
};
basicAuthPassword = mkOption {
type = types.nullOr types.str;
basicAuthPassword = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
The password to set when passing the HTTP Basic Auth header.
'';
};
passHostHeader = mkOption {
type = types.bool;
passHostHeader = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Pass the request Host Header to upstream.
'';
};
signatureKey = mkOption {
type = types.nullOr types.str;
signatureKey = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
GAP-Signature request signature key.
@ -346,8 +343,8 @@ in
};
cookie = {
domain = mkOption {
type = types.nullOr types.str;
domain = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
Optional cookie domains to force cookies to (ie: `.yourcompany.com`).
@ -357,33 +354,33 @@ in
example = ".yourcompany.com";
};
expire = mkOption {
type = types.str;
expire = lib.mkOption {
type = lib.types.str;
default = "168h0m0s";
description = ''
Expire timeframe for cookie.
'';
};
httpOnly = mkOption {
type = types.bool;
httpOnly = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Set HttpOnly cookie flag.
'';
};
name = mkOption {
type = types.str;
name = lib.mkOption {
type = lib.types.str;
default = "_oauth2_proxy";
description = ''
The name of the cookie that the oauth_proxy creates.
'';
};
refresh = mkOption {
refresh = lib.mkOption {
# XXX: Unclear what the behavior is when this is not specified.
type = types.nullOr types.str;
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
Refresh the cookie after this duration; 0 to disable.
@ -391,15 +388,15 @@ in
example = "168h0m0s";
};
secret = mkOption {
type = types.nullOr types.str;
secret = lib.mkOption {
type = lib.types.nullOr lib.types.str;
description = ''
The seed string for secure cookies.
'';
};
secure = mkOption {
type = types.bool;
secure = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Set secure (HTTPS) cookie flag.
@ -410,8 +407,8 @@ in
####################################################
# OAUTH2 PROXY configuration
httpAddress = mkOption {
type = types.str;
httpAddress = lib.mkOption {
type = lib.types.str;
default = "http://127.0.0.1:4180";
description = ''
HTTPS listening address. This module does not expose the port by
@ -421,8 +418,8 @@ in
};
htpasswd = {
file = mkOption {
type = types.nullOr types.path;
file = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
Additionally authenticate against a htpasswd file. Entries must be
@ -430,8 +427,8 @@ in
'';
};
displayForm = mkOption {
type = types.bool;
displayForm = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Display username / password login form if an htpasswd file is provided.
@ -439,16 +436,16 @@ in
};
};
customTemplatesDir = mkOption {
type = types.nullOr types.path;
customTemplatesDir = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
Path to custom HTML templates.
'';
};
reverseProxy = mkOption {
type = types.bool;
reverseProxy = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
In case when running behind a reverse proxy, controls whether headers
@ -458,8 +455,8 @@ in
'';
};
proxyPrefix = mkOption {
type = types.str;
proxyPrefix = lib.mkOption {
type = lib.types.str;
default = "/oauth2";
description = ''
The url root path that this proxy should be nested under.
@ -467,30 +464,30 @@ in
};
tls = {
enable = mkOption {
type = types.bool;
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to serve over TLS.
'';
};
certificate = mkOption {
type = types.path;
certificate = lib.mkOption {
type = lib.types.path;
description = ''
Path to certificate file.
'';
};
key = mkOption {
type = types.path;
key = lib.mkOption {
type = lib.types.path;
description = ''
Path to private key file.
'';
};
httpsAddress = mkOption {
type = types.str;
httpsAddress = lib.mkOption {
type = lib.types.str;
default = ":443";
description = ''
`addr:port` to listen on for HTTPS clients.
@ -502,8 +499,8 @@ in
};
};
requestLogging = mkOption {
type = types.bool;
requestLogging = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Log requests to stdout.
@ -514,42 +511,42 @@ in
# UNKNOWN
# XXX: Is this mandatory? Is it part of another group? Is it part of the provider specification?
scope = mkOption {
scope = lib.mkOption {
# XXX: jml suspects this is always necessary, but the command-line
# doesn't require it so making it optional.
type = types.nullOr types.str;
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
OAuth scope specification.
'';
};
profileURL = mkOption {
type = types.nullOr types.str;
profileURL = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = ''
Profile access endpoint.
'';
};
setXauthrequest = mkOption {
type = types.nullOr types.bool;
setXauthrequest = lib.mkOption {
type = lib.types.nullOr lib.types.bool;
default = false;
description = ''
Set X-Auth-Request-User and X-Auth-Request-Email response headers (useful in Nginx auth_request mode). Setting this to 'null' means using the upstream default (false).
'';
};
extraConfig = mkOption {
extraConfig = lib.mkOption {
default = {};
type = types.attrsOf types.anything;
type = lib.types.attrsOf lib.types.anything;
description = ''
Extra config to pass to oauth2-proxy.
'';
};
keyFile = mkOption {
type = types.nullOr types.path;
keyFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = ''
oauth2-proxy allows passing sensitive configuration via environment variables.
@ -557,28 +554,30 @@ in
OAUTH2_PROXY_CLIENT_SECRET=asdfasdfasdf.apps.googleuserscontent.com
and specify the path here.
'';
example = "/run/keys/oauth2_proxy";
example = "/run/keys/oauth2-proxy";
};
};
config = mkIf cfg.enable {
imports = [
(lib.mkRenamedOptionModule [ "services" "oauth2_proxy" ] [ "services" "oauth2-proxy" ])
];
services.oauth2_proxy = mkIf (cfg.keyFile != null) {
clientID = mkDefault null;
clientSecret = mkDefault null;
cookie.secret = mkDefault null;
config = lib.mkIf cfg.enable {
services.oauth2-proxy = lib.mkIf (cfg.keyFile != null) {
clientID = lib.mkDefault null;
clientSecret = lib.mkDefault null;
cookie.secret = lib.mkDefault null;
};
users.users.oauth2_proxy = {
users.users.oauth2-proxy = {
description = "OAuth2 Proxy";
isSystemUser = true;
group = "oauth2_proxy";
group = "oauth2-proxy";
};
users.groups.oauth2_proxy = {};
users.groups.oauth2-proxy = {};
systemd.services.oauth2_proxy = {
systemd.services.oauth2-proxy = {
description = "OAuth2 Proxy";
path = [ cfg.package ];
wantedBy = [ "multi-user.target" ];
@ -586,10 +585,10 @@ in
after = [ "network-online.target" ];
serviceConfig = {
User = "oauth2_proxy";
User = "oauth2-proxy";
Restart = "always";
ExecStart = "${cfg.package}/bin/oauth2-proxy ${configString}";
EnvironmentFile = mkIf (cfg.keyFile != null) cfg.keyFile;
EnvironmentFile = lib.mkIf (cfg.keyFile != null) cfg.keyFile;
};
};

View File

@ -82,7 +82,9 @@ in rec {
(onFullSupported "nixos.tests.gitlab")
(onFullSupported "nixos.tests.gnome")
(onFullSupported "nixos.tests.gnome-xorg")
(onSystems ["x86_64-linux"] "nixos.tests.hibernate")
# FIXME: broken by QEMU 8.2.3 upgrade, reenable when fixed
# Upstream issue: https://gitlab.com/qemu-project/qemu/-/issues/2321
# (onSystems ["x86_64-linux"] "nixos.tests.hibernate")
(onFullSupported "nixos.tests.i3wm")
(onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSimple")
(onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvolDefault")

View File

@ -451,6 +451,7 @@ in {
jirafeau = handleTest ./jirafeau.nix {};
jitsi-meet = handleTest ./jitsi-meet.nix {};
jool = import ./jool.nix { inherit pkgs runTest; };
jotta-cli = handleTest ./jotta-cli.nix {};
k3s = handleTest ./k3s {};
kafka = handleTest ./kafka.nix {};
kanidm = handleTest ./kanidm.nix {};

View File

@ -1,5 +1,5 @@
# NixOS tests for gnome-desktop-testing-runner using software
# See https://wiki.gnome.org/Initiatives/GnomeGoals/InstalledTests
# See https://github.com/NixOS/nixpkgs/issues/34987
{ system ? builtins.currentSystem,
config ? {},

25
nixos/tests/jotta-cli.nix Normal file
View File

@ -0,0 +1,25 @@
import ./make-test-python.nix ({ pkgs, ... }: {
name = "jotta-cli";
meta.maintainers = with pkgs.lib.maintainers; [ evenbrenden ];
nodes.machine = { pkgs, ... }: {
user.services.jotta-cli.enable = true;
imports = [ ./common/user-account.nix ];
};
testScript = { nodes, ... }:
let uid = toString nodes.machine.users.users.alice.uid;
in ''
machine.start()
machine.succeed("loginctl enable-linger alice")
machine.wait_for_unit("user@${uid}.service")
machine.wait_for_unit("jottad.service", "alice")
machine.wait_for_open_unix_socket("/run/user/${uid}/jottad/jottad.socket")
# "jotta-cli version" should fail if jotta-cli cannot connect to jottad
machine.succeed('XDG_RUNTIME_DIR=/run/user/${uid} su alice -c "jotta-cli version"')
'';
})

View File

@ -76,14 +76,17 @@ import ./make-test-python.nix ({ pkgs, ... }:
with subtest("Test LDAP interface"):
server.succeed("ldapsearch -H ldaps://${serverDomain}:636 -b '${ldapBaseDN}' -x '(name=test)'")
with subtest("Test CLI login"):
client.succeed("kanidm login -D anonymous")
client.succeed("kanidm self whoami | grep anonymous@${serverDomain}")
client.succeed("kanidm logout")
with subtest("Recover idm_admin account"):
idm_admin_password = server.succeed("su - kanidm -c 'kanidmd recover-account -c ${serverConfigFile} idm_admin 2>&1 | rg -o \'[A-Za-z0-9]{48}\' '").strip().removeprefix("'").removesuffix("'")
with subtest("Test CLI login"):
client.wait_until_tty_matches("1", "login: ")
client.send_chars("root\n")
client.send_chars("kanidm login -D idm_admin\n")
client.wait_until_tty_matches("1", "Enter password: ")
client.send_chars(f"{idm_admin_password}\n")
client.wait_until_tty_matches("1", "Login Success for idm_admin")
with subtest("Test unixd connection"):
client.wait_for_unit("kanidm-unixd.service")
client.wait_for_file("/run/kanidm-unixd/sock")
@ -92,12 +95,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
with subtest("Test user creation"):
client.wait_for_unit("getty@tty1.service")
client.wait_until_succeeds("pgrep -f 'agetty.*tty1'")
client.wait_until_tty_matches("1", "login: ")
client.send_chars("root\n")
client.send_chars("kanidm login -D idm_admin\n")
client.wait_until_tty_matches("1", "Enter password: ")
client.send_chars(f"{idm_admin_password}\n")
client.wait_until_tty_matches("1", "Login Success for idm_admin")
client.succeed("kanidm person create testuser TestUser")
client.succeed("kanidm person posix set --shell \"$SHELL\" testuser")
client.send_chars("kanidm person posix set-password testuser\n")

View File

@ -119,11 +119,11 @@ in
with subtest("Libreswan is ready"):
alice.wait_for_unit("ipsec")
bob.wait_for_unit("ipsec")
alice.succeed("ipsec verify 1>&2")
alice.succeed("ipsec checkconfig")
with subtest("Alice and Bob can start the tunnel"):
alice.execute("ipsec auto --start tunnel >&2 &")
bob.succeed("ipsec auto --start tunnel")
alice.execute("ipsec start tunnel >&2 &")
bob.succeed("ipsec start tunnel")
# apparently this is needed to "wake" the tunnel
bob.execute("ping -c1 alice")

View File

@ -1,7 +1,7 @@
import ./make-test-python.nix ({ pkgs, ... }:
let inherit (import ./ssh-keys.nix pkgs)
snakeOilPrivateKey snakeOilPublicKey;
snakeOilPrivateKey snakeOilPublicKey snakeOilEd25519PrivateKey snakeOilEd25519PublicKey;
in {
name = "openssh";
meta = with pkgs.lib.maintainers; {
@ -108,6 +108,31 @@ in {
};
};
server-no-openssl =
{ ... }:
{
programs.ssh.package = pkgs.opensshPackages.openssh.override {
linkOpenssl = false;
};
services.openssh = {
enable = true;
hostKeys = [
{ type = "ed25519"; path = "/etc/ssh/ssh_host_ed25519_key"; }
];
settings = {
# Must not specify the OpenSSL provided algorithms.
Ciphers = [ "chacha20-poly1305@openssh.com" ];
KexAlgorithms = [
"curve25519-sha256"
"curve25519-sha256@libssh.org"
];
};
};
users.users.root.openssh.authorizedKeys.keys = [
snakeOilEd25519PublicKey
];
};
server-no-pam =
{ pkgs, ... }:
{
@ -139,6 +164,7 @@ in {
server_allowed_users.wait_for_unit("sshd", timeout=30)
server_localhost_only.wait_for_unit("sshd", timeout=30)
server_match_rule.wait_for_unit("sshd", timeout=30)
server_no_openssl.wait_for_unit("sshd", timeout=30)
server_no_pam.wait_for_unit("sshd", timeout=30)
server_lazy.wait_for_unit("sshd.socket", timeout=30)
@ -230,6 +256,16 @@ in {
timeout=30
)
with subtest("no-openssl"):
client.succeed(
"cat ${snakeOilEd25519PrivateKey} > privkey.snakeoil"
)
client.succeed("chmod 600 privkey.snakeoil")
client.succeed(
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil server-no-openssl true",
timeout=30
)
with subtest("no-pam"):
client.succeed(
"cat ${snakeOilPrivateKey} > privkey.snakeoil"

View File

@ -12,4 +12,16 @@ pkgs:
"yNTYAAABBBChdA2BmwcG49OrQN33f/sj+OHL5sJhwVl2Qim0vkUJQCry1zFpKTa"
"9ZcDMiWaEhoAR6FGoaGI04ff7CS+1yybQ= snakeoil"
];
snakeOilEd25519PrivateKey = pkgs.writeText "privkey.snakeoil" ''
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAYBTIWo1J4PkY4/7AhVyPT8xvAUI67tp+yYFFRdSm7+QAAAJC89yCivPcg
ogAAAAtzc2gtZWQyNTUxOQAAACAYBTIWo1J4PkY4/7AhVyPT8xvAUI67tp+yYFFRdSm7+Q
AAAEDJmKp3lX6Pz0unTc0QZwrHb8Eyr9fJUopE9d2/+q+eCxgFMhajUng+Rjj/sCFXI9Pz
G8BQjru2n7JgUVF1Kbv5AAAACnRvbUBvemRlc2sBAgM=
-----END OPENSSH PRIVATE KEY-----
'';
snakeOilEd25519PublicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBgFMhajUng+Rjj/sCFXI9PzG8BQjru2n7JgUVF1Kbv5 snakeoil";
}

View File

@ -34,7 +34,7 @@ in stdenv.mkDerivation rec {
meta = with lib; {
description = "View and edit tags for various audio files";
mainProgram = "easytag";
homepage = "https://wiki.gnome.org/Apps/EasyTAG";
homepage = "https://gitlab.gnome.org/GNOME/easytag";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ ];
platforms = platforms.linux;

View File

@ -69,7 +69,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Listen to your favorite podcasts";
mainProgram = "gnome-podcasts";
homepage = "https://wiki.gnome.org/Apps/Podcasts";
homepage = "https://apps.gnome.org/Podcasts/";
license = licenses.gpl3Plus;
maintainers = teams.gnome.members;
platforms = platforms.unix;

View File

@ -102,7 +102,7 @@ python3.pkgs.buildPythonApplication rec {
meta = with lib; {
changelog = "https://gitlab.gnome.org/World/lollypop/tags/${version}";
description = "A modern music player for GNOME";
homepage = "https://wiki.gnome.org/Apps/Lollypop";
homepage = "https://gitlab.gnome.org/World/lollypop";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ lovesegfault ];
platforms = platforms.linux;

View File

@ -13,14 +13,14 @@
stdenv.mkDerivation (finalAttrs: {
pname = "qpwgraph";
version = "0.6.3";
version = "0.7.1";
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "rncbc";
repo = "qpwgraph";
rev = "v${finalAttrs.version}";
sha256 = "sha256-mTWmXHC9KkXgUIO5CIcGOoYYLx+5si/LETSmHFhmrRE=";
sha256 = "sha256-mtW+dbjdp7as0N5+iacMSNrJ4jm8HWYqJP6G+lutucc=";
};
nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];

View File

@ -113,7 +113,7 @@ stdenv.mkDerivation rec {
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Rhythmbox";
homepage = "https://gitlab.gnome.org/GNOME/rhythmbox";
description = "A music playing application for GNOME";
license = licenses.gpl2Plus;
platforms = platforms.linux;

View File

@ -41,13 +41,13 @@
stdenv.mkDerivation rec {
pname = "sonic-pi";
version = "4.5.0";
version = "4.5.1";
src = fetchFromGitHub {
owner = "sonic-pi-net";
repo = pname;
rev = "v${version}";
hash = "sha256-s9B3OBwiUdCJyxbeQXeidv38pzmvC442Byl+llabqp0=";
hash = "sha256-JMextQY0jLShWmqRQoVAbqIzDhA1mOzI7vfsG7+jjX0=";
};
mixFodDeps = beamPackages.fetchMixDeps {

View File

@ -63,7 +63,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "A Gnome CD Ripper";
mainProgram = "sound-juicer";
homepage = "https://wiki.gnome.org/Apps/SoundJuicer";
homepage = "https://gitlab.gnome.org/GNOME/sound-juicer";
maintainers = [ maintainers.bdimcheff ];
license = licenses.gpl2Plus;
platforms = platforms.linux;

View File

@ -1,12 +1,9 @@
{ stdenv
, lib
, fetchFromGitHub
, fetchFromSourcehut
, fetchpatch
, SDL2
, fetchzip
, alsa-lib
, appstream
, appstream-glib
, bash-completion
, boost
, breeze-icons
@ -16,7 +13,6 @@
, curl
, dbus
, dconf
, faust2lv2
, fftw
, fftwFloat
, flex
@ -27,159 +23,140 @@
, guile
, help2man
, jq
, json-glib
, kissfft
, libadwaita
, libaudec
, libbacktrace
, libcyaml
, libepoxy
, libgtop
, libjack2
, libpanel
, libpulseaudio
, libsamplerate
, libsass
, libsndfile
, libsoundio
, libxml2
, libyaml
, lilv
, lv2
, meson
, ninja
, pandoc
, pcre
, pcre2
, pkg-config
, python3
, reproc
, rtaudio
, rtaudio_6
, rtmidi
, rubberband
, sassc
, serd
, sord
, sox
, soxr
, sratom
, texi2html
, vamp-plugin-sdk
, wrapGAppsHook4
, writeScript
, xdg-utils
, xxHash
, yyjson
, zix
, zstd
}:
let
# As of zrythm-1.0.0-beta.4.5.62, Zrythm needs clap
# https://github.com/falktx/carla/tree/main/source/includes/clap, which is
# only available on Carla unstable as of 2023-02-24.
carla-unstable = carla.overrideAttrs (oldAttrs: rec {
# Error: Dependency carla-host-plugin found: NO found 2.5.6 but need: '>=2.6.0'
# So we need Carla unstable
carla-unstable = carla.overrideAttrs (oldAttrs: {
pname = "carla";
version = "unstable-2023-05-12";
version = "unstable-2024-04-26";
src = fetchFromGitHub {
owner = "falkTX";
repo = pname;
rev = "0175570f1d41285f39efe0ee32234458e0ed941c";
hash = "sha256-yfVzZV8G4AUDM8+yS9finzobpOb1PUEPgBWFhEY4nFQ=";
repo = "carla";
rev = "948991d7b5104280c03960925908e589c77b169a";
hash = "sha256-uGAuKheoMfP9hZXsw29ec+58dJM8wMuowe95QutzKBY=";
};
});
in
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "zrythm";
version = "1.0.0-beta.4.9.1";
version = "1.0.0-rc.1";
src = fetchFromSourcehut {
owner = "~alextee";
repo = pname;
rev = "v${version}";
hash = "sha256-U3IUqNbHu20uyWfkTsLOOlUZjcUL4QdHilB3srSsebw=";
src = fetchzip {
url = "https://www.zrythm.org/releases/${finalAttrs.pname}-${finalAttrs.version}.tar.xz";
sha256 = "sha256-Ljbw7bjGI6js4OP9KEXCkhC9AMbInSz0nn+pROm4vXw=";
};
passthru.updateScript = writeScript "update-zrythm" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts
version="$(curl -s https://www.zrythm.org/releases/ | grep -o -m 1 'href="zrythm-[^"]*\.tar\.xz"' | head -1 | sed 's/href="zrythm-\(.*\)\.tar\.xz"/\1/')"
update-source-version zrythm "$version"
'';
nativeBuildInputs = [
chromaprint
cmake
flex
guile
help2man
jq
libaudec
libxml2
lilv
meson
ninja
pandoc
pkg-config
python3
python3.pkgs.sphinx
sassc
serd
sord
sratom
texi2html
wrapGAppsHook4
];
buildInputs = [
SDL2
alsa-lib
appstream
appstream-glib
bash-completion
boost
breeze-icons
carla-unstable
chromaprint
curl
dbus
dconf
faust2lv2
fftw
fftwFloat
flex
glib
graphviz
gtk4
gtksourceview5
guile
json-glib
kissfft
libadwaita
libbacktrace
libcyaml
libepoxy
libgtop
libjack2
libpanel
libpulseaudio
libsamplerate
libsass
libsndfile
libsoundio
libyaml
lilv
lv2
pcre
pcre2
reproc
rtaudio
rtaudio_6
rtmidi
rubberband
serd
sord
sox
sratom
soxr
vamp-plugin-sdk
xdg-utils
xxHash
yyjson
zix
zstd
];
patches = [
# Fix gcc-13 build failure
(fetchpatch {
name = "gcc-13.patch";
url = "https://gitlab.zrythm.org/zrythm/zrythm/-/commit/cbc2b3715b939718479631841f2d9703fb28e6da.diff";
hash = "sha256-2ZTSaCtSO3yynJVFe5B1AEjWhjRa5YyA26ergAfdL5Y=";
})
];
# Zrythm uses meson to build, but requires cmake for dependency detection.
dontUseCmakeConfigure = true;
@ -197,7 +174,6 @@ stdenv.mkDerivation rec {
"-Dmanpage=true"
"-Drtaudio=enabled"
"-Drtmidi=enabled"
"-Dsdl=enabled"
# "-Duser_manual=true" # needs sphinx-intl
];
@ -220,7 +196,7 @@ stdenv.mkDerivation rec {
preFixup = ''
gappsWrapperArgs+=(
--prefix GSETTINGS_SCHEMA_DIR : "$out/share/gsettings-schemas/${pname}-${version}/glib-2.0/schemas/"
--prefix GSETTINGS_SCHEMA_DIR : "$out/share/gsettings-schemas/${finalAttrs.pname}-${finalAttrs.version}/glib-2.0/schemas/"
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${breeze-icons}/share"
)
'';
@ -228,8 +204,9 @@ stdenv.mkDerivation rec {
meta = with lib; {
homepage = "https://www.zrythm.org";
description = "Automated and intuitive digital audio workstation";
maintainers = with maintainers; [ tshaynik magnetophon yuu ];
platforms = platforms.linux;
maintainers = with maintainers; [ tshaynik magnetophon yuu astavie PowerUser64 ];
platforms = platforms.unix;
broken = stdenv.isDarwin;
license = licenses.agpl3Plus;
};
}
})

View File

@ -71,7 +71,7 @@ stdenv.mkDerivation (finalAttrs: {
of backing up the Right Way (encrypted, off-site, and regular) \
and uses duplicity as the backend.
'';
homepage = "https://wiki.gnome.org/Apps/DejaDup";
homepage = "https://apps.gnome.org/DejaDup/";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jtojnar ];
platforms = platforms.linux;

View File

@ -16,9 +16,8 @@
let
inherit (melpaStablePackages) tree-sitter-langs;
libSuffix = if stdenv.isDarwin then "dylib" else "so";
langName = g: lib.removeSuffix "-grammar" (lib.removePrefix "tree-sitter-" g.pname);
soName = g: langName g + "." + libSuffix;
soName = g: langName g + stdenv.hostPlatform.extensions.sharedLibrary;
grammarDir = runCommand "emacs-tree-sitter-grammars" {
# Fake same version number as upstream language bundle to prevent triggering runtime downloads

View File

@ -169,7 +169,7 @@ stdenv.mkDerivation rec {
currently recommend running gnome-builder inside a nix-shell with
appropriate dependencies loaded.
'';
homepage = "https://wiki.gnome.org/Apps/Builder";
homepage = "https://apps.gnome.org/Builder/";
license = licenses.gpl3Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;

View File

@ -3446,6 +3446,8 @@ let
};
};
reditorsupport.r = callPackage ./reditorsupport.r { };
reloadedextensions.reloaded-cpp = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "reloaded-cpp";
@ -4571,6 +4573,22 @@ let
};
};
vue.volar = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "volar";
publisher = "Vue";
version = "2.0.16";
hash = "sha256-RTBbF7qahYP4L7SZ/5aCM/e5crZAyyPRcgL48FVL1jk=";
};
meta = {
changelog = "https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md";
description = "The official Vue VSCode extension";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=Vue.volar";
homepage = "https://github.com/vuejs/language-tools";
license = lib.licenses.mit;
};
};
vspacecode.whichkey = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "whichkey";
@ -4583,6 +4601,22 @@ let
};
};
vue.vscode-typescript-vue-plugin = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-typescript-vue-plugin";
publisher = "Vue";
version = "1.8.27";
hash = "sha256-ym1+WPKBcn4h9lqSFVehfiDoGUEviOSEVXVLhHcYvfc=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/Vue.vscode-typescript-vue-plugin/changelog";
description = "Vue VSCode extension for TypeScript";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin";
homepage = "https://github.com/vuejs/language-tools";
license = lib.licenses.mit;
};
};
waderyan.gitblame = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "gitblame";

View File

@ -0,0 +1,42 @@
{
lib,
vscode-utils,
jq,
moreutils,
python311Packages,
R,
rPackages,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "r";
publisher = "reditorsupport";
version = "2.8.2";
hash = "sha256-FPL/JjW452KRchcQ0iHXRJarZXvS3B8PvZhXjf3rMhQ=";
};
nativeBuildInputs = [
jq
moreutils
];
buildInputs = [
python311Packages.radian
R
rPackages.languageserver
];
postInstall = ''
cd "$out/$installPrefix"
jq '.contributes.configuration.properties."r.rpath.mac".default = "${lib.getExe' R "R"}"' package.json | sponge package.json
jq '.contributes.configuration.properties."r.rpath.linux".default = "${lib.getExe' R "R"}"' package.json | sponge package.json
jq '.contributes.configuration.properties."r.rterm.mac".default = "${lib.getExe python311Packages.radian}"' package.json | sponge package.json
jq '.contributes.configuration.properties."r.rterm.linux".default = "${lib.getExe python311Packages.radian}"' package.json | sponge package.json
'';
meta = {
changelog = "https://marketplace.visualstudio.com/items/REditorSupport.r/changelog";
description = "A Visual Studio Code extension for the R programming language";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=REditorSupport.r";
homepage = "https://github.com/REditorSupport/vscode-R";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.pandapip1 ];
};
}

View File

@ -115,7 +115,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Access, organize and share your photos";
mainProgram = "gnome-photos";
homepage = "https://wiki.gnome.org/Apps/Photos";
homepage = "https://gitlab.gnome.org/GNOME/gnome-photos";
license = licenses.gpl3Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;

View File

@ -107,7 +107,7 @@ stdenv.mkDerivation rec {
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Gthumb";
homepage = "https://gitlab.gnome.org/GNOME/gthumb";
description = "Image browser and viewer for GNOME";
mainProgram = "gthumb";
platforms = platforms.linux;

View File

@ -19,11 +19,11 @@
stdenv.mkDerivation rec {
pname = "icon-library";
version = "0.0.18";
version = "0.0.19";
src = fetchurl {
url = "https://gitlab.gnome.org/World/design/icon-library/uploads/874b27fcf34662d9686f670d406142c2/icon-library-${version}.tar.xz";
hash = "sha256-qCGwTePA817mulFjyRZKw+Fw1S77+QTtA7WH+KocL48=";
url = "https://gitlab.gnome.org/World/design/icon-library/uploads/7725604ce39be278abe7c47288085919/icon-library-${version}.tar.xz";
hash = "sha256-nWGTYoSa0/fxnD0Mb2132LkeB1oa/gj/oIXBbI+FDw8=";
};
nativeBuildInputs = [

View File

@ -64,7 +64,7 @@ stdenv.mkDerivation (finalAttrs: {
'';
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/OCRFeeder";
homepage = "https://gitlab.gnome.org/GNOME/ocrfeeder";
description = "Complete Optical Character Recognition and Document Analysis and Recognition program";
maintainers = with maintainers; [ doronbehar ];
license = licenses.gpl3Plus;

View File

@ -35,8 +35,6 @@
, gsettings-desktop-schemas
}:
# for dependencies see https://wiki.gnome.org/Apps/Shotwell/BuildingAndInstalling
stdenv.mkDerivation (finalAttrs: {
pname = "shotwell";
version = "0.32.6";
@ -97,9 +95,9 @@ stdenv.mkDerivation (finalAttrs: {
meta = with lib; {
description = "Popular photo organizer for the GNOME desktop";
mainProgram = "shotwell";
homepage = "https://wiki.gnome.org/Apps/Shotwell";
homepage = "https://gitlab.gnome.org/GNOME/shotwell";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [];
maintainers = with maintainers; [ bobby285271 ];
platforms = platforms.linux;
};
})

View File

@ -94,7 +94,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Small GTK application to allow to keep a diary of your life";
mainProgram = "almanah";
homepage = "https://wiki.gnome.org/Apps/Almanah_Diary";
homepage = "https://gitlab.gnome.org/GNOME/almanah";
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = teams.gnome.members;

View File

@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Tool for writing an ISO file to multiple USB devices at once";
mainProgram = "gnome-multi-writer";
homepage = "https://wiki.gnome.org/Apps/MultiWriter";
homepage = "https://gitlab.gnome.org/GNOME/gnome-multi-writer";
license = licenses.gpl2Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;

View File

@ -70,7 +70,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Recipe management application for GNOME";
mainProgram = "gnome-recipes";
homepage = "https://wiki.gnome.org/Apps/Recipes";
homepage = "https://gitlab.gnome.org/GNOME/recipes";
maintainers = teams.gnome.members;
license = licenses.gpl3Plus;
platforms = platforms.unix;

View File

@ -18,14 +18,14 @@
mkDerivation rec {
pname = "qcad";
version = "3.29.4.1";
version = "3.29.6.2";
src = fetchFromGitHub {
name = "qcad-${version}-src";
owner = "qcad";
repo = "qcad";
rev = "v${version}";
hash = "sha256-00lPgiE3hsP3SL96ygBP91CaAWi1IGOYUO7zC/ORG1U=";
hash = "sha256-NKWuvhVGtlhWOfV0MWyViTgk0luA8mvnwQS0TZj7Ulc=";
};
patches = [

View File

@ -272,8 +272,8 @@ let
# Partial revert of https://github.com/chromium/chromium/commit/3687976b0c6d36cf4157419a24a39f6770098d61
# allowing us to use our rustc and our clang.
./patches/chromium-121-rust.patch
] ++ lib.optionals (chromiumVersionAtLeast "124" && !chromiumVersionAtLeast "125") [
# M124 shipped with broken --ozone-platform-hint flag handling, which we rely on
] ++ lib.optionals (chromiumVersionAtLeast "124" && !chromiumVersionAtLeast "124.0.6367.118") [
# M124 < 124.0.6367.118 shipped with broken --ozone-platform-hint flag handling, which we rely on
# for our NIXOS_OZONE_WL (wayland) environment variable.
# See <https://issues.chromium.org/issues/329678163>.
# This is the commit for the fix that landed in M125, which applies clean on M124.

View File

@ -15,9 +15,9 @@
version = "2024-03-14";
};
};
hash = "sha256-tajZtdiXgs5lRLTmDmgNTM2vD+N+LuWpBS0dYzxUsMA=";
hash_deb_amd64 = "sha256-CyCbZQ5ce8WLTt2JVSqbDkLDboE4BloiZ8pJff3dmSY=";
version = "124.0.6367.91";
hash = "sha256-+r/48dxipSAo74v1deMuKalW+Hj85hCun63ZcgLYDLk=";
hash_deb_amd64 = "sha256-H3bv6WiVBl4j38ROZ80+SD9UO9ok+xxcKFxDd9yjWNY=";
version = "124.0.6367.118";
};
ungoogled-chromium = {
deps = {

View File

@ -72,7 +72,7 @@ python3.pkgs.buildPythonApplication rec {
meta = with lib; {
description = "A new GNOME web browser";
mainProgram = "eolie";
homepage = "https://wiki.gnome.org/Apps/Eolie";
homepage = "https://gitlab.gnome.org/World/eolie";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ samdroid-apps ];
platforms = platforms.linux;

View File

@ -1,17 +1,17 @@
{ callPackage }:
{
helm-cm-push = callPackage ./helm-cm-push.nix { };
helm-diff = callPackage ./helm-diff.nix { };
helm-git = callPackage ./helm-git.nix { };
helm-cm-push = callPackage ./helm-cm-push.nix { };
helm-mapkubeapis = callPackage ./helm-mapkubeapis.nix { };
helm-s3 = callPackage ./helm-s3.nix { };
helm-secrets = callPackage ./helm-secrets.nix { };
helm-unittest = callPackage ./helm-unittest.nix { };
}

View File

@ -0,0 +1,34 @@
{ buildGoModule, fetchFromGitHub, lib }:
buildGoModule rec {
pname = "helm-mapkubeapis";
version = "0.4.1";
src = fetchFromGitHub {
owner = "helm";
repo = "helm-mapkubeapis";
rev = "v${version}";
hash = "sha256-6NeePXTdp5vlBLfIlWeXQZMZ0Uz/e1ZCgZmJvBJfaFw=";
};
vendorHash = "sha256-rVrQqeakPQl3rjzmqzHw74ffreLEVzP153wWJ8TEOIM=";
# NOTE: Remove the install and upgrade hooks.
postPatch = ''
sed -i '/^hooks:/,+2 d' plugin.yaml
'';
postInstall = ''
install -dm755 $out/helm-mapkubeapis
mv $out/bin $out/helm-mapkubeapis/
install -m644 -Dt $out/helm-mapkubeapis/config/ config/Map.yaml
install -m644 -Dt $out/helm-mapkubeapis plugin.yaml
'';
meta = {
description = "A Helm plugin which maps deprecated or removed Kubernetes APIs in a release to supported APIs";
homepage = "https://github.com/helm/helm-mapkubeapis";
license = with lib.licenses; [ asl20 ];
maintainers = with lib.maintainers; [ aos ];
};
}

View File

@ -12,7 +12,7 @@
}:
let
version = "2023.09.06";
version = "2024.04.17";
dropboxd = "${dropbox}/bin/dropbox";
in
stdenv.mkDerivation {
@ -23,7 +23,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "https://linux.dropbox.com/packages/nautilus-dropbox-${version}.tar.bz2";
hash = "sha256-kZMwj8Fn8Hf58C57wE025TlmiSs5TaKMGEzvb2QjgSw=";
hash = "sha256-pqCYzxaqR0f0CBaseT1Z436K47cIDQswYR1sK4Zj8sE=";
};
strictDeps = true;

View File

@ -126,7 +126,7 @@ stdenv.mkDerivation rec {
PKG_CONFIG_LIBEDATASERVERUI_1_2_UIMODULEDIR = "${placeholder "out"}/lib/evolution-data-server/ui-modules";
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Evolution";
homepage = "https://gitlab.gnome.org/GNOME/evolution";
description = "Personal information management application that provides integrated mail, calendaring and address book functionality";
mainProgram = "evolution";
maintainers = teams.gnome.members;

View File

@ -76,13 +76,13 @@ let
in
stdenv.mkDerivation rec {
pname = "freerdp";
version = "2.11.5";
version = "2.11.7";
src = fetchFromGitHub {
owner = "FreeRDP";
repo = "FreeRDP";
rev = version;
hash = "sha256-WyYBIiIQNDHydJqU3jWNItJU2/sYnRpGHCXE9Xhom5M=";
hash = "sha256-w+xyMNFmKylSheK0yAGl8J6MXly/HUjjAfR9Qq3s/kA=";
};
postPatch = ''

View File

@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
};
meta = with lib; {
homepage = "https://wiki.gnome.org/Apps/Gnote";
homepage = "https://gitlab.gnome.org/GNOME/gnote";
description = "A note taking application";
mainProgram = "gnote";
maintainers = with maintainers; [ jfvillablanca ];

View File

@ -77,7 +77,7 @@ python3Packages.buildPythonApplication rec {
"Getting Things GNOME" (GTG) is a personal tasks and ToDo list organizer inspired by the "Getting Things Done" (GTD) methodology.
GTG is intended to help you track everything you need to do and need to know, from small tasks to large projects.
'';
homepage = "https://wiki.gnome.org/Apps/GTG";
homepage = "https://github.com/getting-things-gnome/gtg";
downloadPage = "https://github.com/getting-things-gnome/gtg/releases";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ oyren ];

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
cairo clutter-gtk ];
meta = with lib; {
homepage = "https://wiki.gnome.org/action/show/Apps/Pinpoint";
homepage = "https://gitlab.gnome.org/Archive/pinpoint";
description = "A tool for making hackers do excellent presentations";
license = licenses.lgpl21;
platforms = platforms.linux;

View File

@ -27,13 +27,13 @@
stdenv.mkDerivation rec {
pname = "planify";
version = "4.6";
version = "4.7";
src = fetchFromGitHub {
owner = "alainm23";
repo = "planify";
rev = version;
hash = "sha256-vyw8SjI8EM9giYpAsCNppgSydPEBNz2sbFahEKmKe6w=";
hash = "sha256-5hiVTU1w3Rk/BdxYwDB0Y+EZFnSAaEWtx19IB1ak1yY=";
};
nativeBuildInputs = [

View File

@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
meta = {
description = "Project management tool for the GNOME desktop";
mainProgram = "planner";
homepage = "https://wiki.gnome.org/Apps/Planner";
homepage = "https://gitlab.gnome.org/World/planner";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ amiloradovsky ];
platforms = lib.platforms.unix;

View File

@ -9,13 +9,13 @@
stdenv.mkDerivation rec {
pname = "last";
version = "1542";
version = "1543";
src = fetchFromGitLab {
owner = "mcfrith";
repo = "last";
rev = "refs/tags/${version}";
hash = "sha256-ZzvyyecYiBscogfN9/FnDbHg/lqb8y14n9C2KLIqhFA=";
hash = "sha256-APHPv7Q64JITfHsvjCThZ6hvGHerk6wjOm32KdTv4k8=";
};
nativeBuildInputs = [

View File

@ -16,11 +16,11 @@
stdenv.mkDerivation rec {
pname = "gtkwave";
version = "3.3.118";
version = "3.3.119";
src = fetchurl {
url = "mirror://sourceforge/gtkwave/${pname}-gtk3-${version}.tar.gz";
sha256 = "sha256-D0MwwCiiqz0vTUzur222kl2wEMS2/VLRECLQ5d6gSGo=";
sha256 = "sha256-6rPgnnZBEVwHhIv7MPfdDDu+K4y+RQF+leB327pqwDg=";
};
nativeBuildInputs = [ pkg-config wrapGAppsHook3 ];

View File

@ -53,12 +53,11 @@
, Cocoa
, CoreSymbolication
, OpenGL
, noSplash ? false
}:
stdenv.mkDerivation rec {
pname = "root";
version = "6.30.04";
version = "6.30.06";
passthru = {
tests = import ./tests { inherit callPackage; };
@ -66,7 +65,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
hash = "sha256-K0GAtpjznMZdkQhNgzqIRRWzJbxfZzyOOavoGLAl2Mw=";
hash = "sha256-MA237RtnjtL7ljXKZ1khoZRcfCED2oQAM7STCR9VcAw=";
};
nativeBuildInputs = [ makeWrapper cmake pkg-config git ];
@ -143,8 +142,6 @@ stdenv.mkDerivation rec {
-e '1iset(nlohmann_json_DIR "${nlohmann_json}/lib/cmake/nlohmann_json/")'
patchShebangs build/unix/
'' + lib.optionalString noSplash ''
substituteInPlace rootx/src/rootx.cxx --replace "gNoLogo = false" "gNoLogo = true"
'' + lib.optionalString stdenv.isDarwin ''
# Eliminate impure reference to /System/Library/PrivateFrameworks
substituteInPlace core/macosx/CMakeLists.txt \
@ -163,10 +160,6 @@ stdenv.mkDerivation rec {
"-Dbuiltin_gtest=OFF"
"-Dbuiltin_nlohmannjson=OFF"
"-Dbuiltin_openui5=ON"
"-Dalien=OFF"
"-Dbonjour=OFF"
"-Dcastor=OFF"
"-Dchirp=OFF"
"-Dclad=OFF"
"-Ddavix=ON"
"-Ddcache=OFF"
@ -176,21 +169,13 @@ stdenv.mkDerivation rec {
"-Dfortran=OFF"
"-Dgnuinstall=ON"
"-Dimt=ON"
"-Dgfal=OFF"
"-Dgviz=OFF"
"-Dhdfs=OFF"
"-Dhttp=ON"
"-Dkrb5=OFF"
"-Dldap=OFF"
"-Dmonalisa=OFF"
"-Dmysql=OFF"
"-Dodbc=OFF"
"-Dopengl=ON"
"-Doracle=OFF"
"-Dpgsql=OFF"
"-Dpythia6=OFF"
"-Dpythia8=OFF"
"-Drfio=OFF"
"-Droot7=ON"
"-Dsqlite=OFF"
"-Dssl=ON"
@ -204,16 +189,12 @@ stdenv.mkDerivation rec {
++ lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${lib.getDev stdenv.cc.libc}/include"
++ lib.optionals stdenv.isDarwin [
"-DOPENGL_INCLUDE_DIR=${OpenGL}/Library/Frameworks"
"-DCMAKE_DISABLE_FIND_PACKAGE_Python2=TRUE"
# fatal error: module map file '/nix/store/<hash>-Libsystem-osx-10.12.6/include/module.modulemap' not found
# fatal error: could not build module '_Builtin_intrinsics'
"-Druntime_cxxmodules=OFF"
];
# suppress warnings from compilation of the vendored clang to avoid running into log limits on the Hydra
NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [ "-Wno-shadow" "-Wno-maybe-uninitialized" ];
postInstall = ''
for prog in rootbrowse rootcp rooteventselector rootls rootmkdir rootmv rootprint rootrm rootslimtree; do
wrapProgram "$out/bin/$prog" \
@ -273,7 +254,7 @@ stdenv.mkDerivation rec {
homepage = "https://root.cern.ch/";
description = "A data analysis framework";
platforms = platforms.unix;
maintainers = [ maintainers.veprbl ];
maintainers = [ maintainers.guitargeek maintainers.veprbl ];
license = licenses.lgpl21;
};
}

View File

@ -6,15 +6,16 @@
, fetchzip
, cmake
, lz4
, gfortran
, bzip2
, m4
, hdf5
, gsl
, unzip
, makeWrapper
, zlib
, meson
, git
, ninja
, pandoc
, eigen
, pkg-config
, wrapGAppsHook3
@ -40,7 +41,7 @@ let
pname = "libccp4";
version = "8.0.0";
src = fetchurl {
url = "https://ftp.ccp4.ac.uk/opensource/${pname}-${version}.tar.gz";
url = "https://ftp.ccp4.ac.uk/opensource/libccp4-${version}.tar.gz";
hash = "sha256-y4E66GYSoIZjKd6rfO6W6sVz2BvlskA0HUD5rVMi/y0=";
};
nativeBuildInputs = [ meson ninja ];
@ -87,7 +88,7 @@ let
};
mosflmBinary = if stdenv.isDarwin then "bin/mosflm" else "mosflm-linux-64-noX11";
in
stdenv.mkDerivation rec {
stdenv.mkDerivation {
pname = "mosflm";
inherit version src;
@ -111,7 +112,7 @@ let
pname = "xgandalf";
version = "c6c5003ff1086e8c0fb5313660b4f02f3a3aab7b";
src = fetchurl {
url = "https://gitlab.desy.de/thomas.white/${pname}/-/archive/${version}/${pname}-${version}.tar.gz";
url = "https://gitlab.desy.de/thomas.white/xgandalf/-/archive/${version}/xgandalf-${version}.tar.gz";
hash = "sha256-/uZlBwAINSoYqgLQFTMz8rS1Rpadu79JkO6Bu/+Nx9E=";
};
@ -121,10 +122,10 @@ let
pinkIndexer = stdenv.mkDerivation rec {
pname = "pinkindexer";
version = "5d4e016941eb2a9e50a10df96ded7ff1e2464503";
version = "15caa21191e27e989b750b29566e4379bc5cd21a";
src = fetchurl {
url = "https://gitlab.desy.de/thomas.white/${pname}/-/archive/${version}/${pname}-${version}.tar.gz";
hash = "sha256-VnJOJJ247dNoBlos4Fu3GQBlAnTk9el+yZDRiicJtu0=";
hash = "sha256-v/SCJiHAV05Lc905y/dE8uBXlW+lLX9wau4XORYdbQg=";
};
nativeBuildInputs = [ meson pkg-config ninja ];
@ -169,13 +170,27 @@ let
"-DENABLE_BZIP2_PLUGIN=yes"
];
};
millepede-ii = stdenv.mkDerivation rec {
pname = "millepede-ii";
version = "04-13-06";
src = fetchurl {
url = "https://gitlab.desy.de/claus.kleinwort/millepede-ii/-/archive/V${version}/millepede-ii-V${version}.tar.gz";
hash = "sha256-aFoo8AGBsUEN2u3AmnSpTqJ6JeNV6j9vkAFTZ34I+sI=";
};
nativeBuildInputs = [ gfortran ];
buildInputs = [ zlib ];
makeFlags = [ "PREFIX=$(out)" ];
};
in
stdenv.mkDerivation rec {
pname = "crystfel";
version = "0.10.2";
version = "0.11.0";
src = fetchurl {
url = "https://www.desy.de/~twhite/${pname}/${pname}-${version}.tar.gz";
sha256 = "sha256-nCO9ndDKS54bVN9IhFBiCVNzqk7BsCljXFrOmlx+sP4=";
url = "https://www.desy.de/~twhite/crystfel/crystfel-${version}.tar.gz";
sha256 = "sha256-ogNHWYfbxRmB5TdK8K0JpcCnYOOyXapQGSPh8mfp+Tc=";
};
nativeBuildInputs = [ meson pkg-config ninja flex bison doxygen opencl-headers makeWrapper ]
++ lib.optionals withGui [ wrapGAppsHook3 ];
@ -192,6 +207,7 @@ stdenv.mkDerivation rec {
mosflm
pinkIndexer
xgandalf
pandoc
] ++ lib.optionals withGui [ gtk3 gdk-pixbuf ]
++ lib.optionals stdenv.isDarwin [
argp-standalone
@ -201,12 +217,12 @@ stdenv.mkDerivation rec {
++ lib.optionals withBitshuffle [ hdf5-external-filter-plugins ];
patches = [
# on darwin at least, we need to link to a separate argp library;
# this patch adds a test for this and the necessary linker options
./link-to-argp-standalone-if-needed.patch
./disable-fmemopen-on-aarch64-darwin.patch
(fetchpatch {
url = "https://gitlab.desy.de/thomas.white/crystfel/-/commit/3c54d59e1c13aaae716845fed2585770c3ca9d14.diff";
hash = "sha256-oaJNBQQn0c+z4p1pnW4osRJA2KdKiz4hWu7uzoKY7wc=";
})
# hotfix for an issue that occurs (at least) on NixOS:
# if the temporary path is too long, we get a segfault
./gui-path-issue.patch
];
# CrystFEL calls mosflm by searching PATH for it. We could've create a wrapper script that sets the PATH, but
@ -218,7 +234,9 @@ stdenv.mkDerivation rec {
postInstall = lib.optionalString withBitshuffle ''
for file in $out/bin/*; do
wrapProgram $file --set HDF5_PLUGIN_PATH ${hdf5-external-filter-plugins}/lib/plugins
wrapProgram $file \
--set HDF5_PLUGIN_PATH ${hdf5-external-filter-plugins}/lib/plugins \
--prefix PATH ":" ${lib.makeBinPath [ millepede-ii ]}
done
'';

View File

@ -0,0 +1,27 @@
diff --git a/src/gui_index.c b/src/gui_index.c
index 2cc8e8db..13be77d5 100644
--- a/src/gui_index.c
+++ b/src/gui_index.c
@@ -540,6 +540,7 @@ static void delete_gui_tempdir(char *tmpdir)
{
char *path;
int i;
+ size_t pathlen;
/* List of files which it's safe to delete */
char *files[] = {"gmon.out", "mosflm.lp", "SUMMARY", "XDS.INP",
@@ -552,11 +553,12 @@ static void delete_gui_tempdir(char *tmpdir)
if ( tmpdir == NULL ) return;
- path = calloc(strlen(tmpdir)+64, 1);
+ pathlen = strlen(tmpdir)+64;
+ path = calloc(pathlen, 1);
if ( path == NULL ) return;
for ( i=0; i<n_files; i++ ) {
- snprintf(path, 127, "%s/%s", tmpdir, files[i]);
+ snprintf(path, pathlen, "%s/%s", tmpdir, files[i]);
unlink(path);
}

View File

@ -1,8 +1,8 @@
diff --git a/meson.build b/meson.build
index 59bbcfb7..dd75d4e2 100644
index 4717bb2a..38d8693f 100644
--- a/meson.build
+++ b/meson.build
@@ -80,6 +80,12 @@ if cc.has_function('clock_gettime', prefix: '#include <time.h>')
@@ -70,6 +70,12 @@ if cc.has_function('clock_gettime', prefix: '#include <time.h>')
conf_data.set10('HAVE_CLOCK_GETTIME', true)
endif
@ -12,15 +12,15 @@ index 59bbcfb7..dd75d4e2 100644
+ argpdep = dependency('', required : false)
+endif
+
# ************************ libcrystfel (subdir) ************************
subdir('libcrystfel')
@@ -180,7 +186,7 @@ endif
if cc.has_function('sched_setaffinity',
prefix: '#include <sched.h>',
args: '-D_GNU_SOURCE')
@@ -186,7 +192,7 @@ endif
indexamajig = executable('indexamajig', indexamajig_sources,
dependencies: [mdep, libcrystfeldep, gsldep,
- pthreaddep, zmqdep, asapodep],
+ pthreaddep, zmqdep, asapodep, argpdep],
- pthreaddep, zmqdep, asapodep, asapoproddep],
+ pthreaddep, zmqdep, asapodep, asapoproddep, argpdep],
install: true,
install_rpath: '$ORIGIN/../lib64/:$ORIGIN/../lib')
install_rpath: crystfel_rpath)

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "gerrit";
version = "3.9.2";
version = "3.9.4";
src = fetchurl {
url = "https://gerrit-releases.storage.googleapis.com/gerrit-${version}.war";
hash = "sha256-KsuuwFKdpXHDVAZZ2JiX781mgqDQyyEILo4lmNn+8YE=";
hash = "sha256-pjrWXfae1momJRTfdIPalsLynAGwqp1VtX9M9uqzJwM=";
};
buildCommand = ''

View File

@ -75,6 +75,7 @@ let
modernx-zydezu = callPackage ./modernx-zydezu.nix { };
mpris = callPackage ./mpris.nix { };
mpv-cheatsheet = callPackage ./mpv-cheatsheet.nix { };
mpv-notify-send = callPackage ./mpv-notify-send.nix { };
mpv-osc-modern = callPackage ./mpv-osc-modern.nix { };
mpv-playlistmanager = callPackage ./mpv-playlistmanager.nix { };
mpv-slicing = callPackage ./mpv-slicing.nix { };

View File

@ -1,4 +1,9 @@
{ lib, fetchFromGitHub, nodePackages, stdenvNoCC }:
{ lib
, fetchFromGitHub
, gitUpdater
, nodePackages
, stdenvNoCC
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "mpv-cheatsheet";
version = "0.30.0.2";
@ -9,6 +14,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
rev = "v${finalAttrs.version}";
hash = "sha256-MWK0CYto3zgn3fivmL43tvgZn6XrjPxKLp0lgTFdplM=";
};
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
nativeBuildInputs = [
nodePackages.browserify

View File

@ -0,0 +1,39 @@
{ lib
, buildLua
, fetchFromGitHub
, fetchpatch
, unstableGitUpdater
, libnotify }:
buildLua rec {
pname = "mpv-notify-send";
version = "0-unstable-2020-02-24";
src = fetchFromGitHub {
owner = "emilazy";
repo = pname;
rev = "a2bab8b2fd8e8d14faa875b5cc3a73f1276cd88a";
sha256 = "sha256-EwVkhyB87TJ3i9xJmmZMSTMUKvfbImI1S+y1vgRWbDk=";
};
patches = [
# show title of online videos instead of url
(fetchpatch {
url = "https://github.com/emilazy/mpv-notify-send/pull/6.patch";
hash = "sha256-7aXQ8qeqG4yX0Uyn09xCIESnwPZsb6Frd7C49XgbpFw=";
})
];
passthru.extraWrapperArgs = [
"--prefix" "PATH" ":" (lib.makeBinPath libnotify)
];
passthru.updateScript = unstableGitUpdater { };
meta = with lib; {
description = "A Lua script for mpv to send notifications with notify-send";
homepage = "https://github.com/emilazy/mpv-notify-send";
license = licenses.wtfpl;
maintainers = with maintainers; [ r3n3gad3p3arl ];
};
}

View File

@ -3,6 +3,7 @@
buildLua,
fetchFromGitHub,
ffmpeg,
unstableGitUpdater,
}:
buildLua {
@ -15,6 +16,7 @@ buildLua {
rev = "d09c11227704c8d5bdaa2c799ef64dce881c63a7";
hash = "sha256-MKoM0f74/XoctiHQVOB3LzFWtJXpsREfQh5icaebCJo=";
};
passthru.updateScript = unstableGitUpdater { };
postPatch = ''
substituteInPlace slicing.lua \

View File

@ -7,19 +7,19 @@
rustPlatform.buildRustPackage rec {
pname = "conmon-rs";
version = "0.6.2";
version = "0.6.3";
src = fetchFromGitHub {
owner = "containers";
repo = pname;
rev = "v${version}";
hash = "sha256-+htd9RJGSFzzyEQSBJGIzurQDQgpJ+sJHLPe3aPH0cg=";
hash = "sha256-+RKjJtI01Y56+cFDdOSAL4BodI7R/rM3B3ht3p6+xzs=";
};
nativeBuildInputs = [ capnproto protobuf ];
doCheck = false;
cargoHash = "sha256-CcWji/qMd7eX0O3cR9/FLID17WpSfz4kEAhDgKb3jds=";
cargoHash = "sha256-4VOse+y0EO9IORyeAO/j1t6ssQARJp7lK21TUJVuH78=";
meta = with lib; {
description = "An OCI container runtime monitor written in Rust";

View File

@ -12,13 +12,13 @@
stdenv.mkDerivation rec {
pname = "conmon";
version = "2.1.10";
version = "2.1.11";
src = fetchFromGitHub {
owner = "containers";
repo = pname;
rev = "v${version}";
hash = "sha256-WUXyx5OWIJDamzHUahN+0/rcn2pxQgCgYAE/d0mxk2A=";
hash = "sha256-QQgpvvk7S6ARzBct/4AQP66End30EXcUPqv8a4Udoas=";
};
nativeBuildInputs = [ pkg-config ];
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
++ lib.optionals (!stdenv.hostPlatform.isMusl) [ glibc glibc.static ];
# manpage requires building the vendored go-md2man
makeFlags = [ "bin/conmon" ];
makeFlags = [ "bin/conmon" "VERSION=${version}" ];
installPhase = ''
runHook preInstall

View File

@ -15,13 +15,13 @@
buildGoModule rec {
pname = "cri-o";
version = "1.29.3";
version = "1.29.4";
src = fetchFromGitHub {
owner = "cri-o";
repo = "cri-o";
rev = "v${version}";
hash = "sha256-JJuqYC4GAZqXyyAjVoPipnGjRGbVx1rfH4UrtIOP7cc=";
hash = "sha256-bF9hvKKwhsmX606Jk34qn32JklUrG939BW2x4tbknjo=";
};
vendorHash = null;

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "docker-compose";
version = "2.26.1";
version = "2.27.0";
src = fetchFromGitHub {
owner = "docker";
repo = "compose";
rev = "v${version}";
hash = "sha256-R/AFjJM4rcu2JbdfTNhxIIVhaP7LzFrDAU93hbuXSXs=";
hash = "sha256-YM/9ijwxDAjFZk/ku33b/pMYri5V1h0wPd2YS7qJgCw=";
};
postPatch = ''
@ -16,7 +16,7 @@ buildGoModule rec {
rm -rf e2e/
'';
vendorHash = "sha256-SzySXS0s0p1EXcO5RQyATBG9gtoJ4wPxZKGU62fAOHw=";
vendorHash = "sha256-ztqWSoDsN8qdm6Jq8Wo7r16zuXENQDp2JvwSN+6Jbxw=";
ldflags = [ "-X github.com/docker/compose/v2/internal.Version=${version}" "-s" "-w" ];

View File

@ -1,12 +1,14 @@
{ stdenv
{ stdenvNoCC
, lib
, fetchurl
, autoPatchelfHook
, dpkg
, wrapGAppsHook3
, quickemu
, gnome
}:
stdenv.mkDerivation rec {
stdenvNoCC.mkDerivation rec {
pname = "quickgui";
version = "1.2.8";
@ -18,31 +20,48 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
autoPatchelfHook
dpkg
wrapGAppsHook3
];
buildInputs = [
wrapGAppsHook3
quickemu
gnome.zenity
];
strictDeps = true;
unpackCmd = "dpkg-deb -x $curSrc source";
installPhase = ''
runHook preInstall
mv usr $out
substituteInPlace $out/share/applications/quickgui.desktop \
--replace "/usr" $out
runHook postInstall
'';
meta = {
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : ${lib.makeBinPath [ quickemu gnome.zenity ]}
)
'';
postFixup = ''
substituteInPlace $out/share/applications/quickgui.desktop \
--replace "/usr" $out
# quickgui PR 88
echo "Categories=System;" >> $out/share/applications/quickgui.desktop
'';
meta = with lib; {
description = "A Flutter frontend for quickemu";
homepage = "https://github.com/quickemu-project/quickgui";
changelog = "https://github.com/quickemu-project/quickgui/releases/tag/v${version}";
maintainers = [ lib.maintainers.heyimnova ];
platforms = lib.platforms.linux;
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
license = licenses.mit;
maintainers = with maintainers; [ heyimnova ];
platforms = [ "x86_64-linux" ];
sourceProvenance = [ sourceTypes.binaryNativeCode ];
mainProgram = "quickgui";
};
}

View File

@ -27,9 +27,9 @@ composerInstallConfigureHook() {
setComposeRootVersion
composer \
--no-ansi \
--no-install \
--no-interaction \
--no-progress \
${composerNoDev:+--no-dev} \
${composerNoPlugins:+--no-plugins} \
${composerNoScripts:+--no-scripts} \
@ -104,8 +104,8 @@ composerInstallInstallHook() {
# Finally, run `composer install` to install the dependencies and generate
# the autoloader.
composer \
--no-ansi \
--no-interaction \
--no-progress \
${composerNoDev:+--no-dev} \
${composerNoPlugins:+--no-plugins} \
${composerNoScripts:+--no-scripts} \
@ -117,8 +117,9 @@ composerInstallInstallHook() {
# Create symlinks for the binaries.
jq -r -c 'try (.bin[] | select(test(".bat$")? | not) )' composer.json | while read -r bin; do
mkdir -p "$out"/share/php/"${pname}" "$out"/bin
makeWrapper "$out"/share/php/"${pname}"/"$bin" "$out"/bin/"$(basename "$bin")"
echo -e "\e[32mCreating symlink ${bin}...\e[0m"
mkdir -p "$out"/bin
ln -s "$out"/share/php/"${pname}"/"$bin" "$out"/bin/"$(basename "$bin")"
done
echo "Finished composerInstallInstallHook"

View File

@ -23,9 +23,9 @@ composerRepositoryConfigureHook() {
setComposeRootVersion
composer \
--no-ansi \
--no-install \
--no-interaction \
--no-progress \
${composerNoDev:+--no-dev} \
${composerNoPlugins:+--no-plugins} \
${composerNoScripts:+--no-scripts} \

View File

@ -4,7 +4,6 @@
, jq
, writeShellApplication
, moreutils
, makeBinaryWrapper
, cacert
, buildPackages
}:
@ -29,7 +28,7 @@ in
composerInstallHook = makeSetupHook
{
name = "composer-install-hook.sh";
propagatedBuildInputs = [ jq makeBinaryWrapper moreutils cacert ];
propagatedBuildInputs = [ jq moreutils cacert ];
substitutions = {
# Specify the stdenv's `diff` by abspath to ensure that the user's build
# inputs do not cause us to find the wrong `diff`.

View File

@ -33,11 +33,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "apt";
version = "2.7.14";
version = "2.9.2";
src = fetchurl {
url = "mirror://debian/pool/main/a/apt/apt_${finalAttrs.version}.tar.xz";
hash = "sha256-egF4PwW32Q82rqeHHMBnV0ma6K3pM0l6rrbFCCdOc1g=";
hash = "sha256-gKp0RmsTLlDtjQFZ8Q5kpEi2psZHI9YsQrg6UZnKA6c=";
};
# cycle detection; lib can't be split

View File

@ -3,18 +3,18 @@
, fetchFromGitHub
}: buildNpmPackage rec {
pname = "arrpc";
version = "3.3.1";
version = "3.4.0";
src = fetchFromGitHub {
owner = "OpenAsar";
repo = "arrpc";
# Release commits are not tagged
# release: 3.3.0
rev = "b4796fffe3bf1b1361cc4781024349f7a4f9400e";
hash = "sha256-iEfV85tRl2KyjodoaSxVHiqweBpLeiCAYWc8+afl/sA=";
# release: 3.4.0
rev = "cca93db585dedf8acc1423f5e2db215de95c4c3b";
hash = "sha256-SeegrCgbjfVxG/9xfOcdfbVdDssZOhjBRnDipu6L7Wg=";
};
npmDepsHash = "sha256-YlSUGncpY0MyTiCfZcPsfcNx3fR+SCtkOFWbjOPLUzk=";
npmDepsHash = "sha256-S9cIyTXqCp8++Yj3VjBbcStOjzjgd0Cq7KL7NNzZFpY=";
dontNpmBuild = true;

View File

@ -6,16 +6,16 @@
}:
buildGoModule rec {
pname = "athens";
version = "0.13.3";
version = "0.14.0";
src = fetchFromGitHub {
owner = "gomods";
repo = "athens";
rev = "v${version}";
hash = "sha256-psO3x8xLWGSlsZT2HiAvYWP1rCvbWUx+WoJ4eves9lw=";
hash = "sha256-5E9jBV+m19AUtSTpTlkCx8JUHwlcM2pgSGfo4zPqDNk=";
};
vendorHash = "sha256-hk0hmkmhRPRbh2Yqf1lYei6iiKUurMfc1Y3VPNStcBs=";
vendorHash = "sha256-LajNPzGbWqW+9aqiquk2LvSUjKwi1gbDY4cKXmn3PWk=";
CGO_ENABLED = "0";
ldflags = [ "-s" "-w" "-X github.com/gomods/athens/pkg/build.version=${version}" ];

View File

@ -1,31 +1,34 @@
{ lib
, fetchFromGitHub
, meson
, ninja
, pkg-config
, wrapGAppsHook4
, desktop-file-utils
, appstream-glib
, python3Packages
, glib
, gtk4
, libadwaita
, gobject-introspection
, gst_all_1
{
lib,
fetchFromGitHub,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
blueprint-compiler,
desktop-file-utils,
appstream-glib,
python3Packages,
glib,
gtk4,
libadwaita,
gobject-introspection,
gst_all_1,
}:
python3Packages.buildPythonApplication rec {
pname = "blanket";
version = "0.6.0";
version = "0.7.0";
src = fetchFromGitHub {
owner = "rafaelmardojai";
repo = "blanket";
rev = "refs/tags/${version}";
sha256 = "sha256-4gthT1x76IfXWkLaLMPtFS4TRlRGk5Enbu/k1jAHzwE=";
rev = version;
hash = "sha256-mY7c5i0me7mMbD8c6eGJeaZpR8XI5QVL4n3M+j15Z1c=";
};
nativeBuildInputs = [
blueprint-compiler
meson
ninja
pkg-config
@ -44,9 +47,7 @@ python3Packages.buildPythonApplication rec {
gst_all_1.gst-plugins-bad
];
propagatedBuildInputs = with python3Packages; [
pygobject3
];
propagatedBuildInputs = with python3Packages; [ pygobject3 ];
format = "other";
@ -56,12 +57,18 @@ python3Packages.buildPythonApplication rec {
--replace gtk-update-icon-cache gtk4-update-icon-cache
'';
meta = with lib; {
homepage = "https://github.com/rafaelmardojai/blanket";
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
meta = {
description = "Listen to different sounds";
homepage = "https://github.com/rafaelmardojai/blanket";
license = lib.licenses.gpl3Plus;
mainProgram = "blanket";
maintainers = with maintainers; [ onny ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with lib.maintainers; [ onny ];
platforms = lib.platforms.linux;
};
}

View File

@ -17,16 +17,16 @@
rustPlatform.buildRustPackage rec {
pname = "eza";
version = "0.18.13";
version = "0.18.14";
src = fetchFromGitHub {
owner = "eza-community";
repo = "eza";
rev = "v${version}";
hash = "sha256-dUWkszQs/MMb6Pq0Ci4vPgHe6qz7X4GBkRxSxehMKiQ=";
hash = "sha256-rbaKDOxHttE4SgQdExO8mlgzM0+xpWl/fL39nPinK/o=";
};
cargoHash = "sha256-MSVneRJcY2XLb5A1/oOELm2FQj+7NDmINTYRrTVD4bI=";
cargoHash = "sha256-D0h39p8vV9Vm/UgjtgpRnqaxq4l0OrGxN/1MRpUds2g=";
nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
buildInputs = [ zlib ]

File diff suppressed because it is too large Load Diff

View File

@ -25,13 +25,13 @@
rustPlatform.buildRustPackage rec {
pname = "firefoxpwa";
version = "2.11.1";
version = "2.12.0";
src = fetchFromGitHub {
owner = "filips123";
repo = "PWAsForFirefox";
rev = "v${version}";
hash = "sha256-ZD/bTziVmHtQVKejzj+fUXVazCm2PaulS2NZjTribSk=";
hash = "sha256-T2X+41ScE8FDZGJdgAjZCp1MQX51UACuNsWFk+6cR3A=";
};
sourceRoot = "${src.name}/native";
@ -119,7 +119,7 @@ rustPlatform.buildRustPackage rec {
passthru.tests.firefoxpwa = nixosTests.firefoxpwa;
meta = with lib; {
meta = {
description = "A tool to install, manage and use Progressive Web Apps (PWAs) in Mozilla Firefox (native component)";
longDescription = ''
Progressive Web Apps (PWAs) are web apps that use web APIs and features along
@ -149,9 +149,9 @@ rustPlatform.buildRustPackage rec {
'';
homepage = "https://pwasforfirefox.filips.si/";
changelog = "https://github.com/filips123/PWAsForFirefox/releases/tag/v${version}";
license = licenses.mpl20;
platforms = platforms.unix;
maintainers = with maintainers; [
license = lib.licenses.mpl20;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
adamcstephens
camillemndn
pasqui23

View File

@ -0,0 +1,36 @@
{ lib
, stdenv
, fetchurl
, installShellFiles
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gema";
version = "2.0";
src = fetchurl {
url = "https://sourceforge.net/projects/gema/files/gema/gema-${finalAttrs.version}/gema-${finalAttrs.version}-source.tar.gz";
hash = "sha256-c7qxgZYk/QaqocjRXVlgJxUWCgf3T1JBY7v9Fg9YfIU=";
};
makeFlags = [ "--directory=src" ];
nativeBuildInputs = [ installShellFiles ];
installPhase = ''
runHook preInstall
install -Dm755 src/gema -t $out/bin
installManPage doc/gema.1
runHook postInstall
'';
meta = {
description = "General purpose text processing utility based on the concept of pattern matching.";
longDescription = "Reads an input file and copies it to an output file transforming the data as specified by the patterns defined by the user.";
homepage = "https://gema.sourceforge.net/";
license = lib.licenses.mit;
mainProgram = "gema";
maintainers = with lib.maintainers; [ quag ];
platforms = lib.platforms.unix;
};
})

View File

@ -0,0 +1,40 @@
{ lib
, rustPlatform
, fetchFromGitHub
, nix-update-script
, stdenv
, darwin
}:
rustPlatform.buildRustPackage rec {
pname = "ghciwatch";
version = "0.5.10";
src = fetchFromGitHub {
owner = "MercuryTechnologies";
repo = "ghciwatch";
rev = "v${version}";
hash = "sha256-6afUHLPrSWhgN5LA346tAZ1+gROr+i/ZyCNVnyCd5Tc=";
};
cargoHash = "sha256-og7S3W+DCBlFIvKLZghLT+msBLnS1o7Rea7v2VPsDYA=";
buildInputs = lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.CoreFoundation
darwin.apple_sdk.frameworks.CoreServices
];
# integration tests are not run but the macros need this variable to be set
GHC_VERSIONS = "";
checkFlags = "--test \"unit\"";
meta = with lib; {
description = "Ghci-based file watching recompiler for Haskell development";
homepage = "https://github.com/MercuryTechnologies/ghciwatch";
license = licenses.mit;
maintainers = with maintainers; [ mangoiv _9999years ];
mainProgram = "ghciwatch";
};
passthru.updateScript = nix-update-script { };
}

View File

@ -9,11 +9,11 @@
}:
let
pname = "jetbrains-toolbox";
version = "2.2.3.20090";
version = "2.3.1.31116";
src = fetchzip {
url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}.tar.gz";
sha256 = "sha256-SqxQF5pG61CySsDzdZ1P2C9cCe/B145D0S+T4NByif8=";
sha256 = "sha256-mrTeUp9DBSO1S6Nxx077lqtY847CiCBCCi/vboZ8ADs=";
stripRoot = false;
};

View File

@ -5,6 +5,7 @@
, rustPlatform
, fetchFromGitHub
, installShellFiles
, nix-update-script
, pkg-config
, udev
, openssl
@ -19,23 +20,16 @@ let
in
rustPlatform.buildRustPackage rec {
pname = "kanidm";
version = "1.1.0-rc.16";
version = "1.2.0";
src = fetchFromGitHub {
owner = pname;
repo = pname;
# Latest revision of 1.1.0-rc.16 stable branch
rev = "e51d0dee44ecabbf7be9e855753453bb2f61cced";
hash = "sha256-YgrlmSrjOzn/oFWmYy/71xwcq53lJbmiLIFzn2sIFAk=";
rev = "refs/tags/v${version}";
hash = "sha256-Clg9jQgKvWP9LniHmNq+WjRmEOzJGfuCU2K9ActZhzo=";
};
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"base64urlsafedata-0.1.3" = "sha256-lYVWuKqF4c34LpFmTIg98TEXIlP4dHen0XkGnLOiq8Q=";
"sshkeys-0.3.2" = "sha256-CNG9HW8kSwezAdIYW+CR5rqFfmuso4R0+m4OpIyXbSM=";
};
};
cargoHash = "sha256-m3H2mQm+k6vFH+nP+hWl07Z7NJKJlt1E4eRDRA2Z0+o=";
KANIDM_BUILD_PROFILE = "release_nixos_${arch}";
@ -87,7 +81,13 @@ rustPlatform.buildRustPackage rec {
mv $out/lib/libpam_kanidm.so $out/lib/pam_kanidm.so
'';
passthru.tests = { inherit (nixosTests) kanidm; };
passthru = {
tests = {
inherit (nixosTests) kanidm;
};
updateScript = nix-update-script { };
};
meta = with lib; {
changelog = "https://github.com/kanidm/kanidm/releases/tag/v${version}";
@ -95,6 +95,6 @@ rustPlatform.buildRustPackage rec {
homepage = "https://github.com/kanidm/kanidm";
license = licenses.mpl20;
platforms = platforms.linux;
maintainers = with maintainers; [ erictapen Flakebi ];
maintainers = with maintainers; [ adamcstephens erictapen Flakebi ];
};
}

View File

@ -0,0 +1,69 @@
{ lib
, fetchFromGitHub
, python3Packages
, cmake
, anki
}:
python3Packages.buildPythonApplication rec {
pname = "ki";
version = "0-unstable-2023-11-08";
pyproject = true;
disabled = python3Packages.pythonOlder "3.9";
src = fetchFromGitHub {
owner = "langfield";
repo = pname;
rev = "eb32fbd3229dc1a60bcc76a937ad63f3eb869f65";
sha256 = "sha256-5mQhJhvJQC9835goL3t3DRbD+c4P3KxnOflxvqmxL58=";
};
patches = [
./update-to-newer-anki-versions.patch
./replace-deprecated-distutils-with-setuptools.patch
];
nativeBuildInputs = [ cmake ];
propagatedBuildInputs = with python3Packages; [
beartype
click
colorama
git-filter-repo
gitpython
lark
tqdm
whatthepatch
] ++ [
anki
];
nativeCheckInputs = with python3Packages; [
bitstring
checksumdir
gitpython
loguru
pytest-mock
pytestCheckHook
];
disabledTests = [
# requires git to not be in path, but git is needed for other tests
"test_clone_cleans_up_on_error"
"test_clone_clean_up_preserves_directories_that_exist_a_priori"
];
dontCheckRuntimeDeps = true;
# CMake needs to be run by pyproject rather than by its hook
dontConfigure = true;
meta = with lib; {
description = "Version control for Anki collections";
homepage = "https://github.com/langfield/ki";
license = licenses.agpl3Only;
maintainers = with maintainers; [ eljamm ];
};
}

View File

@ -0,0 +1,13 @@
diff --git a/tests/test_integration.py b/tests/test_integration.py
index 93d3661..ef24fca 100644
--- a/tests/test_integration.py
+++ b/tests/test_integration.py
@@ -7,7 +7,7 @@ import sqlite3
import tempfile
import subprocess
from pathlib import Path
-from distutils.dir_util import copy_tree
+from setuptools._distutils.dir_util import copy_tree
from importlib.metadata import version
import git

View File

@ -0,0 +1,141 @@
diff --git a/ki/__init__.py b/ki/__init__.py
index 3f29c1a..f4ad950 100644
--- a/ki/__init__.py
+++ b/ki/__init__.py
@@ -1321,7 +1321,7 @@ def _clone1(collection: str, directory: str = "") -> git.Repo:
try:
col = M.collection(col_file)
_, _ = _clone2(col, targetdir, msg="Initial commit", silent=False)
- col.close(save=False)
+ col.close()
kirepo: KiRepo = M.kirepo(targetdir)
kirepo.repo.create_tag(LCA)
kirepo.repo.close()
@@ -1404,11 +1404,11 @@ def _pull1() -> None:
hashes = list(filter(lambda l: l != "", hashes))
if md5sum in hashes[-1]:
echo("ki pull: up to date.")
- col.close(save=False)
+ col.close()
return
col = _pull2(kirepo, col)
- col.close(save=False)
+ col.close()
@beartype
@@ -1545,7 +1545,7 @@ def _push() -> PushResult:
# If there are no changes, quit.
if len(set(deltas)) == 0:
echo("ki push: up to date.")
- col.close(save=False)
+ col.close()
return PushResult.UP_TO_DATE
echo(f"Pushing to '{kirepo.col_file}'")
@@ -1603,7 +1603,7 @@ def write_collection(
do(warn, F.cat(map(push_note(tempcol, timestamp_ns, guids, new_nids), decknotes)))
# It is always safe to save changes to the DB, since the DB is a copy.
- tempcol.close(save=True)
+ tempcol.close()
# Backup collection file and overwrite collection.
backup(kirepo)
@@ -1621,7 +1621,7 @@ def write_collection(
renames = filter(lambda a: a.file.name != a.new_name, map(addmedia(col), mbytes))
warnings = map(lambda r: RenamedMediaFileWarning(r.file.name, r.new_name), renames)
do(warn, warnings)
- col.close(save=True)
+ col.close()
# Append and commit collection checksum to hashes file.
append_md5sum(kirepo.ki, kirepo.col_file.name, F.md5(kirepo.col_file))
diff --git a/tests/test_integration.py b/tests/test_integration.py
index e046b8c..93d3661 100644
--- a/tests/test_integration.py
+++ b/tests/test_integration.py
@@ -320,7 +320,7 @@ def test_clone_generates_deck_tree_correctly():
# Create empty decks.
col = opencol(a)
do(col.decks.id, [":a:::b:", "blank::blank", "blank::Hello"])
- col.close(save=True)
+ col.close()
os.chdir(F.mkdtemp())
clone(a)
@@ -401,7 +401,7 @@ def test_clone_writes_media_files():
a: File = mkcol([("Basic", ["Default"], 1, ["a", "b[sound:1sec.mp3]"])])
col = opencol(a)
col.media.add_file(DATA / "media/1sec.mp3")
- col.close(save=True)
+ col.close()
clone(a)
assert (Path(MEDIA) / "1sec.mp3").is_file()
@@ -883,7 +883,7 @@ def test_push_writes_media():
write_basic("Default", ("air", '<img src="bullhorn-lg.png">'))
col = opencol(a)
col.media.add_file(DATA / "media/bullhorn-lg.png")
- col.close(save=True)
+ col.close()
F.commitall(repo, ".")
repo.close()
out = push()
@@ -987,7 +987,7 @@ def test_push_doesnt_unnecessarily_deduplicate_notetypes():
col = opencol(a)
models = col.models.all_names_and_ids()
- col.close(save=False)
+ col.close()
# Remove a note.
assert os.path.isfile("Default/a.md")
@@ -1012,7 +1012,7 @@ def test_push_doesnt_unnecessarily_deduplicate_notetypes():
col = opencol(a)
assert len(models) == len(col.models.all_names_and_ids())
- col.close(save=False)
+ col.close()
def test_push_is_nontrivial_when_pushed_changes_are_reverted_in_repository():
diff --git a/tests/test_ki.py b/tests/test_ki.py
index 5270b56..e5f3297 100644
--- a/tests/test_ki.py
+++ b/tests/test_ki.py
@@ -482,7 +482,7 @@ def mkcol(ns: List[NoteSpec]) -> File:
file = F.touch(F.mkdtemp(), "a.anki2")
col = opencol(file)
do(addnote(col), ns)
- col.close(save=True)
+ col.close()
return F.chk(file)
@@ -491,7 +491,7 @@ def rm(f: File, nid: int) -> File:
"""Remove note with given `nid`."""
col = opencol(f)
col.remove_notes([nid])
- col.close(save=True)
+ col.close()
return f
@@ -514,7 +514,7 @@ def edit(f: File, spec: NoteSpec) -> File:
"""Edit a note with specified nid."""
col = opencol(f)
editnote(col, spec)
- col.close(save=True)
+ col.close()
return f
@@ -531,7 +531,7 @@ def editcol(
do(addnote(col), adds)
do(editnote(col), edits)
col.remove_notes(deletes)
- col.close(save=True)
+ col.close()
return f

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "libcpuid";
version = "0.6.4";
version = "0.6.5";
src = fetchFromGitHub {
owner = "anrieff";
repo = "libcpuid";
rev = "v${version}";
sha256 = "sha256-Zs5GKvSasdfLqo8oErDQNAuXRG27Bm9vNwyooqbol0Q=";
sha256 = "sha256-Bq16UH4IUR7dU57bGHKq8P6JsjaB4arOJ4zFeNyxXSg=";
};
nativeBuildInputs = [ autoreconfHook ];

View File

@ -0,0 +1,34 @@
{
stdenv,
fetchFromGitHub,
lib,
autoreconfHook,
help2man,
}:
stdenv.mkDerivation {
pname = "libiff";
version = "0-unstable-2024-03-02";
src = fetchFromGitHub {
owner = "svanderburg";
repo = "libiff";
rev = "b5f542a83c824f26e0816770c9a17c22bd388606";
sha256 = "sha256-Arh3Ihd5TWg5tdemodrxz2EDxh/hwz9b2/AvrTONFy8=";
};
nativeBuildInputs = [
autoreconfHook
help2man
];
meta = with lib; {
description = "Parser for the Interchange File Format (IFF)";
longDescription = ''
libiff is a portable, extensible parser library implemented in
ANSI C, for EA-IFF 85: Electronic Arts' Interchange File Format
(IFF).
'';
homepage = "https://github.com/svanderburg/libiff";
maintainers = with maintainers; [ _414owen ];
platforms = platforms.all;
license = licenses.mit;
};
}

View File

@ -0,0 +1,38 @@
{
stdenv,
fetchFromGitHub,
lib,
libiff,
autoreconfHook,
pkg-config,
help2man,
}:
stdenv.mkDerivation {
pname = "libilbm";
version = "0-unstable-2024-03-02";
src = fetchFromGitHub {
owner = "svanderburg";
repo = "libilbm";
rev = "586f5822275ef5780509a851cb90c7407b2633d9";
sha256 = "sha256-EcsrspL/N40yFE15UFWGienpJHhoq1zd8zZe6x4nK6o=";
};
buildInputs = [ libiff ];
nativeBuildInputs = [
autoreconfHook
pkg-config
help2man
];
meta = with lib; {
description = "Parser for the ILBM: IFF Interleaved BitMap format";
longDescription = ''
libilbm is a portable parser library built on top of libiff,
for ILBM: IFF Interleaved BitMap format, which is used by programs
such as Deluxe Paint and Graphicraft to read and write images.
'';
homepage = "https://github.com/svanderburg/libilbm";
maintainers = with maintainers; [ _414owen ];
platforms = platforms.all;
license = licenses.mit;
};
}

View File

@ -0,0 +1,36 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
let
version = "5.0.4";
in
buildGoModule {
pname = "license-go";
inherit version;
src = fetchFromGitHub {
owner = "nishanths";
repo = "license";
rev = "v${version}";
hash = "sha256-Rz/eIGa3xLjirPMOs4otfmwy4OzJgopKPbka2OKt8Fo=";
};
vendorHash = "sha256-kx3lPhmEo515sHgHBqDC6udz6xkZvB+nn6x3/JaBHbo=";
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
"-X main.builtBy=nixpkgs"
];
meta = {
description = "Command line license text generator";
homepage = "https://github.com/nishanths/license";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ uncenter ];
mainProgram = "license";
};
}

View File

@ -78,12 +78,21 @@ effectiveStdenv.mkDerivation (finalAttrs: {
owner = "ggerganov";
repo = "llama.cpp";
rev = "refs/tags/b${finalAttrs.version}";
hash = "sha256-V+QDymEzXpw78Ezd2DInRLE0F6mXpLRhCK8iI8prq8I=";
hash = "sha256-KrIeZEq6RAz3N47wgtQjlfNzoGcTh3DqOhYBOxJPGzs=";
leaveDotGit = true;
postFetch = ''
git -C "$out" rev-parse --short HEAD > $out/COMMIT
find "$out" -name .git -print0 | xargs -0 rm -rf
'';
};
postPatch = ''
substituteInPlace ./ggml-metal.m \
--replace '[bundle pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/bin/ggml-metal.metal\";"
--replace-fail '[bundle pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/bin/ggml-metal.metal\";"
substituteInPlace ./scripts/build-info.cmake \
--replace-fail 'set(BUILD_NUMBER 0)' 'set(BUILD_NUMBER ${finalAttrs.version})' \
--replace-fail 'set(BUILD_COMMIT "unknown")' "set(BUILD_COMMIT \"$(cat COMMIT)\")"
'';
nativeBuildInputs = [ cmake ninja pkg-config git ]

View File

@ -12,11 +12,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "maltego";
version = "4.6.0";
version = "4.7.0";
src = fetchzip {
url = "https://downloads.maltego.com/maltego-v4/linux/Maltego.v${finalAttrs.version}.linux.zip";
hash = "sha256-q+1RYToZtBxAIDSiUWf3i/3GBBDwh6NWteHiK4VM1HY=";
hash = "sha256-dPpkIoWK/mzC9wD+3QTNv3tYG27QVgCxtAymkwjIwUY=";
};
postPatch = ''

View File

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec {
pname = "minijinja";
version = "1.0.21";
version = "2.0.1";
src = fetchFromGitHub {
owner = "mitsuhiko";
repo = "minijinja";
rev = version;
hash = "sha256-P18zqKbr7kWU2B9b6MNdL0Z281174NHTGvo38J/wSEo=";
hash = "sha256-6TUi9YY/CtxaFpW8itAiXDFYRet56y6h+okc3cNKzdk=";
};
cargoHash = "sha256-nemZUNF1tHbXopIsvqFI/MIKrZcXj6YQF0WNxBkE310=";
cargoHash = "sha256-QNGdJg+6mUhWTvLSuLRnPFe2F42UDGnYPEqlVr7jF3s=";
# The tests relies on the presence of network connection
doCheck = false;

View File

@ -5,13 +5,13 @@
buildGoModule rec {
pname = "namespace-cli";
version = "0.0.359";
version = "0.0.360";
src = fetchFromGitHub {
owner = "namespacelabs";
repo = "foundation";
rev = "v${version}";
hash = "sha256-zLEaQmZKDwTRR6Zi/thCtVu+jJONGouaVOcxKBBIkt4=";
hash = "sha256-HuicX6g5+TfctiF4/N7uSQtkzzx9y2dnfn0ef+p1nRc=";
};
vendorHash = "sha256-72cHswoTZszo42NOrPNuokDlqoJ3/YEhGe+rQSKvgAw=";

View File

@ -40,7 +40,7 @@ ps.buildPythonApplication rec {
postPatch = ''
# disable coverage testing
substituteInPlace pyproject.toml \
--replace "addopts = [" "addopts_ = ["
--replace-fail "addopts = [" "addopts_ = ["
'';
pythonRemoveDeps = [
@ -57,7 +57,7 @@ ps.buildPythonApplication rec {
ps.babel
];
propagatedBuildInputs = [
dependencies = [
ps.pyside6
ps.jeepney
];

View File

@ -13,11 +13,11 @@
stdenv.mkDerivation rec {
pname = "ocenaudio";
version = "3.13.5";
version = "3.13.8";
src = fetchurl {
url = "https://www.ocenaudio.com/downloads/index.php/ocenaudio_debian9_64.deb?version=v${version}";
hash = "sha256-9eDDllf6D2hAhjztPhi1MrUky7zQfiE4uLAbfRDx+7s=";
hash = "sha256-GKNho2xV6Lc4U5Ys4j+ZiGxE8irolcrTttN3PG1S2Ug=";
};
nativeBuildInputs = [

View File

@ -0,0 +1,41 @@
{ lib
, python3
, fetchFromGitHub
}:
let
python = python3.override {
packageOverrides = self: super: {
# https://github.com/domainaware/parsedmarc/issues/464
msgraph-core = super.msgraph-core.overridePythonAttrs (old: rec {
version = "0.2.2";
src = fetchFromGitHub {
owner = "microsoftgraph";
repo = "msgraph-sdk-python-core";
rev = "v${version}";
hash = "sha256-eRRlG3GJX3WeKTNJVWgNTTHY56qiUGOlxtvEZ2xObLA=";
};
nativeBuildInputs = with self; [
flit-core
];
propagatedBuildInputs = with self; [
requests
];
nativeCheckInputs = with self; [
pytestCheckHook
responses
];
disabledTestPaths = [
"tests/integration"
];
pythonImportsCheck = [ "msgraph.core" ];
});
};
};
in with python.pkgs; toPythonApplication parsedmarc

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