You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.8 KiB
Nix

/*
* This file allows you to run `nix develop` to get a shell with all external dependencies (`make` plus the tools it calls) of this repo (and maybe some beyond).
* The only thing required is an installation of the "Nix" package manager for Linux (/WSL) or MacOS: https://nixos.org/download/
*/
{
description = ''
The educational operating system StuBS.
'';
inputs = {
# The rolling-release of the Nix(OS) package definitions. Use `nix flake lock` to update
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
# Some boilerplate:
systems.url = "github:nix-systems/x86_64-linux"; # no cross compiling and only x86(_64) for now (darwin (MacOS) might work)
};
outputs =
inputs:
let
lib = inputs.nixpkgs.lib;
eachSystem =
f:
lib.foldAttrs lib.mergeAttrs { } (
map (s: lib.mapAttrs (_: v: { ${s} = v; }) (f s)) (import inputs.systems)
);
in
{ }
// (eachSystem (
localSystem:
let
pkgs = import inputs.nixpkgs { system = localSystem; };
in
{
# The shell environment definition used by `nix develop`:
devShells.default = pkgs.mkShell.override { stdenv = pkgs.clangStdenv; } {
nativeBuildInputs =
with pkgs;
[
# for all tasks and maintenance
gdb
qemu_kvm
nasm
ccache
util-linux # mkfs.minix
git
python3
bear # make compile_commands.json
clang-tools # for clangd and clang-format
]
++ (lib.filter (
pkg: lib.isDerivation pkg && pkg.pname or "" != "glibc"
) pkgs.stdenv.allowedRequisites); # basic tools + compilers (gcc/g++)
};
}
));
}