37 lines
1.2 KiB
Nix
37 lines
1.2 KiB
Nix
|
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"
|
||
|
];
|
||
|
};
|
||
|
|
||
|
}
|