add nix flake for development shell

It does not support cross compilation but requires x86_64-linux.
This commit is contained in:
2025-09-05 13:09:47 +02:00
parent d959eaab98
commit 34e39dc2b6
5 changed files with 73 additions and 0 deletions

1
.envrc Normal file
View File

@@ -0,0 +1 @@
use flake path:./nix

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
/obj
/files/cfg
/.direnv

9
nix.sh Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env sh
# Run a shell inside of the nix-based development environment.
set -eu
cd "$(dirname "$0")"
exec nix --experimental-features 'nix-command flakes' develop path:./nix --command "${SHELL:-sh}"

25
nix/flake.lock generated Normal file
View File

@@ -0,0 +1,25 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1747467164,
"narHash": "sha256-JBXbjJ0t6T6BbVc9iPVquQI9XSXCGQJD8c8SgnUquus=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3fcbdcfc707e0aa42c541b7743e05820472bdaec",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

35
nix/flake.nix Normal file
View File

@@ -0,0 +1,35 @@
{
outputs =
{ self, nixpkgs }:
let
shell =
{ pkgs }:
pkgs.mkShell {
packages = with pkgs; [
ncurses
dialog
perl
bashInteractive
flex
bison
buildPackages.qemu
];
shellHook = ''
# Do not attempt cross compilation.
export CROSS_COMPILE=
# These are set by the compilers shellHook but mk refuses to work when these are set.
unset CC CPP CXX AR AS LD
'';
};
lib = import "${nixpkgs}/lib";
forAll = list: f: lib.genAttrs list f;
in
{
devShells = forAll [ "x86_64-linux" ] (system: {
default = shell {
pkgs = nixpkgs.legacyPackages.${system};
};
});
};
}