commit 1b2d85f6e8a0bcec5cadf3a1ff898408648d5952 Author: ChUrl Date: Mon Mar 20 15:19:11 2023 +0100 Env: Setup Flake diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a9e3b23 --- /dev/null +++ b/flake.nix @@ -0,0 +1,87 @@ +{ + description = "Logisim Assembler Development Environment"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + inputs.devshell.url = "github:numtide/devshell"; + + outputs = { + self, + nixpkgs, + flake-utils, + devshell, + }: + flake-utils.lib.eachDefaultSystem (system: let + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; # For clion + overlays = [devshell.overlay]; + }; + + # NOTE: Usual 64 bit compilers that don't collide + bintools = pkgs.wrapBintoolsWith { + bintools = pkgs.bintools.bintools; + libc = pkgs.glibc; + }; + gcc12 = pkgs.hiPrio (pkgs.wrapCCWith { + cc = pkgs.gcc12.cc; + libc = pkgs.glibc; + bintools = bintools; + }); + clang15 = pkgs.wrapCCWith { + cc = pkgs.clang_15.cc; + libc = pkgs.glibc; + bintools = bintools; + }; + + # NOTE: Multilib compilers that don't collide + bintools_multi = pkgs.wrapBintoolsWith { + bintools = pkgs.bintools.bintools; # Get the unwrapped bintools from the wrapper + libc = pkgs.glibc_multi; + }; + gcc12_multi = pkgs.hiPrio (pkgs.wrapCCWith { + cc = pkgs.gcc12.cc; # Get the unwrapped gcc from the wrapper + libc = pkgs.glibc_multi; + bintools = bintools_multi; + }); + clang15_multi = pkgs.wrapCCWith { + cc = pkgs.clang_15.cc; + libc = pkgs.glibc_multi; + bintools = bintools_multi; + }; + in { + # devShell = pkgs.devshell.mkShell ... + devShell = pkgs.devshell.mkShell { + name = "Logisim Assembler Development Environment"; + + packages = with pkgs; [ + # Compilers + bintools + gcc12 + clang15 + # bintools_multi + # gcc12_multi + # clang14_multi + + # Native buildinputs + gnumake + cmake + # nasm + + # Development + # bear # To generate compilation database + gdb + cling # To try out my bullshit implementations + # doxygen # Generate docs + graphs + ]; + + commands = [ + { + name = "ide"; + help = "Run clion for project"; + command = "clion &>/dev/null ./ &"; + } + ]; + }; + }); +}