aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* populate: add flake-input source typetv2 days3-46/+90
| | | | | | | The flake-input source type delivers an input of a flake, as recorded in the flake's lock file, and the flake source type delivers the flake itself. fetchOnTarget belongs to flake-input, because only a locked input can be fetched on the target.
* krops writeDeploy: deploy generated flakestv2 days1-1/+12
| | | | | The flake parameter names a source. If the source draws inputs from other sources, its generated flake gets deployed.
* krops writeDeploy: add flake parametertv2 days2-2/+18
| | | | | | With flake set, nixos-rebuild deploys that flake from the build target's source directory, with flakes enabled for the command. The deployment fails with an error message unless Nix on the build target supports flakes.
* populate: generate flakes for inputs drawn from sourcestv2 days3-5/+222
| | | | | | | | | | | | | | For each source that draws inputs from other sources, populate generates a flake in .populate/flakes/<name>, which re-exports the outputs of the source's flake with those inputs drawn from the other sources. The source itself stays as it is, so NIX_PATH still refers to it. Generated flakes refer to each other's generated flakes, so a source's own declarations apply wherever it gets drawn from, and get generated in dependency order. Evaluation fails for sources drawing inputs from missing sources, from themselves, or from each other. Generated flakes get locked on every run, and get removed once their sources no longer draw inputs from other sources.
* lib: add flakeFollowstv2 days1-0/+14
| | | | | flakeFollows lists the inputs a source draws from other sources, with the paths of nested inputs flattened.
* populate flake: add fetchOnTargettv2 days3-23/+97
| | | | | | | | | | With fetchOnTarget, the target fetches the input and its own inputs itself, using fetchTree with the arguments recorded in the flake's lock file. Only nix flake metadata runs on the deploying machine, so the inputs get downloaded once, by the target. This needs Nix with flake support on the target, which populate checks before fetching. Because nothing gets copied, this also works for targets using sudo.
* lib shell: add requireFlakestv2 days1-0/+14
| | | | | | Shell code that enables flakes for the Nix commands following it, and fails with an error message naming the host and the Nix version found, unless Nix supports flakes.
* populate: add flake source typetv2 days3-1/+163
| | | | | | | | | | | | Deliver a flake, or one of its locked inputs, to the target: archive the flake locally, copy the selected input together with its own inputs into the target's store, and link it at the target path, registered as garbage collector root. The result can be used in NIX_PATH as well as by flakes evaluated on the target, without network access. nix copy runs with a separate ssh wrapper without the control socket, because Nix waits for its LocalCommand, which may not run over a multiplexed connection.
* populate: export TMPDIRtv2 days1-0/+1
| | | | | | | Each job and the ssh wrapper run as separate scripts, which only see TMPDIR if it's exported. Without TMPDIR in the caller's environment, jobs fail, and the ssh wrapper's control socket ends up at the root directory.
* populate backup: fix error messagetv2 days1-1/+1
|
* populate: derive socket name from target hosttv2026-01-011-2/+2
|
* populate: use ssh control socket1.30.0tv2025-12-091-6/+12
|
* populate use singular tmpdirtv2025-12-091-24/+22
| | | | | | | | Set TMPDIR to a fresh, private top-level temporary directory, and run each job in a separate subdirectory beneath it. TMPDIR remains shared across all jobs, allowing reuse of resources like ssh control sockets.
* populate pass{,age}: use $pass_outtv2025-12-091-9/+9
|
* populate pipe: use rsynctv2025-12-091-2/+10
| | | | Generate a reproducible output to transmit it only if it has changed.
* populate passage: rename loop variablestv2025-04-091-6/+7
|
* populate rsync': reduce verbositytv2025-04-091-1/+2
|
* populate: add passage source type1.29.0tv2024-01-113-1/+82
|
* init flake.nixlassulus2023-07-222-0/+56
|
* Merge pull request #38 from fuu0/patch-1Lassulus2023-04-081-1/+1
|\ | | | | Update README.md to fix broken link with infos to the `target` attribute
| * Update README.mdfuu02023-04-081-1/+1
| | | | | | fix broken link to with infos to the `target` attribute
* | populate pass: calculate hash for each symlink1.28.2lassulus2023-03-131-1/+9
| | | | | | | | | | this fixes folders with symlinks not getting updated if the symlinked file is in another subfolder of the pass repo
* | rebuild: set NIX_PATH like everywhere else1.28.1tv2022-09-071-3/+2
| |
* | withNixOutputMonitor: run shell with know Nix pathtv2022-09-071-2/+3
| |
* | runShell: admit non-posix-compatible shellstv2022-09-071-1/+4
| |
* | krops writeDeploy: add useNixOutputMonitor parameter1.28.0tv2022-08-232-7/+71
| |
* | Merge remote-tracking branch 'prism/master'1.27.0tv2022-07-262-2/+7
|\ \ | |/ |/|
| * krops writeTest: make trace optionallassulus2022-07-262-2/+7
| |
* | krops writeDeploy: add operation parametertv2022-07-162-3/+8
|/
* populate git: remove trailing spaces1.26.3tv2022-02-121-1/+1
|
* populate git: remove non-worktree targettv2022-02-121-0/+5
|
* Merge pull request #35 from erikarvstedt/fix-ssh-port1.26.2tv2021-11-206-55/+78
|\ | | | | target: use default port from SSH config
| * target: use default port from SSH configErik Arvstedt2021-11-203-6/+8
| | | | | | | | | | This is the expected behavior. The SSH config is also implicitly used for other SSH-related settings.
| * populate file: isDerivation -> isStorePath1.26.1tv2021-10-261-2/+2
| |
| * populate file: admit derivations1.26.0tv2021-10-264-8/+25
| |
| * README: transfered -> transferredtv2021-10-261-1/+1
| |
| * README: talk about systemstv2021-10-261-1/+1
| |
| * populate: add rsyncDefaultConfigtv2021-10-261-7/+14
| |
| * runShell/writeCommand: add allocateTTY argumentlassulus2021-10-262-4/+11
| |
| * krops writeDeploy: deprecate fast parameterlassulus2021-10-261-29/+19
| |
| * README: use latest krops version in exampleMatthias Beyer2021-10-261-2/+2
|/ | | | Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
* README: update irc linklassulus2021-07-221-1/+1
|
* Merge pull request #30 from krebs/fixupsv1.25.0Lassulus2021-03-232-4/+8
|\ | | | | (hopefully) fix pass with subfolders, make README more clear for extraOptions
| * README: better usecase for extraOptionslassulus2021-02-161-1/+1
| |
| * populate pass: don't decrypt .gpg-idlassulus2021-02-161-1/+1
| |
| * populate pass: make git optional againlassulus2021-01-171-2/+6
|/
* isLocalTarget: use "localhost" as defaultv1.24.1tv2021-01-161-5/+12
| | | | | This fixes an issue when trying to deploy using sudo from systems that don't provide means to determine the real host name.
* README: ops -> operationstv2021-01-051-1/+1
| | | | Because there's no need to save on characters.
* Make pass source follow symlinksv1.24.0Simon Bruder2020-12-151-1/+1
|
* Merge pull request #26 from Mic92/contribtv2020-12-141-1/+2
|\ | | | | README: mention github fork