flake.nix 1.6 KB

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