mirror of
https://github.com/LnL7/nix-darwin.git
synced 2024-12-14 11:57:34 +00:00
Add darwin-version
command
This commit is contained in:
parent
c806a73609
commit
0dafe2170d
9 changed files with 86 additions and 11 deletions
11
flake.nix
11
flake.nix
|
@ -30,14 +30,17 @@
|
||||||
|
|
||||||
system.checks.verifyNixPath = lib.mkDefault false;
|
system.checks.verifyNixPath = lib.mkDefault false;
|
||||||
|
|
||||||
system.darwinVersionSuffix = ".${self.shortRev or "dirty"}";
|
system.darwinVersionSuffix = ".${self.shortRev or self.dirtyShortRev or "dirty"}";
|
||||||
system.darwinRevision = lib.mkIf (self ? rev) self.rev;
|
system.darwinRevision = let
|
||||||
|
rev = self.rev or self.dirtyRev or null;
|
||||||
|
in
|
||||||
|
lib.mkIf (rev != null) rev;
|
||||||
}) ];
|
}) ];
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
overlays.default = final: prev: {
|
overlays.default = final: prev: {
|
||||||
inherit (prev.callPackage ./pkgs/nix-tools { }) darwin-rebuild darwin-option;
|
inherit (prev.callPackage ./pkgs/nix-tools { }) darwin-rebuild darwin-option darwin-version;
|
||||||
|
|
||||||
darwin-uninstaller = prev.callPackage ./pkgs/darwin-uninstaller { nix-darwin = self; };
|
darwin-uninstaller = prev.callPackage ./pkgs/darwin-uninstaller { nix-darwin = self; };
|
||||||
};
|
};
|
||||||
|
@ -76,7 +79,7 @@
|
||||||
in {
|
in {
|
||||||
default = self.packages.${system}.darwin-rebuild;
|
default = self.packages.${system}.darwin-rebuild;
|
||||||
|
|
||||||
inherit (pkgs) darwin-option darwin-rebuild darwin-uninstaller;
|
inherit (pkgs) darwin-option darwin-rebuild darwin-version darwin-uninstaller;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,9 @@
|
||||||
programs.zsh.enable = true; # default shell on catalina
|
programs.zsh.enable = true; # default shell on catalina
|
||||||
# programs.fish.enable = true;
|
# programs.fish.enable = true;
|
||||||
|
|
||||||
|
# Set Git commit hash for darwin-version.
|
||||||
|
system.configurationRevision = self.rev or self.dirtyRev or null;
|
||||||
|
|
||||||
# Used for backwards compatibility, please read the changelog before changing.
|
# Used for backwards compatibility, please read the changelog before changing.
|
||||||
# $ darwin-rebuild changelog
|
# $ darwin-rebuild changelog
|
||||||
system.stateVersion = 4;
|
system.stateVersion = 4;
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
set -g pane-border-style fg=black
|
set -g pane-border-style fg=black
|
||||||
set -g status-bg black
|
set -g status-bg black
|
||||||
set -g status-fg white
|
set -g status-fg white
|
||||||
set -g status-right '#[fg=white]#(id -un)@#(hostname) #(cat /run/current-system/darwin-version)'
|
set -g status-right '#[fg=white]#(id -un)@#(hostname) #(jq --raw-output '.darwinLabel' /run/current-system/darwin-version.json)'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
environment.etc."nix/user-sandbox.sb".text = ''
|
environment.etc."nix/user-sandbox.sb".text = ''
|
||||||
|
|
|
@ -7,7 +7,7 @@ let
|
||||||
nixPackage = config.nix.package;
|
nixPackage = config.nix.package;
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit (nix-tools) darwin-option darwin-rebuild;
|
inherit (nix-tools) darwin-option darwin-rebuild darwin-version;
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -17,10 +17,11 @@ in
|
||||||
[ # Include nix-tools by default
|
[ # Include nix-tools by default
|
||||||
darwin-option
|
darwin-option
|
||||||
darwin-rebuild
|
darwin-rebuild
|
||||||
|
darwin-version
|
||||||
];
|
];
|
||||||
|
|
||||||
system.build = {
|
system.build = {
|
||||||
inherit darwin-option darwin-rebuild;
|
inherit darwin-option darwin-rebuild darwin-version;
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -96,6 +96,12 @@ in
|
||||||
activationUserScript = cfg.activationScripts.userScript.text;
|
activationUserScript = cfg.activationScripts.userScript.text;
|
||||||
inherit (cfg) darwinLabel;
|
inherit (cfg) darwinLabel;
|
||||||
|
|
||||||
|
darwinVersionJson = (pkgs.formats.json {}).generate "darwin-version.json" (
|
||||||
|
filterAttrs (k: v: v != null) {
|
||||||
|
inherit (config.system) darwinRevision nixpkgsRevision configurationRevision darwinLabel;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
mkdir $out
|
mkdir $out
|
||||||
|
|
||||||
|
@ -129,7 +135,7 @@ in
|
||||||
|
|
||||||
echo -n "$systemConfig" > $out/systemConfig
|
echo -n "$systemConfig" > $out/systemConfig
|
||||||
|
|
||||||
echo -n "$darwinLabel" > $out/darwin-version
|
ln -s $darwinVersionJson $out/darwin-version.json
|
||||||
echo -n "$system" > $out/system
|
echo -n "$system" > $out/system
|
||||||
|
|
||||||
${cfg.systemBuilderCommands}
|
${cfg.systemBuilderCommands}
|
||||||
|
|
|
@ -108,6 +108,12 @@ in
|
||||||
else lib.trivial.revisionWithDefault null;
|
else lib.trivial.revisionWithDefault null;
|
||||||
description = lib.mdDoc "The nixpkgs git revision from which this configuration was built.";
|
description = lib.mdDoc "The nixpkgs git revision from which this configuration was built.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
system.configurationRevision = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
description = lib.mdDoc "The Git revision of the top-level flake from which this configuration was built.";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
|
|
@ -8,12 +8,11 @@ showSyntax() {
|
||||||
echo "darwin-rebuild [--help] {edit | switch | activate | build | check | changelog}" >&2
|
echo "darwin-rebuild [--help] {edit | switch | activate | build | check | changelog}" >&2
|
||||||
echo " [--list-generations] [{--profile-name | -p} name] [--rollback]" >&2
|
echo " [--list-generations] [{--profile-name | -p} name] [--rollback]" >&2
|
||||||
echo " [{--switch-generation | -G} generation] [--verbose...] [-v...]" >&2
|
echo " [{--switch-generation | -G} generation] [--verbose...] [-v...]" >&2
|
||||||
echo " [-Q] [{--max-jobs | -j} number] [--cores number] [--dry-run]" >&1
|
echo " [-Q] [{--max-jobs | -j} number] [--cores number] [--dry-run]" >&2
|
||||||
echo " [--keep-going] [-k] [--keep-failed] [-K] [--fallback] [--show-trace]" >&2
|
echo " [--keep-going] [-k] [--keep-failed] [-K] [--fallback] [--show-trace]" >&2
|
||||||
echo " [-I path] [--option name value] [--arg name value] [--argstr name value]" >&2
|
echo " [-I path] [--option name value] [--arg name value] [--argstr name value]" >&2
|
||||||
echo " [--flake flake] [--update-input input flake] [--impure] [--recreate-lock-file]"
|
echo " [--flake flake] [--update-input input flake] [--impure] [--recreate-lock-file]" >&2
|
||||||
echo " [--no-update-lock-file] [--refresh] ..." >&2
|
echo " [--no-update-lock-file] [--refresh] ..." >&2
|
||||||
exec man darwin-rebuild
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
50
pkgs/nix-tools/darwin-version.sh
Normal file
50
pkgs/nix-tools/darwin-version.sh
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#! @shell@
|
||||||
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
export PATH=@path@:$PATH
|
||||||
|
|
||||||
|
showSyntax() {
|
||||||
|
echo "darwin-version [--help|--darwin-revision|--nixpkgs-revision|--configuration-revision|--json]" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
--help)
|
||||||
|
showSyntax
|
||||||
|
;;
|
||||||
|
--darwin-revision)
|
||||||
|
revision="$(jq --raw-output '.darwinRevision // "null"' < /run/current-system/darwin-version.json)"
|
||||||
|
if [[ "$revision" == "null" ]]; then
|
||||||
|
echo "$0: nix-darwin commit hash is unknown" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "$revision"
|
||||||
|
;;
|
||||||
|
--nixpkgs-revision)
|
||||||
|
revision="$(jq --raw-output '.nixpkgsRevision // "null"' < /run/current-system/darwin-version.json)"
|
||||||
|
if [[ "$revision" == "null" ]]; then
|
||||||
|
echo "$0: Nixpkgs commit hash is unknown" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "$revision"
|
||||||
|
;;
|
||||||
|
--configuration-revision)
|
||||||
|
revision="$(jq --raw-output '.configurationRevision // "null"' < /run/current-system/darwin-version.json)"
|
||||||
|
if [[ "$revision" == "null" ]]; then
|
||||||
|
echo "$0: configuration commit hash is unknown" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "$revision"
|
||||||
|
;;
|
||||||
|
--json)
|
||||||
|
cat /run/current-system/darwin-version.json
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
label="$(jq --raw-output '.darwinLabel // "null"' < /run/current-system/darwin-version.json)"
|
||||||
|
if [[ "$label" == "null" ]]; then
|
||||||
|
showSyntax
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "$label"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
|
@ -35,4 +35,11 @@ in
|
||||||
inherit (stdenv) shell;
|
inherit (stdenv) shell;
|
||||||
}
|
}
|
||||||
./darwin-rebuild.sh;
|
./darwin-rebuild.sh;
|
||||||
|
|
||||||
|
darwin-version = writeProgram "darwin-version"
|
||||||
|
{
|
||||||
|
inherit (stdenv) shell;
|
||||||
|
path = lib.makeBinPath [ jq ];
|
||||||
|
}
|
||||||
|
./darwin-version.sh;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue