add flakes

Signed-off-by: Harald Hoyer <harald@hoyer.xyz>
This commit is contained in:
Harald Hoyer 2025-05-02 13:08:41 +02:00
parent dca96d2f2e
commit 0dbbc6a778
4 changed files with 151 additions and 0 deletions

39
default.nix Normal file
View file

@ -0,0 +1,39 @@
{ lib, darwin, stdenv, openssl, pkg-config, rustPlatform, }:
let cargoFile = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).package;
in rustPlatform.buildRustPackage {
pname = cargoFile.name; # The name of the package
version = cargoFile.version; # The version of the package
# You can use lib here to make a more accurate source
# this can be nice to reduce the amount of rebuilds
# but thats out of scope for this post
src = ./.; # The source of the package
# The lock file of the package, this can be done in other ways
# like cargoHash, we are not doing it in this case because this
# is much simpler, especially if we have access to the lock file
# in our source tree
cargoLock.lockFile = ./Cargo.lock;
# The runtime dependencies of the package
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin
(with darwin.apple_sdk.frameworks; [
Security
CoreFoundation
SystemConfiguration
]);
# programs and libraries used at build-time that, if they are a compiler or
# similar tool, produce code to run at run-time—i.e. tools used to build the new derivation
nativeBuildInputs = [ pkg-config ];
cargoLock.outputHashes = {
"mcp-core-1.0.7" = "sha256-I2lxsv71i/LLZN3r/7mwNc6nZRd1xtQNVUm/g08nhn0=";
};
meta = {
license = lib.licenses.mit;
mainProgram = cargoFile.name;
};
}

62
flake.lock generated Normal file
View file

@ -0,0 +1,62 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1743315132,
"narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "52faf482a3889b7619003c0daec593a1912fddc1",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1736320768,
"narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4bc9c909d9ac828a039f288cf872d16d38185db8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1743475035,
"narHash": "sha256-uLjVsb4Rxnp1zmFdPCDmdODd4RY6ETOeRj0IkC0ij/4=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "bee11c51c2cda3ac57c9e0149d94b86cc1b00d13",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

39
flake.nix Normal file
View file

@ -0,0 +1,39 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
};
outputs = { self, nixpkgs, rust-overlay, ... }:
let
namespace = "hello";
overlays = [ rust-overlay.overlays.default ];
forEachSystem = systems: f: nixpkgs.lib.genAttrs systems f;
forAllSystems = function:
nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed
(system: function (import nixpkgs { inherit system overlays; }));
in {
packages =
forAllSystems (pkgs: (self.overlays.default pkgs pkgs).${namespace});
cross = forAllSystems (pkgs:
(forEachSystem (nixpkgs.lib.filter (sys: sys != pkgs.system)
nixpkgs.lib.systems.flakeExposed) (crossSystem:
let
crossPkgs = import nixpkgs {
localSystem = pkgs.system;
inherit crossSystem;
};
in (self.overlays.default crossPkgs crossPkgs).${namespace})));
devShells =
forAllSystems (pkgs: (self.overlays.default pkgs pkgs).devShells);
formatter = forAllSystems (pkgs: pkgs.nixpkgs-fmt);
overlays.default = final: prev:
let pkgs = final;
in {
devShells.default = pkgs.callPackage ./shell.nix { };
${namespace} = {
hello = pkgs.callPackage ./default.nix { };
default = pkgs.callPackage ./default.nix { };
};
};
};
}

11
shell.nix Normal file
View file

@ -0,0 +1,11 @@
{ clippy, rustfmt, callPackage, rust-analyzer, }:
let mainPkg = callPackage ./default.nix { };
in mainPkg.overrideAttrs (prev: {
nativeBuildInputs = [
# Additional Rust tooling
clippy
rustfmt
rust-analyzer
] ++ (prev.nativeBuildInputs or [ ]);
})