flake.nix: make nix package
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
# Uiua
|
||||
*.uasm
|
||||
|
||||
# Nix
|
||||
result
|
||||
result-*
|
||||
@@ -5,13 +5,30 @@
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
inherit (nixpkgs) lib;
|
||||
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
|
||||
forAllSystems = f: lib.genAttrs systems (system: let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in f system pkgs);
|
||||
in {
|
||||
devShells.x86_64-linux.default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
uiua-unstable
|
||||
];
|
||||
};
|
||||
devShells = forAllSystems (system: pkgs: {
|
||||
default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
uiua-unstable
|
||||
];
|
||||
};
|
||||
});
|
||||
|
||||
packages = forAllSystems (system: pkgs: {
|
||||
default = self.packages.${system}.uash;
|
||||
uash = pkgs.callPackage ./nix/package.nix { };
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
lib
|
||||
, uiua
|
||||
, stdenvNoCC
|
||||
, runtimeShell
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "uash";
|
||||
version = "unstable";
|
||||
|
||||
src = lib.fileset.toSource {
|
||||
root = ./..;
|
||||
fileset = lib.fileset.unions [
|
||||
../uash.ua
|
||||
];
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ uiua ];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
uiua build --output .uash.uasm uash.ua
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
wrapper = ''
|
||||
#!${runtimeShell}
|
||||
"${uiua}"/bin/uiua run ${placeholder "out"}/bin/.uash.uasm
|
||||
'';
|
||||
|
||||
passAsFile = [ "wrapper" ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm444 .uash.uasm -t "$out"/bin
|
||||
install -Dm555 "$wrapperPath" "$out"/bin/uash
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
shellPath = "/bin/uash";
|
||||
|
||||
meta.mainProgram = "uash";
|
||||
}
|
||||
Reference in New Issue
Block a user