{ description = "Elvish configuration"; outputs = { self, nixpkgs }: { packages.x86_64-linux.carapace-bin = with import nixpkgs { system = "x86_64-linux"; }; buildGoModule rec { pname = "carapace-bin"; version = "0.15.0"; src = fetchFromGitHub { owner = "rsteube"; repo = "carapace-bin"; rev = "v${version}"; sha256 = "0lnsrma6f6s25j21gyn56bsh3yfagb50xsw10sgsw6iczc8ri5fx"; }; ldflags = [ "-s" "-w" ]; tags = [ "release" ]; subPackages = [ "cmd/carapace" ]; preBuild = '' go generate ./... ''; vendorSha256 = "sha256-OrbVqCgsVX5b5knN6IdlJBWeGfg2fh09a2xe5+2EGEs="; }; packages.x86_64-linux.default = with import nixpkgs { system = "x86_64-linux"; }; let carapace-bin = self.packages.x86_64-linux.carapace-bin; config = runCommand "elvish-config" { nativeBuildInputs = [ makeWrapper ]; } '' mkdir -p $out/elvish cp -r ${./lib} $out/elvish/lib cat < $out/elvish/rc.elv use config eval (carapace _carapace|slurp) EOF ''; in writeScriptBin "elvish" '' #!/bin/sh export XDG_DATA_DIRS="$XDG_DATA_DIRS:${config}" export PATH="$PATH:${carapace-bin}/bin" keyctl new_session >/dev/null exec ${elvish}/bin/elvish -rc "${config}/elvish/rc.elv" "$@" ''; }; }