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