flake.nix 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. {
  2. description = "Elvish configuration";
  3. outputs = { self, nixpkgs }:
  4. {
  5. packages.x86_64-linux.default =
  6. with import nixpkgs {
  7. system = "x86_64-linux";
  8. };
  9. let
  10. carapace-bin = buildGoModule rec {
  11. pname = "carapace-bin";
  12. version = "0.15.0";
  13. src = fetchFromGitHub {
  14. owner = "rsteube";
  15. repo = "carapace-bin";
  16. rev = "v${version}";
  17. sha256 = "0lnsrma6f6s25j21gyn56bsh3yfagb50xsw10sgsw6iczc8ri5fx";
  18. };
  19. ldflags = [ "-s" "-w" ];
  20. tags = [ "release" ];
  21. preBuild = ''
  22. cd cmd/carapace
  23. go generate ./...
  24. '';
  25. vendorSha256 = "sha256-OrbVqCgsVX5b5knN6IdlJBWeGfg2fh09a2xe5+2EGEs=";
  26. };
  27. config = runCommand "elvish-config" {
  28. nativeBuildInputs = [ makeWrapper ];
  29. } ''
  30. mkdir -p $out/elvish
  31. cp -r ${./lib} $out/elvish/lib
  32. cat <<EOF > $out/elvish/rc.elv
  33. use config
  34. eval (carapace _carapace|slurp)
  35. EOF
  36. '';
  37. in
  38. writeScriptBin "elvish" ''
  39. #!/bin/sh
  40. export XDG_DATA_DIRS="$XDG_DATA_DIRS:${config}"
  41. export PATH="$PATH:${carapace-bin}/bin"
  42. keyctl new_session >/dev/null
  43. exec ${elvish}/bin/elvish -rc "${config}/elvish/rc.elv" "$@"
  44. '';
  45. };
  46. }