nix-dotfiles/flake.nix
2025-04-03 13:21:50 -06:00

110 lines
2.8 KiB
Nix

{
description = "NixOS configuration for Cobray";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-gaming = {
url = "github:fufexan/nix-gaming"; # for glorious eggrolls
};
rpcs3-latest = {
url = "github:RPCS3/rpcs3";
flake = false;
};
};
outputs = {
self,
nixpkgs,
home-manager,
nix-gaming,
rpcs3-latest,
...
} @ inputs: let
system = "x86_64-linux";
customPkgsOverlay = final: prev: let
customPkgs = import ./pkgs {
pkgs = prev;
lib = prev.lib;
};
in
customPkgs
// {
pugixml = prev.pugixml.overrideAttrs (oldAttrs: rec {
version = "1.15";
src = prev.fetchurl {
url = "https://github.com/zeux/pugixml/releases/download/v${version}/pugixml-${version}.tar.gz";
sha256 = "ZVreV/pwP7QhwuuaARO1BkvdsUXUFd0fiMeTU9kNURo=";
};
});
SDL3 = prev.stdenv.mkDerivation rec {
pname = "SDL3";
version = "3.1.3";
src = prev.fetchFromGitHub {
owner = "libsdl-org";
repo = "SDL";
rev = "preview-${version}";
sha256 = "XQwcl/udA+r5HJs21K+GtZ2GIXfXUHjYTXFYW4Yx+Do=";
};
nativeBuildInputs = [prev.cmake];
buildInputs = [
prev.libGL
prev.xorg.libX11
prev.xorg.libXext
prev.alsa-lib
];
cmakeFlags = [
"-DSDL_STATIC=OFF"
"-DSDL_SHARED=ON"
];
};
rpcs3 = prev.rpcs3.overrideAttrs (oldAttrs: {
nativeBuildInputs =
(oldAttrs.nativeBuildInputs or [])
++ [
prev.llvmPackages_18.llvm.dev
prev.llvmPackages_18.clang
];
buildInputs =
(oldAttrs.buildInputs or [])
++ [
prev.llvmPackages_18.llvm
prev.llvmPackages_18.libclang
final.SDL3
];
});
};
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [customPkgsOverlay];
};
lib = nixpkgs.lib;
rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: {
src = rpcs3-latest;
});
in {
nixosConfigurations = {
nixos = lib.nixosSystem {
inherit system;
specialArgs = {inherit inputs;};
modules = [
{nixpkgs.overlays = [customPkgsOverlay];}
./hosts/configuration.nix
];
};
};
homeConfigurations = {
"cobray" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = {inherit inputs rpcs3_latest;};
modules = [./home-manager/cobray.nix];
};
};
};
}