Title: Using nix download bandwidth limit feature | |
Author: Solène | |
Date: 23 August 2022 | |
Tags: bandwidth nix linux | |
Description: This is a guide explaining how to set up NixOS to use a | |
development version of nix including a new change supporting download | |
speed limit. | |
# Introduction | |
I submitted a change to the nix package manager last week, and it got | |
merged! It's now possible to define a bandwidth speed limit in the | |
nix.conf configuration file. | |
Link to the GitHub pull request | |
This kind of limit setting is very important for users who don't have a | |
fast Internet access, this allows the service to download packages | |
while keep the network usable meanwhile. | |
Unfortunately, we need to wait for the next Nix version to be available | |
to use it, fortunately it's easy to override a package settings to use | |
the merge commit as a new version for nix. | |
Let's see how to configure NixOS to use a newer Nix version from git. | |
# Setup | |
On NixOS, we will override the nix package attributes to change its | |
version and the according checksum. | |
We want the new option "download-speed" that takes a value for the | |
kilobytes per second speed limit. | |
```nix | |
nix.extraOptions = '' | |
download-speed = 800 | |
''; | |
nixpkgs.overlays = [ | |
(self: super: | |
{ | |
nix = super.nix.overrideDerivation (oldAttrs: { | |
name = "nix-unstable"; | |
src = super.fetchFromGitHub { | |
owner = "NixOS"; | |
repo = "nix"; | |
rev = "8d84634e26d6a09f9ca3fe71fcf9cba6e4a95107"; | |
sha256 = "sha256-Z6weLCmdPZR044PIAA4GRlkQRoyAc0s5ASeLr+eK1N0=… | |
}; | |
}); | |
}) | |
]; | |
``` | |
Run "nixos-rebuild switch" as root, and voilà! | |
For non-NixOS, you can clone the git repository, checkout the according | |
commit, build nix and install it on your system. | |
# Going further | |
Don't forget to remove that override setting once a new nix release | |
will be published, or you will keep an older version of nix. |