Skip to content

Instantly share code, notes, and snippets.

@monotykamary
Created August 31, 2024 14:14
Show Gist options
  • Save monotykamary/211eae1b46efd4481b564b42bb79e88b to your computer and use it in GitHub Desktop.
Save monotykamary/211eae1b46efd4481b564b42bb79e88b to your computer and use it in GitHub Desktop.
Devbox Flake for Nimble
{
description = "A flake that adds Nimble";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
nimble = pkgs.stdenv.mkDerivation rec {
pname = "nimble";
version = "0.16.0";
filename =
if pkgs.stdenv.isDarwin then "nimble-macosx_x64.tar.gz"
else if pkgs.stdenv.isLinux then
if pkgs.stdenv.hostPlatform.isAarch64 then "nimble-linux_aarch64.tar.gz"
else if pkgs.stdenv.hostPlatform.isArmv7 then "nimble-linux_armv7l.tar.gz"
else if pkgs.stdenv.hostPlatform.is32bit then "nimble-linux_x32.tar.gz"
else "nimble-linux_x64.tar.gz"
else if pkgs.stdenv.hostPlatform.isWindows then
if pkgs.stdenv.hostPlatform.is32bit then "nimble-windows_x32.tar.gz"
else "nimble-windows_x64.tar.gz"
else
throw "Unsupported system: ${system}";
src = pkgs.fetchurl {
url = "https://github.com/nim-lang/nimble/releases/download/v${version}/${filename}";
hash = {
"nimble-linux_aarch64.tar.gz" = "sha256-M6Df2vH6kxvKhbEvZKzON2Op8lteHAyDMdScq4hooy8=";
"nimble-linux_armv7l.tar.gz" = "sha256-COMZzK4rR7J1u6xN9r9smjpG1nf6mB1THvVMtPyyXNM=";
"nimble-linux_x32.tar.gz" = "sha256-UoLbIYXNzewarF5caWN2LZk9cH9knpQB8cLRwBd2ins=";
"nimble-linux_x64.tar.gz" = "sha256-RckfsLIFI33e8+8zjMsHhaxaFOZY6qk5QKa/qrBq5Jw=";
"nimble-macosx_x64.tar.gz" = "sha256-Xg6IvJJeL5moCENEgCRO47pUA7SAN0df6g81yjaid7U=";
"nimble-windows_x32.tar.gz" = "sha256-fLL00D0ri3IOe7GVI2HRNGi4QmnYTmzFbCfypWlbn54=";
"nimble-windows_x64.tar.gz" = "sha256-erXYFE/6sYHO4O8pzyO1DR4+PPn59e342j/XmIPoL/o=";
}.${filename} or (throw "Unsupported system: ${system}");
};
nativeBuildInputs = [ pkgs.makeWrapper ];
buildInputs = [ pkgs.nim ];
unpackPhase = ''
tar xzf $src
'';
installPhase = ''
mkdir -p $out/bin
cp nimble $out/bin/
chmod +x $out/bin/nimble
wrapProgram $out/bin/nimble \
--prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.nim ]}
'';
};
in
{
packages = {
default = nimble;
nimble = nimble;
};
}
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment