Merge staging-next into staging
This commit is contained in:
commit
1fc7b4e48c
@ -75,7 +75,7 @@
|
||||
|
||||
- [Immersed VR](https://immersed.com/), a closed-source coworking platform. Available as [programs.immersed-vr](#opt-programs.immersed-vr.enable).
|
||||
|
||||
- [HomeBox](https://github.com/hay-kot/homebox/): the inventory and organization system built for the Home User. Available as [services.homebox](#opt-services.homebox.enable).
|
||||
- [HomeBox](https://github.com/sysadminsmedia/homebox): the inventory and organization system built for the Home User. Available as [services.homebox](#opt-services.homebox.enable).
|
||||
|
||||
- [Renovate](https://github.com/renovatebot/renovate), a dependency updating tool for various git forges and language ecosystems. Available as [services.renovate](#opt-services.renovate.enable).
|
||||
|
||||
@ -337,6 +337,13 @@
|
||||
|
||||
- The `replay-sorcery` package and module was removed as it unmaintained upstream. Consider using `gpu-screen-recorder` or `obs-studio` instead.
|
||||
|
||||
- To follow [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) a few options of `samba` have been moved from `extraConfig` and `configText` to the new freeform option `settings` and renamed, e.g.:
|
||||
- `services.samba.invalidUsers` to `services.samba.settings.global."invalid users"`
|
||||
- `services.samba.securityType` to `services.samba.settings.global."security type"`
|
||||
- `services.samba.shares` to `services.samba.settings`
|
||||
- `services.samba.enableWinbindd` to `services.samba.winbindd.enable`
|
||||
- `services.samba.enableNmbd` to `services.samba.nmbd.enable`
|
||||
|
||||
- `zx` was updated to v8, which introduces several breaking changes.
|
||||
See the [v8 changelog](https://github.com/google/zx/releases/tag/8.0.0) for more information.
|
||||
|
||||
|
41
nixos/modules/services/network-filesystems/samba.md
Normal file
41
nixos/modules/services/network-filesystems/samba.md
Normal file
@ -0,0 +1,41 @@
|
||||
# Samba {#module-services-samba}
|
||||
|
||||
[Samba](https://www.samba.org/), a SMB/CIFS file, print, and login server for Unix.
|
||||
|
||||
## Basic Usage {#module-services-samba-basic-usage}
|
||||
|
||||
A minimal configuration looks like this:
|
||||
|
||||
```nix
|
||||
{
|
||||
services.samba.enable = true;
|
||||
}
|
||||
```
|
||||
|
||||
This configuration automatically enables `smbd`, `nmbd` and `winbindd` services by default.
|
||||
|
||||
## Configuring {#module-services-samba-configuring}
|
||||
|
||||
Samba configuration is located in the `/etc/samba/smb.conf` file.
|
||||
|
||||
### File share {#module-services-samba-configuring-file-share}
|
||||
|
||||
This configuration will configure Samba to serve a `public` file share
|
||||
which is read-only and accessible without authentication:
|
||||
|
||||
```nix
|
||||
{
|
||||
services.samba = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"public" = {
|
||||
"path" = "/public";
|
||||
"read only" = "yes";
|
||||
"browseable" = "yes";
|
||||
"guest ok" = "yes";
|
||||
"comment" = "Public samba share.";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
@ -3,232 +3,162 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
smbToString = x: if builtins.typeOf x == "bool"
|
||||
then boolToString x
|
||||
else toString x;
|
||||
|
||||
cfg = config.services.samba;
|
||||
|
||||
samba = cfg.package;
|
||||
|
||||
shareConfig = name:
|
||||
let share = getAttr name cfg.shares; in
|
||||
"[${name}]\n " + (smbToString (
|
||||
map
|
||||
(key: "${key} = ${smbToString (getAttr key share)}\n")
|
||||
(attrNames share)
|
||||
));
|
||||
|
||||
configFile = pkgs.writeText "smb.conf"
|
||||
(if cfg.configText != null then cfg.configText else
|
||||
''
|
||||
[global]
|
||||
security = ${cfg.securityType}
|
||||
passwd program = /run/wrappers/bin/passwd %u
|
||||
invalid users = ${smbToString cfg.invalidUsers}
|
||||
|
||||
${cfg.extraConfig}
|
||||
|
||||
${smbToString (map shareConfig (attrNames cfg.shares))}
|
||||
'');
|
||||
|
||||
# This may include nss_ldap, needed for samba if it has to use ldap.
|
||||
nssModulesPath = config.system.nssModules.path;
|
||||
|
||||
daemonService = appName: args:
|
||||
{ description = "Samba Service Daemon ${appName}";
|
||||
|
||||
after = [ (mkIf (cfg.enableNmbd && "${appName}" == "smbd") "samba-nmbd.service") "network.target" ];
|
||||
requiredBy = [ "samba.target" ];
|
||||
partOf = [ "samba.target" ];
|
||||
|
||||
environment = {
|
||||
LD_LIBRARY_PATH = nssModulesPath;
|
||||
LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive";
|
||||
};
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${samba}/sbin/${appName} --foreground --no-process-group ${args}";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
LimitNOFILE = 16384;
|
||||
PIDFile = "/run/${appName}.pid";
|
||||
Type = "notify";
|
||||
NotifyAccess = "all"; #may not do anything...
|
||||
Slice = "system-samba.slice";
|
||||
};
|
||||
unitConfig.RequiresMountsFor = "/var/lib/samba";
|
||||
|
||||
restartTriggers = [ configFile ];
|
||||
};
|
||||
settingsFormat = pkgs.formats.ini { };
|
||||
configFile = settingsFormat.generate "smb.conf" cfg.settings;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
meta = {
|
||||
doc = ./samba.md;
|
||||
maintainers = [ lib.maintainers.anthonyroussel ];
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "samba" "defaultShare" ] "")
|
||||
(mkRemovedOptionModule [ "services" "samba" "syncPasswordsByPam" ] "This option has been removed by upstream, see https://bugzilla.samba.org/show_bug.cgi?id=10669#c10")
|
||||
|
||||
(lib.mkRemovedOptionModule [ "services" "samba" "configText" ] ''
|
||||
Use services.samba.settings instead.
|
||||
|
||||
This is part of the general move to use structured settings instead of raw
|
||||
text for config as introduced by RFC0042:
|
||||
https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md
|
||||
'')
|
||||
(lib.mkRemovedOptionModule [ "services" "samba" "extraConfig" ] "Use services.samba.settings instead.")
|
||||
(lib.mkRenamedOptionModule [ "services" "samba" "invalidUsers" ] [ "services" "samba" "settings" "global" "invalid users" ])
|
||||
(lib.mkRenamedOptionModule [ "services" "samba" "securityType" ] [ "services" "samba" "settings" "global" "security type" ])
|
||||
(lib.mkRenamedOptionModule [ "services" "samba" "shares" ] [ "services" "samba" "settings" ])
|
||||
|
||||
(lib.mkRenamedOptionModule [ "services" "samba" "enableWinbindd" ] [ "services" "samba" "winbindd" "enable" ])
|
||||
(lib.mkRenamedOptionModule [ "services" "samba" "enableNmbd" ] [ "services" "samba" "nmbd" "enable" ])
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
# !!! clean up the descriptions.
|
||||
|
||||
services.samba = {
|
||||
enable = lib.mkEnableOption "Samba, the SMB/CIFS protocol";
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable Samba, which provides file and print
|
||||
services to Windows clients through the SMB/CIFS protocol.
|
||||
|
||||
::: {.note}
|
||||
If you use the firewall consider adding the following:
|
||||
|
||||
services.samba.openFirewall = true;
|
||||
:::
|
||||
'';
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to automatically open the necessary ports in the firewall.
|
||||
'';
|
||||
};
|
||||
|
||||
enableNmbd = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable Samba's nmbd, which replies to NetBIOS over IP name
|
||||
service requests. It also participates in the browsing protocols
|
||||
which make up the Windows "Network Neighborhood" view.
|
||||
'';
|
||||
};
|
||||
|
||||
enableWinbindd = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable Samba's winbindd, which provides a number of services
|
||||
to the Name Service Switch capability found in most modern C libraries,
|
||||
to arbitrary applications via PAM and ntlm_auth and to Samba itself.
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkPackageOption pkgs "samba" {
|
||||
package = lib.mkPackageOption pkgs "samba" {
|
||||
example = "samba4Full";
|
||||
};
|
||||
|
||||
invalidUsers = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "root" ];
|
||||
description = ''
|
||||
List of users who are denied to login via Samba.
|
||||
'';
|
||||
openFirewall = lib.mkEnableOption "opening the default ports in the firewall for Samba";
|
||||
|
||||
smbd = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Whether to enable Samba's smbd daemon.";
|
||||
};
|
||||
|
||||
extraArgs = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = "Extra arguments to pass to the smbd service.";
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Additional global section and extra section lines go in here.
|
||||
'';
|
||||
example = ''
|
||||
guest account = nobody
|
||||
map to guest = bad user
|
||||
'';
|
||||
nmbd = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable Samba's nmbd, which replies to NetBIOS over IP name
|
||||
service requests. It also participates in the browsing protocols
|
||||
which make up the Windows "Network Neighborhood" view.
|
||||
'';
|
||||
};
|
||||
|
||||
extraArgs = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = "Extra arguments to pass to the nmbd service.";
|
||||
};
|
||||
};
|
||||
|
||||
configText = mkOption {
|
||||
type = types.nullOr types.lines;
|
||||
default = null;
|
||||
description = ''
|
||||
Verbatim contents of smb.conf. If null (default), use the
|
||||
autogenerated file from NixOS instead.
|
||||
'';
|
||||
winbindd = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable Samba's winbindd, which provides a number of services
|
||||
to the Name Service Switch capability found in most modern C libraries,
|
||||
to arbitrary applications via PAM and ntlm_auth and to Samba itself.
|
||||
'';
|
||||
};
|
||||
|
||||
extraArgs = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = "Extra arguments to pass to the winbindd service.";
|
||||
};
|
||||
};
|
||||
|
||||
securityType = mkOption {
|
||||
type = types.enum [ "auto" "user" "domain" "ads" ];
|
||||
default = "user";
|
||||
description = "Samba security type";
|
||||
};
|
||||
nsswins = lib.mkEnableOption ''
|
||||
WINS NSS (Name Service Switch) plug-in.
|
||||
|
||||
nsswins = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Whether to enable the WINS NSS (Name Service Switch) plug-in.
|
||||
Enabling it allows applications to resolve WINS/NetBIOS names (a.k.a.
|
||||
Windows machine names) by transparently querying the winbindd daemon.
|
||||
'';
|
||||
};
|
||||
Enabling it allows applications to resolve WINS/NetBIOS names (a.k.a.
|
||||
Windows machine names) by transparently querying the winbindd daemon
|
||||
'';
|
||||
|
||||
shares = mkOption {
|
||||
settings = lib.mkOption {
|
||||
type = lib.types.submodule { freeformType = settingsFormat.type; };
|
||||
default = {};
|
||||
example = {
|
||||
"global" = {
|
||||
"security" = "user";
|
||||
"passwd program" = "/run/wrappers/bin/passwd %u";
|
||||
"invalid users" = "root";
|
||||
};
|
||||
"public" = {
|
||||
"path" = "/srv/public";
|
||||
"read only" = "yes";
|
||||
"browseable" = "yes";
|
||||
"guest ok" = "yes";
|
||||
"comment" = "Public samba share.";
|
||||
};
|
||||
};
|
||||
description = ''
|
||||
A set describing shared resources.
|
||||
See {command}`man smb.conf` for options.
|
||||
'';
|
||||
type = types.attrsOf (types.attrsOf types.unspecified);
|
||||
example = literalExpression ''
|
||||
{ public =
|
||||
{ path = "/srv/public";
|
||||
"read only" = true;
|
||||
browseable = "yes";
|
||||
"guest ok" = "yes";
|
||||
comment = "Public samba share.";
|
||||
};
|
||||
}
|
||||
Configuration file for the Samba suite in ini format.
|
||||
This file is located in /etc/samba/smb.conf
|
||||
|
||||
Refer to <https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html>
|
||||
for all available options.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkMerge
|
||||
[ { assertions =
|
||||
[ { assertion = cfg.nsswins -> cfg.enableWinbindd;
|
||||
message = "If samba.nsswins is enabled, then samba.enableWinbindd must also be enabled";
|
||||
[ { assertion = cfg.nsswins -> cfg.winbindd.enable;
|
||||
message = "If services.samba.nsswins is enabled, then services.samba.winbindd.enable must also be enabled";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
(mkIf cfg.enable {
|
||||
(lib.mkIf cfg.enable {
|
||||
environment.etc."samba/smb.conf".source = configFile;
|
||||
|
||||
system.nssModules = optional cfg.nsswins samba;
|
||||
system.nssModules = optional cfg.nsswins cfg.package;
|
||||
system.nssDatabases.hosts = optional cfg.nsswins "wins";
|
||||
|
||||
systemd = {
|
||||
slices.system-samba = {
|
||||
description = "Samba slice";
|
||||
};
|
||||
targets.samba = {
|
||||
description = "Samba Server";
|
||||
after = [ "network.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
|
||||
slices.system-samba = {
|
||||
description = "Samba slice";
|
||||
};
|
||||
|
||||
# Refer to https://github.com/samba-team/samba/tree/master/packaging/systemd
|
||||
# for correct use with systemd
|
||||
services = {
|
||||
samba-smbd = daemonService "smbd" "";
|
||||
samba-nmbd = mkIf cfg.enableNmbd (daemonService "nmbd" "");
|
||||
samba-winbindd = mkIf cfg.enableWinbindd (daemonService "winbindd" "");
|
||||
};
|
||||
tmpfiles.rules = [
|
||||
"d /var/lock/samba - - - - -"
|
||||
"d /var/log/samba - - - - -"
|
||||
@ -252,6 +182,103 @@ in
|
||||
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ 139 445 ];
|
||||
networking.firewall.allowedUDPPorts = mkIf cfg.openFirewall [ 137 138 ];
|
||||
})
|
||||
];
|
||||
|
||||
(lib.mkIf cfg.nmbd.enable {
|
||||
systemd.services.samba-nmbd = {
|
||||
description = "Samba NMB Daemon";
|
||||
documentation = [ "man:nmbd(8)" "man:samba(7)" "man:smb.conf(5)" ];
|
||||
|
||||
after = [
|
||||
"network.target"
|
||||
"network-online.target"
|
||||
];
|
||||
|
||||
partOf = [ "samba.target" ];
|
||||
wantedBy = [ "samba.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
|
||||
environment.LD_LIBRARY_PATH = config.system.nssModules.path;
|
||||
|
||||
serviceConfig = {
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
ExecStart = "${cfg.package}/sbin/nmbd --foreground --no-process-group ${lib.escapeShellArgs cfg.nmbd.extraArgs}";
|
||||
LimitCORE = "infinity";
|
||||
PIDFile = "/run/samba/nmbd.pid";
|
||||
Slice = "system-samba.slice";
|
||||
Type = "notify";
|
||||
};
|
||||
|
||||
unitConfig.RequiresMountsFor = "/var/lib/samba";
|
||||
|
||||
restartTriggers = [ configFile ];
|
||||
};
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.smbd.enable {
|
||||
systemd.services.samba-smbd = {
|
||||
description = "Samba SMB Daemon";
|
||||
documentation = [ "man:smbd(8)" "man:samba(7)" "man:smb.conf(5)" ];
|
||||
|
||||
after = [
|
||||
"network.target"
|
||||
"network-online.target"
|
||||
] ++ lib.optionals (cfg.nmbd.enable) [
|
||||
"samba-nmbd.service"
|
||||
] ++ lib.optionals (cfg.winbindd.enable) [
|
||||
"samba-winbindd.service"
|
||||
];
|
||||
|
||||
partOf = [ "samba.target" ];
|
||||
wantedBy = [ "samba.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
|
||||
environment.LD_LIBRARY_PATH = config.system.nssModules.path;
|
||||
|
||||
serviceConfig = {
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
ExecStart = "${cfg.package}/sbin/smbd --foreground --no-process-group ${lib.escapeShellArgs cfg.smbd.extraArgs}";
|
||||
LimitCORE = "infinity";
|
||||
LimitNOFILE = 16384;
|
||||
PIDFile = "/run/samba/smbd.pid";
|
||||
Slice = "system-samba.slice";
|
||||
Type = "notify";
|
||||
};
|
||||
|
||||
unitConfig.RequiresMountsFor = "/var/lib/samba";
|
||||
|
||||
restartTriggers = [ configFile ];
|
||||
};
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.winbindd.enable {
|
||||
systemd.services.samba-winbindd = {
|
||||
description = "Samba Winbind Daemon";
|
||||
documentation = [ "man:winbindd(8)" "man:samba(7)" "man:smb.conf(5)" ];
|
||||
|
||||
after = [
|
||||
"network.target"
|
||||
] ++ lib.optionals (cfg.nmbd.enable) [
|
||||
"samba-nmbd.service"
|
||||
];
|
||||
|
||||
partOf = [ "samba.target" ];
|
||||
wantedBy = [ "samba.target" ];
|
||||
|
||||
environment.LD_LIBRARY_PATH = config.system.nssModules.path;
|
||||
|
||||
serviceConfig = {
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
ExecStart = "${cfg.package}/sbin/winbindd --foreground --no-process-group ${lib.escapeShellArgs cfg.winbindd.extraArgs}";
|
||||
LimitCORE = "infinity";
|
||||
PIDFile = "/run/samba/winbindd.pid";
|
||||
Slice = "system-samba.slice";
|
||||
Type = "notify";
|
||||
};
|
||||
|
||||
unitConfig.RequiresMountsFor = "/var/lib/samba";
|
||||
|
||||
restartTriggers = [ configFile ];
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ in
|
||||
'';
|
||||
description = ''
|
||||
The homebox configuration as Environment variables. For definitions and available options see the upstream
|
||||
[documentation](https://hay-kot.github.io/homebox/quick-start/#env-variables-configuration).
|
||||
[documentation](https://homebox.software/en/quick-start.html#env-variables-configuration).
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
@ -57,15 +57,16 @@ import ./make-test-python.nix ({ lib, ... }: {
|
||||
|
||||
testScript = ''
|
||||
with subtest("Web server gets ready"):
|
||||
machine.wait_for_unit("dex.service")
|
||||
machine.wait_for_unit("dex.service", timeout=120)
|
||||
# Wait until server accepts connections
|
||||
machine.wait_until_succeeds("curl -fs 'localhost:8080/dex/auth/mock?client_id=oidcclient&response_type=code&redirect_uri=https://example.com/callback&scope=openid'")
|
||||
machine.wait_until_succeeds("curl -fs 'localhost:8080/dex/auth/mock?client_id=oidcclient&response_type=code&redirect_uri=https://example.com/callback&scope=openid'", timeout=120)
|
||||
|
||||
with subtest("Login"):
|
||||
state = machine.succeed("curl -fs 'localhost:8080/dex/auth/mock?client_id=oidcclient&response_type=code&redirect_uri=https://example.com/callback&scope=openid' | sed -n 's/.*state=\\(.*\\)\">.*/\\1/p'").strip()
|
||||
print(f"Got state {state}")
|
||||
machine.succeed(f"curl -fs 'localhost:8080/dex/auth/mock/login?back=&state={state}' -d 'login=admin&password=password'")
|
||||
code = machine.succeed(f"curl -fs localhost:8080/dex/approval?req={state} | sed -n 's/.*code=\\(.*\\)&.*/\\1/p'").strip()
|
||||
# Login request returns 303 with redirect_url that has code as query parameter:
|
||||
# https://example.com/callback?code=kibsamwdupuy2iwqnlbqei3u6&state=
|
||||
code = machine.succeed(f"curl -fs 'localhost:8080/dex/auth/mock/login?back=&state={state}' -d 'login=admin&password=password' -w '%{{redirect_url}}' | sed -n 's/.*code=\\(.*\\)&.*/\\1/p'")
|
||||
print(f"Got approval code {code}")
|
||||
bearer = machine.succeed(f"curl -fs localhost:8080/dex/token -u oidcclient:oidcclientsecret -d 'grant_type=authorization_code&redirect_uri=https://example.com/callback&code={code}' | jq .access_token -r").strip()
|
||||
print(f"Got access token {bearer}")
|
||||
|
@ -1,46 +1,47 @@
|
||||
import ./make-test-python.nix ({ pkgs, ... }:
|
||||
|
||||
{
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "samba";
|
||||
|
||||
meta.maintainers = [ ];
|
||||
meta.maintainers = [ lib.maintainers.anthonyroussel ];
|
||||
|
||||
nodes =
|
||||
{ client =
|
||||
{ pkgs, ... }:
|
||||
{ virtualisation.fileSystems =
|
||||
{ "/public" = {
|
||||
fsType = "cifs";
|
||||
device = "//server/public";
|
||||
options = [ "guest" ];
|
||||
};
|
||||
};
|
||||
nodes = {
|
||||
client =
|
||||
{ ... }:
|
||||
{
|
||||
virtualisation.fileSystems = {
|
||||
"/public" = {
|
||||
fsType = "cifs";
|
||||
device = "//server/public";
|
||||
options = [ "guest" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
server =
|
||||
{ ... }:
|
||||
{ services.samba.enable = true;
|
||||
services.samba.openFirewall = true;
|
||||
services.samba.shares.public =
|
||||
{ path = "/public";
|
||||
server =
|
||||
{ ... }:
|
||||
{
|
||||
services.samba = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
settings = {
|
||||
"public" = {
|
||||
"path" = "/public";
|
||||
"read only" = true;
|
||||
browseable = "yes";
|
||||
"browseable" = "yes";
|
||||
"guest ok" = "yes";
|
||||
comment = "Public samba share.";
|
||||
"comment" = "Public samba share.";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# client# [ 4.542997] mount[777]: sh: systemd-ask-password: command not found
|
||||
testScript = ''
|
||||
server.start()
|
||||
server.wait_for_unit("samba.target")
|
||||
server.succeed("mkdir -p /public; echo bar > /public/foo")
|
||||
|
||||
testScript =
|
||||
''
|
||||
server.start()
|
||||
server.wait_for_unit("samba.target")
|
||||
server.succeed("mkdir -p /public; echo bar > /public/foo")
|
||||
|
||||
client.start()
|
||||
client.wait_for_unit("remote-fs.target")
|
||||
client.succeed("[[ $(cat /public/foo) = bar ]]")
|
||||
'';
|
||||
client.start()
|
||||
client.wait_for_unit("remote-fs.target")
|
||||
client.succeed("[[ $(cat /public/foo) = bar ]]")
|
||||
'';
|
||||
})
|
||||
|
@ -1,45 +0,0 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, alsa-lib
|
||||
, darwin
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, protobuf
|
||||
, rustPlatform
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "music-player";
|
||||
version = "0.2.0-alpha.14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tsirysndr";
|
||||
repo = "music-player";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-l8Y1fc5v0YDm87b+d3DuMgKFiem6WFfJEASplHoqva0=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-nnOHuAn+eGf+iiX3QbDTH4zHMQ6KV4QP6RnyBhLMrEc=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
protobuf
|
||||
rustPlatform.bindgenHook
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals stdenv.isLinux [
|
||||
alsa-lib
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.AudioUnit
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Extensible music player daemon written in Rust";
|
||||
homepage = "https://github.com/tsirysndr/music-player";
|
||||
changelog = "https://github.com/tsirysndr/music-player/releases/tag/v${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = [ ];
|
||||
mainProgram = "music-player";
|
||||
};
|
||||
}
|
@ -1459,7 +1459,7 @@
|
||||
patches = [ ./patches/ranger.nvim/fix-paths.patch ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace lua/ranger-nvim.lua --replace '@ranger@' ${ranger}
|
||||
substituteInPlace lua/ranger-nvim.lua --replace '@ranger@' ${ranger}/bin/ranger
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "helm-diff";
|
||||
version = "3.9.9";
|
||||
version = "3.9.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "databus23";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-2vippOY56eP+dMTvH3E+pesq03SHnIsNaRwHK8rdIus=";
|
||||
hash = "sha256-umb8f0qCqFVN8K5T441Koyl2pq7VOskDxKCXlqB5UoA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Xfev2TsAtP9XddAUNCCKOeIFpKLnD00SdkH2io2REQk=";
|
||||
vendorHash = "sha256-pWynrkL/d6TPojeyCJ6RjLNel4qA21UP+jzWnC8DnB8=";
|
||||
|
||||
ldflags = [ "-s" "-w" "-X github.com/databus23/helm-diff/v3/cmd.Version=${version}" ];
|
||||
|
||||
|
@ -10,11 +10,13 @@
|
||||
, mesa
|
||||
, udev
|
||||
, wrapGAppsHook3
|
||||
, writeScript
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "termius";
|
||||
version = "8.12.9";
|
||||
version = "9.3.2";
|
||||
revision = "200";
|
||||
|
||||
src = fetchurl {
|
||||
# find the latest version with
|
||||
@ -23,8 +25,8 @@ stdenv.mkDerivation rec {
|
||||
# curl -H 'X-Ubuntu-Series: 16' https://api.snapcraft.io/api/v1/snaps/details/termius-app | jq '.download_url' -r
|
||||
# and the sha512 with
|
||||
# curl -H 'X-Ubuntu-Series: 16' https://api.snapcraft.io/api/v1/snaps/details/termius-app | jq '.download_sha512' -r
|
||||
url = "https://api.snapcraft.io/api/v1/snaps/download/WkTBXwoX81rBe3s3OTt3EiiLKBx2QhuS_194.snap";
|
||||
hash = "sha512-48SHa0KQzbDRD9Z6qb63jH+8/jcjGefSjqsCK52Ob2vnzDDBdsmrRLmFDs/K/FBIjzFV4GAjQx61v9jQtvAsmA==";
|
||||
url = "https://api.snapcraft.io/api/v1/snaps/download/WkTBXwoX81rBe3s3OTt3EiiLKBx2QhuS_${revision}.snap";
|
||||
hash = "sha512-LPNwyDqVRFVAmhtZGpxoYEQK5B8BIdaV/ylTD0JfvAJAHWpGrbBJT1jMpT7LetNH5XQyXW81nY26JlcmXHaAwg==";
|
||||
};
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
@ -63,7 +65,7 @@ stdenv.mkDerivation rec {
|
||||
mkdir -p $out/opt/termius
|
||||
cp -r ./ $out/opt/termius
|
||||
|
||||
mkdir -p "$out/share/applications" "$out/share/pixmaps/termius-app.png"
|
||||
mkdir -p "$out/share/applications" "$out/share/pixmaps"
|
||||
cp "${desktopItem}/share/applications/"* "$out/share/applications"
|
||||
cp meta/gui/icon.png $out/share/pixmaps/termius-app.png
|
||||
|
||||
@ -77,6 +79,28 @@ stdenv.mkDerivation rec {
|
||||
"''${gappsWrapperArgs[@]}"
|
||||
'';
|
||||
|
||||
passthru.updateScript = writeScript "update-termius" ''
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p common-updater-scripts curl jq
|
||||
|
||||
set -eu -o pipefail
|
||||
|
||||
data=$(curl -H 'X-Ubuntu-Series: 16' \
|
||||
'https://api.snapcraft.io/api/v1/snaps/details/termius-app?fields=download_sha512,revision,version')
|
||||
|
||||
version=$(jq -r .version <<<"$data")
|
||||
|
||||
if [[ "x$UPDATE_NIX_OLD_VERSION" != "x$version" ]]; then
|
||||
|
||||
revision=$(jq -r .revision <<<"$data")
|
||||
hash=$(nix hash to-sri "sha512:$(jq -r .download_sha512 <<<"$data")")
|
||||
|
||||
update-source-version "$UPDATE_NIX_ATTR_PATH" "$version" "$hash"
|
||||
update-source-version --ignore-same-hash --version-key=revision "$UPDATE_NIX_ATTR_PATH" "$revision" "$hash"
|
||||
|
||||
fi
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cross-platform SSH client with cloud data sync and more";
|
||||
homepage = "https://termius.com/";
|
||||
|
@ -13,10 +13,10 @@ stdenv.mkDerivation rec {
|
||||
cp -Rv * $out/share/
|
||||
|
||||
sed -i "s#prefix=.*#prefix=$out/share#g" $out/share/igv.sh
|
||||
sed -i 's#java#${jdk17}/bin/java#g' $out/share/igv.sh
|
||||
sed -i 's#\bjava\b#${jdk17}/bin/java#g' $out/share/igv.sh
|
||||
|
||||
sed -i "s#prefix=.*#prefix=$out/share#g" $out/share/igvtools
|
||||
sed -i 's#java#${jdk17}/bin/java#g' $out/share/igvtools
|
||||
sed -i 's#\bjava\b#${jdk17}/bin/java#g' $out/share/igvtools
|
||||
|
||||
ln -s $out/share/igv.sh $out/bin/igv
|
||||
ln -s $out/share/igvtools $out/bin/igvtools
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, flutter319
|
||||
, flutter
|
||||
, gst_all_1
|
||||
, libunwind
|
||||
, makeWrapper
|
||||
@ -16,15 +16,15 @@
|
||||
, flet-client-flutter
|
||||
}:
|
||||
|
||||
flutter319.buildFlutterApplication rec {
|
||||
flutter.buildFlutterApplication rec {
|
||||
pname = "flet-client-flutter";
|
||||
version = "0.22.1";
|
||||
version = "0.24.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "flet-dev";
|
||||
repo = "flet";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-mjqPIm4LspW1LB4H08FVwEN0JOwTPTLaUxOjZ3n6u8A=";
|
||||
hash = "sha256-cT1cWxMVpZ0fXoIaJpW96ifQKNe7+PLUXjIFJ3ALdyo=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/client";
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -74,7 +74,7 @@ buildGoModule {
|
||||
|
||||
meta = {
|
||||
mainProgram = "api";
|
||||
homepage = "https://hay-kot.github.io/homebox/";
|
||||
homepage = "https://homebox.software/";
|
||||
description = "Inventory and organization system built for the Home User";
|
||||
maintainers = with lib.maintainers; [ patrickdag ];
|
||||
license = lib.licenses.agpl3Only;
|
||||
|
51
pkgs/by-name/mu/music-player/package.nix
Normal file
51
pkgs/by-name/mu/music-player/package.nix
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
alsa-lib,
|
||||
darwin,
|
||||
fetchFromGitHub,
|
||||
pkg-config,
|
||||
protobuf,
|
||||
rustPlatform,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "music-player";
|
||||
version = "0.2.0-alpha.14-unstable-2024-08-24";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tsirysndr";
|
||||
repo = "music-player";
|
||||
# No patch for 0.2.0, diff patch has a big size, temporarily until the next release
|
||||
rev = "cf01ae4d2dcf5c804559250f2c7f922d870ae26d";
|
||||
hash = "sha256-8C8uFnXSBalLD2MUgzzfg4ylvTVecyPJOSUri5jbvkM=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-JmyuA5p6/7jtNuOMWuAuspYYid+dGOeollIlS0DRCIE=";
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
protobuf
|
||||
rustPlatform.bindgenHook
|
||||
]
|
||||
++ lib.optionals stdenv.isLinux [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
lib.optionals stdenv.isLinux [
|
||||
alsa-lib
|
||||
]
|
||||
++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.AudioUnit
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Extensible music player daemon written in Rust";
|
||||
homepage = "https://github.com/tsirysndr/music-player";
|
||||
changelog = "https://github.com/tsirysndr/music-player/releases/tag/v${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = [ ];
|
||||
mainProgram = "music-player";
|
||||
};
|
||||
}
|
@ -22,7 +22,7 @@ buildGoModule rec {
|
||||
description = "Single-file utility for creating and working with PMTiles archives";
|
||||
homepage = "https://github.com/protomaps/go-pmtiles";
|
||||
license = licenses.bsd3;
|
||||
maintainers = [ maintainers.theaninova ];
|
||||
maintainers = teams.geospatial.members ++ (with maintainers; [ theaninova ]);
|
||||
mainProgram = "pmtiles";
|
||||
};
|
||||
}
|
||||
|
@ -6,11 +6,11 @@
|
||||
|
||||
let
|
||||
pname = "simplex-chat-desktop";
|
||||
version = "6.0.3";
|
||||
version = "6.0.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/simplex-chat/simplex-chat/releases/download/v${version}/simplex-desktop-x86_64.AppImage";
|
||||
hash = "sha256-No3nS1AUOxhaxvaPvc8tLW+fj59P4AT/bt0dZobdGAw=";
|
||||
hash = "sha256-yDymJ44NIqDg5++WV5rcbOAR4gEWZpwNDClJkFMe9Ns=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extract {
|
||||
|
@ -1657,15 +1657,19 @@ won't take effect until you reboot the system.
|
||||
}
|
||||
Ok(users) => {
|
||||
for (uid, name, user_dbus_path) in users {
|
||||
let gid: u32 = dbus_conn
|
||||
.with_proxy(
|
||||
"org.freedesktop.login1",
|
||||
&user_dbus_path,
|
||||
Duration::from_millis(5000),
|
||||
)
|
||||
let proxy = dbus_conn.with_proxy(
|
||||
"org.freedesktop.login1",
|
||||
&user_dbus_path,
|
||||
Duration::from_millis(5000),
|
||||
);
|
||||
let gid: u32 = proxy
|
||||
.get("org.freedesktop.login1.User", "GID")
|
||||
.with_context(|| format!("Failed to get GID for {name}"))?;
|
||||
|
||||
let runtime_path: String = proxy
|
||||
.get("org.freedesktop.login1.User", "RuntimePath")
|
||||
.with_context(|| format!("Failed to get runtime directory for {name}"))?;
|
||||
|
||||
eprintln!("reloading user units for {}...", name);
|
||||
let myself = Path::new("/proc/self/exe")
|
||||
.canonicalize()
|
||||
@ -1674,7 +1678,8 @@ won't take effect until you reboot the system.
|
||||
std::process::Command::new(&myself)
|
||||
.uid(uid)
|
||||
.gid(gid)
|
||||
.env("XDG_RUNTIME_DIR", format!("/run/user/{}", uid))
|
||||
.env_clear()
|
||||
.env("XDG_RUNTIME_DIR", runtime_path)
|
||||
.env("__NIXOS_SWITCH_TO_CONFIGURATION_PARENT_EXE", &myself)
|
||||
.spawn()
|
||||
.with_context(|| format!("Failed to spawn user activation for {name}"))?
|
||||
|
@ -15,13 +15,13 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "teams-for-linux";
|
||||
version = "1.9.5";
|
||||
version = "1.9.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "IsmaelMartinez";
|
||||
repo = "teams-for-linux";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-+rEGDg+/qvjCMhGHccb4p+CKOo/65RpkFT/WnCDlCgU=";
|
||||
hash = "sha256-VonydbN7EiXnQIArOSKgNsIV7zIZQsLihZ41geSx1AA=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-vDRFFxkIQo5qU9gmkSwUhPz4FG2XbUNkTw6SCuvMqCc=";
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "tippecanoe";
|
||||
version = "2.60.0";
|
||||
version = "2.62.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "felt";
|
||||
repo = "tippecanoe";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-29jQiPyHotvBm/puoT/WOVgX1Y3N3Q94O+oJ1IjaoKM=";
|
||||
hash = "sha256-qlEXGtDYQENMaA6VsdDZy/7IW8jWP4zfWoymWC2InO0=";
|
||||
};
|
||||
|
||||
buildInputs = [ sqlite zlib ];
|
||||
|
@ -3,12 +3,12 @@
|
||||
let
|
||||
generator = pkgsBuildBuild.buildGoModule rec {
|
||||
pname = "v2ray-domain-list-community";
|
||||
version = "20240829063032";
|
||||
version = "20240905162746";
|
||||
src = fetchFromGitHub {
|
||||
owner = "v2fly";
|
||||
repo = "domain-list-community";
|
||||
rev = version;
|
||||
hash = "sha256-gON0oAObjo3eFU50tPg318RNCrYevu5J68nl/gPlEkI=";
|
||||
hash = "sha256-fhD6EJZl8k8yYi8JnRKMFETHrT71vySNJSvk84EZbCU=";
|
||||
};
|
||||
vendorHash = "sha256-NLh14rXRci4hgDkBJVJDIDvobndB7KYRKAX7UjyqSsg=";
|
||||
meta = with lib; {
|
||||
|
@ -6,13 +6,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "flat-remix-gtk";
|
||||
version = "20220627";
|
||||
version = "20240730";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "daniruiz";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-z/ILu8UPbyEN/ejsxZ3CII3y3dI04ZNa1i6nyjKFis8=";
|
||||
sha256 = "sha256-EWe84bLG14RkCNbHp0S5FbUQ5/Ye/KbCk3gPTsGg9oQ=";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
@ -9,13 +9,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "qogir-kde";
|
||||
version = "0-unstable-2024-07-29";
|
||||
version = "0-unstable-2024-09-01";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vinceliuice";
|
||||
repo = pname;
|
||||
rev = "5a19a4b4006b7486af12a5f051ca5377104cab1b";
|
||||
hash = "sha256-DHV2iVEYxGY9+21TF9YLEH0OoDWVTvcCJytb7k+nS8M=";
|
||||
rev = "dff5c1fbbaa0b824684c65063b635cf27bcb19ce";
|
||||
hash = "sha256-uK9lJVRdMszA0am1/E4mfIN50yNKONH85M7+e0ERtn4=";
|
||||
};
|
||||
|
||||
# Propagate sddm theme dependencies to user env otherwise sddm does
|
||||
|
37
pkgs/development/emilua-plugins/beast/default.nix
Normal file
37
pkgs/development/emilua-plugins/beast/default.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
stdenv,
|
||||
emilua,
|
||||
meson,
|
||||
gperf,
|
||||
ninja,
|
||||
asciidoctor,
|
||||
pkg-config,
|
||||
fetchFromGitLab,
|
||||
gitUpdater,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (self: {
|
||||
pname = "emilua_beast";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "emilua";
|
||||
repo = "beast";
|
||||
rev = "v${self.version}";
|
||||
hash = "sha256-HvfEigHJTZelPvHFk22PWxkTFEajHJXfiCndxXHVgq8=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
emilua
|
||||
asciidoctor
|
||||
gperf
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
pkg-config
|
||||
ninja
|
||||
];
|
||||
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
})
|
@ -22,6 +22,7 @@
|
||||
cmake,
|
||||
asciidoctor,
|
||||
makeWrapper,
|
||||
gitUpdater
|
||||
}:
|
||||
|
||||
let
|
||||
@ -29,24 +30,41 @@ let
|
||||
owner = "breese";
|
||||
repo = "trial.protocol";
|
||||
rev = "79149f604a49b8dfec57857ca28aaf508069b669";
|
||||
name = "trial-protocol";
|
||||
hash = "sha256-Xd8bX3z9PZWU17N9R95HXdj6qo9at5FBL/+PTVaJgkw=";
|
||||
sparseCheckout = [
|
||||
"include"
|
||||
];
|
||||
hash = "sha256-QpQ70KDcJyR67PtOowAF6w48GitMJ700B8HiEwDA5sU=";
|
||||
postFetch = ''
|
||||
rm $out/*.*
|
||||
mkdir -p $out/lib/pkgconfig
|
||||
cat > $out/lib/pkgconfig/trial-protocol.pc << EOF
|
||||
Name: trial.protocol
|
||||
Version: 0-unstable-2023-02-10
|
||||
Description: C++ header-only library with parsers and generators for network wire protocols
|
||||
Requires:
|
||||
Libs:
|
||||
Cflags:
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
|
||||
boost = boost182;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
stdenv.mkDerivation (self: {
|
||||
pname = "emilua";
|
||||
version = "0.7.3";
|
||||
version = "0.10.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "emilua";
|
||||
repo = "emilua";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-j8ohhqHjSBgc4Xk9PcQNrbADmsz4VH2zCv+UNqiCv4I=";
|
||||
rev = "v${self.version}";
|
||||
hash = "sha256-D6XKXik9nWQ6t6EF6dLbRGB60iFbPUM8/H8iFAz1QlE=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
propagatedBuildInputs = [
|
||||
luajit_openresty
|
||||
boost182
|
||||
boost
|
||||
fmt
|
||||
ncurses
|
||||
serd
|
||||
@ -55,6 +73,7 @@ stdenv.mkDerivation rec {
|
||||
liburing
|
||||
openssl
|
||||
cereal
|
||||
trial-protocol-wrap
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -80,12 +99,6 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
pushd subprojects
|
||||
cp -r ${trial-protocol-wrap} trial-protocol
|
||||
chmod +w trial-protocol
|
||||
cp "packagefiles/trial.protocol/meson.build" "trial-protocol/"
|
||||
popd
|
||||
|
||||
patchShebangs src/emilua_gperf.awk --interpreter '${lib.getExe gawk} -f'
|
||||
'';
|
||||
|
||||
@ -97,12 +110,25 @@ stdenv.mkDerivation rec {
|
||||
"--no-suite" "libpsx"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/nix-support
|
||||
cp ${./setup-hook.sh} $out/nix-support/setup-hook
|
||||
substituteInPlace $out/nix-support/setup-hook \
|
||||
--replace @sitePackages@ "${self.passthru.sitePackages}"
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = gitUpdater {rev-prefix = "v";};
|
||||
inherit boost;
|
||||
sitePackages = "lib/emilua-${(lib.concatStringsSep "." (lib.take 2 (lib.splitVersion self.version)))}";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Lua execution engine";
|
||||
mainProgram = "emilua";
|
||||
homepage = "https://emilua.org/";
|
||||
license = licenses.boost;
|
||||
maintainers = with maintainers; [ manipuladordedados ];
|
||||
maintainers = with maintainers; [ manipuladordedados lucasew ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
17
pkgs/development/interpreters/emilua/setup-hook.sh
Normal file
17
pkgs/development/interpreters/emilua/setup-hook.sh
Normal file
@ -0,0 +1,17 @@
|
||||
addEmiluaPath() {
|
||||
addToSearchPathWithCustomDelimiter : EMILUA_PATH $1/@sitePackages@
|
||||
}
|
||||
|
||||
toEmiluaPath() {
|
||||
local paths="$1"
|
||||
local result=
|
||||
for i in $paths; do
|
||||
p="$i/@sitePackages@"
|
||||
result="${result}${result:+:}$p"
|
||||
done
|
||||
echo $result
|
||||
}
|
||||
|
||||
if [ -z "${dontAddEmiluaPath:-}" ]; then
|
||||
addEnvHooks "$hostOffset" addEmiluaPath
|
||||
fi
|
@ -1,6 +1,6 @@
|
||||
{ mkDerivation }:
|
||||
|
||||
mkDerivation {
|
||||
version = "27.0";
|
||||
sha256 = "sha256-YZWBLcpkm8B4sjoQO7I9ywXcmxXL+Dvq/JYsLsr7TO0=";
|
||||
version = "27.0.1";
|
||||
sha256 = "sha256-Lp6J9eq6RXDi0RRjeVO/CIa4h/m7/fwOp/y0u0sTdFQ=";
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "cohere";
|
||||
version = "5.9.0";
|
||||
version = "5.9.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
@ -32,7 +32,7 @@ buildPythonPackage rec {
|
||||
owner = "cohere-ai";
|
||||
repo = "cohere-python";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-lD/J21RfJ6iBLOr0lzYBJmbTdiZUV8z6IMhZFbfWixM=";
|
||||
hash = "sha256-c6AWGKX5ML3Zs02hwIYt8dvZVMvWEmUAkOlU0SvpUaA=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
|
@ -8,7 +8,6 @@
|
||||
pythonOlder,
|
||||
appnope,
|
||||
comm,
|
||||
debugpy,
|
||||
ipython,
|
||||
jupyter-client,
|
||||
jupyter-core,
|
||||
@ -37,15 +36,12 @@ buildPythonPackage rec {
|
||||
};
|
||||
|
||||
# debugpy is optional, see https://github.com/ipython/ipykernel/pull/767
|
||||
postPatch = ''
|
||||
sed -i "/debugpy/d" pyproject.toml
|
||||
'';
|
||||
pythonRemoveDeps = [ "debugpy" ];
|
||||
|
||||
nativeBuildInputs = [ hatchling ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
comm
|
||||
debugpy
|
||||
ipython
|
||||
jupyter-client
|
||||
jupyter-core
|
||||
|
@ -1,7 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
ccache,
|
||||
fetchFromGitHub,
|
||||
isPyPy,
|
||||
ordered-set,
|
||||
@ -27,7 +26,6 @@ buildPythonPackage rec {
|
||||
setuptools
|
||||
wheel
|
||||
];
|
||||
nativeCheckInputs = [ ccache ];
|
||||
|
||||
dependencies = [
|
||||
ordered-set
|
||||
|
@ -3,6 +3,7 @@
|
||||
beautifulsoup4,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
filelock,
|
||||
lxml,
|
||||
pythonOlder,
|
||||
@ -14,20 +15,29 @@
|
||||
buildPythonPackage rec {
|
||||
pname = "snscrape";
|
||||
version = "0.7.0.20230622";
|
||||
format = "pyproject";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "JustAnotherArchivist";
|
||||
repo = pname;
|
||||
repo = "snscrape";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-9xAUMr1SWFePEvIz6DFEexk9Txex3u8wPNfMAdxEUCA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ setuptools-scm ];
|
||||
patches = [
|
||||
# Fix find_module deprecation, https://github.com/JustAnotherArchivist/snscrape/pull/1036
|
||||
(fetchpatch {
|
||||
name = "fix-find-module.patch";
|
||||
url = "https://github.com/JustAnotherArchivist/snscrape/commit/7f4717aaaaa8d4c96fa1dbe72ded799a722732ee.patch";
|
||||
hash = "sha256-6O9bZ5GlTPuR0MML/O4DDRBcDX/CJbU54ZE551cfPHo=";
|
||||
})
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
build-system = [ setuptools-scm ];
|
||||
|
||||
dependencies = [
|
||||
beautifulsoup4
|
||||
filelock
|
||||
lxml
|
||||
@ -44,9 +54,9 @@ buildPythonPackage rec {
|
||||
|
||||
meta = with lib; {
|
||||
description = "Social networking service scraper";
|
||||
mainProgram = "snscrape";
|
||||
homepage = "https://github.com/JustAnotherArchivist/snscrape";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ ivan ];
|
||||
mainProgram = "snscrape";
|
||||
};
|
||||
}
|
||||
|
@ -588,7 +588,7 @@ if [ "$action" = repl ]; then
|
||||
if [[ -z $buildingAttribute ]]; then
|
||||
exec nix repl --file $buildFile $attr "${extraBuildFlags[@]}"
|
||||
elif [[ -z $flake ]]; then
|
||||
exec nix repl '<nixpkgs/nixos>' "${extraBuildFlags[@]}"
|
||||
exec nix repl --file '<nixpkgs/nixos>' "${extraBuildFlags[@]}"
|
||||
else
|
||||
if [[ -n "${lockFlags[0]}" ]]; then
|
||||
# nix repl itself does not support locking flags
|
||||
|
@ -8,19 +8,20 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "hultenvp";
|
||||
domain = "solis";
|
||||
version = "3.6.0";
|
||||
version = "3.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hultenvp";
|
||||
repo = "solis-sensor";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-DIUhUN1UfyXptaldJBsQEsImEnQqi4zFFKp70yXxDSk=";
|
||||
sha256 = "sha256-bKe8c+gQj9jvZKlqcbLiD6NhPDJVy/2mxRM8jjlOPnI=";
|
||||
};
|
||||
|
||||
dependencies = [ aiofiles ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Home Assistant integration for the SolisCloud PV Monitoring portal via SolisCloud API";
|
||||
changelog = "https://github.com/hultenvp/solis-sensor/releases/tag/v${version}";
|
||||
homepage = "https://github.com/hultenvp/solis-sensor";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ jnsgruk ];
|
||||
|
3101
pkgs/servers/monitoring/openobserve/Cargo.lock
generated
3101
pkgs/servers/monitoring/openobserve/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -15,12 +15,12 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "0.10.1";
|
||||
version = "0.11.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "openobserve";
|
||||
repo = "openobserve";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-68fJYk/R1F7FHm4F+pyyA9BRVdV8S8p5uEM1hVbuArg=";
|
||||
hash = "sha256-VRkAOUtF/eOxE7/Xjxi/WEfeSseGEJ9IROCFbgeFUkI=";
|
||||
};
|
||||
web = buildNpmPackage {
|
||||
inherit src version;
|
||||
@ -28,7 +28,7 @@ let
|
||||
|
||||
sourceRoot = "${src.name}/web";
|
||||
|
||||
npmDepsHash = "sha256-7l1tdgR/R7qaYBbBm9OnKDBETPkaIN8AUgc9WdYQuwI=";
|
||||
npmDepsHash = "sha256-2beTB6BHHshQkgbqVc195j2/0hBEn/fFz8+0ViSG5Gc=";
|
||||
|
||||
preBuild = ''
|
||||
# Patch vite config to not open the browser to visualize plugin composition
|
||||
@ -66,7 +66,7 @@ rustPlatform.buildRustPackage {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"chromiumoxide-0.5.7" = "sha256-GHrm5u8FtXRUjSRGMU4PNU6AJZ5W2KcgfZY1c/CBVYA=";
|
||||
"enrichment-0.1.0" = "sha256-FDPSCBkx+DPeWwTBz9+ORcbbiSBC2a8tJaay9Pxwz4w=";
|
||||
"enrichment-0.1.0" = "sha256-Ui4rsvmemOF00E4yBRFRS2gw9qliDrNEVQu5fvIpahA=";
|
||||
};
|
||||
};
|
||||
|
||||
@ -105,6 +105,7 @@ rustPlatform.buildRustPackage {
|
||||
# requires network access or filesystem mutations
|
||||
checkFlags = [
|
||||
"--skip handler::http::auth::tests::test_validate"
|
||||
"--skip handler::http::router::tests::test_get_proxy_routes"
|
||||
"--skip handler::http::router::ui::tests::test_index_not_ok"
|
||||
"--skip handler::http::router::ui::tests::test_index_ok"
|
||||
"--skip handler::http::request::search::saved_view::tests::test_create_view_post"
|
||||
@ -120,6 +121,7 @@ rustPlatform.buildRustPackage {
|
||||
"--skip service::db::compact::files::tests::test_compact_files"
|
||||
"--skip service::db::user::tests::test_user"
|
||||
"--skip service::ingestion::grpc::tests::test_get_val"
|
||||
"--skip service::metadata::trace_list_index::tests::test_write"
|
||||
"--skip service::organization::tests::test_organization"
|
||||
"--skip service::search::sql::tests::test_sql_full"
|
||||
"--skip service::triggers::tests::test_triggers"
|
||||
|
@ -16,18 +16,18 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ibmcloud-cli";
|
||||
version = "2.17.0";
|
||||
version = "2.27.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.clis.cloud.ibm.com/ibm-cloud-cli/${finalAttrs.version}/binaries/IBM_Cloud_CLI_${finalAttrs.version}_${platform}.tgz";
|
||||
sha256 = {
|
||||
"x86_64-darwin" = "18f0dylgwwn9p1jmchqhq061s435n85qr2872i532whbrziwwjf3";
|
||||
"aarch64-darwin" = "1rid6rv601z4ayd3yi5srqbfn5bspypxarikvm563ygxawh1bxyi";
|
||||
"x86_64-linux" = "0ry8ix5id2zk04w9d9581g127f9jpj7bwg3x0pk3n9yfwn61g96d";
|
||||
"aarch64-linux" = "0s5jaqhyl234670q1mg89in2g5b9w3gzvnzl8qmlmgqkaxvzxj94";
|
||||
"i686-linux" = "0iw8y7iy9yx7y8v8b2wfl24f2rv9r20yj7l4sislxspfyvqv54p2";
|
||||
"powerpc64le-linux" = "19ac0na163l9h7ygbf3jwwv7zf0wagqvn6kcdh871c690i86wg9z";
|
||||
"s390x-linux" = "1zvy28jpxijzgdbr9q4rfyx6mk295mqp4nk8z299nm9ryk4q81lv";
|
||||
"x86_64-darwin" = "0af5f110e094e7bf710c86d1e35af23ebbbc9ad8a4baf2a67895354b415618f6";
|
||||
"aarch64-darwin" = "1175977597102282cf7c1fd017ec4bdbc041ce367360204852d0798846cd21e4";
|
||||
"x86_64-linux" = "3c024bcb27519c8ed916ebc0266248249c127bbe93c343807e07d707cf159bb1";
|
||||
"aarch64-linux" = "bd2a6a3c4428061f17ac8b801b27d9700bf333284294e2834c34b4237f530256";
|
||||
"i686-linux" = "40dc32b2a76541847fd55b5b587105c90956468baf14016e4628bb8a2a3d73fa";
|
||||
"powerpc64le-linux" = "e758a60d7de32f4dfc8c944edb8e45bbed41de2fcb1e12bcf6b4e2b35d09f9d5";
|
||||
"s390x-linux" = "dbee26a3c4be2dcaad28b110e309283c141d55ac923b9d0420ac62b25c8eb9c0";
|
||||
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
};
|
||||
|
||||
|
@ -10,11 +10,13 @@
|
||||
, makeDesktopItem
|
||||
, makeWrapper
|
||||
, nftables
|
||||
, nss
|
||||
, openssl_3_2
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cloudflare-warp";
|
||||
version = "2024.4.133";
|
||||
version = "2024.6.497";
|
||||
|
||||
suffix = {
|
||||
aarch64-linux = "arm64";
|
||||
@ -22,10 +24,10 @@ stdenv.mkDerivation rec {
|
||||
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://pkg.cloudflareclient.com/pool/jammy/main/c/cloudflare-warp/cloudflare-warp_${version}-1_${suffix}.deb";
|
||||
url = "https://pkg.cloudflareclient.com/pool/noble/main/c/cloudflare-warp/cloudflare-warp_${version}-1_${suffix}.deb";
|
||||
hash = {
|
||||
aarch64-linux = "sha256-qua+aL4+yvpTBGCVUS1rzJX1KZ3DeaW9Bce9lYWvWOM=";
|
||||
x86_64-linux = "sha256-xZhyYDMjcv8SLfYwclvWBqPDETbeaxiA6jFCg3Nv5gc=";
|
||||
aarch64-linux = "sha256-j0D1VcPCJpp0yoK6GjuKKwTVNEqKgr9+6X1AfBbsXAg=";
|
||||
x86_64-linux = "sha256-y+1TQ/QzzjkorSscB2+QBYR81IowKWcgSoUm1Nz9Gts=";
|
||||
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
};
|
||||
|
||||
@ -40,6 +42,8 @@ stdenv.mkDerivation rec {
|
||||
dbus
|
||||
gtk3
|
||||
libpcap
|
||||
openssl_3_2
|
||||
nss
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
|
@ -1,4 +1,11 @@
|
||||
{ lib, stdenv, buildGoModule, fetchFromGitHub, AppKit }:
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
installShellFiles,
|
||||
AppKit,
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "saml2aws";
|
||||
@ -13,19 +20,29 @@ buildGoModule rec {
|
||||
|
||||
vendorHash = "sha256-gtl8T8wXnpLgDZc6qSgFKpA+XbcLNHf20ieBkyNdE+s=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
buildInputs = lib.optionals stdenv.isDarwin [ AppKit ];
|
||||
|
||||
subPackages = [ "." "cmd/saml2aws" ];
|
||||
subPackages = [
|
||||
"."
|
||||
"cmd/saml2aws"
|
||||
];
|
||||
|
||||
ldflags = [
|
||||
"-X main.Version=${version}"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
||||
installShellCompletion --cmd saml2aws \
|
||||
--bash <($out/bin/saml2aws --completion-script-bash) \
|
||||
--zsh <($out/bin/saml2aws --completion-script-zsh)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "CLI tool which enables you to login and retrieve AWS temporary credentials using a SAML IDP";
|
||||
mainProgram = "saml2aws";
|
||||
homepage = "https://github.com/Versent/saml2aws";
|
||||
license = licenses.mit;
|
||||
homepage = "https://github.com/Versent/saml2aws";
|
||||
license = licenses.mit;
|
||||
maintainers = [ lib.maintainers.pmyjavec ];
|
||||
};
|
||||
}
|
||||
|
@ -14,11 +14,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "crowdin-cli";
|
||||
version = "4.1.1";
|
||||
version = "4.1.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/crowdin/${pname}/releases/download/${version}/${pname}.zip";
|
||||
hash = "sha256-EpRGEn+cteFt4tn70bycIrIIjk+ZUO2n5SK14Hc2Qq0=";
|
||||
hash = "sha256-D0wx570pU1FuyoQ62ZPN1v9jC9tRrJuuQet8D8w2v+M=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles makeWrapper unzip ];
|
||||
|
@ -16616,7 +16616,11 @@ with pkgs;
|
||||
zuo = callPackage ../development/interpreters/zuo { };
|
||||
|
||||
### LUA interpreters
|
||||
emilua = callPackage ../development/interpreters/emilua { };
|
||||
emiluaPlugins = recurseIntoAttrs
|
||||
(callPackage ./emilua-plugins.nix {}
|
||||
(callPackage ../development/interpreters/emilua { }));
|
||||
|
||||
inherit (emiluaPlugins) emilua;
|
||||
|
||||
luaInterpreters = callPackage ./../development/interpreters/lua-5 { };
|
||||
inherit (luaInterpreters) lua5_1 lua5_2 lua5_2_compat lua5_3 lua5_3_compat lua5_4 lua5_4_compat luajit_2_1 luajit_2_0 luajit_openresty;
|
||||
@ -31996,8 +32000,6 @@ with pkgs;
|
||||
|
||||
musescore = qt6.callPackage ../applications/audio/musescore { };
|
||||
|
||||
music-player = callPackage ../applications/audio/music-player { };
|
||||
|
||||
mmh = callPackage ../applications/networking/mailreaders/mmh { };
|
||||
mutt = callPackage ../applications/networking/mailreaders/mutt { };
|
||||
|
||||
|
12
pkgs/top-level/emilua-plugins.nix
Normal file
12
pkgs/top-level/emilua-plugins.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
lib,
|
||||
newScope,
|
||||
pkgs,
|
||||
config,
|
||||
}:
|
||||
|
||||
emilua:
|
||||
(lib.makeScope newScope (self: {
|
||||
inherit emilua;
|
||||
beast = self.callPackage ../development/emilua-plugins/beast { };
|
||||
}))
|
Loading…
Reference in New Issue
Block a user