nix-book/source/new-flake/bash-flake/flake-6.nix
2025-10-14 11:56:13 +01:00

63 lines
1.6 KiB
Nix

{
description = "what does the cow say";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
};
outputs = { self, nixpkgs }:
let
supportedSystems = [ "x86_64-linux" "aarch64-linux" ];
forEachSystem = nixpkgs.lib.genAttrs supportedSystems;
nixpkgsFor = forEachSystem (system: import nixpkgs {
inherit system;
config = { };
overlays = [ ];
});
in {
devShells = forEachSystem (system:
let pkgs = nixpkgsFor.${system}; in {
default = pkgs.mkShell {
packages = [ pkgs.cowsay ];
};
});
packages = forEachSystem (system:
let pkgs = nixpkgsFor.${system}; in rec {
hello = pkgs.stdenv.mkDerivation {
name = "cow-hello.sh";
src = ./.;
unpackPhase = "true";
buildPhase = ":";
installPhase =
''
mkdir -p $out/bin
cp $src/cow-hello.sh $out/bin
chmod +x $out/bin/cow-hello.sh
# modify the cow-hello.sh script so it can find cowsay
COWSAY=$(type -p cowsay)
sed "s_cowsay_"$COWSAY"_" --in-place $out/bin/cow-hello.sh
'';
buildInputs = [ pkgs.cowsay ];
}; # mkDerivation
default = hello;
}); # packages
apps = forEachSystem (system:
let pkgs = nixpkgsFor.${system}; in rec {
hello = {
type = "app";
program = pkgs.lib.getExe self.packages.${system}.hello;
};
default = hello;
});
}; # outputs
}