From fa17cfe8782b51f39900cb216cb44c6cc6747856 Mon Sep 17 00:00:00 2001 From: David Arnold Date: Sun, 6 Nov 2022 00:12:15 -0500 Subject: [PATCH] feat: trim the build to the minimum on a slow finicky target machine, no time to pull gcc --- Makefile | 15 --------------- flake.nix | 32 +++++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 18 deletions(-) delete mode 100644 Makefile diff --git a/Makefile b/Makefile deleted file mode 100644 index d01f5bf..0000000 --- a/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -PREFIX ?= /usr/local -SHARE ?= $(PREFIX)/share/disko - -all: - -SOURCES = disko cli.nix default.nix types.nix - -install: - mkdir -p $(PREFIX)/bin $(SHARE) - sed \ - -e "s|libexec_dir=\".*\"|libexec_dir=\"$(SHARE)\"|" \ - -e "s|#!/usr/bin/env.*|#!/usr/bin/env bash|" \ - disko > $(PREFIX)/bin/disko - chmod 755 $(PREFIX)/bin/disko - cp -r $(SOURCES) $(SHARE) diff --git a/flake.nix b/flake.nix index adb2add..cd955a2 100644 --- a/flake.nix +++ b/flake.nix @@ -9,12 +9,38 @@ inherit (nixpkgs) lib; }; packages.x86_64-linux.disko = let + inherit (nixpkgs) lib; pkgs = nixpkgs.legacyPackages.x86_64-linux; - in pkgs.stdenv.mkDerivation { + inclFiles = {src, name}: files: lib.cleanSourceWith { + inherit src name; + filter = _path: _type: _type == "regular" + && lib.any (file: builtins.baseNameOf _path == file) files; + }; + in derivation rec{ + system = "x86_64-linux"; name = "disko"; - src = ./.; + builder = "/bin/sh"; + PATH = "${pkgs.coreutils}/bin:${pkgs.gnused}/bin"; + passAsFile = ["buildPhase"]; + buildPhase = '' + mkdir -p $out/bin $out/share/disko + cp -r $src/* $out/share/disko + sed \ + -e "s|libexec_dir=\".*\"|libexec_dir=\"$out/share/disko\"|" \ + -e "s|#!/usr/bin/env.*|#!/usr/bin/env bash|" \ + $src/disko > $out/bin/disko + chmod 755 $out/bin/disko + ''; + args = ["-c" ". $buildPhasePath"]; + src = inclFiles { inherit name; src = ./.; } [ + "disko" + "cli.nix" + "default.nix" + "types.nix" + "options.nix" + ]; + } // { meta.description = "Format disks with nix-config"; - installFlags = [ "PREFIX=$(out)" ]; }; packages.x86_64-linux.default = self.packages.x86_64-linux.disko; checks.x86_64-linux = let