commit 82a55e6732500efd69fd65a95a8139fdfbc76832 Author: Cole Mickens Date: Sat Oct 24 20:55:15 2020 -0700 initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..42889af --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# 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. + +## overview + +Note that these produce the same output: + +1. with flakes: + + ```shell + nix build '.#nixosConfigurations.mysystem.config.system.build.toplevel' + readlink -f result + /nix/store/0imi716z1qd04pfh4zdw6mb0gnxmakjs-nixos-system-nixos-21.03.20201020.007126e + + nixos-rebuild build --flake '.#mysystem' + readlink -f result + /nix/store/0imi716z1qd04pfh4zdw6mb0gnxmakjs-nixos-system-nixos-21.03.20201020.007126e + ``` + + Note, nixos-rebuild is basically just some magic to build the right derivation + and then set it as a system profile, and activate it. + +2. without flakes: + + ```shell + export NIX_PATH=nixos-config=$(pwd)/configuration.nix:nixpkgs=https://github.com/nixos/nixpkgs/archive/nixos-unstable.tar.gz + + + /nix/store/zidq625i13hvbbs8alkklj8k6a191xix-nixos-system-nixos-21.03pre-git + ``` + + **Note**, ~~same path~~ same inner system, just much slower due to no eval cache. + (they should be identical, but the flake version suffix is slightly different) + +They build the same thing, the flake.nix just moves the redirection from the NixOS channel system +into the flake instead. + +Note, if you come back and run this later, you may need to tell nix to update the `nixpkgs` that it +has pinned in `flake.lock` by running `nix flake update --update-input nixpkgs`. The non-flake example +is going to re-download the nixos-unstable build when the cache expires. This could cause any hash differences +if they're on different revs. (again, another reason to have control of it via flakes, and can lock it directly in the source.) + diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..1a6dce6 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,21 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, lib, modulesPath, ... }: + +{ + + imports = [ + ./hardware-configuration.nix + "${modulesPath}/installer/scan/not-detected.nix" + + # list other modules here + ]; + + services.sshd.enable = true; + + # etc + +} + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..e302a0b --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1603153815, + "narHash": "sha256-uCav0CJ0Zm0vbqJiS9NUYD4XZg4Ww9bbsFzcDUzh2+U=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "007126eef72271480cb7670e19e501a1ad2c1ff2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..1d4ee46 --- /dev/null +++ b/flake.nix @@ -0,0 +1,17 @@ +{ + description = "An example NixOS configuration"; + + inputs.nixpkgs = { url = "github:nixos/nixpkgs/nixos-unstable"; }; + + outputs = { self, nixpkgs }: { + nixosConfigurations = { + mysystem = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + (import ./configuration.nix) + ]; + }; + }; + }; +} + diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..b070f95 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,6 @@ +{ ... }: + +{ + boot.loader.systemd-boot.enable = true; # (for UEFI systems only) + fileSystems."/".device = "/dev/disk/by-label/nixos"; +}