nix-dev-envs/flake.nix

132 lines
3.1 KiB
Nix

{
description = "Flake for various development environments.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay.url = "github:oxalica/rust-overlay";
};
outputs = {
nixpkgs,
flake-utils,
rust-overlay,
...
}:
flake-utils.lib.eachDefaultSystem (
system: let
overlays = [(import rust-overlay)];
pkgs = import nixpkgs {
inherit system overlays;
};
in {
devShells = {
go = pkgs.mkShell {
buildInputs = with pkgs; [
go
gopls
];
};
zig = pkgs.mkShell {
buildInputs = with pkgs; [
zig
zls
];
};
pythonPoetry = pkgs.mkShell {
buildInputs = with pkgs; [
poetry
pyright
];
};
haskellStack = pkgs.mkShell {
buildInputs = with pkgs; [
haskellPackages.stack
haskell-language-server
];
};
haskellCabal = pkgs.mkShell {
buildInputs = with pkgs; [
haskellPackages.cabal-install
ghc
haskell-language-server
];
};
rustBeta = pkgs.mkShell {
buildInputs = with pkgs; [
rust-bin.beta.latest.default
rust-analyzer
];
};
rustNightly = pkgs.mkShell {
buildInputs = with pkgs; [
rust-bin.nightly.latest.default
rust-analyzer
];
};
rustStable = pkgs.mkShell {
buildInputs = with pkgs; [
rust-bin.stable.latest.default
rust-analyzer
];
};
npmNode = pkgs.mkShell {
buildInputs = with pkgs; [
nodejs
nodePackages_latest.npm
nodePackages_latest.prettier
typescript-language-server
];
};
pnpmNode = pkgs.mkShell {
buildInputs = with pkgs; [
nodejs
nodePackages_latest.pnpm
nodePackages_latest.prettier
typescript-language-server
];
};
yarnNode = pkgs.mkShell {
buildInputs = with pkgs; [
nodejs
nodePackages_latest.yarn
nodePackages_latest.prettier
typescript-language-server
];
};
typst = pkgs.mkShell {
buildInputs = with pkgs; [
typst
typstfmt
tinymist
];
};
latexFull = pkgs.mkShell {
buildInputs = with pkgs; [
texliveFull
texlab
];
};
latexMinimal = pkgs.mkShell {
buildInputs = with pkgs; [
texliveMinimal
texlab
];
};
};
}
);
}