-
Notifications
You must be signed in to change notification settings - Fork 853
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
387092f
commit d4e4246
Showing
6 changed files
with
136 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
use_flake |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -92,4 +92,5 @@ gdb.txt | |
.venv/ | ||
|
||
# Nix build stuff | ||
result-* | ||
result* | ||
.direnv/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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}/bin/" | ||
''; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
{ | ||
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 | ||
''; | ||
}); | ||
|
||
# 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; }; | ||
} | ||
); | ||
} |