home-manager/tests/stubs.nix
Naïm Favier e753d659c6
[23.05] backport #4066 (#4083)
* tests: `--show-trace` in CI (#4070)

(cherry picked from commit f889ec0ec3)

* tests/stubs: inherit default versions from pkgs (#4069)

* tests/stubs: inherit default versions from pkgs

* tests/browserpass: temporarily disable on darwin

The package currently fails to evaluate on darwin due to a nixpkgs
problem: https://github.com/NixOS/nixpkgs/pull/236258#issuecomment-1583450593

(cherry picked from commit 69bdd6de50)

* Espanso: Fix broken module to be compatible with Espanso version 2.x (#4066)

* Fix espanso module to work with 2.x version

* espanso: fix espanso module

This module is currently broken. It does not create `config` and `match` folders which are required by espanso 2.x version.

This PR fixed this issue and support creating multiple files under `config` and
`match` folder.

* Espanso: fix espanso module

This module is currently broken. It does not create `config` and `match` folders which are required by espanso 2.x version.

This PR fixed this issue and support creating multiple files under `config` and `match` folder.

Add descriptions

* Add versionAtLeast and mkRemovedOptionModule

* Correct maintainers list

* remove config key from example

* format basic-configuration.nix

* Update modules/services/espanso.nix

Co-authored-by: Naïm Favier <n@monade.li>

* fix maintainers list

---------

Co-authored-by: Naïm Favier <n@monade.li>
(cherry picked from commit 1e5d741ea3)

---------

Co-authored-by: Li Yang <71299093+liyangau@users.noreply.github.com>
2023-06-12 17:05:45 +02:00

68 lines
1.7 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let
stubType = types.submodule ({ name, ... }: {
options = {
name = mkOption {
type = types.str;
default = "dummy";
description = "The stub package name.";
};
outPath = mkOption {
type = types.nullOr types.str;
default = "@${name}@";
defaultText = literalExpression ''"@''${name}@"'';
};
version = mkOption {
type = types.nullOr types.str;
default = null;
defaultText = literalExpression "pkgs.\${name}.version or null";
};
buildScript = mkOption {
type = types.str;
default = defaultBuildScript;
};
};
});
defaultBuildScript = "mkdir $out";
dummyPackage = pkgs.runCommandLocal "dummy" { } defaultBuildScript;
mkStubPackage = { name ? "dummy", outPath ? null, version ? null
, buildScript ? defaultBuildScript }:
let
pkg = if name == "dummy" && buildScript == defaultBuildScript then
dummyPackage
else
pkgs.runCommandLocal name { pname = name; } buildScript;
in pkg // optionalAttrs (outPath != null) { inherit outPath; }
// optionalAttrs (version != null) { inherit version; };
in {
options.test.stubs = mkOption {
type = types.attrsOf stubType;
default = { };
description =
"Package attributes that should be replaced by a stub package.";
};
config = {
lib.test.mkStubPackage = mkStubPackage;
nixpkgs.overlays = mkIf (config.test.stubs != { }) [
(self: super:
mapAttrs (n: v:
mkStubPackage (v // optionalAttrs (v.version == null) {
version = super.${n}.version or null;
})) config.test.stubs)
];
};
}