CASCADE/common/cascade-source.nix

37 lines
1.2 KiB
Nix
Raw Normal View History

with builtins;
with import (toString ../functions);
{config, lib, ...}: {
options = with lib; with types; {
environment.cascade-source.enable = mkOption {
default = true;
type = bool;
description = ''
Include cascade source code configured for nixos-rebuild.
'';
};
};
config = with lib; {
system.activationScripts.cascade-source = mkMerge [
(mkIf config.environment.cascade-source.enable ''
mkdir -m 0755 -p /usr/src /etc/nixos
[ -h /usr/src/cascade ] && rm /usr/src/cascade # do this first so the dir test that comes next won't read the symlink as a dir
[ -d /usr/src/cascade ] && mv /usr/src/cascade /usr/src/cascade.before-nixos
ln -sfn ${./..} /usr/src/cascade # but why isn't this atomic?
ln -sf /usr/src/cascade/hosts/${config.networking.hostName}.nix /etc/nixos/configuration.nix
'')
(mkIf (!config.environment.cascade-source.enable) ''
# if we delete the symlink version of cascade, we delete a symlink in /etc/nixos as well
[ -h /usr/src/cascade ] && rm /usr/src/cascade && \
[ -h /etc/nixos/configuration.nix ] && rm /etc/nixos/configuration.nix
'')
];
nix.nixPath = [
"nixos-config=/etc/nixos/configuration.nix"
];
};
}