Skip to content

Commit

Permalink
Clean up module handling
Browse files Browse the repository at this point in the history
  • Loading branch information
LukeChannings committed Jan 29, 2025
1 parent 1fa3e68 commit 9a5a9ea
Show file tree
Hide file tree
Showing 17 changed files with 132 additions and 91 deletions.
6 changes: 5 additions & 1 deletion config/brew/darwin.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{ ... }:
{ inputs, ... }:
{
imports = [
inputs.brew-nix.darwinModules.default
];

brew-nix.enable = true;

nixpkgs.overlays = [
Expand Down
104 changes: 50 additions & 54 deletions config/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
...
}:
let
nixpkgsConfigModule = import ./nixpkgs/universal.nix;
nixpkgsConfig = nixpkgsConfigModule.nixpkgs.config;
defaultOverlays = builtins.attrValues config.flake.overlays;

inherit (lib) optional;
Expand All @@ -15,47 +13,61 @@ let

filesCalled =
with inputs.nixpkgs.lib.fileset;
name: toList (fileFilter (file: file.name == name || file.name == "universal.nix") ./.);
nameFilter:
toList (fileFilter (file: (nameFilter file.name) || file.name == "home+nixos+darwin.nix") ./.);

importAsAttrset =
with builtins;
pathList:
listToAttrs (
map (path: {
name = baseNameOf (dirOf path);
value = import path;
}) pathList
map (
path:
let
type = (baseNameOf path);
in
{
name = "${baseNameOf (dirOf path)}${
if type == "nixos+darwin.nix" then
"-os-shared"
else if type == "home+nixos+darwin.nix" then
"-shared"
else
""
}";
value = import path;
}
) pathList
);

stateVersion = "24.11";
nixDarwinStateVersion = 5;

homeModules = (importAsAttrset (filesCalled "home.nix")) // {
_setup = {
home.stateVersion = stateVersion;
xdg.enable = true;
};
#
# To organise configurations I separate configurations into modules:
#
# - home.nix - home-manager modules
# - darwin.nix - nix-darwin modules
# - nixos.nix - nixos modules
#
# Available combinations:
#
# - home+nixos+darwin.nix
# - nixos+darwin.nix
#
homeModules = (importAsAttrset (filesCalled (_: _ == "home.nix"))) // {
_setup.home.stateVersion = stateVersion;

default-packages = import ./default-packages.nix;
nix-index-database = inputs.nix-index-database.hmModules.nix-index;
};

darwinModules = (importAsAttrset (filesCalled "darwin.nix")) // {
inherit nixpkgsConfigModule;
home-manager = inputs.home-manager.darwinModules.home-manager;
brew-nix = inputs.brew-nix.darwinModules.default;
link-apps = inputs.toolbox.modules.darwin.link-apps;

_setup = {
system.stateVersion = nixDarwinStateVersion;
darwinModules =
(importAsAttrset (filesCalled (_: _ == "darwin.nix" || _ == "nixos+darwin.nix")))
// {
_setup.system.stateVersion = nixDarwinStateVersion;
};
};

nixosModules = (importAsAttrset (filesCalled "nixos.nix")) // {
home-manager = inputs.home-manager.nixosModules.default;

_setup = {
system.stateVersion = stateVersion;
};
nixosModules = (importAsAttrset (filesCalled (_: _ == "nixos.nix" || _ == "nixos+darwin.nix"))) // {
_setup.system.stateVersion = stateVersion;
};

disableModules =
Expand All @@ -70,39 +82,23 @@ let
(
{
config,
pkgs,
inputs,
...
}:
{
imports = osModules;

config = {
home-manager = {
backupFileExtension = "backup";

sharedModules = homeModules;

# Use the system-level nixpkgs instead of Home Manager's
useGlobalPkgs = true;

# Install packages to /etc/profiles instead of ~/.nix-profile, useful when
# using multiple profiles for one user
useUserPackages = true;

extraSpecialArgs = {
inherit pkgs inputs;
};
};
};
config.home-manager.sharedModules = homeModules;
config.home-manager.extraSpecialArgs = {
inherit inputs;
} // inputs;
}
);
mkHomeManagerConfiguration =
{
system,
config,
overlays ? defaultOverlays,
pkgs ? import inputs.nixpkgs { inherit system; config = nixpkgsConfig; inherit overlays; },
pkgs,
disabledModules ? [ ],
}:
inputs.home-manager.lib.homeManagerConfiguration {
Expand Down Expand Up @@ -200,7 +196,11 @@ let
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMZzAdnH2X/vW+HEovUZCgDjfIiXyokxCNIhCDrF1+Rh"
];

nix.settings.trusted-users = [ "luke" "luke@idm.channings.me" ];
nix.settings.trusted-users = [
"luke"
"luke@idm.channings.me"
];
# nixpkgs.overlays = overlays;
}

(
Expand Down Expand Up @@ -240,10 +240,6 @@ let

inherit deployment;
};
meta.nodeNixpkgs.${normalizedHostName} = import inputs.nixpkgs {
inherit system overlays;
config = nixpkgsConfig;
};
meta.nodeSpecialArgs.${normalizedHostName} = {
inherit inputs;
} // inputs;
Expand Down
6 changes: 6 additions & 0 deletions config/helix/nixos+darwin.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{ inputs, ... }:
{
nixpkgs.overlays = [
inputs.helix.overlays.default
];
}
5 changes: 5 additions & 0 deletions config/home-manager/darwin.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{ inputs, ... }: {
imports = [
inputs.home-manager.darwinModules.home-manager
];
}
3 changes: 3 additions & 0 deletions config/home-manager/home.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
xdg.enable = true;
}
12 changes: 12 additions & 0 deletions config/home-manager/nixos+darwin.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
home-manager = {
backupFileExtension = "backup";

# Use the system-level nixpkgs instead of Home Manager's
useGlobalPkgs = true;

# Install packages to /etc/profiles instead of ~/.nix-profile, useful when
# using multiple profiles for one user
useUserPackages = true;
};
}
5 changes: 5 additions & 0 deletions config/home-manager/nixos.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{ inputs, ... }: {
imports = [
inputs.home-manager.nixosModules.home-manager
];
}
19 changes: 2 additions & 17 deletions config/nix/darwin.nix
Original file line number Diff line number Diff line change
@@ -1,20 +1,5 @@
{
pkgs,
config,
inputs,
lib,
...
}:
{
{ inputs, ... }: {
imports = [
inputs.lix-module.nixosModules.default
inputs.nix-index-database.darwinModules.nix-index
];

services.nix-daemon.enable = true;

nix = {
package = lib.mkDefault pkgs.lix;
channel.enable = false;
settings = (import ./config.nix { users = config.users.users; });
};
}
7 changes: 6 additions & 1 deletion config/nix/home.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
{ pkgs, lib, ... }: {
{ inputs, pkgs, lib, ... }: {

imports = [
inputs.nix-index-database.hmModules.nix-index
];

nix.package = lib.mkDefault pkgs.lix;
programs.nix-index-database.comma.enable = true;
}
16 changes: 16 additions & 0 deletions config/nix/nixos+darwin.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
config,
pkgs,
inputs,
lib,
...
}:
{
imports = [
inputs.lix-module.nixosModules.default
];

nix.package = lib.mkDefault pkgs.lix;
nix.channel.enable = false;
nix.settings = (import ./config.nix { users = config.users.users; });
}
15 changes: 2 additions & 13 deletions config/nix/nixos.nix
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
{
config,
pkgs,
inputs,
lib,
...
}:
{
{ inputs, ... }: {
imports = [
inputs.lix-module.nixosModules.default
inputs.nix-index-database.nixosModules.nix-index
];

nix.package = lib.mkDefault pkgs.lix;
nix.channel.enable = false;
nix.settings = (import ./config.nix { users = config.users.users; });
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# These settings are inherited by home-manager when `useGlobalPkgs` is enabled.
{
nixpkgs.config.allowUnfree = true;
nixpkgs.config.allowUnfreePredicate = pkg: true;
Expand Down
5 changes: 5 additions & 0 deletions config/toolbox/darwin.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{ inputs, ... }: {
imports = [
inputs.toolbox.modules.darwin.link-apps
];
}
6 changes: 3 additions & 3 deletions config/vscode/home.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
...
}:
{
config.programs.vscode = {
programs.vscode = {
enable = true;

package = pkgs.vscodium.overrideAttrs (_final: _prev: { dontPatchShebangs = true; });
Expand All @@ -23,10 +23,10 @@
};
keybindings = (lib.importJSON ./keybindings.json);

extensions = import ./extensions.nix { inherit pkgs; };
extensions = lib.mkIf (pkgs?vscode-marketplace) (import ./extensions.nix { inherit pkgs; });
};

config.home.packages = [
home.packages = [
(pkgs.writeShellScriptBin "code" ''
${config.programs.vscode.package}/Applications/VSCodium.app/Contents/MacOS/Electron $@
'')
Expand Down
9 changes: 9 additions & 0 deletions config/vscode/nixos+darwin.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{ inputs, ... }: {
imports = [
{
nixpkgs.overlays = [
inputs.vscode-extensions.overlays.default
];
}
];
}
2 changes: 1 addition & 1 deletion devenv.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
{
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
inherit ((import ./config/nixpkgs).nixpkgs) config;
config.allowUnfree = true;
overlays = [ inputs.vscode-extensions.overlays.default ];
};

Expand Down
2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
};

legacyPackages.homeConfigurations.luke = self.lib.mkHomeManagerConfiguration {
inherit system;
inherit pkgs;

disabledModules = [
"chromium"
Expand Down

0 comments on commit 9a5a9ea

Please # to comment.