mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-12 23:13:40 +00:00
all: add Nix flake file
This adds a flake.nix file that makes it possible to quickly create a development environment. You can download Nix here, for use on your Linux or macOS system: https://nixos.org/download.html After you have installed Nix, you can enter the development environment as follows: nix develop This drops you into a bash shell, where you can install TinyGo simply using the following command: go install That's all! Assuming you've set up your $PATH correctly, you can now use the tinygo command as usual: tinygo version You can also do many other things from this environment. Building and flashing should work as you're used to: it's not a VM or container so there are no access restrictions.
This commit is contained in:
committed by
Ron Evans
parent
d801d0cd53
commit
72b715fa99
@@ -0,0 +1,63 @@
|
||||
# A Nix flake file, mainly intended for developing TinyGo.
|
||||
# You can download Nix here, for use on your Linux or macOS system:
|
||||
# https://nixos.org/download.html
|
||||
# After you have installed Nix, you can enter the development environment as
|
||||
# follows:
|
||||
#
|
||||
# nix develop
|
||||
#
|
||||
# This drops you into a bash shell, where you can install TinyGo simply using
|
||||
# the following command:
|
||||
#
|
||||
# go install
|
||||
#
|
||||
# That's all! Assuming you've set up your $PATH correctly, you can now use the
|
||||
# tinygo command as usual:
|
||||
#
|
||||
# tinygo version
|
||||
#
|
||||
# You can also do many other things from this environment. Building and flashing
|
||||
# should work as you're used to: it's not a VM or container so there are no
|
||||
# access restrictions and you're running in the same host environment - just
|
||||
# with a slightly different set of tools available.
|
||||
{
|
||||
inputs = {
|
||||
# Use a recent stable release, but fix the version to make it reproducible.
|
||||
# This version should be updated from time to time.
|
||||
nixpkgs.url = "nixpkgs/nixos-23.05";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
with pkgs;
|
||||
{
|
||||
devShells.default = mkShell {
|
||||
buildInputs = [
|
||||
# These dependencies are required for building tinygo (go install).
|
||||
go
|
||||
llvmPackages_16.llvm
|
||||
llvmPackages_16.libclang
|
||||
# Additional dependencies needed at runtime, for building and/or
|
||||
# flashing.
|
||||
llvmPackages_16.lld
|
||||
avrdude
|
||||
binaryen
|
||||
# Additional dependencies needed for on-chip debugging.
|
||||
# These tools are rather big (especially GDB) and not frequently
|
||||
# used, so are commented out. On-chip debugging is still possible if
|
||||
# these tools are available in the host environment.
|
||||
#gdb
|
||||
#openocd
|
||||
];
|
||||
shellHook= ''
|
||||
# Ugly hack to make the Clang resources directory available.
|
||||
# Perhaps there is a cleaner way to do it, but this works.
|
||||
export GOFLAGS="\"-ldflags=-X github.com/tinygo-org/tinygo/goenv.clangResourceDir=${llvmPackages_16.clang.cc.lib}/lib/clang/16"\"
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user