From f447ee13edf747b74e772120add724becb6b434f Mon Sep 17 00:00:00 2001 From: traxys Date: Sat, 6 Jan 2024 12:23:06 +0100 Subject: [PATCH] tests: Add a test for the home-manager module --- .github/workflows/check.yml | 1 + statix.toml | 2 ++ tests/modules/check.sh | 30 ++++++++++++++++++++ tests/modules/home-manager/.gitignore | 1 + tests/modules/home-manager/flake.nix | 41 +++++++++++++++++++++++++++ tests/modules/home-manager/home.nix | 13 +++++++++ 6 files changed, 88 insertions(+) create mode 100755 tests/modules/check.sh create mode 100644 tests/modules/home-manager/.gitignore create mode 100644 tests/modules/home-manager/flake.nix create mode 100644 tests/modules/home-manager/home.nix diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 1e1d4cfaae..462b551e07 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -22,3 +22,4 @@ jobs: - run: nix flake check --all-systems --builders "" - run: nix flake check --all-systems --builders "" ./templates/_wrapper/simple --no-write-lock-file - run: nix build .#docs --show-trace --builders "" + - run: ./tests/modules/check.sh diff --git a/statix.toml b/statix.toml index a7290782e6..e0c049b306 100644 --- a/statix.toml +++ b/statix.toml @@ -1 +1,3 @@ ignore = ["plugins/lsp/language-servers/rust-analyzer-config.nix"] +# Frequent in nix module configurations +disabled = ["repeated_keys"] diff --git a/tests/modules/check.sh b/tests/modules/check.sh new file mode 100755 index 0000000000..22b15e71be --- /dev/null +++ b/tests/modules/check.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env -S nix run 'github:clhodapp/nix-runner/7b56158f7ab9fd7806068c6571833210e063df19' -- +#!package nixpkgs#bash +#!package nixpkgs#home-manager +#!command bash + +self=$(realpath "$(dirname "$0")") + +systems=( + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" +) + +failures=() + +ok=true + +echo "=== HOME MANAGER ===" +for system in "${systems[@]}"; do + if ! home-manager --no-write-lock-file build --flake ${self}/home-manager#nixvim-${system}; then + failures+=("home-manager-${system}") + ok=false + fi +done + +if [[ $ok = false ]]; then + echo -e "\nFAILURES: ${failures[@]}" + exit 1 +fi diff --git a/tests/modules/home-manager/.gitignore b/tests/modules/home-manager/.gitignore new file mode 100644 index 0000000000..234b15ee73 --- /dev/null +++ b/tests/modules/home-manager/.gitignore @@ -0,0 +1 @@ +/flake.lock diff --git a/tests/modules/home-manager/flake.nix b/tests/modules/home-manager/flake.nix new file mode 100644 index 0000000000..26ffec28a0 --- /dev/null +++ b/tests/modules/home-manager/flake.nix @@ -0,0 +1,41 @@ +{ + description = "Nixvim Home Manager module"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nixvim.url = "path:../../../"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { + nixpkgs, + home-manager, + nixvim, + ... + }: let + systems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + in { + homeConfigurations = builtins.listToAttrs ( + builtins.map (system: { + name = "nixvim-${system}"; + value = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + + modules = [ + ./home.nix + nixvim.homeManagerModules.nixvim + ]; + }; + }) + systems + ); + }; +} diff --git a/tests/modules/home-manager/home.nix b/tests/modules/home-manager/home.nix new file mode 100644 index 0000000000..3a2cfc517e --- /dev/null +++ b/tests/modules/home-manager/home.nix @@ -0,0 +1,13 @@ +{ + home.username = "nixvim"; + home.homeDirectory = "/invalid/dir"; + + home.stateVersion = "23.05"; # Please read the comment before changing. + + programs.nixvim = { + enable = true; + }; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; +}