import packages
This commit is contained in:
commit
c6e8d5e0cf
5 changed files with 6203 additions and 0 deletions
118
default.nix
Normal file
118
default.nix
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitea,
|
||||
rustPlatform,
|
||||
callPackage,
|
||||
pkg-config,
|
||||
cmake,
|
||||
ninja,
|
||||
makeWrapper,
|
||||
rustfmt,
|
||||
clipper2,
|
||||
xorg,
|
||||
vulkan-loader,
|
||||
wayland,
|
||||
libxkbcommon,
|
||||
egl-wayland,
|
||||
package ? "",
|
||||
}: let
|
||||
inherit (lib) getExe recursiveUpdate makeLibraryPath;
|
||||
packages = {
|
||||
"" = {
|
||||
pname = "microcad";
|
||||
cargoBuildFlags = "--bin microcad --package microcad";
|
||||
postInstall = ''
|
||||
mkdir $out/share
|
||||
cp -r crates/std/lib $out/share
|
||||
'';
|
||||
meta.mainProgram = "microcad";
|
||||
};
|
||||
"lsp" = {
|
||||
pname = "microcad-lsp";
|
||||
cargoBuildFlags = "--bin microcad-lsp --package microcad-lsp";
|
||||
meta.mainProgram = "microcad-lsp";
|
||||
};
|
||||
"viewer" = {
|
||||
pname = "microcad-viewer";
|
||||
cargoBuildFlags = "--bin microcad-viewer --package microcad-viewer";
|
||||
meta.mainProgram = "microcad-viewer";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
ninja
|
||||
rustfmt
|
||||
clipper2
|
||||
makeWrapper
|
||||
];
|
||||
runtimeDependenciesPath = makeLibraryPath [
|
||||
xorg.libX11
|
||||
xorg.libXcursor
|
||||
xorg.libXrandr
|
||||
xorg.libXi
|
||||
vulkan-loader
|
||||
wayland
|
||||
libxkbcommon
|
||||
egl-wayland
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
mkdir $out/share
|
||||
cp -r crates/std/lib $out/share
|
||||
wrapProgram $out/bin/microcad-viewer \
|
||||
--prefix LD_LIBRARY_PATH : "/run/opengl-driver/lib/:$runtimeDependenciesPath"
|
||||
'';
|
||||
};
|
||||
};
|
||||
manifold-rs = callPackage ./manifold-rs.nix {};
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: (recursiveUpdate {
|
||||
version = "0.2.18";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "codeberg.org";
|
||||
owner = "microcad";
|
||||
repo = "microcad";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-FNjGXYUui50S2BTutRQlLljo6afsTeDQ5cxtobxlJy4=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# untill a 0.6.5 is released and used
|
||||
echo "[patch.crates-io]" >> Cargo.toml
|
||||
echo "manifold-rs = { path = '${manifold-rs}' }" >> Cargo.toml
|
||||
'';
|
||||
|
||||
cargoHash = "sha256-B/ylabtSQB3dyAMZkYEAL8bXBirhdCrzmDqeyhSn8eQ=";
|
||||
|
||||
preBuild = ''
|
||||
export STDLIB_PATH="$out/share/lib"
|
||||
'';
|
||||
|
||||
RUSTFMT = getExe rustfmt;
|
||||
CLIPPER_DYNAMIC = 1;
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
ninja
|
||||
rustfmt
|
||||
clipper2
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
clipper2
|
||||
];
|
||||
|
||||
dontUseCmakeConfigure = true;
|
||||
dontUseNinjaBuild = true;
|
||||
dontUseNinjaInstall = true;
|
||||
dontUseNinjaCheck = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Modern programming language for CAD";
|
||||
homepage = "https://microcad.xyz/";
|
||||
license = licenses.agpl3Only;
|
||||
};
|
||||
}
|
||||
packages.${package}))
|
||||
55
manifold-rs.nix
Normal file
55
manifold-rs.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
lib,
|
||||
fetchpatch,
|
||||
stdenvNoCC,
|
||||
runCommand,
|
||||
fetchurl,
|
||||
}: let
|
||||
# From crate2nix
|
||||
unpacked = sha256: source:
|
||||
assert builtins.isString sha256;
|
||||
assert builtins.isAttrs source;
|
||||
runCommand (lib.removeSuffix ".tar.gz" source.name) {}
|
||||
''
|
||||
mkdir -p $out
|
||||
tar -xzf ${source} --strip-components=1 -C $out
|
||||
echo '{"package":"${sha256}","files":{}}' > $out/.cargo-checksum.json
|
||||
'';
|
||||
|
||||
crateSource = package:
|
||||
assert builtins.isAttrs package;
|
||||
with package;
|
||||
unpacked sha256 (fetchurl {
|
||||
name = "crates-io-${name}-${version}.tar.gz";
|
||||
url = "https://crates.io/api/v1/crates/${name}/${version}/download";
|
||||
inherit sha256;
|
||||
});
|
||||
in
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "manifold-rs";
|
||||
version = "0.6.4";
|
||||
|
||||
src = crateSource {
|
||||
name = pname;
|
||||
version = version;
|
||||
sha256 = "sha256-ICxDQvE7xhlQJKcpaB8blZE4gSaC5Z7JQ1Q25Gr8TP0=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "dynamic-clipper.patch";
|
||||
url = "https://github.com/WilstonOreo/manifold-rs/commit/cba6b155f714a58777d7f0d45734aa1388265ec6.patch";
|
||||
hash = "sha256-fbhlUEopvOTx6dkAbr3YTryR295zGDB6icnclCAeav0=";
|
||||
})
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
cp -r . $out
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cxx-Rust wrapper for Manifold";
|
||||
homepage = "https://github.com/WilstonOreo/manifold-rs";
|
||||
license = licenses.asl20;
|
||||
};
|
||||
}
|
||||
10
overlay.nix
Normal file
10
overlay.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
final: prev: {
|
||||
microcad = final.callPackage ./default.nix {};
|
||||
microcad-viewer = final.callPackage ./default.nix {
|
||||
package = "viewer";
|
||||
};
|
||||
microcad-lsp = final.callPackage ./default.nix {
|
||||
package = "lsp";
|
||||
};
|
||||
microcad-vscode = final.callPackage ./vscode.nix {};
|
||||
}
|
||||
5950
package-lock.json
generated
Normal file
5950
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
70
vscode.nix
Normal file
70
vscode.nix
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
vscode-utils,
|
||||
microcad,
|
||||
nodejs,
|
||||
vsce,
|
||||
importNpmLock,
|
||||
stdenvNoCC,
|
||||
microcad-lsp,
|
||||
lib,
|
||||
}: let
|
||||
inherit (builtins) fromJSON readFile;
|
||||
inherit (lib) getExe;
|
||||
packageLock = fromJSON (readFile ./package-lock.json);
|
||||
node_modules = importNpmLock.buildNodeModules {
|
||||
inherit nodejs packageLock;
|
||||
npmRoot = microcad.src + "/editors/vscode";
|
||||
};
|
||||
|
||||
vsix = stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
name = "microcad-${finalAttrs.version}.zip";
|
||||
pname = "microcad-vsix";
|
||||
inherit (packageLock) version;
|
||||
|
||||
src = microcad.src + "/editors/vscode";
|
||||
|
||||
postPatch = ''
|
||||
cp ${./package-lock.json} package-lock.json
|
||||
substituteInPlace src/extension.ts --replace-fail 'serverCommand = "microcad-lsp"' 'serverCommand = "${getExe microcad-lsp}"'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
vsce
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
microcad-lsp
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
ln -s ${node_modules}/node_modules .
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
ls -l node_modules
|
||||
vsce package
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp ./microcad-$version.vsix $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
});
|
||||
in
|
||||
vscode-utils.buildVscodeExtension (finalAttrs: {
|
||||
pname = "microcad";
|
||||
inherit (finalAttrs.src) version;
|
||||
src = vsix;
|
||||
|
||||
vscodeExtName = "microcad";
|
||||
vscodeExtPublisher = "microcad";
|
||||
vscodeExtUniqueId = "${finalAttrs.vscodeExtPublisher}.${finalAttrs.vscodeExtName}";
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue