Compare commits

...

3 commits

Author SHA1 Message Date
5e7e6eb917
modules/nilla: flake compatibility module
All checks were successful
/ check (push) Successful in 44s
2025-03-31 23:55:07 +02:00
5982f5a066
hosts: simplify builders 2025-03-31 23:55:07 +02:00
cbb8b3f3d7
inputs: lazy-trees at home 2025-03-31 23:55:07 +02:00
5 changed files with 51 additions and 83 deletions

View file

@ -1,34 +1,5 @@
{ {
outputs = outputs = inputs: (import ./nilla.nix { inherit inputs; }).flake;
inputs:
let
nilla = import ./nilla.nix { inherit inputs; };
systems = [
"x86_64-linux"
"aarch64-linux"
"aarch64-darwin"
];
# NOTE: Assumes every package is available for every system.
# For now let's say this is always the case.
transpose =
attrs:
let
inherit (inputs.nixpkgs) lib;
mappedForSystem = system: builtins.mapAttrs (_: pkg: pkg.result.${system}) attrs;
in
lib.genAttrs systems mappedForSystem;
in
{
inherit (nilla) nixosModules;
inherit (nilla) darwinModules;
inherit (nilla) homeModules;
inherit (nilla) nixosConfigurations;
inherit (nilla) darwinConfigurations;
inherit (nilla) homeConfigurations;
devShells = transpose nilla.shells;
packages = transpose nilla.packages;
formatter = nilla.packages.formatter.result;
};
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixpkgs-unstable"; nixpkgs.url = "github:nixos/nixpkgs?ref=nixpkgs-unstable";
@ -128,26 +99,4 @@
flake = false; flake = false;
}; };
}; };
/*
TODO: Uncomment once (if ever?) nixConfig makes sense in flakes
nixConfig = {
extra-substituters = [
"https://hyprland.cachix.org"
"https://cache.garnix.io"
"https://nix-community.cachix.org"
"https://hercules-ci.cachix.org"
"https://nrabulinski.cachix.org"
"https://cache.nrab.lol"
];
extra-trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hercules-ci.cachix.org-1:ZZeDl9Va+xe9j+KqdzoBZMFJHVQ42Uu/c/1/KMC5Lw0="
"nrabulinski.cachix.org-1:Q5FD7+1c68uH74CQK66UWNzxhanZW8xcg1LFXxGK8ic="
"cache.nrab.lol-1:CJl1TouOyuJ1Xh4tZSXLwm3Upt06HzUNZmeyuEB9EZg="
];
};
*/
} }

View file

@ -26,28 +26,14 @@ in
settei = inputs.self; settei = inputs.self;
}; };
}; };
baseNixos = inputs.nixpkgs.lib.nixosSystem {
modules = [
config.nixosModules.combined
sharedOptions
];
specialArgs.configurationName = "base";
};
baseDarwin = inputs.darwin.lib.darwinSystem {
modules = [
config.darwinModules.combined
sharedOptions
];
specialArgs.configurationName = "base";
};
in in
{ {
nixos = nixos =
name: module: name: module:
baseNixos.extendModules { inputs.nixpkgs.lib.nixosSystem {
modules = [ modules = [
config.nixosModules.combined
sharedOptions
module module
config.extraHostConfigs.${name} or { } config.extraHostConfigs.${name} or { }
]; ];
@ -56,18 +42,14 @@ in
darwin = darwin =
name: module: name: module:
let inputs.darwin.lib.darwinSystem {
eval = baseDarwin._module.args.extendModules {
modules = [ modules = [
config.darwinModules.combined
sharedOptions
module module
config.extraHostConfigs.${name} or { } config.extraHostConfigs.${name} or { }
]; ];
specialArgs.configurationName = name; specialArgs.configurationName = name;
}; };
in
eval
// {
system = eval.config.system.build.toplevel;
};
}; };
} }

View file

@ -5,6 +5,11 @@ let
url = "${url}/archive/${rev}.tar.gz"; url = "${url}/archive/${rev}.tar.gz";
sha256 = narHash; sha256 = narHash;
}; };
flake = import flake-compat { src = ./.; }; flake = import flake-compat {
src = ./.;
copySourceTreeToStore = false;
useBuiltinsFetchTree = true;
};
in in
flake.inputs # Workaround for https://github.com/nilla-nix/nilla/issues/14
builtins.mapAttrs (_: input: input // { type = "derivation"; }) flake.inputs

View file

@ -4,5 +4,6 @@
./services.nix ./services.nix
./configurations.nix ./configurations.nix
./modules.nix ./modules.nix
./flake.nix
]; ];
} }

31
modules/nilla/flake.nix Normal file
View file

@ -0,0 +1,31 @@
{ lib, config }:
let
systems = [
"x86_64-linux"
"aarch64-linux"
"aarch64-darwin"
];
transpose =
attrs: lib.attrs.generate systems (system: builtins.mapAttrs (_: pkg: pkg.result.${system}) attrs);
in
{
options.flake = lib.options.create {
type = lib.types.attrs.of lib.types.raw;
};
config.flake = {
inherit (config)
nixosModules
darwinModules
homeModules
nixosConfigurations
darwinConfigurations
homeConfigurations
;
devShells = transpose config.shells;
packages = transpose config.packages;
formatter = config.packages.formatter.result;
};
}