From 506e810b9f753bc409836a1395826506e2430219 Mon Sep 17 00:00:00 2001 From: Timothy DeHerrera Date: Fri, 10 Jan 2020 00:10:59 -0700 Subject: [PATCH 1/2] flake: initial NUR support --- configuration.nix | 11 +++++++++-- flake.lock | 13 +++++++++++++ flake.nix | 3 ++- hosts/default.nix | 4 +++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/configuration.nix b/configuration.nix index 506b000..d7f2e28 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,7 +1,7 @@ # this file is an impure recreation of the flake profile currently deployed # based on the systems hostname. The purpose is so tools which do not yet have # flake support (e.g `nixos-option`), can work as expected. -{ lib, ... }: +{ lib, pkgs, ... }: let inherit (builtins) attrNames readDir; @@ -30,5 +30,12 @@ in { nixpkgs.overlays = let overlays = map (name: import (./overlays + "/${name}")) (attrNames (readDir ./overlays)); - in overlays; + in overlays ++ [ + (final: prev: { + nur = import (builtins.fetchTarball + "https://github.com/nix-community/NUR/archive/master.tar.gz") { + inherit pkgs; + }; + }) + ]; } diff --git a/flake.lock b/flake.lock index 370e14a..9157fa1 100644 --- a/flake.lock +++ b/flake.lock @@ -18,6 +18,19 @@ "narHash": "sha256-4p9gqMJTVmyH7eSq1euGZWusldWoBfKfi/VwZEPL2Mw=", "originalUrl": "github:nrdxp/nixpkgs/fork", "url": "github:nrdxp/nixpkgs/1e232452ed4c57e9968f4342d9ba044d36403928" + }, + "nur": { + "inputs": { + "nixpkgs": { + "inputs": {}, + "narHash": "sha256-4p9gqMJTVmyH7eSq1euGZWusldWoBfKfi/VwZEPL2Mw=", + "originalUrl": "nixpkgs", + "url": "github:nrdxp/nixpkgs/1e232452ed4c57e9968f4342d9ba044d36403928" + } + }, + "narHash": "sha256-i+NZZWnhNcxl73e2FjfgKUn3sW42ZKiVeXNKv72MN14=", + "originalUrl": "github:nrdxp/NUR/flake", + "url": "github:nrdxp/NUR/c632e4112b19a1b2fa05242a8cc971091d12e154" } }, "version": 3 diff --git a/flake.nix b/flake.nix index 479f52d..331bc18 100644 --- a/flake.nix +++ b/flake.nix @@ -5,8 +5,9 @@ inputs.nixpkgs.url = "github:nrdxp/nixpkgs/fork"; inputs.home.url = "github:nrdxp/home-manager/flakes"; + inputs.nur.url = "github:nrdxp/NUR/flake"; - outputs = args@{ self, home, nixpkgs }: + outputs = args@{ self, home, nixpkgs, nur }: let inherit (builtins) listToAttrs baseNameOf attrNames readDir; inherit (nixpkgs.lib) removeSuffix; diff --git a/hosts/default.nix b/hosts/default.nix index 0ecedae..33e64e7 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -11,6 +11,8 @@ let system = "x86_64-linux"; specialArgs.usr = utils; + specialArgs.nurModules = args.nur.nixosModules; + specialArgs.nurOverlays = args.nur.overlays; modules = let core = ../profiles/core.nix; @@ -24,7 +26,7 @@ let ]; system.configurationRevision = self.rev; - nixpkgs.overlays = self.overlays; + nixpkgs.overlays = self.overlays ++ [ args.nur.overlay ]; }; local = import "${toString ./.}/${this}.nix"; From db5bc5f57cf8f059003fed960315c138c065c414 Mon Sep 17 00:00:00 2001 From: Timothy DeHerrera Date: Fri, 10 Jan 2020 00:38:59 -0700 Subject: [PATCH 2/2] README.md: add NUR usage --- README.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f7ff5fd..3ef53a7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # Introduction A NixOS configuration template using the experimental [flakes][rfc] mechanism. Its aim is to provide a generic repository which neatly separates concerns -and allows one to get up and running with NixOS faster than ever. +and allows one to get up and running with NixOS faster than ever. In addition, +conveniences like [home-manager][home-manager] and [NUR][nur] are wired in by +default to help make life easier. Flakes are still an experimental feature, but once they finally get merged even more will become possible, i.e. [nixops](https://nixos.org/nixops) @@ -35,7 +37,6 @@ nixos-generate-config --show-hardware-config > ./hosts/${new_host}.nix # any ./profiles you may wish to try out. $EDITOR ./hosts/${new_host}.nix - # backup existing config and ensure configuration lives in expected location mv /etc/nixos /etc/nixos.old ln -s $PWD /etc/nixos @@ -95,6 +96,26 @@ this flake exports multiple outputs for use in other flakes: ``` +### NUR usage + +You can use packages, modules and overlays from the +[Nix User Repository][nur]. + +For modules and overlays, you can pull them in via the new top-level arguements +`nurModules` and `nurOverlays`, respectively: + +```nix +{ nurModules, nurOverlays, pkgs, ... }: +{ + # ... + imports = [ nurModules."${nur-username}.modules.${aModule}" ]; + nixpkgs.overlays = [ nurOverlays."${nur-username}".overlays."${anOverlay}" ]; +} +``` + +Packages are installable the same way as without flakes via +`pkgs.nur."${nur-username}"."${aPackage}"`. + # Structure The structure is here to keep things simple and clean. Anything sufficiently @@ -206,6 +227,7 @@ licenses of the respective packages. [direnv]: https://direnv.net [home-manager]: https://github.com/rycee/home-manager [NixOS]: https://nixos.org +[nur]: https://github.com/nix-community/NUR [old]: https://github.com/nrdxp/nixos [pr]: https://github.com/NixOS/nixpkgs/pull/68897 [rfc]: https://github.com/tweag/rfcs/blob/flakes/rfcs/0049-flakes.md