lazydocker/flake.nix
2025-12-14 14:08:02 -06:00

99 lines
2.5 KiB
Nix

{
description = "The lazier way to manage everything docker";
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@{
self,
flake-parts,
systems,
...
}:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = import systems;
imports = [
inputs.treefmt-nix.flakeModule
];
perSystem =
{
self',
pkgs,
system,
...
}:
let
lazydocker = pkgs.buildGoModule rec {
pname = "lazydocker";
version = "dev";
gitCommit = inputs.self.rev or inputs.self.dirtyRev or "dev";
src = ./.;
vendorHash = null;
# Disable integration tests that require specific environment
doCheck = false;
ldflags = [
"-s"
"-w"
"-X main.commit=${gitCommit}"
"-X main.version=${version}"
"-X main.buildSource=nix"
];
meta = {
description = "The lazier way to manage everything docker";
homepage = "https://github.com/jesseduffield/lazydocker";
license = pkgs.lib.licenses.mit;
maintainers = [ "jesseduffield" ];
platforms = pkgs.lib.platforms.unix;
mainProgram = "lazydocker";
};
};
in
{
packages = {
default = lazydocker;
inherit lazydocker;
};
devShells.default = pkgs.mkShell {
name = "lazydocker-dev";
buildInputs = with pkgs; [
# Go toolchain
go
gotools
gnumake
];
# Environment variables for development
CGO_ENABLED = "0";
};
treefmt = {
programs.nixfmt.enable = pkgs.lib.meta.availableOn pkgs.stdenv.buildPlatform pkgs.nixfmt-rfc-style.compiler;
programs.nixfmt.package = pkgs.nixfmt-rfc-style;
programs.gofmt.enable = true;
};
checks.build = lazydocker;
};
flake = {
overlays.default = final: prev: {
lazydocker = inputs.self.packages.${final.system}.lazydocker;
};
};
};
}