Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nebunebu/tool-suites
A simple library that consolidates packages into flake outputs for use in devShells
https://github.com/nebunebu/tool-suites
Last synced: about 1 month ago
JSON representation
A simple library that consolidates packages into flake outputs for use in devShells
- Host: GitHub
- URL: https://github.com/nebunebu/tool-suites
- Owner: nebunebu
- Created: 2024-08-18T01:03:34.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-11-11T21:25:51.000Z (2 months ago)
- Last Synced: 2024-11-11T22:27:31.427Z (2 months ago)
- Language: Nix
- Homepage:
- Size: 72.3 KB
- Stars: 0
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# tool-suites
A simple library that consolidates packages.
## Why?
Nix users can create development environments with the [pkgs.mkShell](https://ryantm.github.io/nixpkgs/builders/special/mkshell/)
function. Often there are collections of packages routinely added to such a
developer environment. For instance a target language and linters, formatters,
and language servers for that target language. This repository aims to collect
such packages together into flake outputs for convenience.## Usage
> [!Note]
> This flake is merely for the installation of tools such as linters,
> formatters, and language servers. It is agnostic as to what text editor you
> use and by what means you configure these tools for your editor```nix
{
description = "tool-suites example";inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
tool-suites.url = "path:nebunebu/tool-suites";
};outputs = inputs: {
devShells = builtins.mapAttrs
(
system: _:
let
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
inputs.tool-suites.overlays.default
];
};
in
{
default = pkgs.mkShell {
name = "exampleShell";
packages = [
pkgs.tool-suite.bash
pkgs.tool-suite.html
pkgs.tool-suite.lua
pkgs.tool-suite.latex
pkgs.tool-suite.nix
pkgs.tool-suite.yaml
];
};
}
)
inputs.nixpkgs.legacyPackages;
};
}
```## Customization
```nix
devShells = builtins.mapAttrs
(
system: _:
let
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
inputs.tool-suites.overlays.default# Overriding bash for all of pkgs
(final: prev: { bash = prev.bash.overrideAttrs {name = "my-bash";};})
];
};
in
{
default = pkgs.mkShell {
name = "testShell";
packages = [
# Overriding bash for only this recipe
(inputs.tool-suite.recipe.bash { pkgs = pkgs.extend (final: prev:
{ bash = prev.bash.overrideAttrs {name = "my-bash";};}
);})# Overriding bash (but only the package, not its use as a dependency)
(inputs.tool-suite.recipe.bash {
pkgs = pkgs // { bash = prev.bash.overrideAttrs {name = "my-bash";};};
})# If recipes has a "bash" formal arg:
(inputs.tool-suite.recipe.bash
{ bash = prev.bash.overrideAttrs {name = "my-bash";};}
)
];
};
}
)
inputs.nixpkgs.legacyPackages;
```Tool Suites
## Tool Suites
| | | |
| -------------- | ------------- | --------------------------------- |
| **bash** | | |
| | *langs* | bash |
| | *langServers* | bashls |
| | *linters* | shellcheck |
| | *formatters* | shfmt |
| **json** | | |
| | *langServers* | jsonls |
| | *linters* | jsonlint |
| | *formatters* | fixjson |
| **html** | | |
| | *langServers* | htmlls |
| | *linters* | htmlhint |
| | *formatters* | htmlbeautifier |
| **lua** | | |
| | *langs* | lua |
| | *langServers* | luals |
| | *linters* | luacheck |
| | *formatters* | stylua |
| **nix** | | |
| | *langServers* | nixd |
| | *linters* | statix, deadnix |
| | *formatters* | nixfmt-rfc-style |
| **nvim-tools** | | |
| | *other* | ripgrep, curl, imagemagic, magick |
| **md** | | |
| | *langServers* | markdown-oxide |
| | *linters* | markdownlint |
| | *formatters* | markdownlint |
| **tex** | | |
| | *langServers* | texlab |
| | *linters* | chktex |
| | *formatters* | latexindent |
| **xml** | | |
| | *langServers* | lemminx |
| | *linters* | xmllint |
| | *formatters* | xmlformat |
| **yaml** | | |
| | *langServers* | yamlls |
| | *linters* | yamllint |
| | *formatters* | yamlfmt |## Contributing
Feel free to contribute.
TODO
## TODO
### Make tool-suites
- [ ] ada
- [ ] agda
- [ ] aiken
- [ ] angularls
- [ ] ansibells
- [ ] antlersls
- [ ] assembly
- [ ] astro
- [ ] awk
- [x] bash
- [ ] c
- [ ] cpp
- [ ] clojure
- [ ] crystal
- [ ] csharp
- [ ] d
- [ ] dart
- [ ] css
- [ ] d
- [ ] docker
- [ ] elixir
- [ ] elm
- [ ] emmet
- [ ] erlang
- [ ] fennel
- [ ] fish
- [ ] fsharp
- [ ] fortran
- [ ] gleam
- [ ] groovy
- [ ] graphql
- [x] html
- [ ] haskell
- [ ] java
- [ ] javascript
- [ ] julia
- [ ] json
- [x] lua
- [x] latex
- [ ] kotlin
- [ ] nickel
- [x] markdown
- [x] nix
- [ ] nvim
- [ ] ocaml
- [ ] objectivc
- [ ] powershell
- [ ] protobuf
- [ ] python
- [ ] r
- [ ] ruby
- [ ] rust
- [ ] scala
- [ ] shell
- [ ] sql
- [ ] swift
- [ ] terraform
- [ ] toml
- [ ] typescript
- [ ] vala
- [ ] vhdl
- [x] xml
- [x] yaml
- [ ] zig
- [ ] zsh