diff options
| author | makefu <github@syntax-fehler.de> | 2015-12-28 10:58:13 +0100 | 
|---|---|---|
| committer | makefu <github@syntax-fehler.de> | 2015-12-28 10:58:13 +0100 | 
| commit | 743842268327b5fd12ba4d19b6260d47535976a3 (patch) | |
| tree | 2b8d426429adeb281c1fb085305896a99a1c8265 /krebs | |
| parent | 7bed1761bdbfc3fc7e2df56dcf069511eec2a97d (diff) | |
k 5 default: populate supports infesting arg
by setting infesting for populate, data will be written to /mnt instead of root.
Diffstat (limited to 'krebs')
| -rw-r--r-- | krebs/default.nix | 21 | 
1 files changed, 15 insertions, 6 deletions
diff --git a/krebs/default.nix b/krebs/default.nix index ad0205426..81ddd3ea6 100644 --- a/krebs/default.nix +++ b/krebs/default.nix @@ -36,6 +36,7 @@ let out = {      { system ? current-host-name      , target ? system      }@args: let +      config = get-config system;      in ''        #! /bin/sh        # ${current-date} ${current-user-name}@${current-host-name} @@ -47,6 +48,10 @@ let out = {          ${builtins.readFile ./4lib/infest/install-nix.sh}        ''} +      # Prepare target source via bind-mounting + +      (${populate (args // { infesting = true;}) }) +        (${nixos-install args})        ${rootssh target '' @@ -98,7 +103,6 @@ let out = {        #! /bin/sh        # ${current-date} ${current-user-name}@${current-host-name}        # krebs.nixos-install -      (${populate args})        ${rootssh target ''          export PATH; PATH=/root/.nix-profile/bin:$PATH @@ -205,6 +209,7 @@ let out = {    populate =      { system ? current-host-name      , target ? system +    , infesting ? false      }@args:      let out = ''          #! /bin/sh @@ -217,6 +222,8 @@ let out = {              ["dir" "git"])}        ''; + +      target_prefix=lib.optionalString infesting "/mnt";        config = get-config system;        current-host = config.krebs.hosts.${current-host-name}; @@ -225,17 +232,18 @@ let out = {        methods.dir = config:          let            can-push = config.host.name == current-host.name; +          target-path = target_prefix + config.target-path;            push-method = ''              rsync \                --exclude .git \                --exclude .graveyard \                --exclude old \                --exclude tmp \ -              --rsync-path='mkdir -p ${config.target-path} && rsync' \ +              --rsync-path='mkdir -p ${target-path} && rsync' \                --delete-excluded \                -vrLptgoD \                ${config.path}/ \ -              root@${target}:${config.target-path} +              root@${target}:${target-path}            '';          in          if can-push then push-method else @@ -244,9 +252,10 @@ let out = {          throw "No way to push ${dir} from ${current-host.name} to ${target}";        methods.git = config: -        rootssh target '' -          mkdir -p ${config.target-path} -          cd ${config.target-path} +        let target-path = target_prefix + config.target-path; +        in rootssh target '' +          mkdir -p ${target-path} +          cd ${target-path}            if ! test -e .git; then              git init            fi  | 
