Start migration to using flake-parts

This commit is contained in:
2026-03-23 20:34:48 +01:00
parent ba56618049
commit 6cbe60c784
158 changed files with 1935 additions and 1830 deletions

300
flake.nix
View File

@@ -36,6 +36,9 @@
inputs.nixpkgs.follows = "nixpkgs";
};
flake-parts.url = "github:hercules-ci/flake-parts";
import-tree.url = "github:vic/import-tree";
# Various flakes
yazi-flavors = {
url = "github:yazi-rs/flavors";
@@ -61,158 +64,163 @@
};
};
outputs = {
self,
nixpkgs,
home-manager,
systems,
...
} @ inputs: let
inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib;
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
pkgsFor = lib.genAttrs (import systems) (
system:
import nixpkgs {
inherit system;
config.allowUnfree = true;
config.permittedInsecurePackages = [
"olm-3.2.16"
];
warn-dirty = false;
}
);
in {
inherit lib;
outputs = inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} (inputs.import-tree
[
./hosts
./features-nixos
./homes
./features-home-manager
# ./modules
# ./overlays
# ./packages
]);
# let
# inherit (self) outputs;
# lib = nixpkgs.lib // home-manager.lib;
# forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
# pkgsFor = lib.genAttrs (import systems) (
# system:
# import nixpkgs {
# inherit system;
# config.allowUnfree = true;
# config.permittedInsecurePackages = [
# "olm-3.2.16"
# ];
# warn-dirty = false;
# }
# );
# in {
# inherit lib;
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
# nixosModules = import ./modules/nixos;
# homeManagerModules = import ./modules/home-manager;
overlays = import ./overlays {inherit inputs outputs;};
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
# overlays = import ./overlays {inherit inputs outputs;};
# # hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
formatter = forEachSystem (pkgs: pkgs.alejandra); # nix fmt *
# packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
# devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
# formatter = forEachSystem (pkgs: pkgs.alejandra); # nix fmt *
nixosConfigurations = {
# Main laptop
aspi = lib.nixosSystem {
modules = [
./hosts/aspi
];
specialArgs = {
inherit inputs outputs;
};
};
# Piano raspberry pi
# pianonix = lib.nixosSystem {
# modules = [./hosts/pianonix];
# specialArgs = {
# inherit inputs outputs;
# };
# };
kardorf = lib.nixosSystem {
modules = [./hosts/kardorf];
specialArgs = {
inherit inputs outputs;
};
};
builder = lib.nixosSystem {
modules = [./hosts/builder];
specialArgs = {
inherit inputs outputs;
};
};
};
# nixosConfigurations = {
# # Main laptop
# aspi = lib.nixosSystem {
# modules = [
# ./hosts/aspi
# ];
# specialArgs = {
# inherit inputs outputs;
# };
# };
# # Piano raspberry pi
# # pianonix = lib.nixosSystem {
# # modules = [./hosts/pianonix];
# # specialArgs = {
# # inherit inputs outputs;
# # };
# # };
# kardorf = lib.nixosSystem {
# modules = [./hosts/kardorf];
# specialArgs = {
# inherit inputs outputs;
# };
# };
# builder = lib.nixosSystem {
# modules = [./hosts/builder];
# specialArgs = {
# inherit inputs outputs;
# };
# };
# };
# Standalone HM
homeConfigurations = {
# Main laptop
"julian@aspi" = lib.homeManagerConfiguration {
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
# "julian@pianonix" = lib.homeManagerConfiguration {
# modules = [
# ./homes/julian/pianonix.nix
# ./homes/julian/hm-standalone-config.nix
# ];
# pkgs = pkgsFor.aarch64-linux;
# extraSpecialArgs = {
# inherit inputs outputs;
# };
# };
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@quickstart" = lib.homeManagerConfiguration {
modules = [
./homes/julian/quickstart.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
};
# # Standalone HM
# homeConfigurations = {
# # Main laptop
# "julian@aspi" = lib.homeManagerConfiguration {
# modules = [
# ./homes/julian/aspi.nix
# ./homes/julian/hm-standalone-config.nix
# ];
# pkgs = pkgsFor.x86_64-linux;
# extraSpecialArgs = {
# inherit inputs outputs;
# };
# };
# # Media server (RPi)
# # "julian@pianonix" = lib.homeManagerConfiguration {
# # modules = [
# # ./homes/julian/pianonix.nix
# # ./homes/julian/hm-standalone-config.nix
# # ];
# # pkgs = pkgsFor.aarch64-linux;
# # extraSpecialArgs = {
# # inherit inputs outputs;
# # };
# # };
# "julian@kardorf" = lib.homeManagerConfiguration {
# modules = [
# ./homes/julian/kardorf.nix
# ./homes/julian/hm-standalone-config.nix
# ];
# pkgs = pkgsFor.x86_64-linux;
# extraSpecialArgs = {
# inherit inputs outputs;
# };
# };
# "julian@v3ms" = lib.homeManagerConfiguration {
# modules = [
# ./homes/julian/v3ms
# ./homes/julian/hm-standalone-config.nix
# ];
# pkgs = pkgsFor.x86_64-linux;
# extraSpecialArgs = {
# inherit inputs outputs;
# };
# };
# "julian@quickstart" = lib.homeManagerConfiguration {
# modules = [
# ./homes/julian/quickstart.nix
# ./homes/julian/hm-standalone-config.nix
# ];
# pkgs = pkgsFor.x86_64-linux;
# extraSpecialArgs = {
# inherit inputs outputs;
# };
# };
# };
# deploy-rs node configuration
deploy.nodes = {
# pianonix = {
# hostname = "pianonix.local";
# profiles.system = {
# sshUser = "root";
# user = "root";
# path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
# confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
# };
# };
# # deploy-rs node configuration
# deploy.nodes = {
# # pianonix = {
# # hostname = "pianonix.local";
# # profiles.system = {
# # sshUser = "root";
# # user = "root";
# # path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
# # confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
# # };
# # };
builder = {
hostname = "builder.julian-mutter.de";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
remoteBuild = true;
};
};
};
# builder = {
# hostname = "builder.julian-mutter.de";
# profiles.system = {
# sshUser = "root";
# user = "root";
# path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
# remoteBuild = true;
# };
# };
# };
# substitutes: nixos-generate --flake .#pianonix -f sd-aarch64 --system aarch64-linux
pianonix-image = inputs.nixos-generators.nixosGenerate {
system = "aarch64-linux";
format = "sd-aarch64";
modules = [./hosts/pianonix];
specialArgs = {
inherit inputs outputs;
};
};
};
# # substitutes: nixos-generate --flake .#pianonix -f sd-aarch64 --system aarch64-linux
# pianonix-image = inputs.nixos-generators.nixosGenerate {
# system = "aarch64-linux";
# format = "sd-aarch64";
# modules = [./hosts/pianonix];
# specialArgs = {
# inherit inputs outputs;
# };
# };
# };
}