see also: https://michael.stapelberg.ch/posts/2025-07-27-dev-shells-with-nix-4-quick-examples/ related to https://github.com/gokrazy/gokrazy/issues/338
67 lines
1.7 KiB
Nix
67 lines
1.7 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
rpi-eeprom-tools = {
|
|
url = "github:info-beamer/rpi-eeprom-tools";
|
|
flake = false;
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
flake-utils,
|
|
rpi-eeprom-tools,
|
|
}:
|
|
flake-utils.lib.eachDefaultSystem (
|
|
system:
|
|
let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
|
|
# Python environment with pycryptodome for pi-eeprom-tools
|
|
pythonEnv = pkgs.python312.withPackages (
|
|
ps: with ps; [
|
|
pycryptodome
|
|
]
|
|
);
|
|
|
|
# Helper to create a wrapper for a pi-eeprom-* script
|
|
mkPiEepromTool =
|
|
name:
|
|
pkgs.writeShellApplication {
|
|
inherit name;
|
|
runtimeInputs = [
|
|
pythonEnv
|
|
];
|
|
text = ''
|
|
exec ${pythonEnv.interpreter} ${rpi-eeprom-tools}/${name} "$@"
|
|
'';
|
|
};
|
|
|
|
# All the pi-eeprom tools
|
|
pi-eeprom-extract = mkPiEepromTool "pi-eeprom-extract";
|
|
pi-eeprom-ls = mkPiEepromTool "pi-eeprom-ls";
|
|
pi-eeprom-recompress = mkPiEepromTool "pi-eeprom-recompress";
|
|
pi-eeprom-update = mkPiEepromTool "pi-eeprom-update";
|
|
in
|
|
{
|
|
devShells.default = pkgs.mkShell {
|
|
buildInputs = with pkgs; [
|
|
go
|
|
raspberrypi-eeprom
|
|
pi-eeprom-extract
|
|
pi-eeprom-ls
|
|
pi-eeprom-recompress
|
|
pi-eeprom-update
|
|
];
|
|
|
|
shellHook = ''
|
|
echo "Nix-based gokrazy/tools dev env (go: $(go version))"
|
|
'';
|
|
};
|
|
}
|
|
);
|
|
}
|