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
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++)
|
|
};
|
|
|
|
}
|
|
));
|
|
}
|