Skip to content

Flake Inputs ​

La sección inputs en flake.nix es un conjunto de atributos usado para especificar las dependencias del flake actual. Hay varios tipos de entradas, como muestran los ejemplos de abajo:

Consulta la documentación oficial para más detalles - Flakes Inputs - Nix Manual.

nix
{
  inputs = {
    # Repositorio de GitHub como fuente de datos, especificando la rama master.
    # Este es el formato de entrada más común.
    nixpkgs.url = "github:Mic92/nixpkgs/master";
    # URL Git, applicable a cualquier repositorio Git que use el protocolo https/ssh.
    git-example.url = "git+https://git.somehost.tld/user/path?ref=branch";
    # URL Git por etiqueta, applicable a cualquier repositorio Git que use el protocolo https/ssh.
    git-example-tag.url = "git+https://git.somehost.tld/user/path?tag=x.y.x";
    # URL de GitHub por pull request.
    git-pr.url = "github:NixOS/nixpkgs/pull/349351/head";
    # URL Git con submódulos, applicable a cualquier repositorio Git que use el protocolo https/ssh.
    git-example-submodule.url = "git+https://git.somehost.tld/user/path?submodules=1";
    # URL de archivo comprimido, necesaria si tu entrada usa LFS.
    # La entrada Git normal no soporta LFS antes de nix 2.27
    git-example-lfs.url = "https://codeberg.org/solver-orgz/treedome/archive/master.tar.gz";
    # A partir de nix 2.27, puedes usar una URL como la siguiente para habilitar git LFS en una entrada del flake
    treedome.url = "git+https://codeberg.org/solver-orgz/treedome?ref=master&lfs=1";
    # Similar a obtener un repositorio Git, pero usando el protocolo ssh
    # con autenticación por clave. También usa el parámetro shallow=1
    # para evitar copiar el directorio .git.
    ssh-git-example.url = "git+ssh://git@github.com/ryan4yin/nix-secrets.git?shallow=1";
    # También es posible depender directamente de un repositorio Git local.
    git-directory-example.url = "git+file:///path/to/repo?shallow=1";
    # Usando el parámetro `dir` para especificar un subdirectorio.
    nixpkgs.url = "github:foo/bar?dir=shu";
    # Carpeta local (si usas una ruta absoluta, el prefijo 'path:' se puede omitir).
    directory-example.url = "path:/path/to/repo";

    # Si la fuente de datos no es un flake, establece flake=false.
    # `flake=false` suele usarse para incluir código fuente adicional,
    #   archivos de configuración, etc.
    # En código Nix, puedes referenciar directamente archivos dentro
    #   de él usando la notación "${inputs.bar}/xxx/xxx".
    # Por ejemplo, importa "${inputs.bar}/xxx/xxx.nix" para importar un archivo nix específico,
    # o usa "${inputs.bar}/xx/xx" como parámetro de ruta para ciertas opciones.
    bar = {
      url = "github:foo/bar/branch";
      flake = false;
    };

    sops-nix = {
      url = "github:Mic92/sops-nix";
      # `follows` es la sintaxis de herencia dentro de inputs.
      # Aquí asegura que `inputs.nixpkgs` de sops-nix coincida con
      # `inputs.nixpkgs` del flake actual,
      # evitando inconsistencies en la versión de nixpkgs de la dependencia.
      inputs.nixpkgs.follows = "nixpkgs";
    };

    # Bloquea el flake a un commit específico.
    nix-doom-emacs = {
      url = "github:vlaci/nix-doom-emacs?rev=238b18d7b2c8239f676358634bfb32693d3706f3";
      flake = false;
    };
  };

  outputs = { self, ... }@inputs: { ... };
}

Referencias ​