refactor in style of synaptic standard

This commit is contained in:
atagen 2025-07-20 23:35:43 +10:00
parent ce295da1c1
commit 2fa2ecce0c
119 changed files with 1099 additions and 3109 deletions

29
util/create.nix Normal file
View file

@ -0,0 +1,29 @@
let
inputs = import ./inputs.nix;
inherit (inputs) nixpkgs;
inherit (nixpkgs) lib;
recursivelyImport = import ./recursively-import.nix { inherit lib; };
in
{
systems =
definitions:
nixpkgs.lib.mapAttrs (
name: info:
nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;
mainUser = info.user;
};
modules = [
inputs.home-manager.nixosModules.home-manager
(lib.mkAliasOptionModule [ "hm" ] [ "home-manager" "users" info.user ])
{
home-manager.extraSpecialArgs = {
inherit inputs;
mainUser = info.user;
};
}
] ++ (recursivelyImport info.imports);
}
) definitions;
}

View file

@ -1,8 +0,0 @@
inputs:
let
inherit (inputs.nixpkgs.lib) filterAttrs mapAttrsToList;
inherit (builtins) elem;
in
l:
filterAttrs (_: v: elem v l) inputs
|> mapAttrsToList (n: v: v.nixosModules.${n} or v.nixosModules.default)

15
util/inputs.nix Normal file
View file

@ -0,0 +1,15 @@
let
lock = builtins.fromJSON (builtins.readFile ../flake.lock);
node = lock.nodes.root.inputs.__flake-compat;
inherit (lock.nodes.${node}.locked) narHash rev url;
flake-compat = builtins.fetchTarball {
url = "${url}/archive/${rev}.tar.gz";
sha256 = narHash;
};
flake = import flake-compat {
src = ../.;
copySourceTreeToStore = false;
useBuiltinsFetchTree = true;
};
in
flake.inputs

View file

@ -0,0 +1,21 @@
{ lib }:
let
recurseIntoFolders =
elem:
if lib.isPath elem && lib.pathIsDirectory elem then
lib.filesystem.listFilesRecursive elem
else
# If it's not a folder, return it unchanged. This handles single-files and
# literal modules (written with {} syntax)
lib.singleton elem;
filterNixFiles =
paths:
builtins.filter
# filter the files for `.nix` files. if it's not a file, it can stay.
(path: !builtins.isPath path || lib.hasSuffix ".nix" path)
# Expand any folders into all the files within them. Note that this comes
# BEFORE the filtering that's happening above
(builtins.concatMap recurseIntoFolders paths);
in
filterNixFiles