-
-
Notifications
You must be signed in to change notification settings - Fork 14.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
21 changed files
with
422 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
{ pkgs, lib, config, utils, ... }: | ||
|
||
with lib; | ||
|
||
let | ||
cfg = config.services.gmediarender; | ||
in | ||
{ | ||
options.services.gmediarender = { | ||
enable = mkEnableOption (mdDoc "the gmediarender DLNA renderer"); | ||
|
||
audioDevice = mkOption { | ||
type = types.nullOr types.str; | ||
default = null; | ||
description = mdDoc '' | ||
The audio device to use. | ||
''; | ||
}; | ||
|
||
audioSink = mkOption { | ||
type = types.nullOr types.str; | ||
default = null; | ||
description = mdDoc '' | ||
The audio sink to use. | ||
''; | ||
}; | ||
|
||
friendlyName = mkOption { | ||
type = types.nullOr types.str; | ||
default = null; | ||
description = mdDoc '' | ||
A "friendly name" for identifying the endpoint. | ||
''; | ||
}; | ||
|
||
initialVolume = mkOption { | ||
type = types.nullOr types.int; | ||
default = 0; | ||
description = mdDoc '' | ||
A default volume attenuation (in dB) for the endpoint. | ||
''; | ||
}; | ||
|
||
package = mkPackageOptionMD pkgs "gmediarender" { | ||
default = "gmrender-resurrect"; | ||
}; | ||
|
||
port = mkOption { | ||
type = types.nullOr types.port; | ||
default = null; | ||
description = mdDoc "Port that will be used to accept client connections."; | ||
}; | ||
|
||
uuid = mkOption { | ||
type = types.nullOr types.str; | ||
default = null; | ||
description = mdDoc '' | ||
A UUID for uniquely identifying the endpoint. If you have | ||
multiple renderers on your network, you MUST set this. | ||
''; | ||
}; | ||
}; | ||
|
||
config = mkIf cfg.enable { | ||
systemd = { | ||
services.gmediarender = { | ||
after = [ "network-online.target" ]; | ||
wantedBy = [ "multi-user.target" ]; | ||
description = "gmediarender server daemon"; | ||
environment = { | ||
XDG_CACHE_HOME = "%t/gmediarender"; | ||
}; | ||
serviceConfig = { | ||
DynamicUser = true; | ||
User = "gmediarender"; | ||
Group = "gmediarender"; | ||
SupplementaryGroups = [ "audio" ]; | ||
ExecStart = | ||
"${cfg.package}/bin/gmediarender " + | ||
optionalString (cfg.audioDevice != null) ("--gstout-audiodevice=${utils.escapeSystemdExecArg cfg.audioDevice} ") + | ||
optionalString (cfg.audioSink != null) ("--gstout-audiosink=${utils.escapeSystemdExecArg cfg.audioSink} ") + | ||
optionalString (cfg.friendlyName != null) ("--friendly-name=${utils.escapeSystemdExecArg cfg.friendlyName} ") + | ||
optionalString (cfg.initialVolume != 0) ("--initial-volume=${toString cfg.initialVolume} ") + | ||
optionalString (cfg.port != null) ("--port=${toString cfg.port} ") + | ||
optionalString (cfg.uuid != null) ("--uuid=${utils.escapeSystemdExecArg cfg.uuid} "); | ||
Restart = "always"; | ||
RuntimeDirectory = "gmediarender"; | ||
|
||
# Security options: | ||
CapabilityBoundingSet = ""; | ||
LockPersonality = true; | ||
MemoryDenyWriteExecute = true; | ||
NoNewPrivileges = true; | ||
# PrivateDevices = true; | ||
PrivateTmp = true; | ||
PrivateUsers = true; | ||
ProcSubset = "pid"; | ||
ProtectClock = true; | ||
ProtectControlGroups = true; | ||
ProtectHome = true; | ||
ProtectHostname = true; | ||
ProtectKernelLogs = true; | ||
ProtectKernelModules = true; | ||
ProtectKernelTunables = true; | ||
ProtectProc = "invisible"; | ||
RestrictNamespaces = true; | ||
RestrictRealtime = true; | ||
RestrictSUIDSGID = true; | ||
SystemCallArchitectures = "native"; | ||
SystemCallFilter = [ "@system-service" "~@privileged" ]; | ||
UMask = 066; | ||
}; | ||
}; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
{ lib | ||
, fetchFromGitHub | ||
, substituteAll | ||
, python3Packages | ||
, chia | ||
, | ||
}: | ||
python3Packages.buildPythonApplication rec { | ||
pname = "chia-dev-tools"; | ||
version = "1.1.4"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "Chia-Network"; | ||
repo = pname; | ||
rev = "v${version}"; | ||
hash = "sha256-lE7FTSDqVS6AstcxZSMdQwgygMvcvh1fqYVTTSSNZpA="; | ||
}; | ||
|
||
patches = [ | ||
(substituteAll { | ||
src = ./fix-paths.patch; | ||
inherit chia; | ||
}) | ||
]; | ||
|
||
postPatch = '' | ||
substituteInPlace setup.py \ | ||
--replace "==" ">=" | ||
''; | ||
|
||
nativeBuildInputs = [ | ||
python3Packages.setuptools-scm | ||
]; | ||
|
||
# give a hint to setuptools-scm on package version | ||
SETUPTOOLS_SCM_PRETEND_VERSION = "v${version}"; | ||
|
||
propagatedBuildInputs = with python3Packages; [ | ||
(toPythonModule chia) | ||
pytimeparse | ||
]; | ||
|
||
checkInputs = with python3Packages; [ | ||
pytestCheckHook | ||
pytest-asyncio | ||
]; | ||
|
||
preCheck = '' | ||
export HOME=$(mktemp -d) | ||
''; | ||
postCheck = "unset HOME"; | ||
|
||
disabledTests = [ | ||
"test_spendbundles" | ||
]; | ||
|
||
meta = with lib; { | ||
homepage = "https://www.chia.net/"; | ||
description = "Utility for developing in the Chia ecosystem: Chialisp functions, object inspection, RPC client and more"; | ||
license = with licenses; [ asl20 ]; | ||
maintainers = teams.chia.members; | ||
}; | ||
} |
13 changes: 13 additions & 0 deletions
13
pkgs/applications/blockchains/chia-dev-tools/fix-paths.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
diff --git a/cdv/cmds/sim_utils.py b/cdv/cmds/sim_utils.py | ||
index e59ba8f..20912ff 100644 | ||
--- a/cdv/cmds/sim_utils.py | ||
+++ b/cdv/cmds/sim_utils.py | ||
@@ -67,7 +67,7 @@ async def start_async(root_path: Path, group: Any, restart: bool) -> None: | ||
|
||
from chia.cmds.start_funcs import async_start | ||
|
||
- sys.argv[0] = str(Path(sys.executable).parent / "chia") # this gives the correct path to the chia executable | ||
+ sys.argv[0] = "@chia@/bin/chia" # this gives the correct path to the chia executable | ||
if root_path.exists(): | ||
config = load_config(root_path, "config.yaml") | ||
await async_start(root_path, config, group, restart) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.