-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
100 lines (86 loc) · 2.54 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{
description = "A very basic flake";
inputs = {
nixpkgs = {
type = "github";
owner = "NixOs";
repo = "nixpkgs";
ref = "master";
};
flake-utils = {
type = "github";
owner = "numtide";
repo = "flake-utils";
};
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
pkgs-i686 = pkgs.pkgsCross.i686-embedded;
in
rec {
packages = rec {
kernel = pkgs-i686.stdenv.mkDerivation {
name = "kernel";
src = self;
version = "0.1.0";
inherit (devShells.kernel) nativeBuildInputs;
# FIXME: cannot execute ISO from target script inside nix derivation
installPhase = ''
mkdir -p $out
cp -v kernel/kernel.bin $out
'';
};
default = kernel;
};
devShells =
let
native_build_required = with pkgs; [ ninja meson ];
in
rec {
default = kernel;
kernel = pkgs.mkShell.override { inherit (pkgs-i686) stdenv; } {
nativeBuildInputs = with pkgs; [
# building
grub2
libisoburn
binutils
nasm
# QOL
bear
shellcheck
qemu
doxygen
graphviz
] ++ native_build_required;
buildInputs = [ pkgs.pkgsi686Linux.glibc ];
hardeningDisable = [ "fortify" ];
shellHook = ''
export BUILD_DIR=build
meson setup --cross-file ./scripts/meson_cross.ini --reconfigure -Dbuildtype=debug "./$BUILD_DIR"
'';
};
test = pkgs.mkShell rec {
nativeBuildInputs = with pkgs; [
# Bulding
gnumake
ninja
meson
nasm
# Testing
criterion.out
criterion.dev
gcovr
] ++ native_build_required;
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath nativeBuildInputs;
hardeningDisable = [ "fortify" ];
shellHook = ''
export BUILD_DIR=build
meson setup --cross-file ./scripts/meson_cross.ini --reconfigure -Dbuildtype=debug "./$BUILD_DIR"
'';
};
};
}
);
}