I added proxmox-nixos with the following:
proxmox.nix
{ inputs, system, ... }:
{
imports = [ inputs.proxmox-nixos.nixosModules.proxmox-ve ];
nixpkgs.overlays = [ inputs.proxmox-nixos.overlays.${system} ];
services.proxmox-ve.enable = true;
services.proxmox-ve.ipAddress = "10.0.0.10";
nix.settings =
let
server = "https://cache.saumon.network/proxmox-nixos";
pubkey = "proxmox-nixos:D9RYSWpQQC/msZUWphOY2I5RLH5Dd6yQcaHIuug7dWM=";
in
{
substituters = [ server ];
trusted-substituters = [ server ];
trusted-public-keys = [ pubkey ];
};
}
I first rebuilt without services.proxmox-ve to refresh the trusted substituters. Rebuilding again (via nix-output-monitor) triggers compilation of the pve dependencies:
nixos-rebuild switch
$ nh os switch
> Building NixOS configuration
these 28 derivations will be built:
...
/nix/store/kx1lvizc8pgqpsm4yb9bwd2bs6lnxw8b-pve-rs-0.10.10
...
┏━ Dependency Graph:
...
┃ │ ┌─ ⏵ pve-rs-0.10.10 (buildPhase) ⏱ 13s
...
┣━━━ Builds │ Downloads
┗━ ∑ ⏵ 3 │ ✔ 7 │ ⏸ 21 │ ↓ 0 │ ↓ 0 │ ⏸ 20 │ ⏱ 1m1s
Checking nix config show confirms the substituters are configured:
nix config show
$ nix config show | grep substitute
always-allow-substitutes = true
builders-use-substitutes = true
substitute = true
substituters = https://cache.nixos-cuda.org https://cache.saumon.network/proxmox-nixos https://niri.cachix.org https://cache.nixos.org/
trusted-substituters = https://cache.nixos.org?priority=1 https://cache.saumon.network/proxmox-nixos https://cachix.cachix.org?priority=4 https://nix-community.cachix.org?priority=2 https://nixpkgs.cachix.org?priority=3 https://walker-git.cachix.org https://walker.cachix.org
Checking the cache for a derivation confirms it’s available:
curl derivation
$ curl -I https://cache.saumon.network/proxmox-nixos/kx1lvizc8pgqpsm4yb9bwd2bs6lnxw8b.narinfo
HTTP/2 200
server: nginx
date: Wed, 24 Dec 2025 15:59:50 GMT
content-type: text/x-nix-narinfo
content-length: 1938
x-attic-cache-visibility: public
I can fetch the derivation from the cache into my store (I don’t know how to do it in nix3)
realizing derivation
$ nix-store -r /nix/store/kx1lvizc8pgqpsm4yb9bwd2bs6lnxw8b-pve-rs-0.10.10 --substitute --option substituters https://cache.saumon.network/proxmox-nixos
this path will be fetched (0.00 MiB download, 14.41 MiB unpacked):
/nix/store/kx1lvizc8pgqpsm4yb9bwd2bs6lnxw8b-pve-rs-0.10.10
copying path '/nix/store/kx1lvizc8pgqpsm4yb9bwd2bs6lnxw8b-pve-rs-0.10.10' from 'https://cache.saumon.network/proxmox-nixos'...
warning: you did not specify '--add-root'; the result might be removed by the garbage collector
/nix/store/kx1lvizc8pgqpsm4yb9bwd2bs6lnxw8b-pve-rs-0.10.10
Now if I rebuild the os it doesn’t compile this one but does for the other derivations…
final rebuild
pve-qemu> WARNING: The directory '/homeless-shelter/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.
┏━ Dependency Graph:
...
┃ │ ┌─ ↓ ⏸ pve-qemu-server-9.0.23
┃ │ ┌─ ↓ ⏸ perl-5.40.0-env
┃ │ ├─ ⏵ pve-yew-mobile-gui-0.6.2 (buildPhase) ⏱ 55s
┃ │ ├─ ⏵ pve-qemu-10.0.2-4 (configurePhase) ⏱ 55s
┃ │ ┌─ ↓ ⏸ pve-manager-9.0.11
┃ │ ┌─ ↓ ⏸ proxmox-ve-9.0.11
...
┣━━━ Builds │ Downloads
┗━ ∑ ⏵ 3 │ ✔ 14 │ ⏸ 21 │ ↓ 0 │ ↓ 0 │ ⏸ 19 │ ⏱ 1m40s^C