-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathflake.nix
More file actions
106 lines (86 loc) · 2.86 KB
/
flake.nix
File metadata and controls
106 lines (86 loc) · 2.86 KB
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
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
crane.url = "github:ipetkov/crane";
flake-utils.url = "github:numtide/flake-utils";
};
outputs =
{
self,
nixpkgs,
crane,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
inherit (pkgs) lib;
craneLib = crane.mkLib pkgs;
unfilteredRoot = ./.; # The original, unfiltered source
src = lib.fileset.toSource {
root = unfilteredRoot;
fileset = lib.fileset.unions [
# Default files from crane (Rust and cargo files)
(craneLib.fileset.commonCargoSources unfilteredRoot)
# Also keep any jinja template files
(lib.fileset.fileFilter (file: file.hasExt "jinja") unfilteredRoot)
# Also keep any python files
(lib.fileset.fileFilter (file: file.hasExt "py") unfilteredRoot)
# Also keep any kicad_sym files (testing)
(lib.fileset.fileFilter (file: file.hasExt "kicad_sym") unfilteredRoot)
# keep web files
(lib.fileset.fileFilter (file: file.hasExt "css") unfilteredRoot)
# skills
(lib.fileset.fileFilter (file: file.hasExt "md") unfilteredRoot)
(lib.fileset.fileFilter (file: file.hasExt "mdx") unfilteredRoot)
(lib.fileset.fileFilter (file: file.hasExt "txt") unfilteredRoot)
# mcp
(lib.fileset.fileFilter (file: file.hasExt "json") unfilteredRoot)
# gitignore kicad template
(lib.fileset.fileFilter ({ name, ... }: name == "gitignore") unfilteredRoot)
];
};
commonArgs = {
pname = "pcb";
inherit src;
strictDeps = true;
doCheck = false;
nativeBuildInputs = with pkgs; [
pkg-config
openssl.dev
makeWrapper
];
buildInputs = with pkgs; [
pkg-config
openssl
python312
python312Packages.kicad
];
};
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
pcb = craneLib.buildPackage (
commonArgs
// {
inherit cargoArtifacts;
inherit (craneLib.crateNameFromCargoToml { inherit src; }) version;
doCheck = false;
postFixup = ''
wrapProgram $out/bin/pcb \
--set KICAD_PYTHON_SITE_PACKAGES "${pkgs.python312Packages.kicad}/${pkgs.python312.sitePackages}" \
--set KICAD_PYTHON_INTERPRETER "${pkgs.python312}/bin/python"
'';
}
);
in
{
packages = {
default = pcb;
};
apps = {
default = flake-utils.lib.mkApp { drv = pcb; };
};
}
);
}