-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
76 lines (63 loc) · 1.74 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
{
description = "Subset of the os-tutorial, built with Nix";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
devshell.url = "github:numtide/devshell";
};
outputs = inputs@{ self, nixpkgs, flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } ({ self, lib, ... }: {
systems = [ "x86_64-linux" ];
debug = true;
imports = [
inputs.devshell.flakeModule
];
perSystem = { pkgs, pkgs-i386, system, config, ... }: {
_module.args = {
pkgs = import nixpkgs {
inherit system;
overlays = [
(final: prev: {
lib = prev.lib.extend (_: _: self.lib);
inherit pkgs-i386;
})
];
};
pkgs-i386 = (import nixpkgs {
inherit system;
crossSystem = {
config = "i386-elf";
};
}).buildPackages;
};
packages = rec {
inherit (pkgs-i386) gcc binutils gdb;
xenia-i386 = pkgs.callPackage ./nix/kernel.nix { };
default = xenia-i386;
};
apps = (import ./nix/run.nix {
drv = config.packages.xenia-i386;
inherit pkgs pkgs-i386;
}) // { default = config.apps.curses; };
devshells.default = {
name = "xenia-i386";
motd = "";
commands = [{
name = "run";
command = "nix run $PRJ_ROOT";
}];
devshell.packages = (with pkgs; [
nasm
qemu
]) ++ (with pkgs-i386; [
gcc
binutils
gdb
]);
};
checks = config.packages;
};
flake = {
lib = import ./nix/lib.nix { inherit (nixpkgs) lib; };
};
});
}