41 Commits

Author SHA1 Message Date
msyds a787aeb2a9 lad: init
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (pull_request) Has been cancelled
2026-06-21 19:27:23 -06:00
msyds 59d3a471cd bdwgc: init
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-05-16 14:12:11 -06:00
msyds 40de554543 ryubing-canary: init
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-04-23 17:05:28 -06:00
msyds e44c957573 progressbar: init
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-04-11 15:40:19 -06:00
msyds 03f6a67a0a fcitx5-toki-pona: use fork w/ icons 2026-03-11 18:34:34 -06:00
msyds 12a5095325 fcitx5-toki-pona: init 2026-03-11 13:43:32 -06:00
msyds 53bf019e26 gf-core: pin compiler version
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-16 20:44:32 -07:00
msyds e190dae46b gftest: init
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-16 02:30:36 -07:00
msyds d3252333eb gfWithPackages: init
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-15 21:01:13 -07:00
msyds 2d0874fd1d gf-rgl: init 2026-02-15 20:45:55 -07:00
msyds 0dd41f4833 gf: rename to gf-core
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-15 20:39:36 -07:00
msyds 319dd9fc0a gf: init
Build and populate cache / tests (sydpkgs, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, sydpkgs) (push) Has been cancelled
2026-02-15 20:32:23 -07:00
msyds 233479ab27 quiver: bump 2026-01-09 09:15:57 -07:00
msyds 7a3eaf6788 feat(syd-plex-latex): cjk 2025-12-28 15:55:38 -07:00
msyds ed4942cd58 fix(syd-plex-latex): oops 2025-12-28 15:34:47 -07:00
msyds 32fe0d26fa feat: overlay 2025-12-28 15:20:50 -07:00
msyds 2c56bb6153 feat(syd-plex-latex): uhh 2025-12-28 15:20:24 -07:00
msyds 7bf331a498 feat(syd-plex-latex): init 2025-12-16 12:43:54 -07:00
msyds b95632af08 feat(iropke-batang): init 2025-12-14 13:06:44 -07:00
msyds 5802980437 fix(quiver): Add meta 2025-09-17 22:08:02 -06:00
msyds c540e0ab83 fix: why was this here 2025-09-17 22:00:30 -06:00
msyds aa06f12b29 feat(quiver): init 2025-09-17 21:41:52 -06:00
msyds c431dbcd7a feat(moresample): init 2025-07-29 06:56:28 -06:00
msyds 1a8091bc17 fix(durdraw): Use durdraw.org as homepage 2025-07-22 15:10:23 -06:00
msyds 9fb0f35d84 fix(ci): use nixpkgs-unstable 2025-07-22 14:57:02 -06:00
msyds 1eadfac548 chore(slippi-launcher): Mark as broken 2025-07-22 14:53:24 -06:00
msyds 7ce5863058 fix(durdraw): withGifExport 2025-07-22 14:52:45 -06:00
msyds c29d6d5b3c merge 2025-07-22 14:36:09 -06:00
Madeleine Sydney Ślaga 9f584e890f Merge pull request #2 from msyds/dependabot/github_actions/cachix/install-nix-action-31
Bump cachix/install-nix-action from 30 to 31
2025-07-02 01:54:58 -06:00
msyds 9e0f705eae slippi-launcher: init 2025-07-02 01:23:03 -06:00
msyds 4183e23bcb slippi-launcher-bin: init
AppImage build
2025-07-02 01:20:58 -06:00
msyds 4e6643fc53 dolphin-mpn: broken??????? 2025-06-26 22:17:03 -06:00
msyds 5507ea916d fix: make venmic reproducible
refactor: venmic -> venmic-server
2025-06-26 22:17:03 -06:00
msyds 296c97ce00 fix: ci 2025-06-26 17:01:01 -06:00
msyds e6d1bd3b64 chore: Bump Nixpkgs 2025-06-21 11:52:01 -06:00
msyds c9b9c00793 dolphin-mpn: fix: Make callPackage-able 2025-06-06 07:03:37 -06:00
msyds cc994b2230 venmic: fix: Install binary 2025-06-06 06:52:20 -06:00
msyds ea8b5c2838 venmic: init 2025-06-06 06:35:09 -06:00
msyds 3b3f00fa6b wii-u-gc-adapter: init 2025-06-05 05:55:35 -06:00
msyds 1390585d71 dolphin-mpn: init 2025-06-05 05:47:19 -06:00
dependabot[bot] 18e6f895e2 Bump cachix/install-nix-action from 30 to 31
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 30 to 31.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Changelog](https://github.com/cachix/install-nix-action/blob/master/RELEASE.md)
- [Commits](https://github.com/cachix/install-nix-action/compare/v30...v31)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-version: '31'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 07:26:15 +00:00
34 changed files with 1958 additions and 24 deletions
+5 -5
View File
@@ -9,7 +9,7 @@ on:
# rebuild everyday at 2:51
# TIP: Choose a random time here so not all repositories are build at once:
# https://www.random.org/clock-times/?num=1&earliest=01%3A00&latest=08%3A00&interval=5&format=html&rnd=new
- cron: '51 2 * * *'
- cron: '55 3 * * *'
workflow_dispatch:
jobs:
tests:
@@ -36,14 +36,14 @@ jobs:
- sydpkgs
nixPath:
- nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz
- nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixos-unstable.tar.gz
- nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixos-24.05.tar.gz
# - nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixos-unstable.tar.gz
# - nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixos-24.05.tar.gz
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install nix
uses: cachix/install-nix-action@v30
uses: cachix/install-nix-action@v31
with:
nix_path: "${{ matrix.nixPath }}"
extra_nix_config: |
@@ -52,7 +52,7 @@ jobs:
- name: Show nixpkgs version
run: nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version'
- name: Setup cachix
uses: cachix/cachix-action@v16
uses: cachix/cachix-action@v15
# Don't replace <YOUR_CACHIX_NAME> here!
if: ${{ matrix.cachixName != '<YOUR_CACHIX_NAME>' }}
with:
+2
View File
@@ -1,3 +1,5 @@
result
result-*
slippi-ld-log.*
Generated
+3 -3
View File
@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1712449641,
"narHash": "sha256-U9DDWMexN6o5Td2DznEgguh8TRIUnIl9levmit43GcI=",
"lastModified": 1776329215,
"narHash": "sha256-a8BYi3mzoJ/AcJP8UldOx8emoPRLeWqALZWu4ZvjPXw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "600b15aea1b36eeb43833a50b0e96579147099ff",
"rev": "b86751bc4085f48661017fa226dee99fab6c651b",
"type": "github"
},
"original": {
+9 -7
View File
@@ -5,19 +5,21 @@
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
outputs = { self, nixpkgs }:
outputs = inputs@{ self, ... }:
let
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
in
{
lib = inputs.nixpkgs.lib;
forAllSystems = lib.genAttrs lib.systems.flakeExposed;
in {
legacyPackages = forAllSystems (system: import ./default.nix {
pkgs = import nixpkgs { inherit system; };
pkgs = import inputs.nixpkgs { inherit system; };
});
packages =
forAllSystems (system:
nixpkgs.lib.filterAttrs
(_: v: nixpkgs.lib.isDerivation v)
lib.filterAttrs
(_: v: lib.isDerivation v)
self.legacyPackages.${system});
overlays.default = import ./overlay.nix;
};
}
-1
View File
@@ -7,7 +7,6 @@ let
isReserved = n: n == "lib" || n == "overlays" || n == "modules";
nameValuePair = n: v: { name = n; value = v; };
nurAttrs = import ./default.nix { pkgs = super; };
in
builtins.listToAttrs
(map (n: nameValuePair n nurAttrs.${n})
+39
View File
@@ -0,0 +1,39 @@
{ cmake
, stdenv
, fetchFromGitHub
, lib
}:
stdenv.mkDerivation (finalAttrs: {
pname = "bdwgc";
version = "8.2.12";
src = fetchFromGitHub {
owner = "bdwgc";
repo = "bdwgc";
tag = "v${finalAttrs.version}";
hash = "sha256-5yeAB5Y92YjOutwRXBJkMxoOLkmzmqIJs4PirKX89fE=";
};
nativeBuildInputs = [
cmake
];
meta = {
homepage = "https://www.hboehm.info/gc/";
description = ''
The Boehm-Demers-Weiser conservative C/C++ Garbage Collector
(bdwgc, also known as bdw-gc, boehm-gc, libgc)
'';
longDescription = ''
This is a garbage collecting storage allocator that is intended
to be used as a plug-in replacement for C's malloc.
Since the collector does not require pointers to be tagged, it
does not attempt to ensure that all inaccessible storage is
reclaimed. However, in our experience, it is typically more
successful at reclaiming unused memory than most C programs
using explicit deallocation. Unlike manually introduced leaks,
the amount of unreclaimed memory typically stays bounded.
'';
license = lib.licenses.mit;
platforms = lib.platforms.all;
};
})
+14
View File
@@ -0,0 +1,14 @@
{ dolphin-emu, fetchFromGitHub }:
dolphin-emu.overrideAttrs (prev: final: {
pname = "Dolphin-MPN";
version = "0712d84";
src = fetchFromGitHub {
owner = "MarioPartyNetplay";
repo = "Dolphin-MPN";
rev = "0712d84c74f696791acf02df4c22e88741665da6";
hash = "sha256-dhcLJCQzd7a0l3AVFFVxfQ95sVql5N4e63xdvl7h9uc=";
fetchSubmodules = true;
};
meta.broken = true;
})
+20 -8
View File
@@ -6,7 +6,12 @@
, ansilove
}:
python3Packages.buildPythonApplication rec {
# We use `fix` explicitly since `buildPythonApplication` rejects the typical
# stdenv.mkDerivation (finalAttrs: {
# ...
# })
# syntax.
python3Packages.buildPythonApplication (lib.fix (finalAttrs: {
pname = "durdraw";
version = "0.29.0";
pyproject = true;
@@ -14,15 +19,20 @@ python3Packages.buildPythonApplication rec {
src = fetchFromGitHub {
owner = "cmang";
repo = "durdraw";
rev = version;
rev = finalAttrs.version;
hash = "sha256-a+4DGWBD5XLaNAfTN/fmI/gALe76SCoWrnjyglNhVPY=";
};
build-system = with python3Packages; [
setuptools
build-system = [
python3Packages.setuptools
];
dependencies = [];
dependencies =
lib.optionals withGifExport finalAttrs.optional-dependencies.gif-export;
optional-dependencies.gif-export = [
python3Packages.pillow
];
nativeBuildInputs = [
makeWrapper
@@ -34,13 +44,15 @@ python3Packages.buildPythonApplication rec {
'';
meta = {
changelog = "https://github.com/cmang/durdraw/releases/tag/${version}";
changelog =
"https://github.com/cmang/durdraw/releases/tag/${finalAttrs.version}";
description = ''
Versatile ASCII and ANSI Art text editor for drawing in the
Linux/Unix/macOS terminal, with animation, 256 and 16 colors, Unicode and
CP437, and customizable themes.
'';
homepage = "https://github.com/cmang/durdraw/";
homepage = "https://durdraw.org";
license = lib.licenses.bsd3;
mainProgram = "durdraw";
};
}
}))
+41
View File
@@ -0,0 +1,41 @@
{ stdenv
, fetchFromGitHub
, kdePackages
, python3
, libime
, lib
}:
stdenv.mkDerivation {
pname = "fcitx5-toki-pona";
version = "git";
src = fetchFromGitHub {
owner = "msyds";
repo = "fcitx5-toki-pona";
rev = "4b4314d642c647bc714c8876460b6779facda89c";
# rev = "icons";
hash = "sha256-5Keg+7AYkELYAlJkPszcjHgJ6TwBxnwNd3cpxSOEbGc=";
};
# src = /home/msyds/git/fcitx5-toki-pona;
buildInputs = [
kdePackages.fcitx5-chinese-addons
];
nativeBuildInputs = [
python3
libime
];
buildPhase = ''
runHook preBuild
python3 combine.py
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm644 -t $out/share/fcitx5/table table/*
install -Dm644 -t $out/share/fcitx5/inputmethod confs/*
find icons -name '*.png' -exec install -Dm644 {} "$out/share/{}" \;
runHook postInstall
'';
}
+30
View File
@@ -0,0 +1,30 @@
{ haskell
, stdenv
, fetchFromGitHub
, gf-pgf
, applyPatches
, compiler ? "ghc98"
}:
let
version = "3.12";
src = applyPatches rec {
src = fetchFromGitHub {
owner = "GrammaticalFramework";
repo = "gf-core";
rev = "release-${version}";
hash = "sha256-9sB8tt2eOJT43kv2eaUYRQCzyBZOp6HvJdgGJQgiqks=";
};
patches = [
"${src}/nix/expose-all.patch"
"${src}/nix/revert-new-cabal-madness.patch"
./fix-cabal-syntax-error.patch
];
};
hpkgs = haskell.packages.${compiler};
pkg = hpkgs.callCabal2nixWithOptions "gf" src "--flag=-server" {};
in haskell.lib.overrideCabal pkg (prev: {
jailbreak = true;
configureFlags = [ "-f" "c-runtime" ];
librarySystemDepends = [ gf-pgf ];
})
+13
View File
@@ -0,0 +1,13 @@
diff --git a/src/runtime/haskell-bind/pgf2.cabal b/src/runtime/haskell-bind/pgf2.cabal
index d7a98489e..3ca7e816c 100644
--- a/src/runtime/haskell-bind/pgf2.cabal
+++ b/src/runtime/haskell-bind/pgf2.cabal
@@ -15,7 +15,7 @@ homepage: https://www.grammaticalframework.org/
bug-reports: https://github.com/GrammaticalFramework/gf-core/issues
author: Krasimir Angelov
extra-source-files: CHANGELOG.md, README.md
-tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.10.4, GHC=9.6.6
+tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.10.4, GHC==9.6.6
library
exposed-modules:
+11
View File
@@ -0,0 +1,11 @@
{ gf-core
, stdenv
, autoreconfHook
}:
stdenv.mkDerivation {
pname = "gf-pgf";
inherit (gf-core) version meta;
src = "${gf-core.src}/src/runtime/c";
nativeBuildInputs = [autoreconfHook ];
}
+25
View File
@@ -0,0 +1,25 @@
{ stdenv
, ghc
, gf-core
, fetchFromGitHub
}:
stdenv.mkDerivation (finalAttrs: {
name = "gf-rgl";
version = "20250812";
src = fetchFromGitHub {
owner = "GrammaticalFramework";
repo = "gf-rgl";
tag = finalAttrs.version;
hash = "sha256-rqN5MV/XxChXC+Vs4aLIhRtyPQZNk0LQZ2TCdbd6wUw=";
};
buildInputs = [ ghc gf-core ];
LC_ALL = "C.UTF-8";
buildPhase = ''
runghc Setup.hs build
'';
installPhase = ''
mkdir -p $out/share/gf/lib
runghc Setup.hs copy --dest=$out/share/gf/lib
'';
})
+4
View File
@@ -0,0 +1,4 @@
# Alias for `gf-core`
{ gf-core }:
gf-core
+22
View File
@@ -0,0 +1,22 @@
{ lib
, stdenv
, gf-core
, makeWrapper
, runCommandLocal
}:
packages:
let
opts = {
passthru = {
preferLocalBuild = true;
inherit (gf-core) version meta;
};
};
paths = lib.makeSearchPath "share/gf/lib" packages;
in runCommandLocal "gf-with-rgl" opts ''
. ${makeWrapper}/nix-support/setup-hook
makeWrapper ${gf-core}/bin/gf $out/bin/gf \
--prefix GF_LIB_PATH : ${paths}
''
+26
View File
@@ -0,0 +1,26 @@
{ gf-core
, breakpointHook
, fetchFromGitHub
, compiler ? "ghc98"
, haskell
, pgf2-haskell
, gf-pgf
}:
let
src = fetchFromGitHub {
owner = "GrammaticalFramework";
repo = "gftest";
rev = "ef7c99143d84a29fb28bbc464f661566d44a6130";
hash = "sha256-t/LaG5+bdv7f0URcn/aFx6nUIvxSSEbpWeZS92/Gbog=";
};
hpkgs = haskell.packages.${compiler}.extend (final: prev: {
# PGF2, the Haskell bindings to the C library.
pgf2 = pgf2-haskell.override { inherit compiler; };
});
pkg = hpkgs.callCabal2nix "gftest" src {};
in pkg.overrideAttrs (final: prev: {
nativeBuildInputs = (prev.nativeBuildInputs or []) ++ [
breakpointHook
];
})
+30
View File
@@ -0,0 +1,30 @@
{ stdenvNoCC
, fetchFromGitHub
, lib
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "iropke-batang";
version = "1.2";
src = fetchFromGitHub {
owner = "iropke";
repo = "font-iropke-batang";
rev = "v${finalAttrs.version}";
hash = "sha256-wsu7JK0hHYn9aegaMeNV9fWvQ6KoMzHwOFWymWHYvxo=";
};
installPhase = ''
runHook preInstall
find . -type f -name '*.otf' \
-exec install -Dm644 {} -t $out/share/fonts/opentype \;
runHook postInstall
'';
meta = {
description = "Korean serif font";
homepage = "http://font.iropke.com/batang/";
changelog = "https://github.com/iropke/font-iropke-batang/releases";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
};
})
+49
View File
@@ -0,0 +1,49 @@
{ lua5_2
, lua5_1
, stdenv
, makeWrapper
, fetchFromGitHub
, lib
, wantLad5_1 ? true
, wantLad5_2 ? true
}:
let
our-lua52 = lua5_2.withPackages (ps: with ps; [
lpeg
]);
our-lua51 = lua5_1.withPackages (ps: with ps; [
lpeg
]);
in stdenv.mkDerivation {
pname = "lad";
version = "5d2eafb";
nativeBuildInputs = [
makeWrapper
];
src = fetchFromGitHub {
owner = "andremm";
repo = "lad";
rev = "5d2eafb8790d7a1030aca0dbb75201073aacd1d9";
hash = "sha256-oIKayAUuRDqiHmAD37A5RYcMTh1RtpNl0jLcc5h3718=";
};
LUA51 = lib.getExe our-lua51;
LUA52 = lib.getExe our-lua52;
installPhase = ''
mkdir -p $out/bin $out/opt/{5.1,5.2}
cp 5.1/*.lua $out/opt/5.1/
cp 5.2/*.lua $out/opt/5.2/
${lib.optionalString wantLad5_1 ''
makeWrapper $LUA51 $out/bin/luaa-5.1 \
--add-flags $out/opt/5.1/assembler.lua
makeWrapper $LUA51 $out/bin/luad-5.1 \
--add-flags $out/opt/5.1/disassembler.lua
''}
${lib.optionalString wantLad5_2 ''
makeWrapper $LUA52 $out/bin/luaa-5.2 \
--add-flags $out/opt/5.2/luaa.lua
makeWrapper $LUA52 $out/bin/luad-5.2 \
--add-flags $out/opt/5.2/luad.lua
''}
'';
}
+46
View File
@@ -0,0 +1,46 @@
{ wine
, stdenv
, makeWrapper
, lib
}:
stdenv.mkDerivation (final: {
pname = "moresampler";
version = "0.8.4";
src = ./moresampler-${final.version}.tar.gz;
nativeBuildInputs = [
makeWrapper
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/opt/moresampler
mv moresampler.exe moreconfig.txt $out/opt/moresampler/
cat > $out/bin/moresampler << EOF
#!/usr/bin/env bash
LANG=ja_JP.UTF8 "${lib.getExe wine}" \
"$out/opt/moresampler/moresampler.exe" "\''${@,-1}"
EOF
chmod +x $out/bin/moresampler
runHook postInstall
'';
meta = {
description = "Synthesis backend for singing voice synthesis program UTAU";
longDescription = ''
Moresampler is a synthesis backend for singing voice synthesis program
UTAU. Literally the name suggests that Moresampler is not only a UTAU
resampler. In fact, it is a resampler, a wavtool and an automatic
voicebank configurator combined in one executable.
'';
license = lib.licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
Binary file not shown.
+19
View File
@@ -0,0 +1,19 @@
{ haskell
, compiler ? "ghc96"
, gf-pgf
, gf-core
, breakpointHook
}:
let
src = "${gf-core.src}/src/runtime/haskell-bind";
hpkgs = haskell.packages.${compiler};
pkg = hpkgs.callCabal2nix "pgf2" src {
# gf-pgf provides both libpgf and libgu.
gu = gf-pgf;
};
in haskell.lib.overrideCabal pkg (prev: {
librarySystemDepends = (prev.librarySystemDepends or []) ++ [
gf-pgf
];
})
+30
View File
@@ -0,0 +1,30 @@
{ stdenv
, ncurses
, fetchFromGitHub
, breakpointHook
}:
stdenv.mkDerivation {
pname = "progressbar";
version = "ac56232";
src = fetchFromGitHub {
owner = "doches";
repo = "progressbar";
rev = "ac56232610abf58cc2db2bc86efc8fcba7dfe8c2";
hash = "sha256-fgVIQAAtL5wSuWhGSKOTmlS2gvigInDqzfpILtGplLM";
};
nativeBuildInputs = [
ncurses.dev
breakpointHook
];
buildInputs = [
ncurses
];
outputs = [ "out" "dev" ];
installPhase = ''
runHook preInstall
install -Dm644 -t $out/lib libprogressbar.{so,a}
install -Dm644 -t $dev/include/progressbar include/progressbar/*.h
runHook postInstall
'';
}
+73
View File
@@ -0,0 +1,73 @@
{ stdenv
, fetchNpmDeps
, fetchFromGitHub
, fetchzip
, fetchurl
, lib
, imagemagick
, nodejs_20
}:
let
vendoredKatex = fetchzip {
url = "https://github.com/KaTeX/KaTeX/releases/download/v0.16.9/katex.zip";
hash = "sha256-Nca52SW4Q0P5/fllDFQEaOQyak7ojCs0ShlqJ1mWZOM=";
};
vendoredWorkbox = fetchurl {
url = "https://storage.googleapis.com/workbox-cdn/releases/7.0.0/workbox-window.prod.mjs";
hash = "sha256-YR3m/DqqF+yahPQAk/2k0yRmdoYtQNBEHsL6fQTDmlc=";
};
vendoredWorkboxMap = fetchurl {
url = "https://storage.googleapis.com/workbox-cdn/releases/7.0.0/workbox-window.prod.mjs.map";
hash = "sha256-tUBiVoiKi3OCT+wctUYl0FVnT7StsGBDx7EzculcF5I=";
};
rev = "1816fb788e4d315bf1dc30053a5e1646eb0af9b8";
in stdenv.mkDerivation (final: {
pname = "quiver";
version = lib.substring 0 7 rev;
inherit vendoredKatex vendoredWorkbox vendoredWorkboxMap;
src = fetchFromGitHub {
owner = "varkor";
repo = "quiver";
inherit rev;
hash = "sha256-29x2x0fLemkxhv+85wPnDrrlRW2h5qJtF/QTbGa6ghE=";
};
npmDeps = fetchNpmDeps {
src = "${final.src}/service-worker";
hash = "sha256-1CdgZFvpyJFyh5x9ljTau6vrR7FeHRYZ1MG/ZOEoou8=";
};
preBuild = ''
cp -r $vendoredKatex src/KaTeX
mkdir src/Workbox
cp $vendoredWorkbox src/Workbox/workbox-window.prod.mjs
cp $vendoredWorkboxMap src/Workbox/workbox-window.prod.mjs.map
'';
buildPhase = ''
runHook preBuild
pushd service-worker
npm install --cache $npmDeps
node build.js
popd
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/opt
cp -r src $out/opt/quiver
runHook postInstall
'';
nativeBuildInputs = [
imagemagick
];
buildInputs = [
nodejs_20
];
meta = {
description = ''
A modern commutative diagram editor for the web.
'';
homepage = "https://q.uiver.app/";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
};
})
+162
View File
@@ -0,0 +1,162 @@
{
lib,
buildDotnetModule,
cctools,
darwin,
dotnetCorePackages,
fetchFromForgejo,
libX11,
libgdiplus,
moltenvk,
ffmpeg,
openal,
libsoundio,
sndio,
stdenv,
pulseaudio,
vulkan-loader,
glew,
libGL,
libICE,
libSM,
libXcursor,
libXext,
libXi,
libXrandr,
udev,
SDL2,
SDL2_mixer,
gtk3,
wrapGAppsHook3,
}:
buildDotnetModule rec {
pname = "ryubing";
version = "1.3.4";
src = fetchFromForgejo {
domain = "git.ryujinx.app";
owner = "Ryubing";
repo = "Ryujinx";
rev = "433dd58f8ce2fca3df3fa8b20bef7f003fc5a2a9";
hash = "sha256-yLf0NkdZvGNI7bbzx3Qursk3rDy5UUK8nFH9pp3wYm4=";
};
nativeBuildInputs =
lib.optional stdenv.hostPlatform.isLinux [
wrapGAppsHook3
]
++ lib.optional stdenv.hostPlatform.isDarwin [
cctools
darwin.sigtool
];
enableParallelBuilding = false;
dotnet-sdk = dotnetCorePackages.dotnet_10.sdk;
dotnet-runtime = dotnetCorePackages.dotnet_10.runtime;
nugetDeps = ./deps.json;
runtimeDeps = [
libX11
libgdiplus
SDL2_mixer
openal
libsoundio
sndio
vulkan-loader
ffmpeg
# Avalonia UI
glew
libICE
libSM
libXcursor
libXext
libXi
libXrandr
gtk3
# Headless executable
libGL
SDL2
]
++ lib.optional (!stdenv.hostPlatform.isDarwin) [
udev
pulseaudio
]
++ lib.optional stdenv.hostPlatform.isDarwin [ moltenvk ];
projectFile = "Ryujinx.sln";
testProjectFile = "src/Ryujinx.Tests/Ryujinx.Tests.csproj";
# Tests on Darwin currently fail because of Ryujinx.Tests.Unicorn
doCheck = !stdenv.hostPlatform.isDarwin;
dotnetFlags = [
"/p:ExtraDefineConstants=DISABLE_UPDATER%2CFORCE_EXTERNAL_BASE_DIR"
];
executables = [
"Ryujinx"
];
makeWrapperArgs = lib.optional stdenv.hostPlatform.isLinux [
# Without this Ryujinx fails to start on wayland. See https://github.com/Ryujinx/Ryujinx/issues/2714
"--set SDL_VIDEODRIVER x11"
];
preInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
# workaround for https://github.com/Ryujinx/Ryujinx/issues/2349
mkdir -p $out/lib/sndio-6
ln -s ${sndio}/lib/libsndio.so $out/lib/sndio-6/libsndio.so.6
'';
preFixup = ''
${lib.optionalString stdenv.hostPlatform.isLinux ''
mkdir -p $out/share/{applications,icons/hicolor/scalable/apps,mime/packages}
pushd ${src}/distribution/linux
install -D ./Ryujinx.desktop $out/share/applications/Ryujinx.desktop
install -D ./Ryujinx.sh $out/bin/Ryujinx.sh
install -D ./mime/Ryujinx.xml $out/share/mime/packages/Ryujinx.xml
install -D ../misc/Logo.svg $out/share/icons/hicolor/scalable/apps/Ryujinx.svg
popd
''}
# Don't make a softlink on OSX because of its case insensitivity
${lib.optionalString (!stdenv.hostPlatform.isDarwin) "ln -s $out/bin/Ryujinx $out/bin/ryujinx"}
'';
passthru.updateScript = ./updater.sh;
meta = {
homepage = "https://ryujinx.app";
changelog = "https://git.ryujinx.app/ryubing/ryujinx/-/wikis/changelog";
description = "Experimental Nintendo Switch Emulator written in C# (community fork of Ryujinx)";
longDescription = ''
Ryujinx is an open-source Nintendo Switch emulator, created by gdkchan,
written in C#. This emulator aims at providing excellent accuracy and
performance, a user-friendly interface and consistent builds. It was
written from scratch and development on the project began in September
2017. The project has since been abandoned on October 1st 2024 and QoL
updates are now managed under a fork.
'';
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
jk
artemist
willow
];
platforms = [
"x86_64-linux"
"aarch64-linux"
"aarch64-darwin"
];
mainProgram = "Ryujinx";
};
}
+793
View File
@@ -0,0 +1,793 @@
[
{
"pname": "Avalonia",
"version": "11.3.12",
"hash": "sha256-T2y8aoKUSfXqmV2RL1QStytzJkc/SZYfIdJihB5UWR0="
},
{
"pname": "Avalonia.Angle.Windows.Natives",
"version": "2.1.25547.20250602",
"hash": "sha256-LE/lENAHptmz6t3T/AoJwnhpda+xs7PqriNGzdcfg8M="
},
{
"pname": "Avalonia.BuildServices",
"version": "11.3.2",
"hash": "sha256-6wx06tjSKWQOlX2czdp6Wh0nuwVapx5qf/s8Qj5we40="
},
{
"pname": "Avalonia.Controls.ColorPicker",
"version": "11.3.10",
"hash": "sha256-d8VTsT6yYAa8uZAodX7SWgf4+izVHrP/hy/pDpT91Wk="
},
{
"pname": "Avalonia.Controls.ColorPicker",
"version": "11.3.12",
"hash": "sha256-zNpmfOTfw+gKZp8VPpfHe2hjqhrRmExf7lxqLf5OvDg="
},
{
"pname": "Avalonia.Controls.DataGrid",
"version": "11.3.12",
"hash": "sha256-xuAL5FOvonyaY9CwEhjtMnurPcA0lYe0dyLLK0GEzd8="
},
{
"pname": "Avalonia.Desktop",
"version": "11.3.12",
"hash": "sha256-IY6TkpVh0GiCkKbestdwH8KEJ0Embxy+JYe7lww0xBA="
},
{
"pname": "Avalonia.Diagnostics",
"version": "11.3.12",
"hash": "sha256-iDH6DjRKqm4YLXBq2JGg9IkkEGm3Rq1FQWyr/L+VaVA="
},
{
"pname": "Avalonia.FreeDesktop",
"version": "11.3.12",
"hash": "sha256-NTcYVHn13lFQjTNezmpmPGjxsBzryXorK0K6hl4ZZto="
},
{
"pname": "Avalonia.Markup.Xaml.Loader",
"version": "11.3.12",
"hash": "sha256-Ch2G7HQcj50dkr2fw1PhB9SPctUVdnhhKckj42YFykY="
},
{
"pname": "Avalonia.Native",
"version": "11.3.12",
"hash": "sha256-1ujLmYaL1zTgtlsNerBDtTuoaJX7c7HukNLJIalrB4Q="
},
{
"pname": "Avalonia.Remote.Protocol",
"version": "11.3.12",
"hash": "sha256-dF93nP1Cd7ZdzrO7ScGHchxYxCjWN45AjiqiO1J+cmU="
},
{
"pname": "Avalonia.Skia",
"version": "11.3.10",
"hash": "sha256-XJXyK19ow9mvcssdmjPvh8zyh4VExcVEoiIauqPNC5s="
},
{
"pname": "Avalonia.Skia",
"version": "11.3.12",
"hash": "sha256-gRMjH7igRIm22zQV0WxtwFHe8AiMTcaPlR0sC5lJy+w="
},
{
"pname": "Avalonia.Skia",
"version": "11.3.9",
"hash": "sha256-KCL1LNUd2i+50vQpDgfI+aMkIBUWtxExyuc43QIK21o="
},
{
"pname": "Avalonia.Themes.Simple",
"version": "11.3.12",
"hash": "sha256-EIuAcUmoL7/y4lUfdSg120/l/v3zQytC2rfr0b6jKiM="
},
{
"pname": "Avalonia.Win32",
"version": "11.3.12",
"hash": "sha256-haIKvJ1SD17+EUJHILoFJMy+WJJtXr9I+ZYMFtwEuTc="
},
{
"pname": "Avalonia.X11",
"version": "11.3.12",
"hash": "sha256-SEc0GaZTh1eGNFWHT6lGiN6LD0qE+ubTK7Efl0H/Q2w="
},
{
"pname": "CommandLineParser",
"version": "2.9.1",
"hash": "sha256-ApU9y1yX60daSjPk3KYDBeJ7XZByKW8hse9NRZGcjeo="
},
{
"pname": "CommunityToolkit.Mvvm",
"version": "8.4.0",
"hash": "sha256-a0D550q+ffreU9Z+kQPdzJYPNaj1UjgyPofLzUg02ZI="
},
{
"pname": "Concentus",
"version": "2.2.2",
"hash": "sha256-9If4kL72V1evHOz0IONX8ASIy/rAtAm6RhzLzu+BSB8="
},
{
"pname": "csFastFloat",
"version": "4.1.5",
"hash": "sha256-dEbMPu/EmsRodI20P15F38QInil0IPcKE03akYp8tBY="
},
{
"pname": "DiscordRichPresence",
"version": "1.6.1.70",
"hash": "sha256-uXTNIWfZU7Gf/JpXQ5ufKA3SQdXYSkg3yLm5yCrBDd8="
},
{
"pname": "DynamicData",
"version": "9.4.1",
"hash": "sha256-CX4NQj2LTk/8f4xDE5rUVBsqcY74H/1qUHFTrVX+9/0="
},
{
"pname": "ExCSS",
"version": "4.3.1",
"hash": "sha256-nNn5+YEaqKSULhtDsImNEyndU/MHna7VpZNUExmo80o="
},
{
"pname": "FluentAvaloniaUI",
"version": "2.5.0",
"hash": "sha256-AC+IlESkbom+qxp6p/gYjLi5rAIBlbpln2DO2xhhXmc="
},
{
"pname": "FSharp.Core",
"version": "7.0.200",
"hash": "sha256-680VgvYbZbztPQosO17r5y8vxg/Y/4Vmr5K3iLIJKMo="
},
{
"pname": "Gommon",
"version": "2.8.0.1",
"hash": "sha256-c3a/43OJaL1glrsjdlyj9D/ooYpNKpYkn1lMKWxC4uE="
},
{
"pname": "HarfBuzzSharp",
"version": "8.3.1.1",
"hash": "sha256-614yv6bK9ynhdUnvW4wIkgpBe2sqTh28U9cDZzdhPc0="
},
{
"pname": "HarfBuzzSharp.NativeAssets.Linux",
"version": "8.3.1.1",
"hash": "sha256-sBbez6fc9axVcsBbIHbpQh/MM5NHlMJgSu6FyuZzVyU="
},
{
"pname": "HarfBuzzSharp.NativeAssets.macOS",
"version": "8.3.1.1",
"hash": "sha256-hK20KbX2OpewIO5qG5gWw5Ih6GoLcIDgFOqCJIjXR/Q="
},
{
"pname": "HarfBuzzSharp.NativeAssets.WebAssembly",
"version": "8.3.1.1",
"hash": "sha256-mLKoLqI47ZHXqTMLwP1UCm7faDptUfQukNvdq6w/xxw="
},
{
"pname": "HarfBuzzSharp.NativeAssets.Win32",
"version": "8.3.1.1",
"hash": "sha256-Um4iwLdz9XtaDSAsthNZdev6dMiy7OBoHOrorMrMYyo="
},
{
"pname": "Humanizer",
"version": "2.14.1",
"hash": "sha256-1wGwf5KAmDeiH0Dz8KcTdZw+UMkiNsjKOIOt/VJnnqE="
},
{
"pname": "Humanizer.Core",
"version": "2.14.1",
"hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o="
},
{
"pname": "Humanizer.Core.af",
"version": "2.14.1",
"hash": "sha256-8CCgI7OweSa53cZWZBXQ8a7VVt/NPP16zHVBZvzU9KQ="
},
{
"pname": "Humanizer.Core.ar",
"version": "2.14.1",
"hash": "sha256-JRoP+brQgYBZI8OccH/jaM1Z482ZWBiqU2XL3KsIPw8="
},
{
"pname": "Humanizer.Core.az",
"version": "2.14.1",
"hash": "sha256-ubwkbes9zrrisuXTcT4ZgOAiFsUieC6OLd4pgzxsE40="
},
{
"pname": "Humanizer.Core.bg",
"version": "2.14.1",
"hash": "sha256-Xv6DP1xxxGVUfP44TZasWpxgQ/DkriljvmIMtHf+nGk="
},
{
"pname": "Humanizer.Core.bn-BD",
"version": "2.14.1",
"hash": "sha256-6JpReIc3fkExvJIXzk6fUw56wJ78aTEg1dWQ6o+dQow="
},
{
"pname": "Humanizer.Core.cs",
"version": "2.14.1",
"hash": "sha256-MGL86KxSbz0PkDo9+NRj6h1fDjPZXlxAtYNf0Zreg/4="
},
{
"pname": "Humanizer.Core.da",
"version": "2.14.1",
"hash": "sha256-Gpw8kJbgz0KQS2mGY5tmrHqpgUO4abD7dSKIy//ONYM="
},
{
"pname": "Humanizer.Core.de",
"version": "2.14.1",
"hash": "sha256-Eswv8aEQoxI9MZr2CvWtBUn5X9JRZTWQjRzHJkGj80g="
},
{
"pname": "Humanizer.Core.el",
"version": "2.14.1",
"hash": "sha256-wCK2Uy/AV6FxPUSUM0NMbV14pAP+ss25AaVAHMQIeJA="
},
{
"pname": "Humanizer.Core.es",
"version": "2.14.1",
"hash": "sha256-iEHiQXKwg0ABDxh//HSrzwaVOlilQBFI96+GYzzTMwQ="
},
{
"pname": "Humanizer.Core.fa",
"version": "2.14.1",
"hash": "sha256-2Js7k3nvwJvxAjq3yoLn7PUY2S8+vXfgESwU4SbvjaA="
},
{
"pname": "Humanizer.Core.fi-FI",
"version": "2.14.1",
"hash": "sha256-jOWo43r3dhiBsV9cCoDfqK/YqWj5LejZsnfkG6mlkpA="
},
{
"pname": "Humanizer.Core.fr",
"version": "2.14.1",
"hash": "sha256-WCbA+f4B3g/ml7KrkHkzpU2Fj38HtWc/ujoVY5F3lk4="
},
{
"pname": "Humanizer.Core.fr-BE",
"version": "2.14.1",
"hash": "sha256-GydVmoEy+lwEQ1nM39QXSRhYNchqM47p7qhUEimN4Cw="
},
{
"pname": "Humanizer.Core.he",
"version": "2.14.1",
"hash": "sha256-MMf3qjJ+yzxjMxOR7wMWf+eErxWLqpsdWKFhjNCOsyM="
},
{
"pname": "Humanizer.Core.hr",
"version": "2.14.1",
"hash": "sha256-kBv2I9ns6L6D4XfXfyZS1VM6+YwF4yUkCmCA5zqvsok="
},
{
"pname": "Humanizer.Core.hu",
"version": "2.14.1",
"hash": "sha256-vRje+kxqOsl1JCXAE0yDKvauUumzuEhNcnhNsdIdgVM="
},
{
"pname": "Humanizer.Core.hy",
"version": "2.14.1",
"hash": "sha256-UL7PsK4msT5c96lk70/bVAxN63B71l8VOFtvuJQH9a0="
},
{
"pname": "Humanizer.Core.id",
"version": "2.14.1",
"hash": "sha256-nIl64gCuZh4D527qI2hfQRvzt1mTJUCDGMIZwpS3C/A="
},
{
"pname": "Humanizer.Core.is",
"version": "2.14.1",
"hash": "sha256-38vUQ1aVtlhK15kP9ZlDO0Nl0DcOA5iHx6F2SPN1gYM="
},
{
"pname": "Humanizer.Core.it",
"version": "2.14.1",
"hash": "sha256-4ne0VRNi9OAj3bGCQgCy1BNYKMizoHykJ/lchmCsWdc="
},
{
"pname": "Humanizer.Core.ja",
"version": "2.14.1",
"hash": "sha256-oAilMM8J6LumV6qv3gSIBNTm7u2L4vV38cQXtME3PhM="
},
{
"pname": "Humanizer.Core.ko-KR",
"version": "2.14.1",
"hash": "sha256-b70HQl2IWVPATtaYGDyJ+Z6ioPtrM53vXzfTCHYgxpQ="
},
{
"pname": "Humanizer.Core.ku",
"version": "2.14.1",
"hash": "sha256-8LiEH7MaapMtkHFMj7Y3pG+g0QYuIa5gD3VR9nYQn+k="
},
{
"pname": "Humanizer.Core.lv",
"version": "2.14.1",
"hash": "sha256-zyCsE5cD++u5shNIqCQUd+66FkUWOl+NfFrs2JduCaQ="
},
{
"pname": "Humanizer.Core.ms-MY",
"version": "2.14.1",
"hash": "sha256-pSdZLUi9oWo78nBh2DJunPhDR7THdZSZP0msCVbPsrY="
},
{
"pname": "Humanizer.Core.mt",
"version": "2.14.1",
"hash": "sha256-mkX2reEvNpx9w6gtZw+6bkrnj3Di1qgVDMr9q0IeKCw="
},
{
"pname": "Humanizer.Core.nb",
"version": "2.14.1",
"hash": "sha256-QvYJHqjO/SrelWYgtm8Sc7axs7J8wbJE+GbTgVw5LYs="
},
{
"pname": "Humanizer.Core.nb-NO",
"version": "2.14.1",
"hash": "sha256-YW8y2XkmHjwqf2fztNB3rsn3+CgslF1TclITwp0fA9g="
},
{
"pname": "Humanizer.Core.nl",
"version": "2.14.1",
"hash": "sha256-bQM7aXNQMBY+65NfMVQz/xYz9Ad2JC+ryXoB4lcYgmA="
},
{
"pname": "Humanizer.Core.pl",
"version": "2.14.1",
"hash": "sha256-IrPxHI4uQvBeMM9/8PaNueKwVkbN+1zFQlNWRjNfXEA="
},
{
"pname": "Humanizer.Core.pt",
"version": "2.14.1",
"hash": "sha256-XrlC15HNJFmDwLpHIUHb3Bec9A79msQCRB9Dvz8w4l0="
},
{
"pname": "Humanizer.Core.ro",
"version": "2.14.1",
"hash": "sha256-llXtfq4Tr5V2Q4dVD7J0IKITtpiWrFs50DAtJhcSuRI="
},
{
"pname": "Humanizer.Core.ru",
"version": "2.14.1",
"hash": "sha256-lD0dB3mkbFfGExwVWZk6fv24MyQQ8Cdv5OrleuZeChg="
},
{
"pname": "Humanizer.Core.sk",
"version": "2.14.1",
"hash": "sha256-EmyE+wssZwY6tAuEiFXGn5/yzVMZe7QEuTjOcByOXaA="
},
{
"pname": "Humanizer.Core.sl",
"version": "2.14.1",
"hash": "sha256-sWWxh7KZ8Y3Ps6GbBOHbU2GMsNZfkM+BOnUChf3fz4s="
},
{
"pname": "Humanizer.Core.sr",
"version": "2.14.1",
"hash": "sha256-/bA3LULRFn5WYmCscr5R5vaFRjeHC0xjNiF7PXEJ8r0="
},
{
"pname": "Humanizer.Core.sr-Latn",
"version": "2.14.1",
"hash": "sha256-43+o6oj0UNRJKiFoh57MGPSzlsWAq0eRtzlCrewDmVM="
},
{
"pname": "Humanizer.Core.sv",
"version": "2.14.1",
"hash": "sha256-9lXrHveKDs1y/W3Qxd+MVcohhKEU7zNPx21GBVPp/rA="
},
{
"pname": "Humanizer.Core.th-TH",
"version": "2.14.1",
"hash": "sha256-ldCsXINSvL2xom0SCtVQy+qX1IN5//EUoyIOwXiJ3k8="
},
{
"pname": "Humanizer.Core.tr",
"version": "2.14.1",
"hash": "sha256-VZnO1vMXiR7egKEKJ6lBsj7eNgxhFzakFWsYYRW4u2U="
},
{
"pname": "Humanizer.Core.uk",
"version": "2.14.1",
"hash": "sha256-rdvleUrKbj3c06A0O2MkgAZLtXLro9SPB1YqAGE1Vyg="
},
{
"pname": "Humanizer.Core.uz-Cyrl-UZ",
"version": "2.14.1",
"hash": "sha256-Qso1Iz9MTLs63x4F00kK31TZAN4AoFaFsuVzM+1z38k="
},
{
"pname": "Humanizer.Core.uz-Latn-UZ",
"version": "2.14.1",
"hash": "sha256-sVnkZTuEaHfMJIAZmSCqsspnKkYxK9eVBQZnAAqHNW4="
},
{
"pname": "Humanizer.Core.vi",
"version": "2.14.1",
"hash": "sha256-5wDt72+HdNN3mt/iJkxV9LaH13Jc1qr1vB4Lz8ahIPs="
},
{
"pname": "Humanizer.Core.zh-CN",
"version": "2.14.1",
"hash": "sha256-Z3qfFWyovcVT4Hqy51lgW2xGwyfI//Yfv90E0Liy1sw="
},
{
"pname": "Humanizer.Core.zh-Hans",
"version": "2.14.1",
"hash": "sha256-BTGkMEkQYJKRp858EU7hwNOdsHRT+w6vAMa6H8JIyX4="
},
{
"pname": "Humanizer.Core.zh-Hant",
"version": "2.14.1",
"hash": "sha256-N3D1z5aoGwAZ6+ZxrWMtXgacvQcgDG+aLrQQI9uysmM="
},
{
"pname": "MicroCom.Runtime",
"version": "0.11.0",
"hash": "sha256-VdwpP5fsclvNqJuppaOvwEwv2ofnAI5ZSz2V+UEdLF0="
},
{
"pname": "Microsoft.CodeAnalysis.Analyzers",
"version": "3.3.4",
"hash": "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE="
},
{
"pname": "Microsoft.CodeAnalysis.Common",
"version": "4.9.2",
"hash": "sha256-QU/nyiJWpdPQGHBdaOEVc+AghnGHcKBFBX0oyhRZ9CQ="
},
{
"pname": "Microsoft.CodeAnalysis.CSharp",
"version": "4.9.2",
"hash": "sha256-j06Q4A9E65075SBXdXVCMRgeLxA63Rv1vxarydmmVAA="
},
{
"pname": "Microsoft.CodeCoverage",
"version": "17.9.0",
"hash": "sha256-OaGa4+jRPHs+T+p/oekm2Miluqfd2IX8Rt+BmUx8kr4="
},
{
"pname": "Microsoft.DotNet.PlatformAbstractions",
"version": "3.1.6",
"hash": "sha256-RfM2qXiqdiamPkXr4IDkNc0IZSF9iTZv4uou/E7zNS0="
},
{
"pname": "Microsoft.Extensions.DependencyModel",
"version": "8.0.0",
"hash": "sha256-qkCdwemqdZY/yIW5Xmh7Exv74XuE39T8aHGHCofoVgo="
},
{
"pname": "Microsoft.IdentityModel.Abstractions",
"version": "8.3.0",
"hash": "sha256-LSZ91DbPswCWibHNSGWC3Jh3KQwAthVaU3r7XQJyutM="
},
{
"pname": "Microsoft.IdentityModel.JsonWebTokens",
"version": "8.3.0",
"hash": "sha256-Hiiv10LSOMIt7KsQSsteJV4DFkLebHMYmoISn/pl2F8="
},
{
"pname": "Microsoft.IdentityModel.Logging",
"version": "8.3.0",
"hash": "sha256-0P14ilpV+9yp+nqZWI/ilkTnRas4pic8NjNVcYxuXWs="
},
{
"pname": "Microsoft.IdentityModel.Tokens",
"version": "8.3.0",
"hash": "sha256-+TzBeZH2Tgs0EMoU5QuCdOD/5V8xM7MHClX578AUIxw="
},
{
"pname": "Microsoft.IO.RecyclableMemoryStream",
"version": "3.0.1",
"hash": "sha256-unFg/5EcU/XKJbob4GtQC43Ydgi5VjeBGs7hfhj4EYo="
},
{
"pname": "Microsoft.NET.Test.Sdk",
"version": "17.9.0",
"hash": "sha256-q/1AJ7eNlk02wvN76qvjl2xBx5iJ+h5ssiE/4akLmtI="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.0",
"hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="
},
{
"pname": "Microsoft.TestPlatform.ObjectModel",
"version": "17.9.0",
"hash": "sha256-iiXUFzpvT8OWdzMj9FGJDqanwHx40s1TXVY9l3ii+s0="
},
{
"pname": "Microsoft.TestPlatform.TestHost",
"version": "17.9.0",
"hash": "sha256-1BZIY1z+C9TROgdTV/tq4zsPy7Q71GQksr/LoMKAzqU="
},
{
"pname": "MsgPack.Cli",
"version": "1.0.1",
"hash": "sha256-Gf0Ed9XHH4oFpJIkzhg/xhDVpenunSol65qa8IZeYrY="
},
{
"pname": "NetCoreServer",
"version": "8.0.7",
"hash": "sha256-RUYic8uAgJGdhUCrMJQULKlHB6xvw9H1lnNGU1axNZw="
},
{
"pname": "NETStandard.Library",
"version": "2.0.0",
"hash": "sha256-Pp7fRylai8JrE1O+9TGfIEJrAOmnWTJRLWE+qJBahK0="
},
{
"pname": "NETStandard.Library",
"version": "2.0.3",
"hash": "sha256-Prh2RPebz/s8AzHb2sPHg3Jl8s31inv9k+Qxd293ybo="
},
{
"pname": "Newtonsoft.Json",
"version": "13.0.1",
"hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="
},
{
"pname": "NUnit",
"version": "3.13.3",
"hash": "sha256-Zn+sJIF7ieNqu/t2RwJx6WPFb1jl9UuNHidb/Px0v3E="
},
{
"pname": "NUnit3TestAdapter",
"version": "4.1.0",
"hash": "sha256-nDPiYdTFulqozEJrujr8/cqjG7m15Vkd/Frqem0Jr/w="
},
{
"pname": "Open.NAT.Core",
"version": "2.1.0.5",
"hash": "sha256-LqG5L2APr11142fsZPQ3clk3tJfAYBMXi1rP0EM9zDg="
},
{
"pname": "OpenTK.Audio.OpenAL",
"version": "4.8.2",
"hash": "sha256-i5KRiTYTNMB4Y5Qd5xewaYrb9sBbnXMDu2QXbM3RCeU="
},
{
"pname": "OpenTK.Core",
"version": "4.8.2",
"hash": "sha256-59S4Vj13y8HtZT6RZTwO6ZZbk1GUNDcYx1rMdv5jr4I="
},
{
"pname": "OpenTK.Graphics",
"version": "4.8.2",
"hash": "sha256-DNpXqtM9Oj6wDGYSF2FD4A4ueWG892Wk6uGWffNspo0="
},
{
"pname": "OpenTK.Mathematics",
"version": "4.8.2",
"hash": "sha256-TPsts443n6iEajfH2EuYTKtubrWuTLiCrTB1F4FndIo="
},
{
"pname": "OpenTK.redist.glfw",
"version": "3.3.8.39",
"hash": "sha256-bg8bGfoDDqmZ/efLFVm8l5etQajIVvOcQ/Nv+yKD4Bc="
},
{
"pname": "OpenTK.Windowing.GraphicsLibraryFramework",
"version": "4.8.2",
"hash": "sha256-a1MGtU+27pBNns55g8mOsxXpZxfEr6M62zLkIkkJTIY="
},
{
"pname": "ppy.SDL3-CS",
"version": "2026.320.0",
"hash": "sha256-dK58LuY8DQgw3Wfnj/HPup7Hxa9r2QvT/GBJbpUQ874="
},
{
"pname": "Projektanker.Icons.Avalonia",
"version": "9.6.2",
"hash": "sha256-BMbZQ2Hj80Yxcx8mNZ8+A4fxyB/Sa0QhFX5gC6jAueA="
},
{
"pname": "Projektanker.Icons.Avalonia.FontAwesome",
"version": "9.6.2",
"hash": "sha256-GumFdzG2GPCxfAU47Qk8a0RI4IlSzSTmRFMJ5ZVFvDg="
},
{
"pname": "Projektanker.Icons.Avalonia.MaterialDesign",
"version": "9.6.2",
"hash": "sha256-CG4VZDafywR278XwZTosm0sYzJyQ6AGHEQiIDB9y81I="
},
{
"pname": "Ryujinx.Audio.OpenAL.Dependencies",
"version": "1.21.0.1",
"hash": "sha256-NHGzMcYduuYJjduIlf8M8zSQQuJcXAEaMNmKIqAgs3w="
},
{
"pname": "Ryujinx.Graphics.Nvdec.Dependencies.AllArch",
"version": "6.1.2-build3",
"hash": "sha256-Glhvv00ZbrbB+Z4PMSTsmiP14HZDonp611s1gXGuyqI="
},
{
"pname": "Ryujinx.Graphics.Vulkan.Dependencies.MoltenVK",
"version": "1.2.0",
"hash": "sha256-vdDw6YGoyQzv6ustyXP6v7YWUIKEXaZOyUKAaVbRauI="
},
{
"pname": "Ryujinx.LibHac",
"version": "0.21.0-alpha.129",
"hash": "sha256-vwpjCsMZayUAzaydzcO9ktEzNIYEmDpQbhswGx8O7no=",
"url": "https://git.ryujinx.app/api/packages/projects/nuget/package/ryujinx.libhac/0.21.0-alpha.129/ryujinx.libhac.0.21.0-alpha.129.nupkg"
},
{
"pname": "Ryujinx.Systems.Update.Common",
"version": "2.0.6",
"hash": "sha256-2btWQmCwqJSxISN3N7HdRCbkfSAs4Ph+o8hT+GlySYk="
},
{
"pname": "Ryujinx.UpdateClient",
"version": "1.0.44",
"hash": "sha256-4lKA2mscjyiJZAQf0ixAdVmwzDWog+CTGIftOmC0xnk="
},
{
"pname": "securifybv.PropertyStore",
"version": "0.1.0",
"hash": "sha256-jTPT9E2LyElgJq4HMavkdwT8tA9uklnJv00mlIx66+g="
},
{
"pname": "securifybv.ShellLink",
"version": "0.1.0",
"hash": "sha256-Am+ZednCVJUDgB7TePyY3CTxKDQ6Lr8M8KiCVAJoouw="
},
{
"pname": "Sep",
"version": "0.11.1",
"hash": "sha256-GkDWF51QOIKUu55By5ya471KrwXvQbm98DOo/zV0Bew="
},
{
"pname": "shaderc.net",
"version": "0.1.0",
"hash": "sha256-+K7ObC9ucilwWY+Tlf9KcrAVoTFS65V6Di7JDWDSZTg="
},
{
"pname": "SharpCompress",
"version": "0.47.4",
"hash": "sha256-mH0R+al2GUomIYkieYudTmF1mAnIUiifQPTp13eUFg8="
},
{
"pname": "ShimSkiaSharp",
"version": "3.6.0",
"hash": "sha256-73Z5rWOt8MFXAvR1FmN8jIoZKNJafKpR75FyqqoS0gE="
},
{
"pname": "Silk.NET.Core",
"version": "2.22.0",
"hash": "sha256-1aBiBwifLel9aaGI97gxbvID/XKbFm1dpVv2zm0NSEc="
},
{
"pname": "Silk.NET.Vulkan",
"version": "2.22.0",
"hash": "sha256-TxCjv6Q35PrJTs0SkiE1srJNZf1yh9k98Gfx8DWSWjY="
},
{
"pname": "Silk.NET.Vulkan.Extensions.EXT",
"version": "2.22.0",
"hash": "sha256-spbTFm5wHbVZqMNvAih6wexeZs61B8kbX4sKYSe5Syk="
},
{
"pname": "Silk.NET.Vulkan.Extensions.KHR",
"version": "2.22.0",
"hash": "sha256-aXgS8UxYlfBIrxmoAOuy6Z3NZuV+ruSibQPvLO1wL/U="
},
{
"pname": "SkiaSharp",
"version": "2.88.9",
"hash": "sha256-jZ/4nVXYJtrz9SBf6sYc/s0FxS7ReIYM4kMkrhZS+24="
},
{
"pname": "SkiaSharp.NativeAssets.Linux",
"version": "2.88.9",
"hash": "sha256-mQ/oBaqRR71WfS66mJCvcc3uKW7CNEHoPN2JilDbw/A="
},
{
"pname": "SkiaSharp.NativeAssets.macOS",
"version": "2.88.9",
"hash": "sha256-qvGuAmjXGjGKMzOPBvP9VWRVOICSGb7aNVejU0lLe/g="
},
{
"pname": "SkiaSharp.NativeAssets.WebAssembly",
"version": "2.88.9",
"hash": "sha256-vgFL4Pdy3O1RKBp+T9N3W4nkH9yurZ0suo8u3gPmmhY="
},
{
"pname": "SkiaSharp.NativeAssets.Win32",
"version": "2.88.9",
"hash": "sha256-kP5XM5GgwHGfNJfe4T2yO5NIZtiF71Ddp0pd1vG5V/4="
},
{
"pname": "SPB",
"version": "0.0.4-build32",
"hash": "sha256-GUzbV5rLWtXTpiddYrKnWWLujG38vBDCO4xRStwAaDo="
},
{
"pname": "Svg.Controls.Avalonia",
"version": "11.3.9.4",
"hash": "sha256-VtT78D+HNZfwetSzYG+oDhzl4EZYcIlcq+59mPqyIGk="
},
{
"pname": "Svg.Controls.Skia.Avalonia",
"version": "11.3.9.4",
"hash": "sha256-q9mixdAKtgxHS+//lfD1kgOhcKs9sNoqs6OnT3WBte8="
},
{
"pname": "Svg.Custom",
"version": "3.6.0",
"hash": "sha256-caId1MZbsDR5kZYxiVUZfZJl6FLt1RbqSA46YZ2EXA4="
},
{
"pname": "Svg.Model",
"version": "3.6.0",
"hash": "sha256-iQMvX6UUu5REzUHBrPQcAVXP8KEzz8b5lratPaIEjbc="
},
{
"pname": "Svg.Skia",
"version": "3.6.0",
"hash": "sha256-USVPjpvV3FoMLoThAqz53IscTKw4oVIAyDkdo03Z6Do="
},
{
"pname": "System.Buffers",
"version": "4.5.1",
"hash": "sha256-wws90sfi9M7kuCPWkv1CEYMJtCqx9QB/kj0ymlsNaxI="
},
{
"pname": "System.CodeDom",
"version": "4.4.0",
"hash": "sha256-L1xyspJ8pDJNVPYKl+FMGf4Zwm0tlqtAyQCNW6pT6/0="
},
{
"pname": "System.Collections.Immutable",
"version": "8.0.0",
"hash": "sha256-F7OVjKNwpqbUh8lTidbqJWYi476nsq9n+6k0+QVRo3w="
},
{
"pname": "System.IO.Hashing",
"version": "9.0.2",
"hash": "sha256-CI1z3rCDA2XnYE7hA1Hh6+rPkdIRAcswCXu/Pbaavck="
},
{
"pname": "System.Memory",
"version": "4.5.5",
"hash": "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI="
},
{
"pname": "System.Numerics.Vectors",
"version": "4.4.0",
"hash": "sha256-auXQK2flL/JpnB/rEcAcUm4vYMCYMEMiWOCAlIaqu2U="
},
{
"pname": "System.Reactive",
"version": "6.0.1",
"hash": "sha256-Lo5UMqp8DsbVSUxa2UpClR1GoYzqQQcSxkfyFqB/d4Q="
},
{
"pname": "System.Reflection.Metadata",
"version": "8.0.0",
"hash": "sha256-dQGC30JauIDWNWXMrSNOJncVa1umR1sijazYwUDdSIE="
},
{
"pname": "System.Runtime.CompilerServices.Unsafe",
"version": "4.5.3",
"hash": "sha256-lnZMUqRO4RYRUeSO8HSJ9yBHqFHLVbmenwHWkIU20ak="
},
{
"pname": "System.Runtime.CompilerServices.Unsafe",
"version": "6.0.0",
"hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="
},
{
"pname": "System.Text.Encoding.CodePages",
"version": "8.0.0",
"hash": "sha256-fjCLQc1PRW0Ix5IZldg0XKv+J1DqPSfu9pjMyNBp7dE="
},
{
"pname": "System.Threading.Tasks.Extensions",
"version": "4.5.4",
"hash": "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng="
},
{
"pname": "Tmds.DBus.Protocol",
"version": "0.21.2",
"hash": "sha256-gaK/5aAummyin6ptnhaJbnA0ih4+2xADrtrLfFbHwYI="
},
{
"pname": "UnicornEngine.Unicorn",
"version": "2.0.2-rc1-fb78016",
"hash": "sha256-NrJ4/o4FmCt2zoB1fWAzqdonvpYhTFsWwh3h0lxZg+Q="
}
]
+37
View File
@@ -0,0 +1,37 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p coreutils gnused curl common-updater-scripts nix-prefetch-git jq
# shellcheck shell=bash
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
# If NEW_VERSION or COMMIT are not set, fetch the latest version
if [ -z ${NEW_VERSION+x} ] && [ -z ${COMMIT+x} ]; then
RELEASE_DATA=$(curl -s "https://git.ryujinx.app/api/v4/projects/1/repository/tags?order_by=updated&sort=desc")
if [ -z "$RELEASE_DATA" ] || [[ $RELEASE_DATA =~ "imposed ratelimits" ]]; then
echo "failed to get release job data" >&2
exit 1
fi
NEW_VERSION=$(echo "$RELEASE_DATA" | jq -r '[.[] | select(.name | startswith("Canary") | not)][0].name')
fi
OLD_VERSION="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./package.nix)"
echo "comparing versions $OLD_VERSION -> $NEW_VERSION"
if [[ "$OLD_VERSION" == "$NEW_VERSION" ]]; then
echo "Already up to date!"
if [[ "${1-default}" != "--deps-only" ]]; then
exit 0
fi
fi
cd ../../../..
if [[ "${1-default}" != "--deps-only" ]]; then
SHA="$(nix-prefetch-git https://git.ryujinx.app/ryubing/ryujinx --rev "$NEW_VERSION" --quiet | jq -r '.sha256')"
SRI=$(nix --experimental-features nix-command hash to-sri "sha256:$SHA")
# update-source-version ryubing-canary "$NEW_VERSION" "$SRI"
fi
echo "building Nuget lockfile"
eval "$(nix-build -A ryubing-canary.fetch-deps --no-out-link)"
+58
View File
@@ -0,0 +1,58 @@
{ lib
, appimageTools
, fetchurl
, fuse3
, makeWrapper
}:
# WARNING: This package is a fucking hack! Two things:
#
# - You must manually patch the Dolphin emulator installed by Slippi. After
# Dolphin is installed (i.e. once the 'play' button is clickable), you must
# navigate to ~/.cache/appimage-run/*/apprun-hooks/linux-env.sh and
# delete/comment the lines modifying LD_LIBRARY_PATH. I hope to fix this at
# some point, but it took me like 15 hours just to attain this bare minimum
# functionality, rofl. Good luck. Open an issue or contact me (msyds) if you
# need assistance.
#
# - Requires
# programs.appimage = {
# enable = true;
# binfmt = true;
# };
# in your NixOS config. This is because Slippi tries to run the Dolphin
# AppImage like a normal executable.
appimageTools.wrapType2 rec {
pname = "slippi-launcher";
version = "2.11.10";
src = fetchurl {
url = "https://github.com/project-slippi/slippi-launcher/releases/download/v${version}/Slippi-Launcher-${version}-x86_64.AppImage";
hash = "sha256-OrWd0jVqe6CzNbVRNlm2alt2NZ8uBYeHiASaB74ouW4=";
};
nativeBuildInputs = [
makeWrapper
];
extraPkgs = pkgs: [
pkgs.fuse3
];
extraInstallCommands = ''
wrapProgram $out/bin/slippi-launcher \
--set FUSERMOUNT_PROG "${fuse3}/bin/fusermount3" \
--add-flags "''${NIXOS_OZONE_WL:+''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
'';
# note to madddy./.. DELETE "ubuntu is stupid" LINE FROM ~/.cache/appimage-run/XXXXX/shell-hooks/a
meta = {
description = "The way to play Slippi Online and watch replays.";
homepage = "https://github.com/project-slippi/slippi-launcher";
downloadPage = "https://github.com/project-slippi/slippi-launcher/releases";
license = lib.licenses.gpl3;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
platforms = [ "x86_64-linux" ];
};
}
+184
View File
@@ -0,0 +1,184 @@
{ lib
, fetchFromGitHub
, electron
, nodejs
, makeWrapper
, git
, stdenv
, yarnConfigHook
, fetchYarnDeps
}:
# Similar derivations:
# - Logseq: https://github.com/NixOS/nixpkgs/blob/nixos-25.05/pkgs/by-name/lo/logseq/package.nix#L283
# - Podman: https://github.com/NixOS/nixpkgs/blob/224042e9a3039291f22f4f2ded12af95a616cca0/pkgs/applications/virtualization/podman-desktop/default.nix
stdenv.mkDerivation (final: {
pname = "slippi-launcher";
version = "2.11.10";
src = fetchFromGitHub {
owner = "project-slippi";
repo = "slippi-launcher";
rev = "v${final.version}";
hash = "sha256-EWKxzGLjyJ15wGioUtfh3biU7Pfa5bYtV1Om2w5IZW8=";
leaveDotGit = true;
};
patches = [
# Dependency with git+https protocol breaks yarnConfigHook.
./fix-git-deps.patch
];
# Avoid network error during build.
# https://stackoverflow.com/questions/78004799/78004800
env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1;
buildInputs = [
electron
];
nativeBuildInputs = [
yarnConfigHook
nodejs
electron
git
makeWrapper
];
# Disable the default usage of yarnConfigHook. We instead opt to run the hook
# manually (several times) for reasons made clear in the commentary on this
# package's `postConfigure` script.
dontYarnInstallDeps = true;
configurePhase =
let
# Constants to be set in the .env file. Slippi contains an example .env
# file here:
# https://github.com/project-slippi/slippi-launcher/blob/main/.env.example
dotenv = {
# N.B. although these values are *not* secrets (yes, even the API key), they
# were extracted from the AppImage release.
FIREBASE_API_KEY = "AIzaSyAuQqc_wgqcUu3FqrICEPZ9Av_hPxMR_i4";
FIREBASE_AUTH_DOMAIN = "slippi.firebaseapp.com";
FIREBASE_DATABASE_URL = "https://slippi.firebaseio.com";
FIREBASE_PROJECT_ID = "slippi";
FIREBASE_STORAGE_BUCKET = "slippi.appspot.com";
FIREBASE_MESSAGING_SENDER_ID = "101358986051";
FIREBASE_APP_ID = "1:101358986051:web:1e361ce2a76dfd1b0f85f6";
FIREBASE_MEASUREMENT_ID = "G-VNB1EB87Y2";
# Ditto.
SLIPPI_WS_SERVER = "ws://broadcast-dot-slippi.uc.r.appspot.com/";
SLIPPI_GRAPHQL_ENDPOINT = "/graphql";
};
in ''
runHook preConfigure
# For reasons I don't quite understand[1], this package is split across two
# `package.json` files. We call yarnConfigHook once for each package.json
# to install their respective dependencies. Each yarnConfigHook call uses a
# separate offline cache.
#
# [1]: https://www.electron.build/tutorials/two-package-structure.html
yarnOfflineCache="$yarnOfflineCacheRoot" yarnConfigHook
pushd release/app
yarnOfflineCache="$yarnOfflineCacheRelease" yarnConfigHook
popd
# Merge the dependencies listed in release/app/package.json into the
# node_modules/ directory corresponding to the top-level package.json.
# This feels very wrong! Surely there's a better way
for i in release/app/node_modules/*; do
dest="node_modules/$(basename "$i")"
if [[ ! -f "$dest" ]]; then
mv "$i" "$dest"
fi
done
# Populate the .env file.
tee .env << EOF
${lib.concatLines
(lib.mapAttrsToList (k: v: "${k}=${v}") dotenv)}
EOF
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
cp -r ${electron.dist} electron-dist
chmod -R u+w electron-dist
# Run builds concurrently. Taken from Slippi's `yarn run package` script,
# but we've added the `--ofline` flag.
yarn --offline run build:main &
yarn --offline run build:renderer &
yarn --offline run build:migrations &
wait
# Build to release/build/linux-unwrapped. The flag `--dir` stops
# electron-builder before creating an AppImage.
./node_modules/.bin/electron-builder \
build --dir --publish never \
-c.electronDist=electron-dist \
-c.electronVersion=${electron.version}
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,opt/slippi-launcher}
cp -r release/build/linux-unpacked/* $out/opt/slippi-launcher
# Electron programs need to differentiate between production and
# non-production builds, and they do so by testing if argv[0] is 'electron'
# or not. Thus, --inherit-argv0 should be all we need; however, this is not
# the case. God knows why. Just suck it up and set
# ELECTRON_FORCE_IS_PACKAGED=true.
makeWrapper '${lib.getExe electron}' $out/bin/slippi-launcher \
--add-flags "$out/opt/slippi-launcher/resources/app.asar" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \
--prefix LD_LIBRARY_PATH : $out/opt/slippi-launcher \
--inherit-argv0 \
--set ELECTRON_FORCE_IS_PACKAGED true
runHook postInstall
'';
yarnOfflineCacheRoot = fetchYarnDeps {
name = "slippi-launcher-yarn-deps-root";
# One of our patches modifies the (top-level) Yarn lockfile and thus must be
# visible to fetchYarnDeps.
inherit (final) src patches;
hash = "sha256-Crq9XywLtEc8IImkldodZJ823YG6dB8D9qGksH/lb3I=";
};
yarnOfflineCacheRelease = fetchYarnDeps {
name = "slippi-launcher-yarn-deps-resources";
# Our patches don't touch the lockfile at release/app/yarn.lock, so there's
# no need to inherit patches }:).
inherit (final) src;
sourceRoot = "${final.src.name}/release/app";
hash = "sha256-iCFqgy+jRaMCoGC77iXkEh964cZAtXFRfdOOJaRTfLc=";
};
meta = {
description = "The way to play Slippi Online and watch replays.";
longDescription = ''
The Slippi Launcher acts as a one stop shop for everything Slippi
related. It handles updating Slippi Dolphin, playing Slippi Online,
launching and analyzing replays, and more.
'';
license = lib.licenses.gpl3;
homepage = "https://github.com/project-slippi/slippi-launcher";
changelog =
"https://github.com/project-slippi/slippi-launcher/releases/tag/v${final.version}";
platforms = lib.platforms.all;
broken = true;
};
})
+16
View File
@@ -0,0 +1,16 @@
diff --git a/yarn.lock b/yarn.lock
index 6b2fba28..40ed0fc4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1848,9 +1848,9 @@
global-agent "^3.0.0"
global-tunnel-ng "^2.7.1"
-"@electron/node-gyp@git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2":
+"@electron/node-gyp@https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2":
version "10.2.0-electron.1"
- resolved "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2"
+ resolved "https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2"
dependencies:
env-paths "^2.2.0"
exponential-backoff "^3.1.1"
+32
View File
@@ -0,0 +1,32 @@
{ stdenvNoCC
, texlive
}:
stdenvNoCC.mkDerivation (final: {
pname = "syd-plex-latex";
version = "1.0.0";
src = ./.;
nativeBuildInputs = [ texlive.combined.scheme-small ];
passthru = {
pkgs = [ final.finalPackage ];
tlDeps = with texlive; [
plex
plex-otf
fontaxes
unicode-math
xetex
fontspec
xltxtra
realscripts
xecjk
];
tlType = "run";
};
installPhase = ''
runHook preInstall
dir="$out/tex/latex/syd-plex"
mkdir -p "$dir"
mv syd-plex.sty "$dir"
runHook postInstall
'';
})
+15
View File
@@ -0,0 +1,15 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{syd-plex}[2025/12/01 Configure IBM Plex fonts]
% Redefine some commands to make unicode-math work lol. See §3.1 of the
% unicode-math manual.
\renewcommand*{\mathrm}[1]{\symup{#1}}
\RequirePackage{plex-otf}
\RequirePackage{xeCJK}
\setmathfont{IBM Plex Math}
\setmainfont{IBM Plex Serif}
\setCJKmainfont{IBM Plex Sans KR}
% Use sans-serif for \operatorname
\setoperatorfont\mathsf
+109
View File
@@ -0,0 +1,109 @@
{ cmake
, cacert
, cpm-cmake
, git
, pkg-config
, pulseaudio
, pipewire
, fetchFromGitHub
, stdenv
}:
# See
# https://github.com/NixOS/nixpkgs/blob/nixos-25.05/pkgs/development/compilers/codon/default.nix#L136
# for an example of an CPM/CMake project built with Nix.
let
version = "6.1.0";
depsDir = "deps";
src = fetchFromGitHub {
owner = "Vencord";
repo = "venmic";
rev = "v${version}";
hash = "sha256-0UP8a2bfhWGsB2Lg/GeIBu4zw1zHnXbitT8vU+DLeEY=";
};
venmicDeps = stdenv.mkDerivation {
name = "venmic-deps-${version}.tar.gz";
inherit src;
nativeBuildInputs = [
cmake
cacert
cpm-cmake
git
# Pkg-config is implicitly used by CMake and will fail to find libs
# without it.
pkg-config
];
buildInputs = [
pulseaudio
pipewire
];
dontBuild = true;
cmakeFlags = [
"-DCPM_DOWNLOAD_ALL=ON"
"-DCPM_SOURCE_CACHE=${depsDir}"
];
installPhase = ''
# Remove .git directories. For reasons unknown to me, they are a source
# of indeterminism.
find "${depsDir}" -type d -name '.git' -exec rm -rf {} +
# Build a reproducible tarball, per
# https://reproducible-builds.org/docs/archives.
tar --owner=0 --group=0 --numeric-owner --format=gnu \
--sort=name --mtime="@$SOURCE_DATE_EPOCH" \
-czf $out \
"${depsDir}"
'';
outputHashAlgo = "sha256";
outputHash = "sha256-cnkqZbSnxFFwDy0zNo4QuQQCaT0dav3V8TDjzZ4mMFA=";
};
venmic-server = stdenv.mkDerivation {
pname = "venmic-server";
inherit version src venmicDeps;
postUnpack = ''
# Bring in the cached CPM deps.
mkdir -p $sourceRoot/build
tar xzf "$venmicDeps" -C $sourceRoot/build
# Bring in CPM itself Venmic tries to download it itself.
rm $sourceRoot/cmake/cpm.cmake
ln -s ${cpm-cmake}/share/cpm/CPM.cmake $sourceRoot/cmake/cpm.cmake
'';
cmakeFlags = [
"-DCPM_SOURCE_CACHE=${depsDir}"
"-Dvenmic_prefer_remote=OFF"
];
nativeBuildInputs = [
cmake
cpm-cmake
git
# Pkg-config is implicitly used by CMake and will fail to find libs
# without it.
pkg-config
];
buildInputs = [
pulseaudio
pipewire
];
installPhase = ''
mkdir -p $out/bin
mv server/venmic-server $out/bin
'';
};
in venmic-server
+31
View File
@@ -0,0 +1,31 @@
{ stdenv, pkg-config, udev, libusb1, fetchFromGitHub }:
stdenv.mkDerivation {
pname = "wii-u-gc-adapter";
version = "fa098ef";
src = fetchFromGitHub {
owner = "ToadKing";
repo = "wii-u-gc-adapter";
rev = "fa098efa7f6b34f8cd82e2c249c81c629901976c";
hash = "sha256-wm0vDU7QckFvpgI50PG4/elgPEkfr8xTmroz8kE6QMo=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
udev
libusb1
];
patches = [
./remove-Wformat.patch
];
installPhase = ''
mkdir -p $out/bin
mv wii-u-gc-adapter $out/bin
'';
}
@@ -0,0 +1,10 @@
diff --git a/Makefile b/Makefile
index a00f13a..f13d0c2 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-CFLAGS += -Wall -Wextra -pedantic -Wno-format -std=c99 $(shell pkg-config --cflags libusb-1.0) $(shell pkg-config --cflags udev)
+CFLAGS += -Wall -Wextra -Wformat -std=c99 $(shell pkg-config --cflags libusb-1.0) $(shell pkg-config --cflags udev)
LDFLAGS += -lpthread -ludev $(shell pkg-config --libs libusb-1.0) $(shell pkg-config --libs udev)
ifeq ($(DEBUG), 1)