{ config, lib, pkgs, namespace, ... }: { programs.ccache = { enable = true; packageNames = [ "cachyos-lto" "cachyos-lto-x86_64-unknown-linux-gnu-6.18.0" "cachyos-lto-x86_64-unknown-linux-gnu" "cachyos-lto-znver4" "cachyos-server-lto" "cachyos-server-lto-znver4" "cachyos-rc-lto" "cachyos-rc-lto-znver4" "chromium" "electron" "ffmpeg" "ffmpeg-full" "ffmpeg-headless-rpi" "gjs" "gst-plugins-bad" "gtk4" "jemalloc" "libcamera-rpi" "libraspberrypi" "libsecret" "linux" "onnxruntime" "opencv" "pipewire" "qemu" "qtwebengine" "raspberrypi-utils" "sdl" "sdl2" "torch" "uv" "webkitgtk" # "yubioath-flutter" ]; cacheDir = "/var/cache/ccache"; # default location }; nixpkgs.overlays = [ (self: super: { "webkitgtk_4_1" = super."webkitgtk_4_1".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_7-full = super.ffmpeg_7-headless.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; }; }; }