flake/modules/home/terminal/development.nix
2024-09-12 10:38:09 +00:00

128 lines
3.3 KiB
Nix

{ pkgs, lib, config, ... }:
let
# wgsl_analyzer = pkgs.rustPlatform.buildRustPackage rec {
# pname = "wgsl_analyzer";
# version = "main";
# src = pkgs.fetchFromGitHub {
# owner = "wgsl-analyzer";
# repo = "wgsl-analyzer";
# rev = version;
# sha256 = "bhosTihbW89vkqp1ua0C1HGLJJdCNfRde98z4+IjkOc=";
# };
# cargoLock.lockFile = ./WGSL.lock;
# cargoLock.outputHashes = {
# "naga-0.14.0" = "Wo5WJzi1xdmqx23W1nuIUXkfKEzXVwL+dZu5hBOhHW8=";
# "la-arena-0.3.1" = "7/bfvV5kS13zLSR8VCsmsgoWa7PHidFZTWE06zzVK5s=";
# "paths-0.0.0" = "7/bfvV5kS13zLSR8VCsmsgoWa7PHidFZTWE06zzVK5s=";
# "stdx-0.0.0" = "7/bfvV5kS13zLSR8VCsmsgoWa7PHidFZTWE06zzVK5s=";
# "text-edit-0.0.0" = "7/bfvV5kS13zLSR8VCsmsgoWa7PHidFZTWE06zzVK5s=";
# "vfs-0.0.0" = "7/bfvV5kS13zLSR8VCsmsgoWa7PHidFZTWE06zzVK5s=";
# };
# };
wgsl_analyzer = with pkgs;
stdenv.mkDerivation rec {
pname = "wgsl_analyzer";
version = "0.8.1";
src = fetchurl {
url =
"https://github.com/wgsl-analyzer/wgsl-analyzer/releases/download/v${version}/${pname}-linux-x64";
hash = "sha256-WRc9fHUw9/KHD5BzUX3nd+0sRkc7i8axsXhHUZFOUeY=";
};
nativeBuildInputs = [ autoPatchelfHook ];
buildInputs = [ openssl zlib ];
sourceRoot = ".";
phases = [ "installPhase" "patchPhase" ];
installPhase = ''
mkdir -p $out/bin
cp $src $out/bin/${pname}
chmod +x $out/bin/${pname}
'';
# installPhase = ''
# runHook preInstall
# install -m755 -D wgsl-analyzer-linux-x64 $out/bin/${pname}
# runHook postInstall
# '';
};
in {
options.mods.terminal.development.enable =
lib.mkEnableOption "enables cli editor";
config = lib.mkIf config.mods.terminal.development.enable {
home.packages = with pkgs; [
# Nix
nil
# Rust
rust-analyzer
lldb_18
# Shaders
glsl_analyzer
# wgsl_analyzer
];
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
home.sessionVariables.EDITOR = "hx";
programs.zsh.sessionVariables.EDITOR = "hx";
programs.helix = {
enable = true;
settings = {
keys.normal = {
"esc" = [ "collapse_selection" "keep_primary_selection" ];
};
editor = {
line-number = "relative";
completion-replace = true;
bufferline = "always";
rulers = [ 80 ];
soft-wrap.enable = true;
indent-guides.render = true;
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
};
};
languages.language-server = {
glsl.command = "${pkgs.glsl_analyzer}/bin/glsl_analyzer";
wgsl.command = "${wgsl_analyzer}/bin/wgsl_analyzer";
};
languages.language = [
{
name = "nix";
auto-format = true;
formatter.command = "${pkgs.nixfmt}/bin/nixfmt";
}
{
name = "rust";
auto-format = true;
formatter.command = "rustfmt";
}
{
name = "glsl";
language-servers = [ "glsl" ];
}
{
name = "wgsl";
language-servers = [ "wgsl" ];
}
];
};
};
}