summaryrefslogtreecommitdiff
path: root/3 Resources/Nix/Flake.md
diff options
context:
space:
mode:
Diffstat (limited to '3 Resources/Nix/Flake.md')
-rw-r--r--3 Resources/Nix/Flake.md62
1 files changed, 62 insertions, 0 deletions
diff --git a/3 Resources/Nix/Flake.md b/3 Resources/Nix/Flake.md
index 754556f..d191989 100644
--- a/3 Resources/Nix/Flake.md
+++ b/3 Resources/Nix/Flake.md
@@ -18,5 +18,67 @@ In flakes dependencies have to be specified explicitly and MUST be locked to spe
Output of a Flake is an arbitrary [[Zettelkast/Index/Nix]] value such as a package, [[NixOS]] module or library function.
Commands `nix build` and `nix shell` will build the output `packages.<system>.default` unless we specify another output, for example: `nix shell .#checks.aarch64-linux.build`.
+
+**Inputs**
+```
+{
+ inputs = {
+ # GitHub repository as the data source, specifying the master branch.
+ # This is the most common input format.
+ nixpkgs.url = "github:Mic92/nixpkgs/master";
+ # Git URL, applicable to any Git repository using the https/ssh protocol.
+ git-example.url = "git+https://git.somehost.tld/user/path?ref=branch";
+ # Git URL by tag, applicable to any Git repository using the https/ssh protocol.
+ git-example-tag.url = "git+https://git.somehost.tld/user/path?tag=x.y.x";
+ # Github URL by pull request.
+ git-pr.url = "github:NixOS/nixpkgs?ref=pull/349351/head";
+ # Git URL with submodules, applicable to any Git repository using the https/ssh protocol.
+ git-example-submodule.url = "git+https://git.somehost.tld/user/path?submodules=1";
+ # Archive File URL, needed in case your input use LFS.
+ # Regular git input doesn't support LFS yet.
+ git-example-lfs.url = "https://codeberg.org/solver-orgz/treedome/archive/master.tar.gz";
+ # Similar to fetching a Git repository, but using the ssh protocol
+ # with key authentication. Also uses the shallow=1 parameter
+ # to avoid copying the .git directory.
+ ssh-git-example.url = "git+ssh://git@github.com/ryan4yin/nix-secrets.git?shallow=1";
+ # It's also possible to directly depend on a local Git repository.
+ git-directory-example.url = "git+file:/path/to/repo?shallow=1";
+ # Using the `dir` parameter to specify a subdirectory.
+ nixpkgs.url = "github:foo/bar?dir=shu";
+ # Local folder (if using an absolute path, the 'path:' prefix can be omitted).
+ directory-example.url = "path:/path/to/repo";
+
+ # If the data source is not a flake, set flake=false.
+ # `flake=false` is usually used to include additional source code,
+ # configuration files, etc.
+ # In Nix code, you can directly reference files within
+ # it using "${inputs.bar}/xxx/xxx" notation.
+ # For example, import "${inputs.bar}/xxx/xxx.nix" to import a specific nix file,
+ # or use "${inputs.bar}/xx/xx" as a path parameter for certain options.
+ bar = {
+ url = "github:foo/bar/branch";
+ flake = false;
+ };
+
+ sops-nix = {
+ url = "github:Mic92/sops-nix";
+ # `follows` is the inheritance syntax within inputs.
+ # Here, it ensures that sops-nix's `inputs.nixpkgs` aligns with
+ # the current flake's inputs.nixpkgs,
+ # avoiding inconsistencies in the dependency's nixpkgs version.
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ # Lock the flake to a specific commit.
+ nix-doom-emacs = {
+ url = "github:vlaci/nix-doom-emacs?rev=238b18d7b2c8239f676358634bfb32693d3706f3";
+ flake = false;
+ };
+ };
+
+ outputs = { self, ... }@inputs: { ... };
+}
+```
+
---
[Flakes Wiki](https://nixos.wiki/wiki/Flakes) \ No newline at end of file