summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.nix10
-rw-r--r--pkgs/default.nix9
-rw-r--r--pkgs/wine-wow-yabridge/default.nix6
-rw-r--r--pkgs/yabridge/default.nix7
-rw-r--r--pkgs/yabridgectl/default.nix7
-rw-r--r--shells/cuda.nix45
-rw-r--r--shells/default.nix36
-rw-r--r--shells/vst.nix36
8 files changed, 150 insertions, 6 deletions
diff --git a/flake.nix b/flake.nix
index fc9330c..b8555cd 100644
--- a/flake.nix
+++ b/flake.nix
@@ -127,12 +127,12 @@
pkgs.alejandra
);
- devShell = perSystem (
+ devShells = perSystem (
pkgs: system:
- pkgs.mkShell {
- packages = [
- home-manager.packages.${system}.home-manager
- ];
+ import ./shells {
+ inherit pkgs;
+ inherit system;
+ inherit inputs;
}
);
};
diff --git a/pkgs/default.nix b/pkgs/default.nix
index f2bd7c6..2187e6f 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -10,11 +10,18 @@
../options.nix
];
}).config;
-in {
+in rec {
arcanist = pkgs.callPackage ./arcanist {};
astal = pkgs.callPackage ./astal {
inherit inputs options;
};
libfprint-2-tod1-vfs0090 = pkgs.callPackage ./libfprint-2-tod1-vfs0090 {};
solaar-udev-rules = pkgs.callPackage ./solaar-udev-rules {};
+ wine-wow-yabridge = pkgs.callPackage ./wine-wow-yabridge {};
+ yabridge = pkgs.callPackage ./yabridge {
+ wine = wine-wow-yabridge;
+ };
+ yabridgectl = pkgs.callPackage ./yabridgectl {
+ wine = wine-wow-yabridge;
+ };
}
diff --git a/pkgs/wine-wow-yabridge/default.nix b/pkgs/wine-wow-yabridge/default.nix
new file mode 100644
index 0000000..f3346a3
--- /dev/null
+++ b/pkgs/wine-wow-yabridge/default.nix
@@ -0,0 +1,6 @@
+{wineWowPackages}:
+wineWowPackages.yabridge.overrideAttrs (finalAttrs: {
+ NIX_CFLAGS_COMPILE =
+ (finalAttrs.NIX_CFLAGS_COMPILE or "")
+ + "-std=gnu17";
+})
diff --git a/pkgs/yabridge/default.nix b/pkgs/yabridge/default.nix
new file mode 100644
index 0000000..97a49db
--- /dev/null
+++ b/pkgs/yabridge/default.nix
@@ -0,0 +1,7 @@
+{
+ yabridge,
+ wine,
+}:
+yabridge.override {
+ inherit wine;
+}
diff --git a/pkgs/yabridgectl/default.nix b/pkgs/yabridgectl/default.nix
new file mode 100644
index 0000000..4f3e7a8
--- /dev/null
+++ b/pkgs/yabridgectl/default.nix
@@ -0,0 +1,7 @@
+{
+ yabridgectl,
+ wine,
+}:
+yabridgectl.override {
+ inherit wine;
+}
diff --git a/shells/cuda.nix b/shells/cuda.nix
new file mode 100644
index 0000000..3935296
--- /dev/null
+++ b/shells/cuda.nix
@@ -0,0 +1,45 @@
+{
+ pkgs,
+ lib,
+}: let
+ nvidiaPackage = pkgs.linuxPackages_latest.nvidiaPackages.stable;
+ libs = with pkgs; [
+ # CUDA
+ cudaPackages.cuda_cudart
+ cudaPackages.cuda_nvcc
+ cudaPackages.cuda_cccl
+ cudaPackages.cudnn
+ cudatoolkit
+ nvidiaPackage
+
+ # OpenGL
+ libGLU
+ libGL
+ freeglut
+
+ # X11
+ xorg.libXi
+ xorg.libXmu
+ xorg.libXext
+ xorg.libX11
+ xorg.libXv
+ xorg.libXrandr
+
+ # Dev Tools
+ ffmpeg
+ zlib
+ gcc
+ binutils
+ ];
+in {
+ packages = libs;
+ LD_LIBRARY_PATH = lib.makeLibraryPath libs;
+
+ shellHook = ''
+ # Nvidia Driver setup
+ export NVIDIA_VISIBLE_DEVICES=all
+ export NVIDIA_DRIVER_CAPABILITIES=compute,utility
+ export CUDA_VISIBLE_DEVICES=0
+ export CUDA_PATH=${pkgs.cudatoolkit}
+ '';
+}
diff --git a/shells/default.nix b/shells/default.nix
new file mode 100644
index 0000000..8bc7548
--- /dev/null
+++ b/shells/default.nix
@@ -0,0 +1,36 @@
+{
+ pkgs,
+ system,
+ inputs,
+}: {
+ # Default shell only containing home-manager for
+ # initial installs
+ default = pkgs.mkShell {
+ packages = [
+ inputs.home-manager.packages.${system}.home-manager
+ ];
+ };
+
+ # Loads Nvidia CUDA
+ cuda = pkgs.mkShell (import ./cuda.nix {
+ pkgs = import inputs.nixpkgs {
+ inherit system;
+ config = {
+ allowUnfree = true;
+ cudaSupport = true;
+ cudaVersion = "12";
+ };
+ };
+ lib = inputs.nixpkgs.lib;
+ });
+
+ # VST development with windows VST3 support though yabridge/wine
+ vst = pkgs.mkShell (import ./vst.nix {
+ pkgs = import inputs.nixpkgs {
+ inherit system;
+ config.allowUnfree = true;
+ };
+ lib = inputs.nixpkgs.lib;
+ inherit system inputs;
+ });
+}
diff --git a/shells/vst.nix b/shells/vst.nix
new file mode 100644
index 0000000..a0c1694
--- /dev/null
+++ b/shells/vst.nix
@@ -0,0 +1,36 @@
+{
+ pkgs,
+ lib,
+ inputs,
+ system,
+}: let
+ wine = inputs.self.packages.${system}.wine-wow-yabridge;
+ yabridge = inputs.self.packages.${system}.yabridge;
+ yabridgectl = inputs.self.packages.${system}.yabridgectl;
+ libs = with pkgs; [
+ # fix missing libs
+ gcc-unwrapped
+ libxcb
+ # fix audio
+ alsa-lib
+ pipewire
+ pulseaudio
+ # yabridge
+ wine
+ yabridge
+ yabridgectl
+ ];
+in {
+ packages = with pkgs;
+ [
+ reaper
+ ]
+ ++ libs;
+
+ LD_LIBRARY_PATH = lib.makeLibraryPath libs;
+
+ shellHook = ''
+ export WINEPREFIX="$XDG_DATA_HOME/vst_wine";
+ export NIX_PROFILES="$NIX_PROFILES ${yabridge}";
+ '';
+}