diff --git a/.gitignore b/.gitignore index 849ddff..5994828 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ dist/ +.DS_Store diff --git a/Makefile b/Makefile index fbc8d45..91c8e70 100644 --- a/Makefile +++ b/Makefile @@ -23,3 +23,21 @@ test: fmt: goimports -local github.com/ThreeDotsLabs -l -w . + +.PHONY: update-nix-hash +update-nix-hash: + @echo "Resetting vendorHash in Nix files..." + @sed -i.bak 's/vendorHash = ".*"/vendorHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="/' flake.nix default.nix + @rm -f flake.nix.bak default.nix.bak + @echo "Calculating new vendorHash..." + @NEW_HASH=$$(nix build 2>&1 | awk '/got:/{print $$2}' | head -n 1) && \ + if [ -n "$$NEW_HASH" ]; then \ + echo "Found new hash: $$NEW_HASH"; \ + sed -i.bak "s/vendorHash = \".*\"/vendorHash = \"$$NEW_HASH\"/" flake.nix default.nix; \ + rm -f flake.nix.bak default.nix.bak; \ + echo "Nix files updated successfully."; \ + else \ + echo "Failed to calculate new hash. Are there other Nix build errors?"; \ + git checkout flake.nix default.nix; \ + exit 1; \ + fi diff --git a/README.md b/README.md index 6110dbb..91452e9 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,12 @@ brew install ThreeDotsLabs/tap/tdl sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/ThreeDotsLabs/cli/master/install.sh)" -- -b /usr/local/bin ``` +### Nix (macOS, Linux) + +```sh +nix profile add github:ThreeDotsLabs/cli +``` + ### Script (Windows) Install to your home directory: diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..9dc2987 --- /dev/null +++ b/default.nix @@ -0,0 +1,17 @@ +{ pkgs ? import {}, version ? "dev" }: + +pkgs.buildGoModule rec { + pname = "tdl"; + inherit version; + + src = ./.; + + subPackages = [ "tdl" ]; + + vendorHash = "sha256-Q3MwzslcVv9h3QZAfqnAYmkdVtWeJnhXqYvhZmb3hps="; + + ldflags = [ + "-s" "-w" + "-X main.version=${version}" + ]; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..923e9f1 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1770562336, + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a87e915 --- /dev/null +++ b/flake.nix @@ -0,0 +1,33 @@ +{ + description = "ThreeDotsLabs CLI"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + version = if self ? rev then self.rev else "dev"; + in + { + packages.default = pkgs.buildGoModule { + pname = "tdl"; + version = version; + src = ./.; + + subPackages = [ "tdl" ]; + + vendorHash = "sha256-Q3MwzslcVv9h3QZAfqnAYmkdVtWeJnhXqYvhZmb3hps="; + + ldflags = [ + "-s" "-w" + "-X main.version=${version}" + "-X main.commit=${if self ? rev then self.rev else "dirty"}" + ]; + }; + } + ); +}