| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- {
- description = "Elvish configuration";
- inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
- flake-utils.url = "github:numtide/flake-utils";
- elvishSrc = {
- url = "github:elves/elvish";
- flake = false;
- };
- };
- outputs = { self, nixpkgs, flake-utils, elvishSrc }:
- flake-utils.lib.eachDefaultSystem (system:
- with nixpkgs.legacyPackages.${system};
- let
- elvish = buildGoModule {
- pname = "elvish";
- version = "nightly";
- src = elvishSrc;
- ldflags = [ "-s" "-w" ];
- subPackages = [ "cmd/elvish" ];
- vendorHash = "sha256-eCA+vdAFOiCUSrapB6vcL3aF/0MuK3Vx6P2vuDdk9v8=";
- };
- in {
- packages.carapace-bin = buildGoModule rec {
- pname = "carapace-bin";
- version = "1.6.2";
- src = fetchFromGitHub {
- owner = "carapace-sh";
- repo = "carapace-bin";
- rev = "v${version}";
- hash = "sha256-6b5jxK52uS0v0huI1IkPA0bPYMp8vdnVTVqPMUq9IA8=";
- };
- ldflags = [ "-s" "-w" ];
- tags = [ "release" ];
- subPackages = [ "cmd/carapace" ];
- postConfigure = ''
- go generate ./...
- '';
- vendorHash = "sha256-RhhfnA2ix0U+vUy5c8aNGo1HBMnydyCYDDBCq6NmjZM=";
- };
- packages.elvish =
- let
- carapace-bin = self.packages.${system}.carapace-bin;
- config = runCommand "elvish-config" {
- nativeBuildInputs = [ makeWrapper ];
- } ''
- mkdir -p $out/elvish
- cp -r ${./lib} $out/elvish/lib
- cat <<EOF > $out/elvish/rc.elv
- use config
- eval (carapace _carapace|slurp)
- EOF
- '';
- in
- writeScriptBin "elvish" ''
- #!/bin/sh
- export XDG_DATA_DIRS="${config}:$XDG_DATA_DIRS"
- export PATH="${carapace-bin}/bin:$PATH"
- if command -v keyctl > /dev/null && [ -z "$KEYCTL_INIT" ]; then
- export KEYCTL_INIT=1
- keyctl new_session >/dev/null
- fi
- if [ -z "$XDG_RUNTIME_DIR" ] && [ -n "$TMPDIR" ]; then
- export XDG_RUNTIME_DIR="$TMPDIR"
- fi
- exec ${elvish}/bin/elvish -rc "${config}/elvish/rc.elv" "$@"
- '';
- packages.default = self.packages.${system}.elvish;
- }
- );
- }
|