Files
nix-config/modules/nixos/nix/default.nix
mjallen18 c8aebb9e4a ugh
2025-12-26 18:22:49 -06:00

165 lines
4.6 KiB
Nix

{
config,
lib,
pkgs,
namespace,
...
}:
{
programs.ccache = {
enable = true;
packageNames = [
"dolphin-emu"
# "ffmpeg"
"ffmpeg_8"
"ffmpeg_7"
"ffmpeg_6"
"ffmpeg-full"
"gamescope"
"gjs"
"gst-plugins-bad"
"gst-plugins-rs"
"gtk4"
"hipblaslt"
"jemalloc"
"jupiter-fan-control"
"libcamera-rpi"
"libraspberrypi"
"libsecret"
"linux"
"linuxPackages_cachyos"
"linuxPackages_cachyos-lto"
"linuxPackages_cachyos-lto-znver4"
"linuxPackages_cachyos-server"
"linuxPackages_cachyos-server-lto"
"linuxPackages_cachyos-server-lto-znver4"
"linuxPackages_cachyos-rc"
"linuxPackages_cachyos-rc-lto"
"linuxPackages_cachyos-rc-lto-znver4"
"linuxPackages_cachyos-hardened"
"linuxPackages_cachyos-hardened-lto"
"linuxPackages_cachyos-hardened-lto-znver4"
"mesa"
"mesa_i686"
"mesa-radeonsi-jupiter"
"mesa-radv-jupiter"
"mgba"
"orca-slicer"
# "onnxruntime"
"opencv"
"opencv4"
"opencv4WithoutCuda"
"pipewire"
"qemu"
"qemu_kvm"
"qemu_full"
"qt3d"
"qtdeclarative"
"qtmultimedia"
"raspberrypi-utils"
"ryubing"
"sdl"
"sdl2"
"sdl3"
"torch"
"uv"
"webkitgtk"
];
cacheDir = "/var/cache/ccache"; # default location
};
nixpkgs.overlays = [
(_self: super: {
${namespace} = super.${namespace} // {
linux-rpi = super.${namespace}.linux-rpi.override { stdenv = super.ccacheStdenv; };
libraspberrypi = super.${namespace}.libraspberrypi.override { stdenv = super.ccacheStdenv; };
raspberrypi-utils = super.${namespace}.raspberrypi-utils.override { stdenv = super.ccacheStdenv; };
};
})
(_self: super: {
"mesa" = super."mesa".override { buildPackages.stdenv = super.ccacheStdenv; };
})
(_self: super: {
electron = super.stable.electron-bin;
electron_36 = super.stable.electron_36-bin;
electron_37 = super.stable.electron_37-bin;
})
# (_self: super: {
# "webkitgtk_4_1" = super.stable."webkitgtk_4_1".override { clangStdenv = super.ccacheStdenv; };
# })
# (_self: super: {
# "webkitgtk_6_0" = super."webkitgtk_6_0".override { clangStdenv = super.ccacheStdenv; };
# })
(_self: super: {
"jellyfin-ffmpeg" = super."jellyfin-ffmpeg".override {
ffmpeg_7-full = super.ffmpeg_7-full.override { stdenv = super.ccacheStdenv; };
};
})
# (self: super: {
# "ffmpeg-headless-rpi" = super."ffmpeg-headless-rpi".override { ffmpeg = super.ffmpeg_7.override { stdenv = super.ccacheStdenv; }; };
# })
# todo: make these work
(_self: super: {
pcsx2 = super.pcsx2.override {
llvmPackages = super.llvmPackages // {
stdenv = super.ccacheStdenv;
};
};
})
(_self: super: {
driversi686Linux = super.driversi686Linux // {
mesa = super.driversi686Linux.mesa.override {
stdenv = super.ccacheStdenv;
buildPackages.stdenv = super.ccacheStdenv;
};
};
})
(_self: super: {
kdePackages = super.kdePackages // {
qt3d = super.kdePackages.qt3d.override {
qtbase = super.kdePackages.qtbase.override { stdenv = super.ccacheStdenv; };
};
qtwebengine = super.stable.kdePackages.qtwebengine; #.override { stdenv = super.ccacheStdenv; };
};
})
];
nix = {
settings = {
extra-sandbox-paths = [ config.programs.ccache.cacheDir ];
substituters = [
"https://cache.mjallen.dev/nas-cache"
"https://nixos-raspberrypi.cachix.org"
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
];
trusted-public-keys = [
"nas-cache:Y7PR+XTLr1bLIL85PKb9Tk9/BnE5HndTKvZYWVP1/48="
"nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
warn-dirty = lib.mkForce false;
experimental-features = lib.mkForce [
"nix-command"
"flakes"
];
trusted-users = [ "@wheel" ];
};
# Garbage collect automatically every week
gc.automatic = lib.mkDefault true;
gc.options = lib.mkDefault "--delete-older-than 30d";
optimise.automatic = lib.mkDefault true;
};
nixpkgs = {
config = {
cudaSupport = lib.mkDefault config.${namespace}.hardware.nvidia.enable;
rocmSupport = lib.mkDefault config.${namespace}.hardware.amd.enable;
allowUnsupportedSystem = true;
};
};
}