Skip to content

Commit

Permalink
feature/modular-outputs: Enable and refactor flake with modular outputs
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelvanstraten committed Oct 27, 2024
1 parent ab08c9d commit fff4cef
Show file tree
Hide file tree
Showing 39 changed files with 186 additions and 160 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ jobs:
uses: cachix/install-nix-action@v30
with:
nix_path: nixpkgs=channel:nixos-unstable
extra_nix_config: |
experimental-features = flakes nix-command pipe-operators
# - name: Set up Magic Nix Cache
# uses: DeterminateSystems/magic-nix-cache-action@main
Expand Down
2 changes: 1 addition & 1 deletion checks/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
nil.enable = true;
# nil.enable = true;
nixfmt-rfc-style.enable = true;
prettier = {
enable = true;
Expand Down
20 changes: 0 additions & 20 deletions darwinConfigurations/default.nix

This file was deleted.

20 changes: 3 additions & 17 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 9 additions & 14 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@

pre-commit-hooks = {
url = "github:cachix/git-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};

sops-nix = {
Expand All @@ -59,29 +60,19 @@
flake-utils,
nixpkgs,
pre-commit-hooks,
nix-darwin,
home-manager,
...
}@inputs:
let
callModule =
modulePath: extraArgs:
import modulePath ({ callModule = callModule; } // self.outputs // inputs // extraArgs);
inherit ((import ./lib/outputs.nix inputs).lib) callOutputs;
in
{
darwinConfigurations = callModule ./darwinConfigurations { };
nixosConfigurations = callModule ./nixosConfigurations { };

inherit (callModule ./modules { }) darwinModules homeModules nixosModules;
}
// flake-utils.lib.eachDefaultSystem (
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = import nixpkgs { inherit system; };
in
{
# Checks pre-commit-hooks
checks = callModule ./checks { inherit system; };
checks = import ./checks { inherit pre-commit-hooks system; };

# Development shell with necessary tools
devShells =
Expand All @@ -101,5 +92,9 @@
# Formatter for this flake
formatter = pkgs.nixfmt-rfc-style;
}
);
)
// callOutputs {
directory = ./.;
inherit inputs;
};
}
11 changes: 5 additions & 6 deletions homeConfigurations/mozilla.nix
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
{
homeModules,
pkgs,
lib,
...
}:
{ self, ... }:
let
inherit (self) homeModules;
in
{ pkgs, lib, ... }:
{
imports = with homeModules; [
Alacritty
Expand Down
11 changes: 5 additions & 6 deletions homeConfigurations/personal.nix
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
{
homeModules,
pkgs,
lib,
...
}:
{ self, ... }:
let
inherit (self) homeModules;
in
{ pkgs, lib, ... }:
{
imports = with homeModules; [
Alacritty
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
{ nixosModules, pkgs, ... }:
{ self, ... }@inputs:
let
inherit (self) nixosModules;
in
{ pkgs, ... }:
{
imports = with nixosModules; [
./virtual-disk-MBR.nix
(import ./virtual-disk-MBR.nix inputs)
hardware.libvirtd
nix
personal-cloud
Expand Down
13 changes: 13 additions & 0 deletions hosts/h2946065/outputs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{ nixpkgs, sops-nix, ... }@inputs:
let
inherit (nixpkgs.lib) nixosSystem;
in
{
nixosConfigurations.h2946065 = nixosSystem {
modules = [
sops-nix.nixosModules.sops
(import ./configuration.nix inputs)
../../secrets
];
};
}
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ darwinModules, pkgs, ... }:
{ self, ... }:
{ pkgs, ... }:
{
imports = with darwinModules; [
imports = with self.darwinModules; [
environment
home-manager
nix
Expand All @@ -12,6 +13,11 @@
config.allowUnfree = true;
};

networking = {
computerName = "Michaels MacBook Pro at Mozilla";
hostName = "michaels-mbp-mozilla";
};

users.users.mozilla = {
createHome = true;
description = "Michael van Straten";
Expand Down
12 changes: 12 additions & 0 deletions hosts/michaels-mbp-mozilla/outputs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{ nix-darwin, home-manager, ... }@inputs:
{
darwinConfigurations = {
"michaels-mbp-mozilla" = nix-darwin.lib.darwinSystem {
system = "aarch64-darwin";
modules = [
home-manager.darwinModule
(import ./configuration.nix inputs)
];
};
};
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
{ darwinModules, pkgs, ... }:
{ self, ... }@inputs:
let
inherit (self) darwinModules;
in
{ pkgs, ... }:
{
imports = with darwinModules; [
environment
Expand All @@ -14,7 +18,7 @@

networking = {
computerName = "Michaels MacBook Pro";
hostName = "michaels-macbook-pro";
hostName = "michaels-mbp";
};

users.users.michaelvanstraten = {
Expand All @@ -29,7 +33,7 @@

security.pam.enableSudoTouchIdAuth = true;

home-manager.users.michaelvanstraten = import ../../homeConfigurations/personal.nix;
home-manager.users.michaelvanstraten = import ../../homeConfigurations/personal.nix inputs;

environment.systemPackages = with pkgs; [ darwin.trash ];
}
12 changes: 12 additions & 0 deletions hosts/michaels-mbp/outputs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{ nix-darwin, home-manager, ... }@inputs:
{
darwinConfigurations = {
"michaels-mbp" = nix-darwin.lib.darwinSystem {
system = "aarch64-darwin";
modules = [
home-manager.darwinModule
(import ./configuration.nix inputs)
];
};
};
}
19 changes: 19 additions & 0 deletions hosts/rack-01/intel-nucs/configuration.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{ self, sops-nix, ... }:
{ ... }:
{
imports =
with self.nixosModules;
[
format.raw-efi
hardware.intel-nuc
nix
personal-cloud
ssh
users
]
++ [ sops-nix.nixosModules.sops ];

console.keyMap = "de";

system.stateVersion = "25.11";
}
17 changes: 17 additions & 0 deletions hosts/rack-01/intel-nucs/outputs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{ nixpkgs, self, ... }@inputs:
let
inherit (nixpkgs.lib) nixosSystem;
in
({
nixosConfigurations = builtins.mapAttrs (
hostname: isMaster:
nixosSystem {
modules = [
(if isMaster then self.nixosModules.roles.k8s-master else self.nixosModules.roles.k8s-worker)
../../../secrets
(import ./configuration.nix inputs)
{ networking.hostName = hostname; }
];
}
) { "rack-01-k8s-master-nuc-01" = true; };
})
10 changes: 10 additions & 0 deletions lib/callModule.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{ ... }@inputs:
modulePath: _:
let
module = import modulePath;
isFlakeModule =
module:
builtins.isFunction module
&& (builtins.functionArgs module |> builtins.intersectAttrs inputs) != { };
in
if isFlakeModule module then module inputs else module
19 changes: 19 additions & 0 deletions lib/callOutputs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{ nixpkgs, ... }@inputs':
let
inherit (nixpkgs.lib.attrsets) recursiveUpdate;
inherit (nixpkgs.lib.filesystem) listFilesRecursive;
in
{
directory,
inputs ? inputs',
outputPattern ? ".*/outputs\\.nix$",
}:
let
isOutputFile = path: (builtins.match outputPattern path) != null;
evaluateOutputFile = outputFile: import outputFile inputs;
in
listFilesRecursive directory
|> builtins.map (path: builtins.toString path)
|> builtins.filter isOutputFile
|> builtins.map evaluateOutputFile
|> builtins.foldl' recursiveUpdate { }
10 changes: 10 additions & 0 deletions lib/modulesFromDirectoryRecursive.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{ self, nixpkgs, ... }:
let
inherit (nixpkgs.lib.filesystem) packagesFromDirectoryRecursive;
inherit (self.lib) callModule;
in
directory:
packagesFromDirectoryRecursive {
callPackage = callModule;
inherit directory;
}
7 changes: 7 additions & 0 deletions lib/outputs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
inputs: {
lib = {
callModule = import ./callModule.nix inputs;
callOutputs = import ./callOutputs.nix inputs;
modulesFromDirectoryRecursive = import ./modulesFromDirectoryRecursive.nix inputs;
};
}
2 changes: 0 additions & 2 deletions modules/darwin/home-manager.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
{ specialArgs, ... }:
{
home-manager = {
backupFileExtension = "before-home-manager";
extraSpecialArgs = specialArgs;
useGlobalPkgs = true;
useUserPackages = true;
verbose = true;
Expand Down
3 changes: 2 additions & 1 deletion modules/darwin/nix.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
linux-builder.enable = false;
settings = {
experimental-features = [
"nix-command"
"flakes"
"nix-command"
"pipe-operators"
];
trusted-users = [ "@admin" ];
};
Expand Down
3 changes: 2 additions & 1 deletion modules/darwin/packages.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ nixpkgs-firefox-darwin, pkgs, ... }:
{ nixpkgs-firefox-darwin, ... }:
{ pkgs, ... }:
{
nixpkgs = {
overlays = [ nixpkgs-firefox-darwin.overlay ];
Expand Down
14 changes: 0 additions & 14 deletions modules/default.nix

This file was deleted.

3 changes: 2 additions & 1 deletion modules/home-manager/Alacritty.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ cyberdream-theme, pkgs, ... }:
{ cyberdream-theme, ... }:
{ pkgs, ... }:
{
fonts.fontconfig.enable = true;
home.packages = [ pkgs.nerdfonts ];
Expand Down
3 changes: 2 additions & 1 deletion modules/home-manager/Firefox.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ BetterFox, config, ... }:
{ BetterFox, ... }:
{ config, ... }:
{
programs.firefox = {
# Let Firefox package be managed by the system
Expand Down
Loading

0 comments on commit fff4cef

Please sign in to comment.