From 3bf29c686274e19576aeb4f19510fa0702d2cb0c Mon Sep 17 00:00:00 2001 From: Linnnus Date: Sun, 22 Dec 2024 10:58:36 +0000 Subject: Move shared nix{os,-darwin} config to shared/nixos-and-darwin --- .../common-hm-settings/default.nix | 27 ++++++++++ .../common-nix-settings/default.nix | 59 ++++++++++++++++++++++ .../common-shell-settings/default.nix | 44 ++++++++++++++++ shared/nixos/common-hm-settings/default.nix | 27 ---------- shared/nixos/common-nix-settings/default.nix | 59 ---------------------- shared/nixos/common-shell-settings/default.nix | 44 ---------------- 6 files changed, 130 insertions(+), 130 deletions(-) create mode 100644 shared/nixos-and-darwin/common-hm-settings/default.nix create mode 100644 shared/nixos-and-darwin/common-nix-settings/default.nix create mode 100644 shared/nixos-and-darwin/common-shell-settings/default.nix delete mode 100644 shared/nixos/common-hm-settings/default.nix delete mode 100644 shared/nixos/common-nix-settings/default.nix delete mode 100644 shared/nixos/common-shell-settings/default.nix (limited to 'shared') diff --git a/shared/nixos-and-darwin/common-hm-settings/default.nix b/shared/nixos-and-darwin/common-hm-settings/default.nix new file mode 100644 index 0000000..4c02005 --- /dev/null +++ b/shared/nixos-and-darwin/common-hm-settings/default.nix @@ -0,0 +1,27 @@ +# This module sets common settings related to home-manager (HM). All hosts that +# I directly interact with should include this module. +# +# NOTE: This lives under `shared/nixos-and-darwin`. The configuration in here +# should be compatible with both nixos and nix-darwin!! +{ + flakeInputs, + flakeOutputs, + metadata, + ... +}: { + # FIXME: Ideally this module would import flakeInputs.home-manager but that causes an infinite recursion for some reason. + + # Use the flake input pkgs so Home Manager configuration can share overlays + # etc. with the rest of the configuration. + home-manager.useGlobalPkgs = true; + + # Pass special arguments from flake.nix further down the chain. I really hate + # this split module system. + home-manager.extraSpecialArgs = {inherit flakeInputs flakeOutputs metadata;}; + + # All interactive systems (i.e. the ones that would use HM) have a 'linus' user. + home-manager.users.linus = { + imports = builtins.attrValues flakeOutputs.homeModules; + xdg.enable = true; + }; +} diff --git a/shared/nixos-and-darwin/common-nix-settings/default.nix b/shared/nixos-and-darwin/common-nix-settings/default.nix new file mode 100644 index 0000000..92e14f3 --- /dev/null +++ b/shared/nixos-and-darwin/common-nix-settings/default.nix @@ -0,0 +1,59 @@ +# This module sets common settings related to Nix such as enabling flakes and +# using overlays everywhere.. +# +# NOTE: This lives under `shared/nixos-and-darwin`. The configuration in here +# should be compatible with both nixos and 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; + }) +] diff --git a/shared/nixos-and-darwin/common-shell-settings/default.nix b/shared/nixos-and-darwin/common-shell-settings/default.nix new file mode 100644 index 0000000..982296d --- /dev/null +++ b/shared/nixos-and-darwin/common-shell-settings/default.nix @@ -0,0 +1,44 @@ +# This module sets options to ensure a consistent Baseline Shell Experince™ +# across the entire fleet. This includes e.g. common utilities and aliases. +# +# NOTE: This lives under `shared/nixos-and-darwin`. The configuration in here +# should be compatible with both nixos and nix-darwin!! +{pkgs, ...}: { + # Set ZSH as the shell. + # https://nixos.wiki/wiki/Command_Shell#Changing_default_shelltrue + programs.zsh.enable = true; + environment.shells = [pkgs.zsh]; + + # Very basic system administration tools. + environment.systemPackages = with pkgs; [ + curl + jq + moreutils + neovim + tree + ]; + + # Aliases that are burned into my muscle memory. + environment.shellAliases = { + "mv" = "mv -i"; + "rm" = "rm -i"; + "cp" = "cp -i"; + "ls" = "ls -F -G -A --color=auto"; + "grep" = "grep --color=auto"; + "file" = "file --no-dereference"; + "tree" = "tree --dirsfirst --gitignore"; + + # See: https://github.com/NixOS/nix/issues/5858 + "nix" = "nix --print-build-logs"; + + ".." = "cd ../"; + "..." = "cd ../../"; + "...." = "cd ../../../"; + "....." = "cd ../../../../"; + "......" = "cd ../../../../../"; + "......." = "cd ../../../../../../"; + "........" = "cd ../../../../../../../"; + "........." = "cd ../../../../../../../../"; + ".........." = "cd ../../../../../../../../../"; + }; +} diff --git a/shared/nixos/common-hm-settings/default.nix b/shared/nixos/common-hm-settings/default.nix deleted file mode 100644 index 9262f51..0000000 --- a/shared/nixos/common-hm-settings/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -# This module sets common settings related to home-manager (HM). All hosts that -# I directly interact with should include this module. -# -# NOTE: Even though this lives under `shared/nixos` the configuration in here -# should also be compatible with nix-darwin!! -{ - flakeInputs, - flakeOutputs, - metadata, - ... -}: { - # FIXME: Ideally this module would import flakeInputs.home-manager but that causes an infinite recursion for some reason. - - # Use the flake input pkgs so Home Manager configuration can share overlays - # etc. with the rest of the configuration. - home-manager.useGlobalPkgs = true; - - # Pass special arguments from flake.nix further down the chain. I really hate - # this split module system. - home-manager.extraSpecialArgs = {inherit flakeInputs flakeOutputs metadata;}; - - # All interactive systems (i.e. the ones that would use HM) have a 'linus' user. - home-manager.users.linus = { - imports = builtins.attrValues flakeOutputs.homeModules; - xdg.enable = true; - }; -} diff --git a/shared/nixos/common-nix-settings/default.nix b/shared/nixos/common-nix-settings/default.nix deleted file mode 100644 index 6a34cac..0000000 --- a/shared/nixos/common-nix-settings/default.nix +++ /dev/null @@ -1,59 +0,0 @@ -# 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; - }) -] diff --git a/shared/nixos/common-shell-settings/default.nix b/shared/nixos/common-shell-settings/default.nix deleted file mode 100644 index ec71861..0000000 --- a/shared/nixos/common-shell-settings/default.nix +++ /dev/null @@ -1,44 +0,0 @@ -# This module sets options to ensure a consistent Baseline Shell Experince™ -# across the entire fleet. This includes e.g. common utilities and aliases. -# -# NOTE: Even though this lives under `shared/nixos` the configuration in here -# should also be compatible with nix-darwin!! -{pkgs, ...}: { - # Set ZSH as the shell. - # https://nixos.wiki/wiki/Command_Shell#Changing_default_shelltrue - programs.zsh.enable = true; - environment.shells = [pkgs.zsh]; - - # Very basic system administration tools. - environment.systemPackages = with pkgs; [ - curl - jq - moreutils - neovim - tree - ]; - - # Aliases that are burned into my muscle memory. - environment.shellAliases = { - "mv" = "mv -i"; - "rm" = "rm -i"; - "cp" = "cp -i"; - "ls" = "ls -F -G -A --color=auto"; - "grep" = "grep --color=auto"; - "file" = "file --no-dereference"; - "tree" = "tree --dirsfirst --gitignore"; - - # See: https://github.com/NixOS/nix/issues/5858 - "nix" = "nix --print-build-logs"; - - ".." = "cd ../"; - "..." = "cd ../../"; - "...." = "cd ../../../"; - "....." = "cd ../../../../"; - "......" = "cd ../../../../../"; - "......." = "cd ../../../../../../"; - "........" = "cd ../../../../../../../"; - "........." = "cd ../../../../../../../../"; - ".........." = "cd ../../../../../../../../../"; - }; -} -- cgit v1.2.3