aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorNathan Perry <np@nathanperry.dev>2024-08-13 04:23:03 -0400
committerNathan Perry <np@nathanperry.dev>2024-08-13 08:47:26 -0400
commitc932857e02c78a0395aca618354f8f4d8c59e6d0 (patch)
treeb8e3a3cc733130d375f68ce1dd5879901be26bce /flake.nix
parenta237f3f4d621178d3637e107eba849f1bf63b5d5 (diff)
nix: init
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix104
1 files changed, 104 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..2059ac7
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,104 @@
+# vim: ft=nix :
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
+ flake-utils.url = "github:numtide/flake-utils/main";
+ nix-filter.url = "github:numtide/nix-filter/main";
+
+ cq = {
+ url = "github:vinszent/cq-flake/main";
+ inputs.nixpkgs.follows = "nixpkgs";
+ inputs.flake-utils.follows = "flake-utils";
+ };
+ };
+
+ description = "tiny kite-borne sensor node";
+
+ outputs = { self, nixpkgs, flake-utils, ... } @ inputs: let
+ kicadOverlay = final: prev: {
+ opencascade-occt_7_6 = prev.opencascade-occt_7_6.overrideAttrs (finalAttrs: prevAttrs: {
+ buildInputs = (prevAttrs.buildInputs or []) ++ [
+ prev.rapidjson
+ ];
+
+ cmakeFlags = (prevAttrs.cmakeFlags or []) ++ [
+ "-DUSE_RAPIDJSON=1"
+ ];
+ });
+
+ kicad = prev.kicad.override {
+ with3d = true;
+ withI18n = false;
+
+ addons = with prev.kicadAddons; [
+ kikit
+ kikit-library
+ ];
+ };
+
+ kikit = let
+ version = "1.6.0";
+
+ in prev.kikit.overridePythonAttrs {
+ inherit version;
+
+ src = final.fetchFromGitHub {
+ owner = "yaqwsx";
+ repo = "KiKit";
+ rev = "refs/tags/v${version}";
+ hash = "sha256-r8LQcy3I6hmcrU/6HfPAYJd+cEZdhad6DUldC9HvXZU=";
+ };
+
+ doCheck = false;
+ };
+ };
+
+ mkPkgs = system: import nixpkgs {
+ inherit system;
+
+ overlays = [
+ kicadOverlay
+ (final: prev: { nix-filter = inputs.nix-filter.lib; })
+
+ (final: prev: {
+ inherit (inputs.cq.packages.${system}) cadquery;
+ })
+ ];
+ };
+
+ mkPackages = pkgs: pkgs.callPackages ./nix {};
+
+ in (flake-utils.lib.eachDefaultSystem (system:
+ let
+ pkgs = mkPkgs system;
+ packages = mkPackages pkgs;
+
+ full_package = (pkgs.emptyFile).overrideAttrs ({
+ passthru = packages;
+ });
+
+ in {
+ packages = {
+ default = full_package;
+ ocularium = full_package;
+ };
+
+ devShells.default = pkgs.mkShell {
+ name = "devshell";
+ version = self.rev or "dirty";
+
+ packages = with pkgs; [
+ kicad
+ kikit
+ ];
+ };
+
+ legacyPackages = pkgs // self.packages;
+ })
+ ) // {
+ overlays = {
+ default = final: prev: self.packages.${prev.system};
+ kicad = kicadOverlay;
+ };
+ };
+}