aboutsummaryrefslogtreecommitdiff
path: root/examples/system/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--examples/system/flake.nix88
1 files changed, 53 insertions, 35 deletions
diff --git a/examples/system/flake.nix b/examples/system/flake.nix
index 5179258..68cf3ce 100644
--- a/examples/system/flake.nix
+++ b/examples/system/flake.nix
@@ -5,47 +5,65 @@
{
description = "Deploy a full system with hello service as a separate profile";
- outputs = { self, nixpkgs }: {
- nixosConfigurations.example-nixos-system = nixpkgs.lib.nixosSystem {
- system = "x86_64-linux";
- modules = [ ./configuration.nix ];
- };
+ outputs = { self, nixpkgs }:
+ let
+ setActivate = base: activate: nixpkgs.legacyPackages.x86_64-linux.symlinkJoin {
+ name = ("activatable-" + base.name);
+ paths = [
+ base
+ (nixpkgs.legacyPackages.x86_64-linux.writeTextFile {
+ name = base.name + "-activate-path";
+ text = ''
+ #!${nixpkgs.legacyPackages.x86_64-linux.runtimeShell}
+ ${activate}
+ '';
+ executable = true;
+ destination = "/activate";
+ })
+ ];
+ };
+ in
+ {
+ nixosConfigurations.example-nixos-system = nixpkgs.lib.nixosSystem {
+ system = "x86_64-linux";
+ modules = [ ./configuration.nix ];
+ };
- nixosConfigurations.bare = nixpkgs.lib.nixosSystem {
- system = "x86_64-linux";
- modules =
- [ ./bare.nix "${nixpkgs}/nixos/modules/virtualisation/qemu-vm.nix" ];
- };
+ nixosConfigurations.bare = nixpkgs.lib.nixosSystem {
+ system = "x86_64-linux";
+ modules =
+ [ ./bare.nix "${nixpkgs}/nixos/modules/virtualisation/qemu-vm.nix" ];
+ };
- # This is the application we actually want to run
- defaultPackage.x86_64-linux = import ./hello.nix nixpkgs;
+ # This is the application we actually want to run
+ defaultPackage.x86_64-linux = import ./hello.nix nixpkgs;
- deploy.nodes.example = {
- sshOpts = [ "-p" "2221" ];
- hostname = "localhost";
- fastConnection = true;
- profiles = {
- system = {
- sshUser = "admin";
- activate = "$PROFILE/bin/switch-to-configuration switch";
- path =
- self.nixosConfigurations.example-nixos-system.config.system.build.toplevel;
- user = "root";
- };
- hello = {
- sshUser = "hello";
- activate = "$PROFILE/bin/activate";
- path = self.defaultPackage.x86_64-linux;
- user = "hello";
+ deploy.nodes.example = {
+ sshOpts = [ "-p" "2221" ];
+ hostname = "localhost";
+ fastConnection = true;
+ profiles = {
+ system = {
+ sshUser = "admin";
+ path =
+ setActivate self.nixosConfigurations.example-nixos-system.config.system.build.toplevel "./bin/switch-to-configuration switch";
+ user = "root";
+ };
+ hello = {
+ sshUser = "hello";
+ path = setActivate self.defaultPackage.x86_64-linux "./bin/activate";
+ user = "hello";
+ };
};
};
- };
- checks = builtins.mapAttrs (_: pkgs: {
- jsonschema = pkgs.runCommandNoCC "jsonschema-deploy-system" { }
- "${pkgs.python3.pkgs.jsonschema}/bin/jsonschema -i ${
+ checks = builtins.mapAttrs
+ (_: pkgs: {
+ jsonschema = pkgs.runCommandNoCC "jsonschema-deploy-system" { }
+ "${pkgs.python3.pkgs.jsonschema}/bin/jsonschema -i ${
pkgs.writeText "deploy.json" (builtins.toJSON self.deploy)
} ${../../interface/deploy.json} && touch $out";
- }) nixpkgs.legacyPackages;
- };
+ })
+ nixpkgs.legacyPackages;
+ };
}