Nixpkgs/Reviewing changes
Guides and examples for reviewing nixpkgs pull requests
Packages
Pre-flakes
nixpkgs.overlays = let
owner = "Artturin";
branchname = "cups-filters-update"; # branchname or rev
pkgsReview = pkgs.fetchzip {
url = "https://github.com/${owner}/nixpkgs/archive/${branchname}.tar.gz";
# Change to 52 zeroes when the archive needs to be redownloaded
sha256 = "sha256-/OR/uEqCy4QlManW9LcySsDXoTXFJ8G/xjhIsEpM4zM=";
};
# local checkout
#pkgsReview = /home/artturin/nixgits/my-nixpkgs;
in [
(self: super: {
review = import pkgsReview { overlays = []; config = super.config; };
cups-filters = self.review.cups-filters;
})
];
Modules
Pre-flakes
You may use the rev instead of the branchname, the rev will get redownloaded when changed but the branch wont be redownloaded
disabledModules = [ "module.nix" ];
imports = let
pkgsReview = builtins.fetchTarball {
url = "https://github.com/USERNAME/nixpkgs/archive/BRANCHNAME.tar.gz";
#pkgsReview = ../nixpkgs;
};
in [
(import "${pkgsReview}/nixos/modules/module.nix")
];
for example
disabledModules = [ "config/swap.nix" "tasks/filesystems.nix" ];
imports = let
pkgsReview = builtins.fetchTarball {
url = "https://github.com/Artturin/nixpkgs/archive/add-swap-options.tar.gz";
#pkgsReview = ../nixpkgs
};
in [
(import "${pkgsReview}/nixos/modules/config/swap.nix")
(import "${pkgsReview}/nixos/modules/tasks/filesystems.nix")
];
swapDevices = [
{ "device" = "/swapfile"; "options" = [ "nofail" "noatime" ]; "priority" = 0; "discardPolicy" = "once"; }
];
Flakes
Vm example
run with
$ nix run
When the pull request is updated or forcepushed, run
$ nix run --update-input pkgsReview
To update the commit hash
{
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
inputs.pkgsReview.url = "github:Artturin/nixpkgs/pipewirejackldpath";
#inputs.pkgsReview.url = "path:../nixgits/my-nixpkgs";
outputs = inputs@{ self, nixpkgs, pkgsReview }: {
nixosConfigurations.vm = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
({ pkgs, ... }: {
disabledModules = [ "services/desktops/pipewire/pipewire.nix" ];
imports = [
"${inputs.pkgsReview}/nixos/modules/services/desktops/pipewire/pipewire.nix"
# For virtualisation settings
"${inputs.nixpkgs}/nixos/modules/virtualisation/qemu-vm.nix"
];
services.pipewire.enable = true;
# Documentation for these is in nixos/modules/virtualisation/qemu-vm.nix
virtualisation = {
memorySize = 1024 * 3;
diskSize = 1024 * 3;
cores = 4;
msize = 104857600;
};
users.mutableUsers = false;
users.users.root = {
password = "root";
};
users.users.user = {
password = "user";
isNormalUser = true;
extraGroups = [ "wheel" ];
};
})
];
};
# So that we can just run 'nix run' instead of
# 'nix build ".#nixosConfigurations.vm.config.system.build.vm" && ./result/bin/run-nixos-vm'
defaultPackage.x86_64-linux = self.nixosConfigurations.vm.config.system.build.vm;
defaultApp.x86_64-linux = {
type = "app";
program = "${self.defaultPackage.x86_64-linux}/bin/run-nixos-vm";
};
};
}