# nixos-flake-example This shows how to build the same config, with and without flakes. It also shows that `flake.nix` is basically just some syntax. You can run `./check.sh` to show that this builds the same system config with/without flakes. ## flake fundamentals Nix is in flakes mode when: 1. `nixos-rebuild --flake '.#'` is used 2. `nix build '.#something'` the hash-tag syntax is used **This automatically loads from a `flake.nix` in the specified dir. See these examples:** These three examples, for me, are all the same source, but accessed in different ways: * `nix build '.#nixosConfigurations.mysystem'` (loads `flake.nix` from `.` (current dir)) * `nix build '/home/cole/code/nixos-flake-example#nixosConfigurations.mysystem'` (loads `flake.nix` from `/home/cole/code/nixos-flake-example`) * `nix build 'github.com:colemickens/nixos-flake-example#nixosConfigurations.mysystem'` (nix will clone my github repo, then load `flake.nix` from `flake.nix` in the root of that repo checkout) ## more tips 1. `nixos-rebuild build --flake '.#'` will automatically try to find and build the attribute: `.#nixosConfigurations.your_hostname` (assuming your machines hostname is `your_hostname`) ## overview The `./check.sh` script proves they give the same exact system toplevel outputs: ```console cole@slynux ~/code/nixos-flake-example master* 7s ❯ ./check.sh :: Updating the 'nixpkgs' input in flake.nix + nix flake update --update-input nixpkgs + set +x :: Using 'nixos-rebuild' to build the 'mysystem' toplevel + nixos-rebuild build --flake .#mysystem warning: Git tree '/home/cole/code/nixos-flake-example' is dirty building the system configuration... warning: Git tree '/home/cole/code/nixos-flake-example' is dirty + set +x :: Using rev=007126eef72271480cb7670e19e501a1ad2c1ff2 for (extracted from flake.nix) :: Setting NIX_PATH to the same values flakes is using + NIX_PATH=nixpkgs=https://github.com/nixos/nixpkgs/archive/007126eef72271480cb7670e19e501a1ad2c1ff2.tar.gz:nixos-config=/home/cole/code/nixos-flake-example/configuration.nix + nix-build '' -A config.system.build.toplevel /nix/store/gg1jhmzqndqa0rfnwfdbnzrn8f74ckr6-nixos-system-mysystem-21.03pre-git + set +x flake: /nix/store/gg1jhmzqndqa0rfnwfdbnzrn8f74ckr6-nixos-system-mysystem-21.03pre-git clssc: /nix/store/gg1jhmzqndqa0rfnwfdbnzrn8f74ckr6-nixos-system-mysystem-21.03pre-git ```