github-backup: 0.48.0 -> 0.49.0 (#379003)
[NixPkgs.git] / pkgs / by-name / de / devenv / package.nix
blob3c90266f3e875702992f9655d5c98be69f56f54f
2   lib,
3   fetchFromGitHub,
4   makeBinaryWrapper,
5   installShellFiles,
6   rustPlatform,
7   testers,
8   cachix,
9   sqlx-cli,
10   nixVersions,
11   openssl,
12   pkg-config,
13   glibcLocalesUtf8,
14   devenv, # required to run version test
17 let
18   devenv_nix = nixVersions.nix_2_24.overrideAttrs (old: {
19     version = "2.24-devenv";
20     src = fetchFromGitHub {
21       owner = "domenkozar";
22       repo = "nix";
23       rev = "f6c5ae4c1b2e411e6b1e6a8181cc84363d6a7546";
24       hash = "sha256-X8ES7I1cfNhR9oKp06F6ir4Np70WGZU5sfCOuNBEwMg=";
25     };
26     doCheck = false;
27     doInstallCheck = false;
28   });
30   version = "1.3.1";
32 rustPlatform.buildRustPackage {
33   pname = "devenv";
34   inherit version;
36   src = fetchFromGitHub {
37     owner = "cachix";
38     repo = "devenv";
39     rev = "v${version}";
40     hash = "sha256-FhlknassIb3rKEucqnfFAzgny1ANmenJcTyRaXYwbA0=";
41   };
43   cargoHash = "sha256-dJ8A2kVXkpJcRvMLE/IawFUZNJqok/IRixTRGtLsE3w=";
45   buildAndTestSubdir = "devenv";
47   # Force sqlx to use the prepared queries
48   SQLX_OFFLINE = true;
49   # A local database to use for preparing queries
50   DATABASE_URL = "sqlite:nix-eval-cache.db";
52   preBuild = ''
53     cargo sqlx database setup --source devenv-eval-cache/migrations
54     cargo sqlx prepare --workspace
55   '';
57   nativeBuildInputs = [
58     installShellFiles
59     makeBinaryWrapper
60     pkg-config
61     sqlx-cli
62   ];
64   buildInputs = [ openssl ];
66   postInstall =
67     let
68       setDefaultLocaleArchive = lib.optionalString (glibcLocalesUtf8 != null) ''
69         --set-default LOCALE_ARCHIVE ${glibcLocalesUtf8}/lib/locale/locale-archive
70       '';
71     in
72     ''
73       wrapProgram $out/bin/devenv \
74         --prefix PATH ":" "$out/bin:${cachix}/bin" \
75         --set DEVENV_NIX ${devenv_nix} \
76         ${setDefaultLocaleArchive}
78       # Generate manpages
79       cargo xtask generate-manpages --out-dir man
80       installManPage man/*
82       # Generate shell completions
83       compdir=./completions
84       for shell in bash fish zsh; do
85         cargo xtask generate-shell-completion $shell --out-dir $compdir
86       done
88       installShellCompletion --cmd devenv \
89         --bash $compdir/devenv.bash \
90         --fish $compdir/devenv.fish \
91         --zsh $compdir/_devenv
92     '';
94   passthru.tests = {
95     version = testers.testVersion {
96       package = devenv;
97       command = "export XDG_DATA_HOME=$PWD; devenv version";
98     };
99   };
101   meta = {
102     changelog = "https://github.com/cachix/devenv/releases/tag/v${version}";
103     description = "Fast, Declarative, Reproducible, and Composable Developer Environments";
104     homepage = "https://github.com/cachix/devenv";
105     license = lib.licenses.asl20;
106     mainProgram = "devenv";
107     maintainers = with lib.maintainers; [ domenkozar ];
108   };