nixos-configs/modules/desktop/environment/home/dev.nix
matt1432 23d80380db
All checks were successful
Discord / discord commits (push) Has been skipped
feat(nvim): bring clangd conf to hypr dev scripts and improve them
2025-01-23 19:34:25 -05:00

85 lines
1.9 KiB
Nix

{
lib,
osConfig,
pkgs,
...
}: let
inherit (lib) mkIf;
inherit (pkgs.writers) writeJSON;
cfg = osConfig.roles.desktop;
clangdConf = writeJSON "clangd-hypr-conf" {
CompileFlags.Add = ["-D__cpp_concepts=202002L"];
};
in {
# https://wiki.hyprland.org/Contributing-and-Debugging/#lsp-and-formatting
config = mkIf cfg.enable {
home.packages = [
(pkgs.writeShellApplication {
name = "setupDev";
runtimeInputs = [
pkgs.cmake
osConfig.programs.direnv.nix-direnv.package
osConfig.programs.git.package
];
text = ''
if [[ $# -gt 0 ]]; then
project="$1"
subproject="''${2:-"."}"
cd "$HOME/git/$project/$subproject" || return
fi
chmod +w -fR ./{.cache,build} || true
git clean -xdf
if [ -e .envrc ] || [ -e ../.envrc ]; then
if [[ $# -gt 0 ]]; then
nix develop -c echo "load shellHook"
else
direnv reload
fi
fi
if [ -e CMakeLists.txt ] || [ -e ../CMakeLists.txt ]; then
nix develop -c cmake -S . -B build/ -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
fi
cat ${clangdConf} > .clangd
'';
})
(pkgs.writeShellApplication {
name = "testChanges";
runtimeInputs = [
pkgs.cmake
osConfig.programs.direnv.nix-direnv.package
osConfig.programs.git.package
];
text = ''
project="$1"
subproject="''${2:-"."}"
cd "$HOME/git/$project/$subproject" || return
chmod +w -fR ./{.cache,build} || true
git clean -xdf
cd "$FLAKE" || return
nix flake update "$1"
nh os switch
setupDev "$project" "$subproject"
'';
})
];
};
# For accurate stack trace
_file = ./dev.nix;
}