e6fa37167f
I might not necessary be fan of this particular style, but automatic formatter is better than personal preferences. * config/flake/default.nix (func_name): * config/flake/nixos/configuration.nix (func_name): * config/flake/nixos/hardware-configuration.nix (func_name): * config/flake/universe/Documentation/default.nix (func_name): * config/flake/universe/Documentation/doc-m4.nix (func_name): * config/flake/universe/Documentation/doc-posix.nix (func_name): * config/flake/universe/Documentation/doc-terraform-aws.nix (func_name): * config/flake/universe/Documentation/doc-terraform.nix (func_name): * config/flake/universe/attach-shell/default.nix (func_name): * config/flake/universe/blurdate/default.nix (func_name): * config/flake/universe/default.nix (func_name): * config/flake/universe/dvtm/default.nix (func_name): * config/flake/universe/fasm-arch/default.nix (func_name): * config/flake/universe/firewall/default.nix (func_name): * config/flake/universe/git-merge-pr/default.nix (func_name): * config/flake/universe/git-recall/default.nix (func_name): * config/flake/universe/gmisub2atom/default.nix (func_name): * config/flake/universe/htop/default.nix (func_name): * config/flake/universe/mk-runscript/default.nix (func_name): * config/flake/universe/mutt/default.nix (func_name): * config/flake/universe/nix/default.nix (func_name): * config/flake/universe/nixfmt/default.nix (func_name): * config/flake/universe/psql/default.nix (func_name): * config/flake/universe/python3/default.nix (func_name): * config/flake/universe/rewrite-paths/default.nix (func_name): * config/flake/universe/scripts/default.nix (func_name): * config/flake/universe/selectors/default.nix (func_name): * config/flake/universe/srht-ui/default.nix (func_name): * config/flake/universe/surfraw/default.nix (func_name): * config/flake/universe/tempfile/default.nix (func_name): * config/flake/universe/w3m/default.nix (func_name): * default.nix (func_name): * prog/build.nix (func_name): * prog/lang-c/ask/shell.nix (func_name): * prog/lang-c/lodestar/shell.nix (func_name): * prog/lang-c/semantic-nl/default.nix (func_name): * prog/lang-dhall/dhall-json-schema/flake.nix (func_name): * prog/lang-dhall/dhall-openapi/flake.nix (func_name): * prog/lang-dhall/flake-dhall/build/default.nix (func_name): * prog/lang-dhall/flake-dhall/flake.nix (func_name): * prog/lang-dhall/flake-dhall/maint/release.nix (func_name): * prog/lang-dhall/flake-dhall/packages/Prelude/default.nix (func_name): * prog/lang-dhall/flake-dhall/packages/bhat/default.nix (func_name): * prog/lang-dhall/flake-dhall/packages/dada/default.nix (func_name): * prog/lang-dhall/flake-dhall/t/use-prelude/default.nix (func_name): * prog/lang-elisp/nix-environment/default.nix (func_name): * prog/lang-execline/srht-ui/default.nix (func_name): * prog/lang-execline/srht-ui/package.nix (func_name): * prog/lang-fasm/iloj/shell.nix (func_name): * prog/lang-haskell/bootstrap.v3/default.nix (func_name): * prog/lang-haskell/build-support/browse-documentation/default.nix (func_name): * prog/lang-haskell/build.nix (func_name): * prog/lang-haskell/faro/default.nix (func_name): * prog/lang-haskell/gdbm/default.nix (func_name): * prog/lang-haskell/hackage-git/checkout/hackage/default.nix (func_name): * prog/lang-haskell/linux-capabilities/default.nix (func_name): * prog/lang-haskell/mk-passwd/default.nix (func_name): * prog/lang-haskell/mk-passwd/flake.nix (func_name): * prog/lang-haskell/regions/regions.nix (func_name): * prog/lang-haskell/servant/default.nix (func_name): * prog/lang-haskell/servant/ghcjs.nix (func_name): * prog/lang-haskell/servant/nix/shell.nix (func_name): * prog/lang-nix/nix-freeze-derivation/default.nix (func_name): * prog/lang-nix/nix-freeze-derivation/test.nix (func_name): * prog/lang-shell/default.nix (func_name): * prog/lang-shell/savepage/default.nix (func_name): * prog/lang-shell/savepage/savepage.nix (func_name): * prog/lang-tex/a5/default.nix (func_name): * prog/lang-zig/libdyn/default.nix (func_name): * prog/lang-zig/shell.nix (func_name): |
||
---|---|---|
.. | ||
README.md | ||
default.nix | ||
test.nix |
README.md
nix-freeze-derivation
This project provides Nix function that makes derivation, with every
file in input derivation replaced with symlink to single file in Nix
storage. For example, let's freeze derivation for nnn
file manager:
let
nixpkgs = import <nixpkgs> { };
nix-freeze-derivation = nixpkgs.fetchgit {
url = "https://git.sr.ht/~kaction/nix-freeze-derivation";
rev = "...";
sha256 = "...";
};
freeze = nixpkgs.callPackage nix-freeze-derivation {};
in {
frozen-nnn = freeze nnn;
inherit nnn;
}
Here is original derivation:
├── bin
│ └── nnn
└── share
├── bash-completion
│ └── completions
│ └── nnn.bash
├── fish
│ └── vendor_completions.d
│ └── nnn.fish
├── man
│ └── man1
│ └── nnn.1.gz
└── zsh
└── site-functions
└── _nnn
And here is frozen derivation:
├── bin
│ └── nnn -> /nix/store/zshsj2hy2c8fiqh3vw08yq5lq8k4abx9-frozen-file
└── share
├── bash-completion
│ └── completions
│ └── nnn.bash -> /nix/store/8qf7q4j6aizbd6kgfp8dgwchf789v7dl-frozen-file
├── fish
│ └── vendor_completions.d
│ └── nnn.fish -> /nix/store/58rm78igazcsgcik4hwj4d2mkzn5h6sn-frozen-file
├── man
│ └── man1
│ └── nnn.1.gz -> /nix/store/7grf462gxkp1jifyw8gz41v30z8v3442-frozen-file
└── zsh
└── site-functions
└── _nnn -> /nix/store/11k4jkycz9zj7s708m9jw41yyskr7aas-frozen-file
For almost all intentions and purposes frozen derivation is equivalent to original one, but copying it between machines only copies changed files. On other hand, freezing derivation takes some time, especially noticable with derivation that do not involve real compiling. For example, freezing Python package can take as much time as building package itself.
nix-freeze-derivation
was inspired by nix-freeze-tree
[^1], which is
much faster and can freeze arbitrary path, not just derivation.
Unfortunately, nix-freeze-tree
does not work with derivations that has
propagated build inputs[^2], that is why nix-freeze-derivation
was
created.
[^1] https://git.sr.ht/~jack/nix-freeze-tree [^2] https://todo.sr.ht/~jack/nix-freeze-tree/7