With No Flakes
Suppose you have a default.nix that looks like:
let sources = import ./npins;in{ nixosConfigurations.my-laptop = ...; # use sources}First step is adding flake-like input definitions on it,
or in a separate ./flake-file.nix file.
{ flake-file.inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; };}Boostraping using ./flake-file.nix
Section titled “Boostraping using ./flake-file.nix”And now, lets generate ./npins from ./flake-file.nix.
nix-shell https://github.com/vic/flake-file/archive/main.tar.gz \ -A flake-file.sh --run write-npins --arg modules ./flake-file.nixSee also: all bootstrap command args
Run the same command whenever your input changes and they will be reflected into your pins.
Enabling Modular non-flakes.
Section titled “Enabling Modular non-flakes.”Lets make use of Nix Modules in our non-flake.
First, create a ./modules directory and move
our previous default.nix and flake-file.nix on it.
mkdir modulesmv flake-file.nix modules/inputs.nixmv default.nix modules/default.nix { inputs, lib, ... }: let sources = import ./npins; in { imports = [ ./inputs.nix ];
nixosConfigurations.my-laptop = ...; # use sources nixosConfigurations.my-laptop = ...; # use inputs }Now create a new defualt.nix as follows:
let sources = import ./npins; nixpkgs = import sources.nixpkgs { }; outputs = (nixpkgs.lib.evalModules { modules = ./modules; specialArgs = { inputs = sources; # (A) NOTE: Not flake-like inputs. }; }).config;inoutputsTo update npins from inputs at ./modules do:
nix-shell https://github.com/vic/flake-file/archive/main.tar.gz \ -A flake-file.sh --run write-npins --arg modules ./modules(A) flake-like inputs
Section titled “(A) flake-like inputs”If you wish to have flake-like resolved inputs to use flakes from non-flake world, take a look at with-inputs.nix used by templates/npins