From 07d478036cefb8e8cd168fd619e05f9cfdb4c361 Mon Sep 17 00:00:00 2001 From: Jake Hamilton Date: Wed, 28 Dec 2022 23:18:18 -0800 Subject: [PATCH] feat: add inputs to callPackage --- README.md | 31 ++++++++++++++++++++++++++----- lib/package/default.nix | 1 + lib/shell/default.nix | 2 ++ lib/system/default.nix | 10 +++++++++- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 80a7e65..66c6a76 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ cd config 2. Create a new flake with one of the templates from [@snowfallorg/templates](https://github.com/snowfallorg/templates). | Name | Description | -|-----------|---------------------------------------------------| +| --------- | ------------------------------------------------- | | `system` | A NixOS system and modules ready to modify. | | `package` | A Nix Flake that exports packages and an overlay. | | `module` | A Nix Flake that exports NixOS modules. | @@ -114,7 +114,7 @@ inputs.snowfall-lib.mkFlake { }; ``` -See [`lib.mkFlake`](#lib.mkflake) for information on how to configure your flake's outputs. +See [`lib.mkFlake`](#libmkflake) for information on how to configure your flake's outputs. ## `lib` @@ -150,7 +150,7 @@ Snowfall Lib has opinions about how a flake's files are laid out. This lets the structure that `lib` expects to find at the root of your flake. ``` -flake-root/ +flake-root/ │ │ Your Nix flake. ├─ flake.nix @@ -161,7 +161,7 @@ flake-root/ │ │ A Nix function called with `inputs`, `snowfall-inputs`, and `lib`. │ │ The function should return an attribute set to merge with `lib`. │ ├─ default.nix -│ │ +│ │ │ │ Any (nestable) directory name. │ └─ **/ │ │ @@ -701,8 +701,11 @@ Result: File system utilities. #### `lib.snowfall.fs.is-file-kind` + #### `lib.snowfall.fs.is-symlink-kind` + #### `lib.snowfall.fs.is-directory-kind` + #### `lib.snowfall.fs.is-unknown-kind` Matchers for file kinds. These are often used with `readDir`. @@ -1066,6 +1069,24 @@ Result: false ``` +#### `lib.snowfall.system.is-virtual` + +Check whether a named system is virtual. + +Type: `String -> Bool` + +Usage: + +```nix +is-linux "x86_64-iso" +``` + +Result: + +```nix +true +``` + #### `lib.snowfall.system.get-virtual-system-type` Get the virtual system type of a system target. @@ -1175,7 +1196,7 @@ Result: ``` #### `lib.snowfall.system.create-systems` - + Create all available systems. Type: `Attrs -> Attrs` diff --git a/lib/package/default.nix b/lib/package/default.nix index 0103103..5031050 100644 --- a/lib/package/default.nix +++ b/lib/package/default.nix @@ -27,6 +27,7 @@ in drv = pkgs.callPackage package { inherit channels; lib = snowfall-lib.internal.system-lib; + inputs = snowfall-lib.flake.without-src user-inputs; }; }; packages-metadata = builtins.map create-package-metadata user-packages; diff --git a/lib/shell/default.nix b/lib/shell/default.nix index bbf37b1..a99dac4 100644 --- a/lib/shell/default.nix +++ b/lib/shell/default.nix @@ -25,7 +25,9 @@ in { name = builtins.unsafeDiscardStringContext (snowfall-lib.path.get-parent-directory shell); drv = channels.nixpkgs.callPackage shell { + inherit channels; lib = snowfall-lib.internal.system-lib; + inputs = snowfall-lib.flake.without-src user-inputs; }; }; shells-metadata = builtins.map create-shell-metadata user-shells; diff --git a/lib/system/default.nix b/lib/system/default.nix index f4a356d..edb2f26 100644 --- a/lib/system/default.nix +++ b/lib/system/default.nix @@ -32,6 +32,13 @@ in # result: false is-linux = hasInfix "linux"; + # Check whether a named system is virtual. + # Type: String -> Bool + # Usage: is-virtual "x86_64-iso" + # result: true + is-virtual = target: + (get-virtual-system-type target) != ""; + # Get the virtual system type of a system target. # Type: String -> String # Usage: get-virtual-system-type "x86_64-iso" @@ -161,8 +168,9 @@ in modules = [ path ] ++ modules; specialArgs = specialArgs // { - inherit system name systems lib; + inherit target system name systems lib; + virtual = (get-virtual-system-type target) != ""; inputs = snowfall-lib.flake.without-src user-inputs; }; };