From 50743bd1178c1afc426ee914686d1437eec8c9d2 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Wed, 3 May 2023 17:25:54 -0600 Subject: [PATCH] Add darwin tests for home-manager module --- flake.nix | 58 +++++++++++++++++++++++----------- test/integration_hm_darwin.nix | 33 +++++++++++++++++++ 2 files changed, 73 insertions(+), 18 deletions(-) create mode 100644 test/integration_hm_darwin.nix diff --git a/flake.nix b/flake.nix index 2df057b..13d863f 100644 --- a/flake.nix +++ b/flake.nix @@ -57,24 +57,46 @@ packages.x86_64-linux.agenix = agenix "x86_64-linux"; packages.x86_64-linux.default = self.packages.x86_64-linux.agenix; packages.x86_64-linux.doc = doc "x86_64-linux"; - checks.x86_64-linux.integration = import ./test/integration.nix { - inherit nixpkgs home-manager; - pkgs = nixpkgs.legacyPackages.x86_64-linux; - system = "x86_64-linux"; - }; - checks."aarch64-darwin".integration = - (darwin.lib.darwinSystem { - system = "aarch64-darwin"; - modules = [./test/integration_darwin.nix "${darwin.outPath}/pkgs/darwin-installer/installer.nix"]; - }) - .system; - checks."x86_64-darwin".integration = - (darwin.lib.darwinSystem { - system = "x86_64-darwin"; - modules = [./test/integration_darwin.nix "${darwin.outPath}/pkgs/darwin-installer/installer.nix"]; - }) - .system; - darwinConfigurations.integration.system = self.checks."x86_64-darwin".integration; + checks = + nixpkgs.lib.genAttrs ["aarch64-darwin" "x86_64-darwin"] (system: { + integration = + (darwin.lib.darwinSystem { + inherit system; + modules = [ + ./test/integration_darwin.nix + "${darwin.outPath}/pkgs/darwin-installer/installer.nix" + home-manager.darwinModules.home-manager + { + home-manager = { + verbose = true; + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "hmbak"; + users.runner = ./test/integration_hm_darwin.nix; + }; + } + ]; + }) + .system; + }) + // { + x86_64-linux.integration = import ./test/integration.nix { + inherit nixpkgs home-manager; + pkgs = nixpkgs.legacyPackages.x86_64-linux; + system = "x86_64-linux"; + }; + }; + + darwinConfigurations.integration-x86_64.system = self.checks.x86_64-darwin.integration; + darwinConfigurations.integration-aarch64.system = self.checks.aarch64-darwin.integration; + + # Work-around for https://github.com/nix-community/home-manager/issues/3075 + legacyPackages = nixpkgs.lib.genAttrs ["aarch64-darwin" "x86_64-darwin"] (system: { + homeConfigurations.integration-darwin = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + modules = [./test/integration_hm_darwin.nix]; + }; + }); }; } diff --git a/test/integration_hm_darwin.nix b/test/integration_hm_darwin.nix new file mode 100644 index 0000000..d2e14b2 --- /dev/null +++ b/test/integration_hm_darwin.nix @@ -0,0 +1,33 @@ +{ + pkgs, + config, + options, + lib, + ... +}: { + imports = [../modules/age-home.nix]; + + age = { + identityPaths = options.age.identityPaths.default ++ ["/Users/user1/.ssh/this_key_wont_exist"]; + secrets.user-secret.file = ../example/secret2.age; + }; + + home = rec { + username = "runner"; + homeDirectory = lib.mkForce "/Users/${username}"; + stateVersion = lib.trivial.release; + }; + + home.file = let + name = "agenix-home-integration"; + in { + ${name}.source = pkgs.writeShellApplication { + inherit name; + text = let + secret = "world!"; + in '' + diff -q "${config.age.secrets.user-secret.path}" <(printf '${secret}\n') + ''; + }; + }; +}