Add config-manager

This commit is contained in:
Alexander Heldt
2023-10-01 16:53:12 +02:00
parent 79f694d064
commit 30107926ea
2 changed files with 67 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
{ pkgs, lib, config, ... }:
let
config-manager = let
flakePath = config.config-manager.flakePath;
nixosConfiguration = config.config-manager.nixosConfiguration;
in
if flakePath == "" then
throw "'config-manager.flakePath' cannot be empty"
else
pkgs.writeShellScriptBin "cm" ''
help() {
cat << EOF
Usage:
cm [flag]
Flags:
--update updates the flake
--switch rebuilds + switches configuration
EOF
}
update() {
echo -e "\033[0;31mUPDATING FLAKE"
sudo nix flake update
}
switch() {
echo -e "\033[0;31mREBUILDING + SWITCHING CONFIG"
sudo nixos-rebuild switch --flake ${flakePath}#${nixosConfiguration}
}
case $1 in
--update)
update ;;
--switch)
switch ;;
--help | *)
help ;;
esac
'';
in
{
options = {
config-manager = {
flakePath = lib.mkOption {
type = lib.types.str;
default = "";
description = "path to this flake";
};
nixosConfiguration = lib.mkOption {
type = lib.types.str;
default = config.networking.hostName;
description = "what nixosConfiguration to use";
};
};
};
config = {
environment.systemPackages = [ config-manager ];
};
}