mirror of https://github.com/pwndbg/pwndbg.git
Add nix development shell (#2166)
parent
9a1af18a26
commit
b4d6d5cbb8
@ -0,0 +1,47 @@
|
||||
# This should be kept in sync with setup-dev.sh and lint.sh requirements
|
||||
{
|
||||
pkgs ?
|
||||
# If pkgs is not defined, instantiate nixpkgs from locked commit
|
||||
let
|
||||
lock = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.nixpkgs.locked;
|
||||
nixpkgs = fetchTarball {
|
||||
url = "https://github.com/nixos/nixpkgs/archive/${lock.rev}.tar.gz";
|
||||
sha256 = lock.narHash;
|
||||
};
|
||||
in
|
||||
import nixpkgs { overlays = [ ]; },
|
||||
python3 ? pkgs.python3,
|
||||
inputs ? null,
|
||||
...
|
||||
}:
|
||||
let
|
||||
pyEnv = import ./pyenv.nix {
|
||||
inherit pkgs python3 inputs;
|
||||
lib = pkgs.lib;
|
||||
isDev = true;
|
||||
};
|
||||
in
|
||||
{
|
||||
default = pkgs.mkShell {
|
||||
NIX_CONFIG = "extra-experimental-features = nix-command flakes repl-flake";
|
||||
# Anything not handled by the poetry env
|
||||
nativeBuildInputs = with pkgs; [
|
||||
# from setup-dev.sh
|
||||
nasm
|
||||
gcc
|
||||
curl
|
||||
gdb
|
||||
parallel
|
||||
qemu
|
||||
netcat-openbsd
|
||||
zig_0_10 # matches setup-dev.sh
|
||||
go
|
||||
|
||||
pyEnv
|
||||
];
|
||||
shellHook = ''
|
||||
export PWNDBG_VENV_PATH="PWNDBG_PLEASE_SKIP_VENV"
|
||||
export ZIGPATH="${pkgs.lib.getBin pkgs.zig_0_10}/bin/"
|
||||
'';
|
||||
};
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
python3 ? pkgs.python3,
|
||||
inputs ? null,
|
||||
isDev ? false,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
pkgs.poetry2nix.mkPoetryEnv {
|
||||
groups = lib.optionals isDev [ "dev" ];
|
||||
checkGroups = lib.optionals isDev [ "dev" ];
|
||||
projectDir = inputs.pwndbg;
|
||||
python = python3;
|
||||
overrides = pkgs.poetry2nix.overrides.withDefaults (
|
||||
self: super: {
|
||||
pip = python3.pkgs.pip; # fix infinite loop in nix, look here: https://github.com/nix-community/poetry2nix/issues/1184#issuecomment-1644878841
|
||||
unicorn = python3.pkgs.unicorn; # fix build for aarch64 (but it will use same version like in nixpkgs)
|
||||
|
||||
# disable build from source, because rust's hash had to be repaired many times, see: PR https://github.com/pwndbg/pwndbg/pull/2024
|
||||
cryptography = super.cryptography.override { preferWheel = true; };
|
||||
|
||||
unix-ar = super.unix-ar.overridePythonAttrs (old: {
|
||||
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.setuptools ];
|
||||
});
|
||||
|
||||
pt = super.pt.overridePythonAttrs (old: {
|
||||
buildInputs = (old.buildInputs or [ ]) ++ [ super.poetry-core ];
|
||||
});
|
||||
capstone = super.capstone.overridePythonAttrs (old: {
|
||||
# fix darwin
|
||||
preBuild = pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
|
||||
sed -i 's/^IS_APPLE := .*$/IS_APPLE := 1/' ./src/Makefile
|
||||
'';
|
||||
# fix build for aarch64: https://github.com/capstone-engine/capstone/issues/2102
|
||||
postPatch = pkgs.lib.optionalString pkgs.stdenv.isLinux ''
|
||||
substituteInPlace setup.py --replace manylinux1 manylinux2014
|
||||
'';
|
||||
});
|
||||
sortedcontainers-stubs = super.sortedcontainers-stubs.overridePythonAttrs (old: {
|
||||
buildInputs = (old.buildInputs or [ ]) ++ [ super.poetry-core ];
|
||||
});
|
||||
|
||||
# Dev-only dependencies
|
||||
|
||||
# Because compiling mypy is slow
|
||||
mypy = super.mypy.override { preferWheel = true; };
|
||||
types-gdb = super.types-gdb.overridePythonAttrs (old: {
|
||||
buildInputs = (old.buildInputs or [ ]) ++ [ super.setuptools ];
|
||||
});
|
||||
vermin = super.vermin.overridePythonAttrs (old: {
|
||||
buildInputs = (old.buildInputs or [ ]) ++ [ super.setuptools ];
|
||||
});
|
||||
# Hash issues, so just wheel
|
||||
ruff = super.ruff.override { preferWheel = true; };
|
||||
}
|
||||
);
|
||||
}
|
||||
Loading…
Reference in new issue