{ description = "A better simple script flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = {self, nixpkgs, flake-utils}: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs {system = system;}; my-name = "my-script"; my-src = builtins.readFile ./simple-script.sh; my-script = (pkgs.writeScriptBin my-name my-src).overrideAttrs(old: { buildCommand = "${old.buildCommand}\n patchShebangs $out"; }); ## create a variable to store the list of dependencies my-buildInputs = with pkgs; [cowsay ddate]; in rec { defaultPackage = packages.my-script; packages.my-script = pkgs.symlinkJoin { name = my-name; paths = [ my-script ] ++ my-buildInputs; buildInputs = [ pkgs.makeWrapper ]; postBuild = "wrapProgram $out/bin/${my-name} --prefix PATH : $out/bin"; }; }); }