44 lines
1.0 KiB
Nix
44 lines
1.0 KiB
Nix
{
|
||
config,
|
||
lib,
|
||
pkgs,
|
||
...
|
||
}:
|
||
let
|
||
shellType = config.my.shell.type;
|
||
packages = builtins.attrValues {
|
||
inherit (pkgs)
|
||
nixfmt-rfc-style # formatting
|
||
cachix # binary cache management
|
||
nixd # language server for Nix
|
||
statix # linter for Nix expressions
|
||
;
|
||
};
|
||
in
|
||
{
|
||
options = {
|
||
my.dev.nix.enable = lib.mkEnableOption "Install Nix tooling globally";
|
||
devShells.nix = lib.mkOption {
|
||
type = lib.types.package;
|
||
default = pkgs.mkShell {
|
||
inherit packages;
|
||
name = "nix-dev-shell";
|
||
shellHook = ''
|
||
echo "❄️ Nix dev environment"
|
||
'';
|
||
};
|
||
description = "Nix/NixOS development shell with formatter, linter, LSP, and Cachix";
|
||
};
|
||
};
|
||
config = lib.mkIf config.my.dev.nix.enable {
|
||
users.users.jawz = { inherit packages; };
|
||
home-manager.users.jawz.programs.${shellType}.shellAliases = {
|
||
nixformat = ''
|
||
nix run unstable#deadnix -- -e && \
|
||
nix run unstable#nixfmt-tree && \
|
||
nix run unstable#statix fix
|
||
'';
|
||
};
|
||
};
|
||
}
|