feat: 增加 nix 支持
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -191,4 +191,7 @@ jieba.cache
|
||||
|
||||
|
||||
# vscode
|
||||
/.vscode
|
||||
/.vscode
|
||||
|
||||
# direnv
|
||||
/.direnv
|
||||
52
flake.nix
Normal file
52
flake.nix
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
description = "MaiMBot Nix Dev Env";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
|
||||
# 读取 requirements.txt 文件
|
||||
requirementsFile = builtins.readFile ./requirements.txt;
|
||||
|
||||
# 解析 requirements.txt 文件,提取包名
|
||||
parseRequirements = content:
|
||||
let
|
||||
lines = builtins.split "\n" content;
|
||||
# 过滤掉空行和注释
|
||||
filteredLines = builtins.filter (line:
|
||||
line != "" && !(builtins.match "^ *#.*" line)
|
||||
) lines;
|
||||
# 提取包名(去掉版本号)
|
||||
packageNames = builtins.map (line:
|
||||
builtins.head (builtins.split "[=<>]" line)
|
||||
) filteredLines;
|
||||
in
|
||||
packageNames;
|
||||
|
||||
# 获取 requirements.txt 中的包名列表
|
||||
requirements = parseRequirements requirementsFile;
|
||||
|
||||
# 动态生成 Python 环境
|
||||
pythonEnv = pkgs.python3.withPackages (ps:
|
||||
builtins.map (pkg: ps.${pkg}) requirements
|
||||
);
|
||||
in
|
||||
{
|
||||
devShell = pkgs.mkShell {
|
||||
buildInputs = [ pythonEnv ];
|
||||
|
||||
shellHook = ''
|
||||
echo "Python environment is ready!"
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user