-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
132 lines (110 loc) · 3.63 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
crane = {
url = "github:ipetkov/crane";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ self, flake-parts, rust-overlay, crane, nixpkgs, ... }:
let
GIT_HASH = self.shortRev or self.dirtyShortRev;
in
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [
"x86_64-linux"
"aarch64-linux"
];
perSystem = { pkgs, system, ... }:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ (import rust-overlay) ];
};
commonArgs = {
src = craneLib.cleanCargoSource (craneLib.path ./.);
buildInputs = with pkgs; [
mold
clang
xorg.libX11
xorg.libXft
xorg.libXrandr
xorg.libXinerama
];
inherit GIT_HASH;
} // (craneLib.crateNameFromCargoToml { cargoToml = ./Cargo.toml; });
craneLib = (crane.mkLib pkgs).overrideToolchain pkgs.rust-bin.stable.latest.minimal;
cargoArtifacts = craneLib.buildDepsOnly (commonArgs // {
panme = "bunnuafeth-deps";
});
bunnuafeth = craneLib.buildPackage (commonArgs // {
src = craneLib.path ./.;
inherit cargoArtifacts;
postInstall = ''
install -Dm0644 -t $out/share/xsessions $src/bunnuafeth.desktop
'';
postFixup = ''
patchelf --set-rpath "${pkgs.lib.makeLibraryPath commonArgs.buildInputs}" $out/bin/bunnu
'';
NIX_CFLAGS_LINK = "-fuse-ld=mold";
});
in
{
# `nix build`
packages = {
inherit bunnuafeth;
default = bunnuafeth;
};
# `nix develop`
devShells.default = pkgs.mkShell
{
NIX_CFLAGS_LINK = "-fuse-ld=mold";
packages = with pkgs; [
(rust-bin.stable.latest.default.override {
extensions = [ "rust-src" "rust-analyzer" ];
})
cargo-watch
xcb-util-cursor
];
buildInputs = with pkgs;[
pkg-config
systemd
] ++ commonArgs.buildInputs;
nativeBuildInputs = with pkgs; [
virt-viewer
];
shellHook = ''
source .nixos-vm/vm.sh
alias cargo="RUST_LOG=debug DISPLAY=:2 cargo"
'';
inherit GIT_HASH;
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [ pkgs.xorg.libX11 pkgs.xorg.libXcursor pkgs.xorg.libXrandr pkgs.xorg.libXi pkgs.xorg.libXft pkgs.fontconfig pkgs.freetype ]}";
};
};
flake = {
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixpkgs-fmt;
overlays.default = final: prev: {
bunnuafeth = self.packages.${final.system}.bunnuafeth;
};
# nixos development vm
nixosConfigurations.bunnuafeth = nixpkgs.lib.nixosSystem
{
system = "x86_64-linux";
modules = [
{
nixpkgs.overlays = [
self.overlays.default
];
}
"${nixpkgs}/nixos/modules/virtualisation/qemu-vm.nix"
./.nixos-vm/configuration.nix
];
};
};
};
}