mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-08-24 02:24:25 -05:00
The nixpkgs package set renamed the Nix code formatter: what used to be called nixfmt-rfc-style is now simply nixfmt, and the old name lives on only as an alias. Both names resolve to the identical program, so this doesn't change how anything gets formatted. The rename comes first because the dependency update in the next commit makes that alias start printing a deprecation warning, so doing it in this order means no commit in the history evaluates with one.
127 lines
3.4 KiB
Nix
127 lines
3.4 KiB
Nix
{
|
|
description = "A simple terminal UI for git commands";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
systems.url = "github:nix-systems/default";
|
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
|
|
treefmt-nix.url = "github:numtide/treefmt-nix";
|
|
};
|
|
|
|
outputs =
|
|
inputs@{ flake-parts, systems, ... }:
|
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
|
systems = import systems;
|
|
imports = [
|
|
inputs.treefmt-nix.flakeModule
|
|
];
|
|
|
|
perSystem =
|
|
{
|
|
pkgs,
|
|
system,
|
|
...
|
|
}:
|
|
let
|
|
goMod = builtins.readFile ./go.mod;
|
|
versionMatch = builtins.match ".*go[[:space:]]([0-9]+\\.[0-9]+)(\\.[0-9]+)?.*" goMod;
|
|
|
|
goVersion =
|
|
if versionMatch != null then
|
|
builtins.head versionMatch
|
|
else
|
|
throw "Could not extract Go version from go.mod";
|
|
|
|
goOverlay = final: prev: {
|
|
go = prev."go_${builtins.replaceStrings [ "." ] [ "_" ] goVersion}";
|
|
};
|
|
|
|
lazygit = pkgs.buildGoModule rec {
|
|
pname = "lazygit";
|
|
version = "dev";
|
|
|
|
gitCommit = inputs.self.rev or inputs.self.dirtyRev or "dev";
|
|
|
|
src = ./.;
|
|
vendorHash = null;
|
|
|
|
# Disable integration tests that require specific environment
|
|
doCheck = false;
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
git
|
|
makeWrapper
|
|
];
|
|
buildInputs = [ pkgs.git ];
|
|
|
|
ldflags = [
|
|
"-s"
|
|
"-w"
|
|
"-X main.commit=${gitCommit}"
|
|
"-X main.version=${version}"
|
|
"-X main.buildSource=nix"
|
|
];
|
|
|
|
postInstall = ''
|
|
wrapProgram $out/bin/lazygit \
|
|
--prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.git ]}
|
|
'';
|
|
|
|
meta = {
|
|
description = "A simple terminal UI for git commands";
|
|
homepage = "https://github.com/jesseduffield/lazygit";
|
|
license = pkgs.lib.licenses.mit;
|
|
maintainers = [ "jesseduffield" ];
|
|
platforms = pkgs.lib.platforms.unix;
|
|
mainProgram = "lazygit";
|
|
};
|
|
};
|
|
in
|
|
{
|
|
_module.args.pkgs = import inputs.nixpkgs {
|
|
inherit system;
|
|
overlays = [ goOverlay ];
|
|
config = { };
|
|
};
|
|
|
|
packages = {
|
|
default = lazygit;
|
|
inherit lazygit;
|
|
};
|
|
|
|
devShells.default = pkgs.mkShell {
|
|
name = "lazygit-dev";
|
|
|
|
buildInputs = with pkgs; [
|
|
# Go toolchain
|
|
go
|
|
gotools
|
|
|
|
# Development tools
|
|
git
|
|
gnumake
|
|
just
|
|
];
|
|
|
|
# Environment variables for development
|
|
CGO_ENABLED = "0";
|
|
};
|
|
|
|
treefmt = {
|
|
programs.nixfmt.enable = pkgs.lib.meta.availableOn pkgs.stdenv.buildPlatform pkgs.nixfmt.compiler;
|
|
programs.nixfmt.package = pkgs.nixfmt;
|
|
programs.gofmt.enable = true;
|
|
};
|
|
|
|
checks.build = lazygit;
|
|
};
|
|
|
|
flake = {
|
|
overlays.default = final: prev: {
|
|
lazygit = inputs.self.packages.${final.system}.lazygit;
|
|
};
|
|
};
|
|
};
|
|
}
|