Skip to content

Commit

Permalink
Use more complex activation wrapper and add workaround for deploy-rs#185
Browse files Browse the repository at this point in the history
  • Loading branch information
notgne2 committed Jan 8, 2023
1 parent a5619f5 commit 54a1b1d
Showing 1 changed file with 53 additions and 33 deletions.
86 changes: 53 additions & 33 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -49,41 +49,61 @@
custom =
{
__functor = customSelf: base: activate:
final.buildEnv {
name = ("activatable-" + base.name);
paths =
[
base
(final.writeTextFile {
name = base.name + "-activate-path";
text = ''
#!${final.runtimeShell}
set -euo pipefail
if [[ "''${DRY_ACTIVATE:-}" == "1" ]]
then
${customSelf.dryActivate or "echo ${final.writeScript "activate" activate}"}
elif [[ "''${BOOT:-}" == "1" ]]
then
${customSelf.boot or "echo ${final.writeScript "activate" activate}"}
else
${activate}
fi
'';
executable = true;
destination = "/deploy-rs-activate";
})
(final.writeTextFile {
base.overrideAttrs (oldAttrs: {
name = "activatable-${base.name}";
buildCommand = ''
set -euo pipefail
${nixpkgs.lib.concatStringsSep "\n" (map (outputName:
let
activatePath = final.writeTextFile {
name = base.name + "-activate-path";
text = ''
#!${final.runtimeShell}
set -euo pipefail
if [[ "''${DRY_ACTIVATE:-}" == "1" ]]
then
${customSelf.dryActivate or "echo ${final.writeScript "activate" activate}"}
elif [[ "''${BOOT:-}" == "1" ]]
then
${customSelf.boot or "echo ${final.writeScript "activate" activate}"}
else
${activate}
fi
'';
executable = true;
};
activateRs = final.writeTextFile {
name = base.name + "-activate-rs";
text = ''
#!${final.runtimeShell}
exec ${self.packages.${system}.default}/bin/activate "$@"
'';
executable = true;
destination = "/activate-rs";
})
];
};
#!${final.runtimeShell}
exec ${self.packages.${system}.default}/bin/activate "$@"
'';
executable = true;
};
in (''
${final.coreutils}/bin/mkdir "''$${outputName}"
echo "Linking activation components in ${outputName}"
${final.coreutils}/bin/ln -s "${activatePath}" "''$${outputName}/deploy-rs-activate"
${final.coreutils}/bin/ln -s "${activateRs}" "''$${outputName}/activate-rs"
echo "Linking output contents of ${outputName}"
${final.findutils}/bin/find "${base.${outputName}}" -maxdepth 1 | while read -r file; do
${final.coreutils}/bin/ln -s "$file" "''$${outputName}/$(${final.coreutils}/bin/basename "$file")"
done
'' + nixpkgs.lib.optionalString
(outputName == "out") ''
# Workaround for https://github.com/serokell/deploy-rs/issues/185
if [ -x "${base.${outputName}}/prepare-root" ]; then
echo "Copying prepare-root"
rm "$out/prepare-root" || :
cp "${base.${outputName}}/prepare-root" "$out/prepare-root"
fi
'')) (base.outputs or [ "out" ]))}
'';
});
};

nixos = base:
Expand Down

0 comments on commit 54a1b1d

Please sign in to comment.