nidus-sync/flake.nix

80 lines
2 KiB
Nix
Raw Normal View History

{
description = "Nidus sync";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
flake-utils.url = "github:numtide/flake-utils";
proj.url = "github:Gleipnir-Technology/proj";
stapelberg = {
url = "github:stapelberg/nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
2026-05-19 14:13:45 +00:00
outputs = { self, nixpkgs, flake-utils, proj, stapelberg }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ stapelberg.overlays.goVcsStamping ];
};
projPkg = proj.packages.${system}.default;
2026-03-04 03:41:41 +00:00
package = pkgs.callPackage ./default.nix {
ldflags = ldflags;
proj = projPkg;
version = packageVersion;
};
# Pull VCS metadata from the flake's own git source.
# These fields are available when the flake lives inside a git checkout.
gitRevision = self.sourceInfo.rev or "dirty";
gitShortRev = self.sourceInfo.shortRev or "dirty";
gitDateTime = self.sourceInfo.lastModifiedDate or "unknown";
# Derive a human-readable version from the git date + short rev.
# lastModifiedDate is YYYYMMDDHHMMSS; pull out just YYYY-MM-DD.
packageVersion =
let
y = builtins.substring 0 4 gitDateTime;
m = builtins.substring 4 2 gitDateTime;
d = builtins.substring 6 2 gitDateTime;
in "${y}-${m}-${d}.${gitShortRev}";
ldflags = [
"-s" "-w"
"-X main.BuildTime=${gitDateTime}"
"-X main.Revision=${gitRevision}"
"-X main.Version=${packageVersion}"
];
in
{
packages.default = package;
packages.nidus-sync = package;
# Development shell configuration
devShells.default = pkgs.mkShell {
buildInputs = [
pkgs.air
pkgs.autoprefixer
pkgs.dart-sass
pkgs.go
pkgs.go-jet
2026-05-01 17:36:32 +00:00
pkgs.golangci-lint
pkgs.goose
pkgs.gotools
pkgs.lefthook
2026-03-21 17:44:14 +00:00
pkgs.nodejs
pkgs.pkg-config
2026-03-21 17:44:14 +00:00
pkgs.pnpm
pkgs.prettier
pkgs.prettier-plugin-go-template
proj.packages.${system}.default
pkgs.typescript
pkgs.watchexec
];
};
}
);
}