|
1 | | -#! /usr/bin/env nix-shell |
2 | | -#! nix-shell -i bash -p git nh nixfmt-rfc-style rsync |
| 1 | +#!/usr/bin/env bash |
3 | 2 |
|
4 | 3 | ICEDOS_DIR="/tmp/icedos" |
5 | 4 | CONFIG="$ICEDOS_DIR/configuration-location" |
|
64 | 63 |
|
65 | 64 | export NIX_CONFIG="experimental-features = flakes nix-command" |
66 | 65 |
|
67 | | -nixBin=$(nix eval --impure --raw --expr " |
68 | | - let pkgs = import <nixpkgs> {}; |
69 | | - in with builtins; |
70 | | - if (compareVersions \"2.31.0\" pkgs.nix.version) > 0 |
71 | | - then toString (getFlake \"github:NixOS/nixpkgs/nixpkgs-unstable\").legacyPackages.\${pkgs.stdenv.hostPlatform.system}.nix |
72 | | - else toString pkgs.nix |
73 | | -") |
74 | | -export PATH="$nixBin/bin:$PATH" |
75 | | - |
76 | 66 | mkdir -p "$ICEDOS_DIR" |
77 | 67 |
|
| 68 | +export ICEDOS_BUILD_DIR="$(mktemp -d -t icedos-build-XXXXXXX-0)" |
| 69 | +mkdir -p "$ICEDOS_BUILD_DIR" |
| 70 | + |
78 | 71 | # Save current directory into a file |
79 | 72 | [ -f "$CONFIG" ] && rm -f "$CONFIG" || sudo rm -rf "$CONFIG" |
80 | | -printf "$PWD" > "$CONFIG" |
81 | | - |
82 | | -# Generate flake.nix |
83 | | -[ -f "$FLAKE" ] && rm -f "$FLAKE" |
| 73 | +printf "$ICEDOS_STATE_DIR" > "$CONFIG" |
84 | 74 |
|
85 | 75 | export ICEDOS_FLAKE_INPUTS=$(mktemp) |
86 | 76 |
|
87 | 77 | [ "$update_repos" == "1" ] && refresh="--refresh" |
88 | 78 |
|
89 | | -ICEDOS_UPDATE="$update_repos" ICEDOS_STAGE="genflake" nix eval $refresh --show-trace --file "./lib/genflake.nix" flakeInputs | nixfmt | sed "1,1d" | sed "\$d" >$ICEDOS_FLAKE_INPUTS |
90 | | -(printf "{ inputs = {" ; cat $ICEDOS_FLAKE_INPUTS ; printf "}; outputs = { ... }: {}; }") >$FLAKE |
91 | | -nix flake prefetch-inputs |
| 79 | +ICEDOS_UPDATE="$update_repos" ICEDOS_STAGE="genflake" nix eval $refresh --show-trace --file "$ICEDOS_ROOT/lib/genflake.nix" flakeInputs | nixfmt | sed "1,1d" | sed "\$d" >$ICEDOS_FLAKE_INPUTS |
| 80 | +(printf "{ inputs = {" ; cat $ICEDOS_FLAKE_INPUTS ; printf "}; outputs = { ... }: {}; }") >"$ICEDOS_STATE_DIR/$FLAKE" |
| 81 | +( cd "$ICEDOS_STATE_DIR" ; nix flake prefetch-inputs ) |
92 | 82 |
|
93 | | -ICEDOS_STAGE="genflake" nix eval --show-trace --file "./lib/genflake.nix" --raw flakeFinal >$FLAKE |
94 | | -nixfmt "$FLAKE" |
| 83 | +ICEDOS_STAGE="genflake" nix eval --show-trace --file "$ICEDOS_ROOT/lib/genflake.nix" --raw flakeFinal >"$ICEDOS_STATE_DIR/$FLAKE" |
| 84 | +nixfmt "$ICEDOS_STATE_DIR/$FLAKE" |
95 | 85 |
|
96 | 86 | rm $ICEDOS_FLAKE_INPUTS |
97 | 87 | unset ICEDOS_FLAKE_INPUTS |
98 | 88 |
|
99 | 89 | [ "$update" == "1" ] && nix flake update |
100 | 90 |
|
101 | | -# Make a tmp folder and build from there |
102 | | -TMP_BUILD_FOLDER="$(mktemp -d -t icedos-build-XXXXXXX-0 | xargs echo)/" |
103 | | - |
104 | | -mkdir -p "$TMP_BUILD_FOLDER" |
105 | | - |
106 | | -rsync -a ./ "$TMP_BUILD_FOLDER" \ |
107 | | ---exclude='.cache' \ |
108 | | ---exclude='.editorconfig' \ |
| 91 | +rsync -a "$ICEDOS_CONFIG_ROOT" "$ICEDOS_BUILD_DIR" \ |
109 | 92 | --exclude='.git' \ |
110 | 93 | --exclude='.gitignore' \ |
111 | | ---exclude='.lib' \ |
112 | | ---exclude='.modules' \ |
113 | | ---exclude='.taplo.toml' \ |
| 94 | +--exclude='flake.lock' \ |
| 95 | +--exclude='flake.nix' \ |
114 | 96 | --exclude='LICENSE' \ |
115 | | ---exclude='README.md' \ |
116 | | ---exclude='build.sh' |
| 97 | +--exclude='README.md' |
| 98 | + |
| 99 | +cp "$ICEDOS_STATE_DIR"/* "$ICEDOS_BUILD_DIR" |
117 | 100 |
|
118 | | -echo "Building from path $TMP_BUILD_FOLDER" |
| 101 | +echo "Building from path $ICEDOS_BUILD_DIR" |
| 102 | +cd $ICEDOS_BUILD_DIR |
119 | 103 |
|
120 | 104 | # Build the system configuration |
121 | 105 | if (( ${#nixBuildArgs[@]} != 0 )) || [[ "$isFirstInstall" == 1 ]]; then |
122 | 106 | sudo nixos-rebuild $action --flake .#"$(cat /etc/hostname)" ${nixBuildArgs[*]} ${globalBuildArgs[*]} |
123 | 107 | exit 0 |
124 | 108 | fi |
125 | 109 |
|
126 | | -nh os $action "$TMP_BUILD_FOLDER" ${nhBuildArgs[*]} -- ${globalBuildArgs[*]} |
| 110 | +nh os $action . ${nhBuildArgs[*]} -- ${globalBuildArgs[*]} |
0 commit comments