Compare commits
1
Commits
main
..
a621ecbbe9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a621ecbbe9
|
+49
-28
@@ -1,7 +1,28 @@
|
||||
{
|
||||
"VRCNext": {
|
||||
"cargoLock": null,
|
||||
"date": null,
|
||||
"extract": null,
|
||||
"name": "VRCNext",
|
||||
"passthru": null,
|
||||
"pinned": false,
|
||||
"src": {
|
||||
"deepClone": false,
|
||||
"fetchSubmodules": false,
|
||||
"leaveDotGit": false,
|
||||
"name": null,
|
||||
"owner": "shinyflvre",
|
||||
"repo": "VRCNext",
|
||||
"rev": "v2026.40.6",
|
||||
"sha256": "sha256-qJdYFj1hBLVeDmQcUcbteKJIALMDEP1Tk77ds5tP0T8=",
|
||||
"sparseCheckout": [],
|
||||
"type": "github"
|
||||
},
|
||||
"version": "v2026.40.6"
|
||||
},
|
||||
"ath-tools": {
|
||||
"cargoLock": null,
|
||||
"date": "2026-08-05",
|
||||
"date": "2026-07-16",
|
||||
"extract": null,
|
||||
"name": "ath-tools",
|
||||
"passthru": null,
|
||||
@@ -11,17 +32,17 @@
|
||||
"fetchSubmodules": false,
|
||||
"leaveDotGit": false,
|
||||
"name": null,
|
||||
"rev": "6df4dae3e2f5e4c2903f3cafd40996fc1b3639ce",
|
||||
"sha256": "sha256-FFoV58YVK7KGBw/JPFWcvGkJOONrfKCvACprYCzIKeg=",
|
||||
"rev": "54367caab6cb4e6cd21310c64feadbacc8c9b574",
|
||||
"sha256": "sha256-iH9RKyhGj1mIycK//8KJqbkO1ZbQaAdWgsQNd7AfWMc=",
|
||||
"sparseCheckout": [],
|
||||
"type": "git",
|
||||
"url": "https://github.com/qca/qca-swiss-army-knife.git"
|
||||
},
|
||||
"version": "6df4dae3e2f5e4c2903f3cafd40996fc1b3639ce"
|
||||
"version": "54367caab6cb4e6cd21310c64feadbacc8c9b574"
|
||||
},
|
||||
"base24-schemes": {
|
||||
"cargoLock": null,
|
||||
"date": "2026-08-09",
|
||||
"date": "2026-07-14",
|
||||
"extract": null,
|
||||
"name": "base24-schemes",
|
||||
"passthru": null,
|
||||
@@ -31,13 +52,13 @@
|
||||
"fetchSubmodules": false,
|
||||
"leaveDotGit": false,
|
||||
"name": null,
|
||||
"rev": "fdca32a0d14ec80ad83a78a9ccb85592ca6cb9e1",
|
||||
"sha256": "sha256-LMHxSQJIv6QJJkO9W7sAkJujlwusFf9/Ct0SYJ6GyHQ=",
|
||||
"rev": "010185535336bf94d815b900cd63bb0fc204e216",
|
||||
"sha256": "sha256-F+YMLW07YdZ4vUPt9h/gNKDU4GlXYYfSWjhY7M2RqRs=",
|
||||
"sparseCheckout": [],
|
||||
"type": "git",
|
||||
"url": "https://github.com/tinted-theming/schemes.git"
|
||||
},
|
||||
"version": "fdca32a0d14ec80ad83a78a9ccb85592ca6cb9e1"
|
||||
"version": "010185535336bf94d815b900cd63bb0fc204e216"
|
||||
},
|
||||
"claude-code-acp": {
|
||||
"cargoLock": null,
|
||||
@@ -53,12 +74,12 @@
|
||||
"name": null,
|
||||
"owner": "zed-industries",
|
||||
"repo": "claude-code-acp",
|
||||
"rev": "v0.69.0",
|
||||
"sha256": "sha256-x0k+5EhGx3y6Xd2rswTWMfYb0ZAYf5D+DaACr14uNMM=",
|
||||
"rev": "v0.60.0",
|
||||
"sha256": "sha256-idyZcd8KD+bhAlKqqaTS6X8DcNjAzluln8it1V0vyUk=",
|
||||
"sparseCheckout": [],
|
||||
"type": "github"
|
||||
},
|
||||
"version": "v0.69.0"
|
||||
"version": "v0.60.0"
|
||||
},
|
||||
"claude-sync": {
|
||||
"cargoLock": null,
|
||||
@@ -74,12 +95,12 @@
|
||||
"name": null,
|
||||
"owner": "tawanorg",
|
||||
"repo": "claude-sync",
|
||||
"rev": "v1.17.1",
|
||||
"sha256": "sha256-hsIski28Dr3k3+/0/+k6XySAeoQ6e5nTeLAGRtZ2kAQ=",
|
||||
"rev": "v1.14.6",
|
||||
"sha256": "sha256-i/V6Yf6f21KBriSpHG/9BZoUWTg5gHNisxQoUbuhBY0=",
|
||||
"sparseCheckout": [],
|
||||
"type": "github"
|
||||
},
|
||||
"version": "v1.17.1"
|
||||
"version": "v1.14.6"
|
||||
},
|
||||
"flightcore": {
|
||||
"cargoLock": null,
|
||||
@@ -116,21 +137,21 @@
|
||||
"name": null,
|
||||
"owner": "Slush97",
|
||||
"repo": "grimoire",
|
||||
"rev": "v1.27.1",
|
||||
"sha256": "sha256-vf0PU1NfDLv7MxQeJzggSEGlmUose3rdonJhxccuriQ=",
|
||||
"rev": "v1.26.0",
|
||||
"sha256": "sha256-E357W9BTeODo4ckuWs4HfGTFYAk7kh/7OmvpShArIFs=",
|
||||
"sparseCheckout": [],
|
||||
"type": "github"
|
||||
},
|
||||
"version": "v1.27.1"
|
||||
"version": "v1.26.0"
|
||||
},
|
||||
"neovide": {
|
||||
"cargoLock": {
|
||||
"Cargo.lock": [
|
||||
"sha256-t_ayXFn2hXrSgAGZKn6FpZLbrMXekXL_+xhOXdsZvKU=/Cargo.lock",
|
||||
"sha256-3Bi1GKVRu90eQa5e8bhgOW1T92INWbQNCARJKeBM6Y8=/Cargo.lock",
|
||||
{}
|
||||
]
|
||||
},
|
||||
"date": "2026-08-12",
|
||||
"date": "2026-07-18",
|
||||
"extract": null,
|
||||
"name": "neovide",
|
||||
"passthru": null,
|
||||
@@ -140,13 +161,13 @@
|
||||
"fetchSubmodules": false,
|
||||
"leaveDotGit": false,
|
||||
"name": null,
|
||||
"rev": "ba8c41f423c9a8f0cb14ff19baa6f538c95e52bf",
|
||||
"sha256": "sha256-t/ayXFn2hXrSgAGZKn6FpZLbrMXekXL/+xhOXdsZvKU=",
|
||||
"rev": "9477f53a9c5821bec8eb4488dee89842f96f5bd3",
|
||||
"sha256": "sha256-3Bi1GKVRu90eQa5e8bhgOW1T92INWbQNCARJKeBM6Y8=",
|
||||
"sparseCheckout": [],
|
||||
"type": "git",
|
||||
"url": "https://github.com/neovide/neovide.git"
|
||||
},
|
||||
"version": "ba8c41f423c9a8f0cb14ff19baa6f538c95e52bf"
|
||||
"version": "9477f53a9c5821bec8eb4488dee89842f96f5bd3"
|
||||
},
|
||||
"qebspil": {
|
||||
"cargoLock": null,
|
||||
@@ -182,12 +203,12 @@
|
||||
"name": null,
|
||||
"owner": "radareorg",
|
||||
"repo": "r2ghidra",
|
||||
"rev": "6.2.0",
|
||||
"sha256": "sha256-+iHJpArFu1txVQ5chpg9/aBXDGoDAPlCRqRbgTSnCiQ=",
|
||||
"rev": "6.1.8",
|
||||
"sha256": "sha256-f5iohbAUYG524KJqSvL3PQCFnLQc055Ta02G3CRSO9I=",
|
||||
"sparseCheckout": [],
|
||||
"type": "github"
|
||||
},
|
||||
"version": "6.2.0"
|
||||
"version": "6.1.8"
|
||||
},
|
||||
"radare2-mcp": {
|
||||
"cargoLock": null,
|
||||
@@ -203,12 +224,12 @@
|
||||
"name": null,
|
||||
"owner": "radareorg",
|
||||
"repo": "radare2-mcp",
|
||||
"rev": "1.8.6",
|
||||
"sha256": "sha256-btJfvsIC/xRfdQYJL0FYqUHsvP7zn/2EnUzLesWZPK4=",
|
||||
"rev": "1.8.4",
|
||||
"sha256": "sha256-EbkEbTATKxBOKWVqKkHp6h/hg4VUW0TsgGxN9TRI+pc=",
|
||||
"sparseCheckout": [],
|
||||
"type": "github"
|
||||
},
|
||||
"version": "1.8.6"
|
||||
"version": "1.8.4"
|
||||
},
|
||||
"slbounce": {
|
||||
"cargoLock": null,
|
||||
|
||||
+65
-29
@@ -6,54 +6,65 @@
|
||||
dockerTools,
|
||||
}:
|
||||
{
|
||||
ath-tools = {
|
||||
VRCNext = {
|
||||
pname = "VRCNext";
|
||||
version = "v2026.40.6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "shinyflvre";
|
||||
repo = "VRCNext";
|
||||
rev = "v2026.40.6";
|
||||
fetchSubmodules = false;
|
||||
sha256 = "sha256-qJdYFj1hBLVeDmQcUcbteKJIALMDEP1Tk77ds5tP0T8=";
|
||||
};
|
||||
};
|
||||
ath-tools = {
|
||||
pname = "ath-tools";
|
||||
version = "6df4dae3e2f5e4c2903f3cafd40996fc1b3639ce";
|
||||
version = "54367caab6cb4e6cd21310c64feadbacc8c9b574";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/qca/qca-swiss-army-knife.git";
|
||||
rev = "6df4dae3e2f5e4c2903f3cafd40996fc1b3639ce";
|
||||
rev = "54367caab6cb4e6cd21310c64feadbacc8c9b574";
|
||||
fetchSubmodules = false;
|
||||
deepClone = false;
|
||||
leaveDotGit = false;
|
||||
sparseCheckout = [ ];
|
||||
sha256 = "sha256-FFoV58YVK7KGBw/JPFWcvGkJOONrfKCvACprYCzIKeg=";
|
||||
sha256 = "sha256-iH9RKyhGj1mIycK//8KJqbkO1ZbQaAdWgsQNd7AfWMc=";
|
||||
};
|
||||
date = "2026-08-05";
|
||||
date = "2026-07-16";
|
||||
};
|
||||
base24-schemes = {
|
||||
pname = "base24-schemes";
|
||||
version = "fdca32a0d14ec80ad83a78a9ccb85592ca6cb9e1";
|
||||
version = "010185535336bf94d815b900cd63bb0fc204e216";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/tinted-theming/schemes.git";
|
||||
rev = "fdca32a0d14ec80ad83a78a9ccb85592ca6cb9e1";
|
||||
rev = "010185535336bf94d815b900cd63bb0fc204e216";
|
||||
fetchSubmodules = false;
|
||||
deepClone = false;
|
||||
leaveDotGit = false;
|
||||
sparseCheckout = [ ];
|
||||
sha256 = "sha256-LMHxSQJIv6QJJkO9W7sAkJujlwusFf9/Ct0SYJ6GyHQ=";
|
||||
sha256 = "sha256-F+YMLW07YdZ4vUPt9h/gNKDU4GlXYYfSWjhY7M2RqRs=";
|
||||
};
|
||||
date = "2026-08-09";
|
||||
date = "2026-07-14";
|
||||
};
|
||||
claude-code-acp = {
|
||||
pname = "claude-code-acp";
|
||||
version = "v0.69.0";
|
||||
version = "v0.60.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "zed-industries";
|
||||
repo = "claude-code-acp";
|
||||
rev = "v0.69.0";
|
||||
rev = "v0.60.0";
|
||||
fetchSubmodules = false;
|
||||
sha256 = "sha256-x0k+5EhGx3y6Xd2rswTWMfYb0ZAYf5D+DaACr14uNMM=";
|
||||
sha256 = "sha256-idyZcd8KD+bhAlKqqaTS6X8DcNjAzluln8it1V0vyUk=";
|
||||
};
|
||||
};
|
||||
claude-sync = {
|
||||
pname = "claude-sync";
|
||||
version = "v1.17.1";
|
||||
version = "v1.14.6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tawanorg";
|
||||
repo = "claude-sync";
|
||||
rev = "v1.17.1";
|
||||
rev = "v1.14.6";
|
||||
fetchSubmodules = false;
|
||||
sha256 = "sha256-hsIski28Dr3k3+/0/+k6XySAeoQ6e5nTeLAGRtZ2kAQ=";
|
||||
sha256 = "sha256-i/V6Yf6f21KBriSpHG/9BZoUWTg5gHNisxQoUbuhBY0=";
|
||||
};
|
||||
};
|
||||
flightcore = {
|
||||
@@ -69,55 +80,80 @@
|
||||
};
|
||||
grimoire = {
|
||||
pname = "grimoire";
|
||||
version = "v1.27.1";
|
||||
version = "v1.26.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Slush97";
|
||||
repo = "grimoire";
|
||||
rev = "v1.27.1";
|
||||
rev = "v1.26.0";
|
||||
fetchSubmodules = false;
|
||||
sha256 = "sha256-vf0PU1NfDLv7MxQeJzggSEGlmUose3rdonJhxccuriQ=";
|
||||
sha256 = "sha256-E357W9BTeODo4ckuWs4HfGTFYAk7kh/7OmvpShArIFs=";
|
||||
};
|
||||
};
|
||||
neovide = {
|
||||
pname = "neovide";
|
||||
version = "ba8c41f423c9a8f0cb14ff19baa6f538c95e52bf";
|
||||
version = "9477f53a9c5821bec8eb4488dee89842f96f5bd3";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/neovide/neovide.git";
|
||||
rev = "ba8c41f423c9a8f0cb14ff19baa6f538c95e52bf";
|
||||
rev = "9477f53a9c5821bec8eb4488dee89842f96f5bd3";
|
||||
fetchSubmodules = false;
|
||||
deepClone = false;
|
||||
leaveDotGit = false;
|
||||
sparseCheckout = [ ];
|
||||
sha256 = "sha256-t/ayXFn2hXrSgAGZKn6FpZLbrMXekXL/+xhOXdsZvKU=";
|
||||
sha256 = "sha256-3Bi1GKVRu90eQa5e8bhgOW1T92INWbQNCARJKeBM6Y8=";
|
||||
};
|
||||
cargoLock."Cargo.lock" = {
|
||||
lockFile = ./. + "/sha256-t_ayXFn2hXrSgAGZKn6FpZLbrMXekXL_+xhOXdsZvKU=/Cargo.lock";
|
||||
lockFile = ./. + "/sha256-3Bi1GKVRu90eQa5e8bhgOW1T92INWbQNCARJKeBM6Y8=/Cargo.lock";
|
||||
outputHashes = {
|
||||
|
||||
};
|
||||
};
|
||||
date = "2026-08-12";
|
||||
date = "2026-07-18";
|
||||
};
|
||||
qebspil = {
|
||||
pname = "qebspil";
|
||||
version = "8e4d9e676a3b3afe136cda9b953a2139ff1a32d0";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/stephan-gh/qebspil.git";
|
||||
rev = "8e4d9e676a3b3afe136cda9b953a2139ff1a32d0";
|
||||
fetchSubmodules = true;
|
||||
deepClone = false;
|
||||
leaveDotGit = false;
|
||||
sparseCheckout = [ ];
|
||||
sha256 = "sha256-kWUXzeYWNxGgmjt/p9yozrWc5ouUs0XXBRfiFMlu+QQ=";
|
||||
};
|
||||
date = "2025-10-25";
|
||||
};
|
||||
radare2-ghidra = {
|
||||
pname = "radare2-ghidra";
|
||||
version = "6.2.0";
|
||||
version = "6.1.8";
|
||||
src = fetchFromGitHub {
|
||||
owner = "radareorg";
|
||||
repo = "r2ghidra";
|
||||
rev = "6.2.0";
|
||||
rev = "6.1.8";
|
||||
fetchSubmodules = false;
|
||||
sha256 = "sha256-+iHJpArFu1txVQ5chpg9/aBXDGoDAPlCRqRbgTSnCiQ=";
|
||||
sha256 = "sha256-f5iohbAUYG524KJqSvL3PQCFnLQc055Ta02G3CRSO9I=";
|
||||
};
|
||||
};
|
||||
radare2-mcp = {
|
||||
pname = "radare2-mcp";
|
||||
version = "1.8.6";
|
||||
version = "1.8.4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "radareorg";
|
||||
repo = "radare2-mcp";
|
||||
rev = "1.8.6";
|
||||
rev = "1.8.4";
|
||||
fetchSubmodules = false;
|
||||
sha256 = "sha256-btJfvsIC/xRfdQYJL0FYqUHsvP7zn/2EnUzLesWZPK4=";
|
||||
sha256 = "sha256-EbkEbTATKxBOKWVqKkHp6h/hg4VUW0TsgGxN9TRI+pc=";
|
||||
};
|
||||
};
|
||||
slbounce = {
|
||||
pname = "slbounce";
|
||||
version = "v5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "TravMurav";
|
||||
repo = "slbounce";
|
||||
rev = "v5";
|
||||
fetchSubmodules = false;
|
||||
sha256 = "sha256-w+0SKR0A/hcFU6iFEOgyG+vWwgAWF8h9D0/X7GSFm7w=";
|
||||
};
|
||||
};
|
||||
vpkmerge = {
|
||||
|
||||
@@ -18,10 +18,19 @@ fetch.github = "radareorg/radare2-mcp"
|
||||
src.github = "radareorg/r2ghidra"
|
||||
fetch.github = "radareorg/r2ghidra"
|
||||
|
||||
[slbounce]
|
||||
src.github = "TravMurav/slbounce"
|
||||
fetch.github = "TravMurav/slbounce"
|
||||
|
||||
[base24-schemes]
|
||||
src.git = "https://github.com/tinted-theming/schemes.git"
|
||||
fetch.git = "https://github.com/tinted-theming/schemes.git"
|
||||
|
||||
[qebspil]
|
||||
src.git = "https://github.com/stephan-gh/qebspil.git"
|
||||
fetch.git = "https://github.com/stephan-gh/qebspil.git"
|
||||
git.fetchSubmodules = true
|
||||
|
||||
[ath-tools]
|
||||
src.git = "https://github.com/qca/qca-swiss-army-knife.git"
|
||||
fetch.git = "https://github.com/qca/qca-swiss-army-knife.git"
|
||||
@@ -40,3 +49,7 @@ fetch.github = "Slush97/grimoire"
|
||||
src.github = "Slush97/vpkmerge"
|
||||
fetch.github = "Slush97/vpkmerge"
|
||||
cargo_lock = ["Cargo.lock"]
|
||||
|
||||
[VRCNext]
|
||||
src.github = "shinyflvre/VRCNext"
|
||||
fetch.github = "shinyflvre/VRCNext"
|
||||
|
||||
@@ -15,8 +15,9 @@
|
||||
callPackage,
|
||||
makeDesktopItem,
|
||||
copyDesktopItems,
|
||||
}: let
|
||||
sources = callPackage ../../../../_sources/generated.nix {};
|
||||
}:
|
||||
let
|
||||
sources = callPackage ../../../../_sources/generated.nix { };
|
||||
|
||||
src = sources.grimoire.src;
|
||||
version = src.rev;
|
||||
@@ -26,14 +27,14 @@
|
||||
owner = "Slush97";
|
||||
repo = "grimoire-social";
|
||||
rev = "main";
|
||||
hash = "sha256-AR2rTNDuge19t+VAqL/I6dmB8f5niIqINmNnRL70k94=";
|
||||
hash = "sha256-f+wUZOR7dqigxd/IZtay1BrLS5rcSnaDage3NXxqsPE=";
|
||||
};
|
||||
|
||||
pnpmDeps = pnpm.fetchDeps {
|
||||
pname = "grimoire";
|
||||
inherit version src;
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-7Lh4Y3sr50tIO7vsVwfJNC2zKyiqMz6EO81egS/DC2k=";
|
||||
hash = "sha256-Mqvvemc3oDCiuY/UnDOc73P+dLqMEFnwQotodVhrPao=";
|
||||
# hash = lib.fakeHash;
|
||||
};
|
||||
|
||||
@@ -41,107 +42,107 @@
|
||||
name = "grimoire";
|
||||
exec = "grimoire %u";
|
||||
desktopName = "Grimoire";
|
||||
categories = ["Utility"];
|
||||
mimeTypes = ["x-scheme-handler/grimoire"];
|
||||
categories = [ "Utility" ];
|
||||
mimeTypes = [ "x-scheme-handler/grimoire" ];
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "grimoire";
|
||||
inherit version src;
|
||||
stdenv.mkDerivation {
|
||||
pname = "grimoire";
|
||||
inherit version src;
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs_22
|
||||
pnpm
|
||||
pnpm.configHook
|
||||
python3
|
||||
gcc
|
||||
gnumake
|
||||
pkg-config
|
||||
makeWrapper
|
||||
electron_41
|
||||
copyDesktopItems
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
nodejs_22
|
||||
pnpm
|
||||
pnpm.configHook
|
||||
python3
|
||||
gcc
|
||||
gnumake
|
||||
pkg-config
|
||||
makeWrapper
|
||||
electron_41
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
desktopItems = [desktopItem];
|
||||
desktopItems = [ desktopItem ];
|
||||
|
||||
buildInputs = [
|
||||
sqlite
|
||||
];
|
||||
buildInputs = [
|
||||
sqlite
|
||||
];
|
||||
|
||||
inherit pnpmDeps;
|
||||
inherit pnpmDeps;
|
||||
|
||||
env = {
|
||||
GRIMOIRE_SOCIAL_BASE_URL = "https://grimoire-social.slusheliott.workers.dev";
|
||||
# electron-builder must not try to fetch an Electron binary over the
|
||||
# network; we hand it the Nix one via --config.electronDist below.
|
||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
};
|
||||
env = {
|
||||
GRIMOIRE_SOCIAL_BASE_URL = "https://grimoire-social.slusheliott.workers.dev";
|
||||
# electron-builder must not try to fetch an Electron binary over the
|
||||
# network; we hand it the Nix one via --config.electronDist below.
|
||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
cp -r ${grimoire-social-src} ../grimoire-social
|
||||
chmod -R u+w ../grimoire-social
|
||||
postPatch = ''
|
||||
cp -r ${grimoire-social-src} ../grimoire-social
|
||||
chmod -R u+w ../grimoire-social
|
||||
|
||||
mkdir -p resources/vpkmerge
|
||||
cp ${vpkmerge}/bin/vpkmerge resources/vpkmerge/vpkmerge-linux-x86_64
|
||||
chmod +x resources/vpkmerge/vpkmerge-linux-x86_64
|
||||
'';
|
||||
mkdir -p resources/vpkmerge
|
||||
cp ${vpkmerge}/bin/vpkmerge resources/vpkmerge/vpkmerge-linux-x86_64
|
||||
chmod +x resources/vpkmerge/vpkmerge-linux-x86_64
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
mkdir -p ../grimoire-social/node_modules
|
||||
ln -sfn "$(realpath node_modules/zod)" ../grimoire-social/node_modules/zod
|
||||
mkdir -p ../grimoire-social/node_modules
|
||||
ln -sfn "$(realpath node_modules/zod)" ../grimoire-social/node_modules/zod
|
||||
|
||||
# Rebuild the better-sqlite3 native addon against the Electron ABI. We do
|
||||
# this ourselves (and disable electron-builder's own rebuild below) so no
|
||||
# network fetch of Electron headers is needed inside the sandbox.
|
||||
(
|
||||
cd node_modules/better-sqlite3
|
||||
patch -p1 < ${./patches/better-sqlite3-thistogetthis.patch}
|
||||
HOME="$TMPDIR" node \
|
||||
"${nodejs_22}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" \
|
||||
rebuild \
|
||||
--nodedir="${electron_41.headers}"
|
||||
)
|
||||
# Rebuild the better-sqlite3 native addon against the Electron ABI. We do
|
||||
# this ourselves (and disable electron-builder's own rebuild below) so no
|
||||
# network fetch of Electron headers is needed inside the sandbox.
|
||||
(
|
||||
cd node_modules/better-sqlite3
|
||||
patch -p1 < ${./patches/better-sqlite3-thistogetthis.patch}
|
||||
HOME="$TMPDIR" node \
|
||||
"${nodejs_22}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" \
|
||||
rebuild \
|
||||
--nodedir="${electron_41.headers}"
|
||||
)
|
||||
|
||||
# Package the app the same way upstream CI does (release.yml):
|
||||
# `electron-vite build && electron-builder`. We stop at the unpacked
|
||||
# `--dir` output instead of building AppImage/deb installers, then wrap
|
||||
# the Nix Electron around the produced app.asar. Building through
|
||||
# electron-builder (rather than launching Electron on the raw dist/)
|
||||
# makes `app.isPackaged` true, which is what disables the dev-only
|
||||
# DevTools auto-open and the dev vpkmerge lookup path.
|
||||
export HOME="$TMPDIR"
|
||||
pnpm exec electron-vite build
|
||||
pnpm exec electron-builder --linux dir \
|
||||
--config.npmRebuild=false \
|
||||
--config.electronDist=${electron_41.dist} \
|
||||
--config.electronVersion=${electron_41.version}
|
||||
# Package the app the same way upstream CI does (release.yml):
|
||||
# `electron-vite build && electron-builder`. We stop at the unpacked
|
||||
# `--dir` output instead of building AppImage/deb installers, then wrap
|
||||
# the Nix Electron around the produced app.asar. Building through
|
||||
# electron-builder (rather than launching Electron on the raw dist/)
|
||||
# makes `app.isPackaged` true, which is what disables the dev-only
|
||||
# DevTools auto-open and the dev vpkmerge lookup path.
|
||||
export HOME="$TMPDIR"
|
||||
pnpm exec electron-vite build
|
||||
pnpm exec electron-builder --linux dir \
|
||||
--config.npmRebuild=false \
|
||||
--config.electronDist=${electron_41.dist} \
|
||||
--config.electronVersion=${electron_41.version}
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib/grimoire
|
||||
# electron-builder emits the packaged app (app.asar, app.asar.unpacked,
|
||||
# and extraResources such as vpkmerge) under release/linux-unpacked/resources.
|
||||
cp -r release/linux-unpacked/resources $out/lib/grimoire/resources
|
||||
mkdir -p $out/lib/grimoire
|
||||
# electron-builder emits the packaged app (app.asar, app.asar.unpacked,
|
||||
# and extraResources such as vpkmerge) under release/linux-unpacked/resources.
|
||||
cp -r release/linux-unpacked/resources $out/lib/grimoire/resources
|
||||
|
||||
# Launch the Nix Electron against the packaged asar. process.resourcesPath
|
||||
# resolves to the directory holding app.asar, so the bundled vpkmerge at
|
||||
# resources/vpkmerge/ is found at runtime.
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${electron_41}/bin/electron $out/bin/grimoire \
|
||||
--add-flags "$out/lib/grimoire/resources/app.asar" \
|
||||
--set NODE_ENV production
|
||||
# Launch the Nix Electron against the packaged asar. process.resourcesPath
|
||||
# resolves to the directory holding app.asar, so the bundled vpkmerge at
|
||||
# resources/vpkmerge/ is found at runtime.
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${electron_41}/bin/electron $out/bin/grimoire \
|
||||
--add-flags "$out/lib/grimoire/resources/app.asar" \
|
||||
--set NODE_ENV production
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Grimoire — Electron-based mod manager";
|
||||
platforms = ["x86_64-linux"];
|
||||
};
|
||||
}
|
||||
meta = {
|
||||
description = "Grimoire — Electron-based mod manager";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
in
|
||||
rustPlatform.buildRustPackage.override {stdenv = clangStdenv;} (finalAttrs: {
|
||||
pname = "neovide";
|
||||
version = "nightly-${src.rev}";
|
||||
version = src.rev;
|
||||
src = src;
|
||||
|
||||
cargoLock = sources.neovide.cargoLock."Cargo.lock";
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
lib,
|
||||
callPackage,
|
||||
stdenv,
|
||||
gnumake,
|
||||
dtc,
|
||||
glibc,
|
||||
}:
|
||||
|
||||
let
|
||||
sources = callPackage ../../../../_sources/generated.nix { };
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "qebspil";
|
||||
version = "unstable-${sources.qebspil.date}";
|
||||
|
||||
inherit (sources.qebspil) src;
|
||||
|
||||
nativeBuildInputs = [
|
||||
gnumake
|
||||
dtc
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
# Create a symlink to glibc's elf.h for gnu-efi
|
||||
mkdir -p external/gnu-efi/inc/sys
|
||||
ln -sf ${glibc.dev}/include/elf.h external/gnu-efi/inc/sys/elf.h
|
||||
|
||||
# Set up build environment
|
||||
export SRCDIR=$PWD
|
||||
export OUTDIR=$PWD/out
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"QEBSPIL_ALWAYS_START=1"
|
||||
"CROSS_COMPILE="
|
||||
"ARCH=aarch64"
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
# Install the EFI binary
|
||||
mkdir -p $out/share/efi
|
||||
cp out/qebspilaa64.efi $out/share/efi/
|
||||
|
||||
# Also create a symlink in a more standard location
|
||||
mkdir -p $out/lib/systemd/boot/efi
|
||||
ln -s $out/share/efi/qebspilaa64.efi $out/lib/systemd/boot/efi/qebspilaa64.efi
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "UEFI boot driver to start co-processors on Qualcomm platforms late during the boot process";
|
||||
homepage = "https://github.com/stephan-gh/qebspil";
|
||||
license = licenses.gpl2Only;
|
||||
platforms = [ "aarch64-linux" ];
|
||||
mainProgram = "qebspilaa64.efi";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
{
|
||||
lib,
|
||||
callPackage,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
fetchgit,
|
||||
fetchFromGitHub,
|
||||
buildPackages,
|
||||
dtc,
|
||||
}:
|
||||
|
||||
let
|
||||
sources = callPackage ../../../../_sources/generated.nix { };
|
||||
|
||||
aarch64-system-register-xmls = fetchzip {
|
||||
url = "https://developer.arm.com/-/media/developer/products/architecture/armv8-a-architecture/2020-06/SysReg_xml_v86A-2020-06.tar.gz";
|
||||
stripRoot = false;
|
||||
hash = "sha256-wpWMIdR4v4sGZ0FEn/j5+AzkpPFOF7lUKIFpVl5AMEE=";
|
||||
};
|
||||
|
||||
arm64-sysreg-lib = stdenv.mkDerivation {
|
||||
name = "arm64-sysreg-lib";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ashwio";
|
||||
repo = "arm64-sysreg-lib";
|
||||
sparseCheckout = [ "/" ];
|
||||
rev = "d421e249a026f6f14653cb6f9c4edd8c5d898595";
|
||||
hash = "sha256-vUuV8eddYAdwXGQe+L7lKiAwyqHPYmiOdVFKvwCMWkQ=";
|
||||
};
|
||||
nativeBuildInputs = [
|
||||
(buildPackages.python3.withPackages (ps: [ ps.beautifulsoup4 ]))
|
||||
];
|
||||
buildPhase = ''
|
||||
python ./run-build.py ${aarch64-system-register-xmls}/SysReg_xml_v86A-2020-06
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p $out/include
|
||||
cp -r include $out/
|
||||
'';
|
||||
};
|
||||
|
||||
gnu-efi = fetchFromGitHub {
|
||||
owner = "ncroxon";
|
||||
repo = "gnu-efi";
|
||||
rev = "3.0.15";
|
||||
hash = "sha256-flQJIRPKd0geQRAtJSu4vravJG0lTB6BfeIqpUM5P2I=";
|
||||
};
|
||||
|
||||
dtc-src = fetchgit {
|
||||
url = "https://git.kernel.org/pub/scm/utils/dtc/dtc.git";
|
||||
rev = "v1.7.2";
|
||||
hash = "sha256-KZCzrvdWd6zfQHppjyp4XzqNCfH2UnuRneu+BNIRVAY=";
|
||||
};
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "slbounce";
|
||||
version = lib.removePrefix "v" sources.slbounce.version;
|
||||
|
||||
inherit (sources.slbounce) src;
|
||||
|
||||
nativeBuildInputs = [ dtc ];
|
||||
|
||||
postPatch = ''
|
||||
rmdir external/{arm64-sysreg-lib,dtc}
|
||||
ln -s ${arm64-sysreg-lib} external/arm64-sysreg-lib
|
||||
ln -s ${dtc-src} external/dtc
|
||||
|
||||
cp -r ${gnu-efi}/* external/gnu-efi/
|
||||
chmod -R u+w external/gnu-efi
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
|
||||
# Force EL2 switch regardless of DTB detection
|
||||
# Without this, slbounce checks for 'dtbhack-el2-overlay' in DTB
|
||||
"SLBOUNCE_ALWAYS_SWITCH=1"
|
||||
# Enable debug output
|
||||
"DEBUG=1"
|
||||
"all"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/slbounce
|
||||
cp out/*.efi $out/share/slbounce/
|
||||
|
||||
# Also build and install DTB overlays
|
||||
make dtbs || true
|
||||
mkdir -p $out/share/slbounce/dtbo
|
||||
cp out/dtbo/*.dtbo $out/share/slbounce/dtbo/ 2>/dev/null || true
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "EL2 (hypervisor mode) enabler for Qualcomm Windows-on-ARM devices";
|
||||
homepage = "https://github.com/TravMurav/slbounce";
|
||||
license = licenses.gpl2Only;
|
||||
platforms = [ "aarch64-linux" ];
|
||||
};
|
||||
})
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
stdenv,
|
||||
p7zip,
|
||||
curl,
|
||||
jq,
|
||||
cacert,
|
||||
}:
|
||||
|
||||
let
|
||||
version = "22621.6060";
|
||||
# Fixed-Output Derivation to fetch winre.wim from Microsoft CDN via UUPDump API
|
||||
winre-wim = stdenvNoCC.mkDerivation {
|
||||
pname = "winre-wim";
|
||||
inherit version;
|
||||
nativeBuildInputs = [
|
||||
curl
|
||||
jq
|
||||
cacert
|
||||
];
|
||||
|
||||
UUP_ID = "b90029a9-23b4-4558-9687-2142f79e5ae2";
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
echo "Querying UUPDump API for winre.wim..."
|
||||
WINRE_URL=$(curl -s "https://api.uupdump.net/get.php?id=$UUP_ID" | jq -r '.response.files["winre.wim"].url')
|
||||
|
||||
if [[ -z "$WINRE_URL" || "$WINRE_URL" == "null" ]]; then
|
||||
echo "ERROR: Failed to get winre.wim URL from UUPDump API"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Downloading winre.wim from: $WINRE_URL"
|
||||
curl -L -o winre.wim "$WINRE_URL"
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
cp winre.wim "$out"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
outputHashMode = "flat";
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = "sha256-jEBM0ZXEqe7HEjbpQdWNumWH5/KmCuGnIcIlFGN3W6g=";
|
||||
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tcblaunch";
|
||||
inherit version;
|
||||
src = winre-wim;
|
||||
|
||||
nativeBuildInputs = [ p7zip ];
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
echo "Extracting tcblaunch.exe from winre.wim..."
|
||||
mkdir -p extracted
|
||||
7z e "$src" -oextracted 'Windows/System32/tcblaunch.exe' -y
|
||||
if [[ ! -f "extracted/tcblaunch.exe" ]]; then
|
||||
echo "ERROR: tcblaunch.exe was not extracted"
|
||||
exit 1
|
||||
fi
|
||||
ls -lh extracted/tcblaunch.exe
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p "$out/share/tcblaunch"
|
||||
cp extracted/tcblaunch.exe "$out/share/tcblaunch/tcblaunch.exe"
|
||||
chmod 644 "$out/share/tcblaunch/tcblaunch.exe"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Microsoft tcblaunch.exe for Qualcomm Secure Launch (required by slbounce)";
|
||||
homepage = "https://github.com/TravMurav/slbounce";
|
||||
license = lib.licenses.unfree;
|
||||
platforms = [
|
||||
"aarch64-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
[
|
||||
{
|
||||
"pname": "JsonSubTypes",
|
||||
"version": "2.0.1",
|
||||
"hash": "sha256-1Sh5MkvJfOVGo83D5EJJzmJYu5LFSOMAFwQCNRNvFc4="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Data.Sqlite",
|
||||
"version": "9.0.0",
|
||||
"hash": "sha256-SGUV8GJAY8shZwHs4SpfrjsVh5foE0E9qGjO3FiSqFQ="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Data.Sqlite.Core",
|
||||
"version": "9.0.0",
|
||||
"hash": "sha256-zxVvQSpfECqsjawJVIUBuE82pG5mN2F7iPCRLoK7Q4c="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
|
||||
"version": "8.0.0",
|
||||
"hash": "sha256-75KzEGWjbRELczJpCiJub+ltNUMMbz5A/1KQU+5dgP8="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Logging.Abstractions",
|
||||
"version": "8.0.0",
|
||||
"hash": "sha256-Jmddjeg8U5S+iBTwRlVAVLeIHxc4yrrNgqVMOB7EjM4="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Win32.SystemEvents",
|
||||
"version": "9.0.0",
|
||||
"hash": "sha256-sN16l3f89HTDlf80BRZQIIbYg33B4Z0BRtyjDcNf6IU="
|
||||
},
|
||||
{
|
||||
"pname": "NativeFileDialogSharp",
|
||||
"version": "0.5.0",
|
||||
"hash": "sha256-9K+nc25ZNcAPrTFokWwPXAjuF0shVVhxWMNhZZSabdU="
|
||||
},
|
||||
{
|
||||
"pname": "Newtonsoft.Json",
|
||||
"version": "13.0.3",
|
||||
"hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
|
||||
},
|
||||
{
|
||||
"pname": "NuGet.Versioning",
|
||||
"version": "6.12.1",
|
||||
"hash": "sha256-f/ejCuzCAwKs4N4Ec6yf2RovrhBT0nj0hRDP+03/Iy4="
|
||||
},
|
||||
{
|
||||
"pname": "Otp.NET",
|
||||
"version": "1.4.0",
|
||||
"hash": "sha256-J0tWqpW5lSZjcV1hV2sAuAQwLR1VK37rEmcLzlUGXC8="
|
||||
},
|
||||
{
|
||||
"pname": "Photino.Native",
|
||||
"version": "4.0.22",
|
||||
"hash": "sha256-owM7RGwFd6X5bw1ttMgaQ6qf+157d2OHv5IJp+VlYXs="
|
||||
},
|
||||
{
|
||||
"pname": "Photino.NET",
|
||||
"version": "4.0.16",
|
||||
"hash": "sha256-cbxDN4nuuwYF4kYoXeZr2HGFwB0GTu8QXrED7Hzz6ps="
|
||||
},
|
||||
{
|
||||
"pname": "Polly",
|
||||
"version": "8.1.0",
|
||||
"hash": "sha256-l8ZqXsPCYnOErJqrh/RP4kbNgno7y3V01NR7awy93Cs="
|
||||
},
|
||||
{
|
||||
"pname": "Polly.Core",
|
||||
"version": "8.1.0",
|
||||
"hash": "sha256-5fhL27CDKUgWZLMSoGsQuT6d3IzJOqx5rNg+EQZ5f28="
|
||||
},
|
||||
{
|
||||
"pname": "Rsync.Delta",
|
||||
"version": "1.0.1",
|
||||
"hash": "sha256-DVB8028j+XWMWZ6YASiXCY+6l9bb7v7zHGFg+ipBcZo="
|
||||
},
|
||||
{
|
||||
"pname": "SkiaSharp",
|
||||
"version": "2.88.8",
|
||||
"hash": "sha256-rD5gc4SnlRTXwz367uHm8XG5eAIQpZloGqLRGnvNu0A="
|
||||
},
|
||||
{
|
||||
"pname": "SkiaSharp.NativeAssets.Linux.NoDependencies",
|
||||
"version": "2.88.8",
|
||||
"hash": "sha256-1A00g0D1BhXU6l1iDHlaC30iWJpiGh9Z5JRpFtfohUY="
|
||||
},
|
||||
{
|
||||
"pname": "SkiaSharp.NativeAssets.macOS",
|
||||
"version": "2.88.8",
|
||||
"hash": "sha256-CdcrzQHwCcmOCPtS8EGtwsKsgdljnH41sFytW7N9PmI="
|
||||
},
|
||||
{
|
||||
"pname": "SkiaSharp.NativeAssets.Win32",
|
||||
"version": "2.88.8",
|
||||
"hash": "sha256-b8Vb94rNjwPKSJDQgZ0Xv2dWV7gMVFl5GwTK/QiZPPM="
|
||||
},
|
||||
{
|
||||
"pname": "SQLitePCLRaw.bundle_e_sqlite3",
|
||||
"version": "2.1.10",
|
||||
"hash": "sha256-kZIWjH/TVTXRIsHPZSl7zoC4KAMBMWmgFYGLrQ15Occ="
|
||||
},
|
||||
{
|
||||
"pname": "SQLitePCLRaw.core",
|
||||
"version": "2.1.10",
|
||||
"hash": "sha256-gpZcYwiJVCVwCyJu0R6hYxyMB39VhJDmYh9LxcIVAA8="
|
||||
},
|
||||
{
|
||||
"pname": "SQLitePCLRaw.lib.e_sqlite3",
|
||||
"version": "2.1.10",
|
||||
"hash": "sha256-m2v2RQWol+1MNGZsx+G2N++T9BNtQGLLHXUjcwkdCnc="
|
||||
},
|
||||
{
|
||||
"pname": "SQLitePCLRaw.provider.e_sqlite3",
|
||||
"version": "2.1.10",
|
||||
"hash": "sha256-MLs3jiETLZ7k/TgkHynZegCWuAbgHaDQKTPB0iNv7Fg="
|
||||
},
|
||||
{
|
||||
"pname": "System.Drawing.Common",
|
||||
"version": "9.0.0",
|
||||
"hash": "sha256-fOGssTUHAkZtPMVCvxzcB39CSXRI+Gj4QFLWkR15iz0="
|
||||
},
|
||||
{
|
||||
"pname": "System.IO.Pipelines",
|
||||
"version": "4.7.0",
|
||||
"hash": "sha256-5FWgqBisFxCWetwUCQi6nNMK7+JWM+GhAuN+uARdprM="
|
||||
},
|
||||
{
|
||||
"pname": "System.Memory",
|
||||
"version": "4.5.3",
|
||||
"hash": "sha256-Cvl7RbRbRu9qKzeRBWjavUkseT2jhZBUWV1SPipUWFk="
|
||||
},
|
||||
{
|
||||
"pname": "Velopack",
|
||||
"version": "0.0.915",
|
||||
"hash": "sha256-L31qPk7/MLexF+5FP4gdNfwAWB6kNlvMFL2nfkQBSQU="
|
||||
},
|
||||
{
|
||||
"pname": "VRChat.API",
|
||||
"version": "2.20.7",
|
||||
"hash": "sha256-iyMZzsXzNBFTZTsZbHCrzxWyc0m3k0SxU4P/b2VQYfE="
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildDotnetModule,
|
||||
dotnetCorePackages,
|
||||
wrapGAppsHook3,
|
||||
copyDesktopItems,
|
||||
gdk-pixbuf,
|
||||
webkitgtk_4_1,
|
||||
gtk3,
|
||||
glib,
|
||||
libnotify,
|
||||
fontconfig,
|
||||
gst_all_1,
|
||||
zenity,
|
||||
makeDesktopItem,
|
||||
callPackage,
|
||||
}:
|
||||
let
|
||||
sources = callPackage ../../../../_sources/generated.nix { };
|
||||
src = sources.VRCNext.src;
|
||||
# Version from the nvfetcher tag (v2026.40.6); AppInfo.cs may lag the tag.
|
||||
version = lib.removePrefix "v" sources.VRCNext.version;
|
||||
in
|
||||
buildDotnetModule rec {
|
||||
pname = "vrcnext";
|
||||
inherit version src;
|
||||
|
||||
projectFile = "VRCNext.csproj";
|
||||
nugetDeps = ./deps.json;
|
||||
|
||||
# This csproj picks its TFM via `$(RuntimeIdentifier.StartsWith('linux'))`.
|
||||
# `dotnet restore --runtime` does NOT set RuntimeIdentifier during project
|
||||
# evaluation (only build/publish do), so pass it as a property or restore
|
||||
# targets net9.0-windows and fails with NETSDK1100.
|
||||
dotnetRestoreFlags = [
|
||||
"-p:RuntimeIdentifier=${dotnetCorePackages.systemToDotnetRid stdenv.hostPlatform.system}"
|
||||
];
|
||||
|
||||
dotnet-sdk = dotnetCorePackages.sdk_9_0;
|
||||
|
||||
executables = [ "VRCNext" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
wrapGAppsHook3
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
# gdk-pixbuf so wrapGAppsHook3 emits GDK_PIXBUF_MODULE_FILE (GTK file
|
||||
# dialogs via libnfd.so need icon loaders).
|
||||
buildInputs = [ gdk-pixbuf ];
|
||||
|
||||
# buildDotnetModule already wraps with makeWrapper (dotnetFixupPhase);
|
||||
# fold the gapps args in there instead of double-wrapping.
|
||||
dontWrapGApps = true;
|
||||
|
||||
# Prebuilt native libs (Photino.Native.so, libnfd.so, libSkiaSharp.so)
|
||||
# have no RUNPATH; these get suffixed onto LD_LIBRARY_PATH.
|
||||
runtimeDeps = [
|
||||
webkitgtk_4_1
|
||||
gtk3
|
||||
glib
|
||||
gdk-pixbuf
|
||||
libnotify
|
||||
fontconfig
|
||||
gst_all_1.gstreamer
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gst-libav
|
||||
];
|
||||
|
||||
makeWrapperArgs = [
|
||||
# WebKitGTK's web process dies on Wayland with "Error 71 (Protocol
|
||||
# error) dispatching to Wayland display" when the DMA-BUF renderer
|
||||
# handshake fails (well-known NixOS issue); disable it.
|
||||
"--set"
|
||||
"WEBKIT_DISABLE_DMABUF_RENDERER"
|
||||
"1"
|
||||
# WebKitGTK discovers gstreamer plugins via the plugin path, not LD_LIBRARY_PATH.
|
||||
"--prefix"
|
||||
"GST_PLUGIN_SYSTEM_PATH"
|
||||
":"
|
||||
(lib.makeSearchPath "lib/gstreamer-1.0" [
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gst-libav
|
||||
])
|
||||
# The app shells out to zenity (dialogs) and notify-send (libnotify).
|
||||
"--prefix"
|
||||
"PATH"
|
||||
":"
|
||||
(lib.makeBinPath [
|
||||
zenity
|
||||
libnotify
|
||||
])
|
||||
];
|
||||
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
install -Dm644 "$src/frontend/logo.png" "$out/share/icons/hicolor/512x512/apps/vrcnext.png"
|
||||
'';
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "vrcnext";
|
||||
exec = "VRCNext %u";
|
||||
icon = "vrcnext";
|
||||
comment = "VRChat companion app";
|
||||
desktopName = "VRCNext";
|
||||
categories = [
|
||||
"Game"
|
||||
"Utility"
|
||||
"Network"
|
||||
];
|
||||
mimeTypes = [ "x-scheme-handler/vrcn" ];
|
||||
startupWMClass = "VRCNext";
|
||||
})
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "VRChat launcher and management system";
|
||||
homepage = "https://github.com/shinyflvre/VRCNext";
|
||||
license = {
|
||||
fullName = "VRCNext Non-Commercial Open Source License (VNCOL) 1.0";
|
||||
shortName = "vncol";
|
||||
url = "https://github.com/shinyflvre/VRCNext/blob/master/LICENSE";
|
||||
free = false;
|
||||
};
|
||||
mainProgram = "VRCNext";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
msitools,
|
||||
tree,
|
||||
fetchurl,
|
||||
lib,
|
||||
stdenv,
|
||||
...
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (
|
||||
let
|
||||
fw_files = [
|
||||
"adsp_dtbs.elf"
|
||||
"adspr.jsn"
|
||||
"adsps.jsn"
|
||||
"adspua.jsn"
|
||||
"battmgr.jsn"
|
||||
"cdsp_dtbs.elf"
|
||||
"cdspr.jsn"
|
||||
"qcadsp8380.mbn"
|
||||
"qccdsp8380.mbn"
|
||||
"qcdxkmsuc8380.mbn"
|
||||
"bdwlan01.e0b"
|
||||
];
|
||||
|
||||
in
|
||||
|
||||
rec {
|
||||
name = "x1e80100-firmware";
|
||||
version = "26100_26.053.36539.0";
|
||||
src = fetchurl {
|
||||
# https://www.microsoft.com/en-us/download/details.aspx?id=106120
|
||||
url = "https://download.microsoft.com/download/b7ca2c3f-d320-4795-be0f-529a0117abb4/SurfaceLaptop7_ARM_Win11_${version}.msi";
|
||||
hash = "sha256-ZrbhrOfl8BvFks1MmueKowu7DgSrV0kc0D7CqqbhIps=";
|
||||
};
|
||||
nativeBuildInputs = [
|
||||
msitools
|
||||
tree
|
||||
];
|
||||
unpackPhase = ''
|
||||
msiextract -C . "$src"
|
||||
'';
|
||||
buildPhase = ''
|
||||
mkdir -p "$out/lib/firmware/qcom/x1e80100/microsoft/Romulus"
|
||||
for file in ${lib.concatStringsSep " " fw_files}; do
|
||||
echo -e "\tSearching for $file..."
|
||||
fw_path=$(find . -type f -name "$file" -print | head -n 1)
|
||||
if [[ -n "$fw_path" ]]; then
|
||||
cp -v "$fw_path" "$out/lib/firmware/qcom/x1e80100/microsoft/Romulus/"
|
||||
else
|
||||
echo "Error: $file not found!"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
cp "$out/lib/firmware/qcom/x1e80100/microsoft/Romulus/qcdxkmsuc8380.mbn" "$out/lib/firmware/qcom/x1e80100/microsoft/qcdxkmsuc8380.mbn"
|
||||
'';
|
||||
meta = {
|
||||
platforms = [ "aarch64-linux" ];
|
||||
};
|
||||
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,12 @@
|
||||
--- a/board-2.json 2025-07-24 19:46:44.712406478 +0000
|
||||
+++ b/board-2.json 2025-07-24 19:46:42.655405480 +0000
|
||||
@@ -27,7 +27,8 @@
|
||||
},
|
||||
{
|
||||
"names": [
|
||||
- "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=3378,qmi-chip-id=2,qmi-board-id=255"
|
||||
+ "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=3378,qmi-chip-id=2,qmi-board-id=255",
|
||||
+ "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=1107,qmi-chip-id=2,qmi-board-id=255"
|
||||
],
|
||||
"data": "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=3378,qmi-chip-id=2,qmi-board-id=255.bin"
|
||||
},
|
||||
@@ -0,0 +1,11 @@
|
||||
{ ath-tools, linux-firmware }:
|
||||
linux-firmware.overrideAttrs (final: {
|
||||
postInstall = ''
|
||||
mkdir temp
|
||||
cd temp || exit
|
||||
${ath-tools.ath12k-tools}/bin/ath12k-bdencoder -e $out/lib/firmware/ath12k/WCN7850/hw2.0/board-2.bin
|
||||
patch -p1 < ${./firmware.patch}
|
||||
${ath-tools.ath12k-tools}/bin/ath12k-bdencoder -c board-2.json
|
||||
cp board-2.bin $out/lib/firmware/ath12k/WCN7850/hw2.0/board-2.bin
|
||||
'';
|
||||
})
|
||||
Reference in New Issue
Block a user