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.