Compare commits
15 Commits
b4ffc4ec0b
...
master
Author | SHA1 | Date | |
---|---|---|---|
14d8f23d54
|
|||
47bcec6b0d
|
|||
fb15ef954b
|
|||
6a8016dd66
|
|||
8a110a8f30
|
|||
c71208da11
|
|||
c1ded6c3ce
|
|||
68b09a34d2
|
|||
c57bbad8e5
|
|||
2aa6dd2aa7
|
|||
532427c07f
|
|||
3fb607752b
|
|||
e0c0ae3ee7
|
|||
fed69bbc80
|
|||
ac95c15e34
|
38
flake.lock
generated
38
flake.lock
generated
@ -119,11 +119,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750040002,
|
||||
"narHash": "sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84=",
|
||||
"lastModified": 1750680230,
|
||||
"narHash": "sha256-kD88T/NqmcgfOBFAwphN30ccaUdj6K6+LG0XdM2w2LA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "7f1857b31522062a6a00f88cbccf86b43acceed1",
|
||||
"rev": "8fd2d6c75009ac75f9a6fb18c33a239806778d01",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -475,11 +475,11 @@
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750525408,
|
||||
"narHash": "sha256-a6SN50G3JLZV7OQoQL9O7vNFVO9uR9/2arJcqUpI4EU=",
|
||||
"lastModified": 1750681989,
|
||||
"narHash": "sha256-uxIwiV1p2SVNIoP+oD025lZKfq4zNn7CmdaYVoskqnQ=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "8b1d5560cf1ca2c4c2624914de284d315502a092",
|
||||
"rev": "cf7e3aa448f8c9e0d9e8f407e6ed730da55acc69",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -505,11 +505,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750503578,
|
||||
"narHash": "sha256-/qnR7/GvGP1cGtOOm4OGJRtkVejn75/jsvJpiqE1ZDk=",
|
||||
"lastModified": 1750682153,
|
||||
"narHash": "sha256-ZA00aPfBtrSTz6UsZ6uoBfy2UYi49A9XpxxyKUjbQ2A=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"rev": "8b4405ab46cafc471d5b09ff7258676dc9aaca59",
|
||||
"rev": "132e610b6526820fa1bcf33588be11538fb92ca7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -823,11 +823,11 @@
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1750365781,
|
||||
"narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=",
|
||||
"lastModified": 1750506804,
|
||||
"narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54",
|
||||
"rev": "4206c4cb56751df534751b058295ea61357bbbaa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -962,11 +962,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1749636823,
|
||||
"narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=",
|
||||
"lastModified": 1750684550,
|
||||
"narHash": "sha256-uLtw0iF9mQ94L831NOlQLPX9wm0qzd5yim3rcwACEoM=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "623c56286de5a3193aa38891a6991b28f9bab056",
|
||||
"rev": "fae816c55a75675f30d18c9cbdecc13b970d95d4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -1000,11 +1000,11 @@
|
||||
"secrets": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1748905535,
|
||||
"narHash": "sha256-lRWIpo//dTT7kqtiuaeAITbL535eHImpcpcIfAg2wxs=",
|
||||
"lastModified": 1750611706,
|
||||
"narHash": "sha256-bKhQ+lAaNtfpTUR3fysCdbnMfYT5PJ4diiM9EkHMdHI=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "c6f23eddf543b4de1c8c596e51be1d5ba1137673",
|
||||
"revCount": 32,
|
||||
"rev": "ae16fda90546dde6c014a4f91a5443bce4dce234",
|
||||
"revCount": 34,
|
||||
"type": "git",
|
||||
"url": "ssh://git@git.vimium.com/jordan/nix-secrets.git"
|
||||
},
|
||||
|
@ -8,12 +8,12 @@ Media and public file server.
|
||||
* Chipset - AMD B550
|
||||
* Memory - 64 GB DDR4
|
||||
* Motherboard - ASRock B550M Pro4
|
||||
* Case - Fractal Design Node 804
|
||||
* Case - JMCD-12S4
|
||||
|
||||
### Disks
|
||||
Device | Partitions _(filesystem, size, usage)_
|
||||
--- | ---
|
||||
Samsung 980 Evo | `/dev/nvme0n1p1` (EFI, 512 MiB, NixOS Boot) <br> `/dev/nvme0n1p2` (ZFS `rpool`, 200 GiB, NixOS Root)
|
||||
Samsung 970 Evo Plus | `/dev/nvme0n1p1` (EFI, 512 MiB, NixOS Boot) <br> `/dev/nvme0n1p2` (ZFS `rpool`, 200 GiB, NixOS Root)
|
||||
|
||||
#### ZFS datasets
|
||||
```
|
||||
|
@ -31,4 +31,8 @@
|
||||
};
|
||||
environmentFile = config.age.secrets."files/services/open-webui/envfile".path;
|
||||
};
|
||||
|
||||
modules.services.borgmatic.directories = [
|
||||
"/var/lib/private/open-webui"
|
||||
];
|
||||
}
|
||||
|
@ -8,6 +8,7 @@
|
||||
./ai.nix
|
||||
./grafana.nix
|
||||
./jellyfin.nix
|
||||
./jellysearch.nix
|
||||
./nginx.nix
|
||||
./prometheus.nix
|
||||
./tunnel.nix
|
||||
@ -19,7 +20,10 @@
|
||||
boot = {
|
||||
loader.systemd-boot.enable = true;
|
||||
loader.efi.canTouchEfiVariables = true;
|
||||
zfs.extraPools = [ "library" ];
|
||||
zfs.extraPools = [
|
||||
"downloads"
|
||||
"library"
|
||||
];
|
||||
};
|
||||
|
||||
networking = {
|
||||
|
58
hosts/library/jellysearch.nix
Normal file
58
hosts/library/jellysearch.nix
Normal file
@ -0,0 +1,58 @@
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
age.secrets."files/services/meilisearch/envfile" = {
|
||||
file = "${inputs.secrets}/files/services/meilisearch/envfile.age";
|
||||
};
|
||||
|
||||
services.meilisearch = {
|
||||
enable = true;
|
||||
package = pkgs.meilisearch;
|
||||
masterKeyEnvironmentFile = config.age.secrets."files/services/meilisearch/envfile".path;
|
||||
};
|
||||
|
||||
users.users.jellysearch = {
|
||||
group = "jellysearch";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.jellysearch = { };
|
||||
|
||||
systemd.services.jellysearch = {
|
||||
enable = true;
|
||||
description = "JellySearch";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
serviceConfig = {
|
||||
Restart = "on-failure";
|
||||
ExecStart = "${pkgs.jellysearch}/bin/jellysearch";
|
||||
StateDirectory = "jellysearch";
|
||||
StateDirectoryMode = "0750";
|
||||
WorkingDirectory = "/var/lib/jellysearch";
|
||||
EnvironmentFile = config.age.secrets."files/services/meilisearch/envfile".path;
|
||||
|
||||
NoNewPrivileges = true;
|
||||
SystemCallArchitectures = "native";
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
ProtectHostname = true;
|
||||
LockPersonality = true;
|
||||
PrivateDevices = true;
|
||||
PrivateUsers = true;
|
||||
RemoveIPC = true;
|
||||
};
|
||||
environment = {
|
||||
DOTNET_ENVIRONMENT = "Production";
|
||||
INDEX_CRON = "0 0 0/2 ? * * *";
|
||||
JELLYFIN_URL = "http://localhost:8096";
|
||||
JELLYFIN_CONFIG_DIR = "${toString config.services.jellyfin.dataDir}";
|
||||
MEILI_URL = "http://localhost:${toString config.services.meilisearch.listenPort}";
|
||||
};
|
||||
};
|
||||
}
|
@ -63,9 +63,17 @@
|
||||
}
|
||||
];
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:8096";
|
||||
extraConfig =
|
||||
proxyConfig
|
||||
''
|
||||
# Proxy JellySearch first
|
||||
if ($arg_searchTerm) {
|
||||
proxy_pass http://localhost:5000;
|
||||
break;
|
||||
}
|
||||
|
||||
proxy_pass http://localhost:8096;
|
||||
''
|
||||
+ proxyConfig
|
||||
+ ''
|
||||
proxy_set_header Range $http_range;
|
||||
proxy_set_header If-Range $http_if_range;
|
||||
|
@ -9,6 +9,7 @@
|
||||
inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
||||
./hardware-configuration.nix
|
||||
./home-assistant
|
||||
./snapcast.nix
|
||||
../server.nix
|
||||
];
|
||||
|
||||
|
@ -63,7 +63,6 @@
|
||||
};
|
||||
media_player = [ ];
|
||||
mobile_app = { };
|
||||
onkyo = { };
|
||||
open_meteo = { };
|
||||
recorder = {
|
||||
purge_keep_days = 365;
|
||||
|
43
hosts/pi/snapcast.nix
Normal file
43
hosts/pi/snapcast.nix
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
# Put all sinks in pipewire group
|
||||
services.pipewire.systemWide = true;
|
||||
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
publish = {
|
||||
enable = true;
|
||||
domain = true;
|
||||
addresses = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.snapserver = {
|
||||
enable = true;
|
||||
streams = {
|
||||
default = {
|
||||
type = "file";
|
||||
location = "/var/lib/snapserver/test.wav";
|
||||
sampleFormat = "44100:16:2";
|
||||
codec = "flac";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.snapclient = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "pipewire.service" ];
|
||||
requires = [ "pipewire.service" ];
|
||||
description = "Snapcast client";
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.snapcast}/bin/snapclient -h 127.0.0.1 --player pulse --mixer hardware";
|
||||
DynamicUser = true;
|
||||
SupplementaryGroups = [ "pipewire" ];
|
||||
};
|
||||
};
|
||||
}
|
@ -58,6 +58,14 @@
|
||||
};
|
||||
};
|
||||
|
||||
modules.services.borgmatic = {
|
||||
enable = true;
|
||||
directories = [
|
||||
"/var/lib/skycam-archiver"
|
||||
];
|
||||
repoPath = "ssh://m94ekv2i@m94ekv2i.repo.borgbase.com/./repo";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
neovim
|
||||
|
@ -136,6 +136,9 @@ in
|
||||
enableACME = true;
|
||||
serverAliases = [ "www.jdholt.com" ];
|
||||
extraConfig = nginxErrorPages + nginxEdgeHeaders + nginxStrictHeaders;
|
||||
locations."/skycam" = {
|
||||
root = "/var/www/jdholt.com";
|
||||
};
|
||||
locations."/skycam/snapshot.jpg" = {
|
||||
extraConfig = ''
|
||||
set $backend "skycam.mesh.vimium.net:1984";
|
||||
|
172
pkgs/jellysearch/nuget-deps.json
Normal file
172
pkgs/jellysearch/nuget-deps.json
Normal file
@ -0,0 +1,172 @@
|
||||
[
|
||||
{
|
||||
"pname": "MeiliSearch",
|
||||
"version": "0.15.0",
|
||||
"hash": "sha256-MM8Z8xc+AG0m+jNXAHSLhUB2egJC4lI+u6BDTVaOwzg="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.OpenApi",
|
||||
"version": "8.0.4",
|
||||
"hash": "sha256-Y/UnyBlwraJjxDmEO3vsgB63GO1M7OXyIS10vL1Fs5A="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Data.Sqlite",
|
||||
"version": "8.0.6",
|
||||
"hash": "sha256-t1g1cF4T26Np10H7opo/vCMTMNb9SS9pmLA9pSCUBp4="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Data.Sqlite.Core",
|
||||
"version": "8.0.6",
|
||||
"hash": "sha256-MgUBbb0LDM1ixm8pBfBrSTVjNoGFn6NQMD36mirELmo="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.ApiDescription.Server",
|
||||
"version": "6.0.5",
|
||||
"hash": "sha256-RJjBWz+UHxkQE2s7CeGYdTZ218mCufrxl0eBykZdIt4="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Logging.Abstractions",
|
||||
"version": "2.1.1",
|
||||
"hash": "sha256-TzbYgz4EemrYKHMvB9HWDkFmq0BkTetKPUwBpYHk9+k="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.IdentityModel.Abstractions",
|
||||
"version": "7.4.0",
|
||||
"hash": "sha256-rzTsvh5hDX7zk6wYzUKNg7lIQf38G/EeR6qUq/j3Eo0="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.IdentityModel.JsonWebTokens",
|
||||
"version": "7.4.0",
|
||||
"hash": "sha256-IeezkUkScumgLQZqq2Zu4YsyldIUA/XpTeONB2AtYDc="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.IdentityModel.Logging",
|
||||
"version": "7.4.0",
|
||||
"hash": "sha256-rudTpYcSlIlE1OX2LO3Qd6DAisqd5vsuX/Edu7rHIJs="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.IdentityModel.Tokens",
|
||||
"version": "7.4.0",
|
||||
"hash": "sha256-qVqVYxBy5p6Jerd1rfMUgApV7vcH54N4neS2x+N5zRQ="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.OpenApi",
|
||||
"version": "1.2.3",
|
||||
"hash": "sha256-OafkxXKnDmLZo5tjifjycax0n0F/OnWQTEZCntBMYR0="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.OpenApi",
|
||||
"version": "1.4.3",
|
||||
"hash": "sha256-vk47e78OwopXJx2LhDRbKFObqF3GShHfNHR2SzvbQeA="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Win32.SystemEvents",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-N9EVZbl5w1VnMywGXyaVWzT9lh84iaJ3aD48hIBk1zA="
|
||||
},
|
||||
{
|
||||
"pname": "Quartz",
|
||||
"version": "3.10.0",
|
||||
"hash": "sha256-1sb+JKJdS01lScgVjcbDHxbXSpHeMn1Mqg/CQ8r+BKI="
|
||||
},
|
||||
{
|
||||
"pname": "SQLitePCLRaw.bundle_e_sqlite3",
|
||||
"version": "2.1.6",
|
||||
"hash": "sha256-dZD/bZsYXjOu46ZH5Y/wgh0uhHOqIxC+S+0ecKhr718="
|
||||
},
|
||||
{
|
||||
"pname": "SQLitePCLRaw.core",
|
||||
"version": "2.1.6",
|
||||
"hash": "sha256-RxWjm52PdmMV98dgDy0BCpF988+BssRZUgALLv7TH/E="
|
||||
},
|
||||
{
|
||||
"pname": "SQLitePCLRaw.lib.e_sqlite3",
|
||||
"version": "2.1.6",
|
||||
"hash": "sha256-uHt5d+SFUkSd6WD7Tg0J3e8eVoxy/FM/t4PAkc9PJT0="
|
||||
},
|
||||
{
|
||||
"pname": "SQLitePCLRaw.provider.e_sqlite3",
|
||||
"version": "2.1.6",
|
||||
"hash": "sha256-zHc/YZsd72eXlI8ba1tv58HZWUIiyjJaxq2CCP1hQe8="
|
||||
},
|
||||
{
|
||||
"pname": "Swashbuckle.AspNetCore",
|
||||
"version": "6.4.0",
|
||||
"hash": "sha256-czuCv3Os7Oo06m3W+auJjrTGuYT82E+Bi80sJqeVb8o="
|
||||
},
|
||||
{
|
||||
"pname": "Swashbuckle.AspNetCore.Swagger",
|
||||
"version": "6.4.0",
|
||||
"hash": "sha256-1u4A9vzDUJ+wLoxH5yQEVhpOxi+VnAMd64Z18SLqjPE="
|
||||
},
|
||||
{
|
||||
"pname": "Swashbuckle.AspNetCore.SwaggerGen",
|
||||
"version": "6.4.0",
|
||||
"hash": "sha256-Alra5J+i0L/4JoS5pATJexVu8LId8HZcofkx7KiRqMw="
|
||||
},
|
||||
{
|
||||
"pname": "Swashbuckle.AspNetCore.SwaggerUI",
|
||||
"version": "6.4.0",
|
||||
"hash": "sha256-P84wlE4EVruLVGGTUHK29wWYs/BTq/MR5P7PuSBwr+c="
|
||||
},
|
||||
{
|
||||
"pname": "System.Configuration.ConfigurationManager",
|
||||
"version": "6.0.1",
|
||||
"hash": "sha256-U/0HyekAZK5ya2VNfGA1HeuQyJChoaqcoIv57xLpzLQ="
|
||||
},
|
||||
{
|
||||
"pname": "System.Drawing.Common",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-/9EaAbEeOjELRSMZaImS1O8FmUe8j4WuFUw1VOrPyAo="
|
||||
},
|
||||
{
|
||||
"pname": "System.IdentityModel.Tokens.Jwt",
|
||||
"version": "7.4.0",
|
||||
"hash": "sha256-LYvdJPbPuxr8V3FJacStflSf9GVStprl1Wr+dfgqMdw="
|
||||
},
|
||||
{
|
||||
"pname": "System.Memory",
|
||||
"version": "4.5.3",
|
||||
"hash": "sha256-Cvl7RbRbRu9qKzeRBWjavUkseT2jhZBUWV1SPipUWFk="
|
||||
},
|
||||
{
|
||||
"pname": "System.Net.Http.Json",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-R4s4Fb3OTKpg9gXSv+8CQ9gPJPJMmj3/nagzaRndm+g="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime.CompilerServices.Unsafe",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.AccessControl",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-qOyWEBbNr3EjyS+etFG8/zMbuPjA+O+di717JP9Cxyg="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.ProtectedData",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-Wi9I9NbZlpQDXgS7Kl06RIFxY/9674S7hKiYw5EabRY="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Permissions",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-/MMvtFWGN/vOQfjXdOhet1gsnMgh6lh5DCHimVsnVEs="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encodings.Web",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-UemDHGFoQIG7ObQwRluhVf6AgtQikfHEoPLC6gbFyRo="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Json",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-9AE/5ds4DqEfb0l+27fCBTSeYCdRWhxh2Bhg8IKvIuo="
|
||||
},
|
||||
{
|
||||
"pname": "System.Windows.Extensions",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-N+qg1E6FDJ9A9L50wmVt3xPQV8ZxlG1xeXgFuxO+yfM="
|
||||
}
|
||||
]
|
36
pkgs/jellysearch/package.nix
Normal file
36
pkgs/jellysearch/package.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitLab,
|
||||
buildDotnetModule,
|
||||
dotnetCorePackages,
|
||||
}:
|
||||
|
||||
buildDotnetModule rec {
|
||||
pname = "jellysearch";
|
||||
version = "0.0.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "DomiStyle";
|
||||
repo = "JellySearch";
|
||||
rev = "7397e3f8c7daa6f0d30b22dda7c5159a913ca6b8";
|
||||
hash = "sha256-7t0j4S5A9yvRN8zjToMNsxJ72OjU3j++EAqq9CKcPaI=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./patches/Only-listen-on-loopback-interface.patch
|
||||
];
|
||||
|
||||
projectFile = "src/JellySearch/JellySearch.csproj";
|
||||
executables = [ "jellysearch" ];
|
||||
nugetDeps = ./nuget-deps.json;
|
||||
dotnet-sdk = dotnetCorePackages.sdk_8_0;
|
||||
dotnet-runtime = dotnetCorePackages.aspnetcore_8_0;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A fast full-text search proxy for Jellyfin";
|
||||
homepage = "https://gitlab.com/DomiStyle/jellysearch";
|
||||
license = licenses.mit;
|
||||
mainProgram = "JellySearch";
|
||||
platforms = dotnet-runtime.meta.platforms;
|
||||
};
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
From dede2b55ef53028b1347ccb731657a12d7fa3d15 Mon Sep 17 00:00:00 2001
|
||||
From: Jordan Holt <jordan@vimium.com>
|
||||
Date: Sun, 22 Jun 2025 17:16:56 +0100
|
||||
Subject: [PATCH] Only listen on loopback interface
|
||||
|
||||
---
|
||||
src/JellySearch/Program.cs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/JellySearch/Program.cs b/src/JellySearch/Program.cs
|
||||
index a0c6ee1..98798f7 100644
|
||||
--- a/src/JellySearch/Program.cs
|
||||
+++ b/src/JellySearch/Program.cs
|
||||
@@ -6,7 +6,7 @@ using Quartz.Impl;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
-builder.WebHost.UseUrls("http://0.0.0.0:5000"); // Listen on every IP
|
||||
+builder.WebHost.UseUrls("http://127.0.0.1:5000"); // Listen on loopback only
|
||||
|
||||
builder.Services.AddCors(options =>
|
||||
{
|
||||
--
|
||||
2.49.0
|
@ -1,25 +0,0 @@
|
||||
From 18efb9b5c8e562b169425f6ba79977e52e8b91b9 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Sobolev <paveloomm@gmail.com>
|
||||
Date: Sat, 13 Jan 2024 12:49:45 +0000
|
||||
Subject: [PATCH] Ensure the default config file is writable.
|
||||
|
||||
---
|
||||
streamrip/config.py | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/streamrip/config.py b/streamrip/config.py
|
||||
index 7ee2f57..88a5fef 100644
|
||||
--- a/streamrip/config.py
|
||||
+++ b/streamrip/config.py
|
||||
@@ -378,6 +378,9 @@ def set_user_defaults(path: str, /):
|
||||
"""Update the TOML file at the path with user-specific default values."""
|
||||
shutil.copy(BLANK_CONFIG_PATH, path)
|
||||
|
||||
+ # Ensure the default config file is writable
|
||||
+ os.chmod(path, 0o644)
|
||||
+
|
||||
with open(path) as f:
|
||||
toml = parse(f.read())
|
||||
toml["downloads"]["folder"] = DEFAULT_DOWNLOADS_FOLDER # type: ignore
|
||||
--
|
||||
2.42.0
|
@ -1,78 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
python3Packages,
|
||||
fetchFromGitHub,
|
||||
|
||||
ffmpeg,
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication {
|
||||
pname = "streamrip";
|
||||
version = "2.0.7";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nathom";
|
||||
repo = "streamrip";
|
||||
rev = "46b570dbb6f81d604cbaa3bfa379463e0a20a841";
|
||||
hash = "sha256-LD99OjguaBnrQxCwmCeHvmBMq5aOfobwnMd5/aCRZW8=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./ensure-the-default-config-file-is-writable.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = with python3Packages; [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
aiodns
|
||||
aiofiles
|
||||
aiohttp
|
||||
aiolimiter
|
||||
appdirs
|
||||
cleo
|
||||
click-help-colors
|
||||
deezer-py
|
||||
m3u8
|
||||
mutagen
|
||||
pathvalidate
|
||||
pillow
|
||||
pycryptodomex
|
||||
pytest-asyncio
|
||||
pytest-mock
|
||||
rich
|
||||
simple-term-menu
|
||||
tomlkit
|
||||
tqdm
|
||||
];
|
||||
|
||||
nativeCheckInputs = with python3Packages; [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
prePatch = ''
|
||||
sed -i 's#aiofiles = ".*"#aiofiles = "*"#' pyproject.toml
|
||||
sed -i 's#deezer-py = ".*"#deezer-py = "*"#' pyproject.toml
|
||||
sed -i 's#m3u8 = ".*"#m3u8 = "*"#' pyproject.toml
|
||||
sed -i 's#pathvalidate = ".*"#pathvalidate = "*"#' pyproject.toml
|
||||
sed -i 's#Pillow = ".*"#Pillow = "*"#' pyproject.toml
|
||||
sed -i 's#pytest-asyncio = ".*"#pytest-asyncio = "*"#' pyproject.toml
|
||||
sed -i 's#tomlkit = ".*"#tomlkit = "*"#' pyproject.toml
|
||||
|
||||
sed -i 's#"ffmpeg"#"${lib.getBin ffmpeg}/bin/ffmpeg"#g' streamrip/client/downloadable.py
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Scriptable music downloader for Qobuz, Tidal, SoundCloud, and Deezer";
|
||||
homepage = "https://github.com/nathom/streamrip";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ paveloom ];
|
||||
mainProgram = "rip";
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user