diff options
| -rw-r--r-- | flake.nix | 10 | ||||
| -rw-r--r-- | pkgs/default.nix | 9 | ||||
| -rw-r--r-- | pkgs/wine-wow-yabridge/default.nix | 6 | ||||
| -rw-r--r-- | pkgs/yabridge/default.nix | 7 | ||||
| -rw-r--r-- | pkgs/yabridgectl/default.nix | 7 | ||||
| -rw-r--r-- | shells/cuda.nix | 45 | ||||
| -rw-r--r-- | shells/default.nix | 36 | ||||
| -rw-r--r-- | shells/vst.nix | 36 |
8 files changed, 150 insertions, 6 deletions
@@ -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}"; + ''; +} |