[Add] nix dev shell

This commit is contained in:
Alois 2026-05-17 13:44:19 +02:00
commit e98aeccbed
2 changed files with 62 additions and 23 deletions

28
flake.lock generated
View file

@ -20,11 +20,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1778443072, "lastModified": 1778869304,
"narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -53,15 +53,35 @@
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay",
"ttp": "ttp" "ttp": "ttp"
} }
}, },
"rust-overlay": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1778987862,
"narHash": "sha256-V3qGt9P1eJP/r/1ONablphfGiH0RP4agQhrRANpDYx8=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "6f44d8874ac29806c8d5cae42bf8e19ebb5ce0d3",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"ttp": { "ttp": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1778948017, "lastModified": 1778948017,
"narHash": "sha256-hqBYSZnPq7f/F2Z6nJK+6a8ITk6WRCcVBcNT0CR6SnM=", "narHash": "sha256-hqBYSZnPq7f/F2Z6nJK+6a8ITk6WRCcVBcNT0CR6SnM=",
"ref": "refs/heads/main",
"rev": "7e5d1953df8592a1feba0f390d205d0ef61a3119", "rev": "7e5d1953df8592a1feba0f390d205d0ef61a3119",
"revCount": 117, "revCount": 117,
"type": "git", "type": "git",

View file

@ -4,13 +4,17 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.url = "github:hercules-ci/flake-parts";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
ttp = { ttp = {
url = "git+https://git.methanium.net/Tensamin/TTP.git?rev=7e5d1953df8592a1feba0f390d205d0ef61a3119"; url = "git+https://git.methanium.net/Tensamin/TTP.git?rev=7e5d1953df8592a1feba0f390d205d0ef61a3119";
flake = false; flake = false;
}; };
}; };
outputs = inputs@{ self, nixpkgs, flake-parts, ttp, ... }: outputs = inputs@{ self, nixpkgs, flake-parts, rust-overlay, ttp, ... }:
flake-parts.lib.mkFlake { inherit inputs; } { flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ systems = [
"x86_64-linux" "x86_64-linux"
@ -19,28 +23,43 @@
"aarch64-darwin" "aarch64-darwin"
]; ];
perSystem = { self', pkgs, ... }: { perSystem = { self', pkgs, system, ... }:
packages = { let
default = self'.packages.omega; rustPkgs = import nixpkgs {
omega = pkgs.rustPlatform.buildRustPackage { inherit system;
pname = "omega"; overlays = [ (import rust-overlay) ];
version = "0.1.0"; };
src = ./.; rustToolchain = rustPkgs.rust-bin.stable.latest.default.override {
cargoLock = { extensions = [ "rust-src" "rust-analyzer" "clippy" "rustfmt" ];
lockFile = ./Cargo.lock; };
allowBuiltinFetchGit = true; in
{
packages = {
default = self'.packages.omega;
omega = pkgs.rustPlatform.buildRustPackage {
pname = "omega";
version = "0.1.0";
src = ./.;
cargoLock = {
lockFile = ./Cargo.lock;
allowBuiltinFetchGit = true;
};
nativeBuildInputs = with pkgs; [ cmake perl pkg-config ];
buildInputs = with pkgs; [ openssl libmysqlclient ];
dontUseCmakeConfigure = true;
preConfigure = ''
if [ -d ../cargo-vendor-dir/ttp-core-0.1.0 ]; then
cp ${ttp}/ttp-codec.json ../cargo-vendor-dir/ttp-codec.json
fi
'';
}; };
nativeBuildInputs = with pkgs; [ cmake perl pkg-config ]; };
devShells.default = pkgs.mkShell {
nativeBuildInputs = with pkgs; [ rustToolchain git cmake perl pkg-config ];
buildInputs = with pkgs; [ openssl libmysqlclient ]; buildInputs = with pkgs; [ openssl libmysqlclient ];
dontUseCmakeConfigure = true;
preConfigure = ''
if [ -d ../cargo-vendor-dir/ttp-core-0.1.0 ]; then
cp ${ttp}/ttp-codec.json ../cargo-vendor-dir/ttp-codec.json
fi
'';
}; };
}; };
};
flake = { flake = {
nixosModules.default = { config, pkgs, lib, ... }: nixosModules.default = { config, pkgs, lib, ... }: