mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-26 08:53:21 +00:00
Merge staging-next into staging
This commit is contained in:
commit
4e3bc63c95
@ -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";
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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; };
|
||||
|
@ -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
|
||||
|
@ -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}";
|
||||
|
@ -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].
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
@ -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):
|
||||
|
@ -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")"
|
||||
|
@ -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";
|
||||
};
|
||||
};
|
||||
|
||||
|
27
nixos/modules/services/networking/jotta-cli.md
Normal file
27
nixos/modules/services/networking/jotta-cli.md
Normal 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.
|
43
nixos/modules/services/networking/jotta-cli.nix
Normal file
43
nixos/modules/services/networking/jotta-cli.nix
Normal 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;
|
||||
}
|
@ -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} = {
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
@ -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")
|
||||
|
@ -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 {};
|
||||
|
@ -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
25
nixos/tests/jotta-cli.nix
Normal 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"')
|
||||
'';
|
||||
})
|
@ -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")
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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";
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 ];
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 = [
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
})
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 = [
|
||||
|
@ -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.
|
||||
|
@ -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 = {
|
||||
|
@ -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;
|
||||
|
@ -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 { };
|
||||
|
||||
}
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 = ''
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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;
|
||||
|
@ -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 = [
|
||||
|
@ -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;
|
||||
|
@ -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 = [
|
||||
|
@ -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 ];
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
'';
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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 = ''
|
||||
|
@ -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 { };
|
||||
|
@ -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
|
||||
|
39
pkgs/applications/video/mpv/scripts/mpv-notify-send.nix
Normal file
39
pkgs/applications/video/mpv/scripts/mpv-notify-send.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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 \
|
||||
|
@ -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";
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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" ];
|
||||
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -23,9 +23,9 @@ composerRepositoryConfigureHook() {
|
||||
setComposeRootVersion
|
||||
|
||||
composer \
|
||||
--no-ansi \
|
||||
--no-install \
|
||||
--no-interaction \
|
||||
--no-progress \
|
||||
${composerNoDev:+--no-dev} \
|
||||
${composerNoPlugins:+--no-plugins} \
|
||||
${composerNoScripts:+--no-scripts} \
|
||||
|
@ -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`.
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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}" ];
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
@ -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 ]
|
||||
|
1316
pkgs/by-name/fi/firefoxpwa/Cargo.lock
generated
1316
pkgs/by-name/fi/firefoxpwa/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
36
pkgs/by-name/ge/gema/package.nix
Normal file
36
pkgs/by-name/ge/gema/package.nix
Normal 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;
|
||||
};
|
||||
})
|
40
pkgs/by-name/gh/ghciwatch/package.nix
Normal file
40
pkgs/by-name/gh/ghciwatch/package.nix
Normal 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 { };
|
||||
}
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
69
pkgs/by-name/ki/ki/package.nix
Normal file
69
pkgs/by-name/ki/ki/package.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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
|
141
pkgs/by-name/ki/ki/update-to-newer-anki-versions.patch
Normal file
141
pkgs/by-name/ki/ki/update-to-newer-anki-versions.patch
Normal 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
|
@ -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 ];
|
||||
|
34
pkgs/by-name/li/libiff/package.nix
Normal file
34
pkgs/by-name/li/libiff/package.nix
Normal 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;
|
||||
};
|
||||
}
|
38
pkgs/by-name/li/libilbm/package.nix
Normal file
38
pkgs/by-name/li/libilbm/package.nix
Normal 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;
|
||||
};
|
||||
}
|
36
pkgs/by-name/li/license-go/package.nix
Normal file
36
pkgs/by-name/li/license-go/package.nix
Normal 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";
|
||||
};
|
||||
}
|
@ -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 ]
|
||||
|
@ -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 = ''
|
||||
|
@ -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;
|
||||
|
@ -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=";
|
||||
|
@ -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
|
||||
];
|
||||
|
@ -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 = [
|
||||
|
41
pkgs/by-name/pa/parsedmarc/package.nix
Normal file
41
pkgs/by-name/pa/parsedmarc/package.nix
Normal 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
Loading…
Reference in New Issue
Block a user