From 8353554315564b89dfe27d5130080ed04a0a65ad Mon Sep 17 00:00:00 2001 From: Linnnus Date: Sat, 21 Dec 2024 15:47:33 +0100 Subject: Move to a profile-based configuration where common This patch makes it so common configuration is now located in shared/ and each host basically just becomes a bunch of import statements. The exception here is host-specific configuration like the `*.linus.onl` that live inside `hosts/ahmed/`. Specifically I have: - moved common configuration `shared/{nixos,home-manager,nix-darwin}`. - moved `hosts/common.nix` to `shared/nixos/common-{nix,shell}-settings.nix`. - split `hosts/muhammed/{dev-utils,neovim}` into per-language configuration. This patch was done in preparation for the arrival of a new host, which will need to share a lot of configuration with Muhammed. --- shared/nixos/common-nix-settings/default.nix | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 shared/nixos/common-nix-settings/default.nix (limited to 'shared/nixos/common-nix-settings') diff --git a/shared/nixos/common-nix-settings/default.nix b/shared/nixos/common-nix-settings/default.nix new file mode 100644 index 0000000..b5c0a02 --- /dev/null +++ b/shared/nixos/common-nix-settings/default.nix @@ -0,0 +1,60 @@ +# This module sets common settings related to Nix such as enabling flakes and +# using overlays everywhere.. +# +# NOTE: Even though this lives under `shared/nixos` the configuration in here +# should also be compatible with nix-darwin!! +{ + pkgs, + lib, + config, + flakeInputs, + flakeOutputs, + ... +}: +lib.mkMerge [ + { + # Enable de facto stable features. + nix.settings.experimental-features = ["nix-command" "flakes"]; + + nixpkgs.overlays = [ + # Use local overlays. + flakeOutputs.overlays.additions + flakeOutputs.overlays.modifications + + # Add unstable nixpkgs. + (final: prev: {unstable = flakeInputs.nixpkgs-unstable.legacyPackages.${pkgs.system};}) + ]; + + # I'm not *that* vegan. + nixpkgs.config.allowUnfree = true; + + # This will add each flake input as a registry + # To make nix3 commands consistent with your flake + nix.registry = lib.mapAttrs (_: value: {flake = value;}) flakeInputs; + + nix.nixPath = + [ + # Use overlays from this repo for building system configuration as well as system-wide. + # See: https://nixos.wiki/wiki/Overlays#Using_nixpkgs.overlays_from_configuration.nix_as_.3Cnixpkgs-overlays.3E_in_your_NIX_PATH + "nixpkgs-overlays=${flakeInputs.self}/overlays/compat.nix" + + # This will additionally add out inputs to the system's legacy channels + # Making legacy nix commands consistent as well, awesome! + ] + ++ lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; + + # Add shell-utilities which are only relevant if Nix is enabled. + environment.systemPackages = with pkgs; [ + # For running programs easily. + nix-index # Also includes nix-locate + flakeInputs.comma.packages.${system}.default + + # For editing secrets. + flakeInputs.agenix.packages.${system}.default + ]; + } + (lib.mkIf pkgs.stdenv.isLinux { + # There is not nix-darwin equivalent to this NixOS option. + nix.enable = true; + }) +] -- cgit v1.2.3