Reorganize imports to prevent infinite recursions
This commit is contained in:
parent
ee6b756d3c
commit
ff0ce9d94c
18 changed files with 136 additions and 89 deletions
|
@ -4,23 +4,17 @@
|
|||
pkgs,
|
||||
deployPkgs,
|
||||
...
|
||||
}:
|
||||
}@inputs:
|
||||
{
|
||||
${system} = {
|
||||
|
||||
# Check project formatting
|
||||
format = pkgs.runCommand "nixfmt-check" { } ''
|
||||
set -euo pipefail
|
||||
cd ${self}
|
||||
${self.formatter.${system}}/bin/formatter . --check
|
||||
mkdir $out
|
||||
'';
|
||||
# TODO: Check project formatting
|
||||
|
||||
nixos-modules = pkgs.callPackage ./nixos-modules {
|
||||
inherit (self.lib) getSubDirs isFolderWithFile;
|
||||
};
|
||||
|
||||
#TODO(#29): Integration/System tests
|
||||
nixos-configurations = import ./nixos-configurations inputs;
|
||||
|
||||
# Import deploy-rs tests
|
||||
} // (deployPkgs.deploy-rs.lib.deployChecks self.deploy);
|
||||
|
|
4
checks/nixos-configurations/default.nix
Normal file
4
checks/nixos-configurations/default.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{ self, pkgs, ... }:
|
||||
pkgs.linkFarmFromDrvs "all" (
|
||||
pkgs.lib.mapAttrsToList (n: v: v.config.system.build.toplevel) self.nixosConfigurations
|
||||
)
|
5
checks/packages/default.nix
Normal file
5
checks/packages/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{ self, pkgs, ... }:
|
||||
let
|
||||
inherit (pkgs.lib) attrValues;
|
||||
in
|
||||
pkgs.linkFarmFromDrvs "all" (attrValues self.packages)
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
deployPkgs,
|
||||
pkgs,
|
||||
self,
|
||||
system,
|
||||
...
|
||||
|
|
9
flake.lock
generated
9
flake.lock
generated
|
@ -111,10 +111,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737552783,
|
||||
"narHash": "sha256-pJ2lp36L3++a5HtdN7ULcVpdB4j7yo90TDayWuAO+T8=",
|
||||
"rev": "33cf80043c64ddd6882268430454e3cbe98b692b",
|
||||
"revCount": 11,
|
||||
"lastModified": 1742849713,
|
||||
"narHash": "sha256-EH3vvMdalGxxvYt3tZI4K4RKT/YAh7XejYYrf/jZ0N8=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "f79080b8802eec4463bb4a25c64f82f73e6e31db",
|
||||
"revCount": 12,
|
||||
"type": "git",
|
||||
"url": "file:./private"
|
||||
},
|
||||
|
|
92
flake.nix
92
flake.nix
|
@ -23,7 +23,12 @@
|
|||
};
|
||||
|
||||
outputs =
|
||||
{ nixpkgs-nixos-unstable, deploy-rs, ... }@inputs:
|
||||
{
|
||||
self,
|
||||
nixpkgs-nixos-unstable,
|
||||
deploy-rs,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
# Packages for development and build process
|
||||
|
@ -40,22 +45,79 @@
|
|||
})
|
||||
];
|
||||
};
|
||||
importParams = inputs // {
|
||||
inherit pkgs;
|
||||
inherit deployPkgs;
|
||||
inherit system;
|
||||
importParams = {
|
||||
inherit (inputs)
|
||||
deploy-rs
|
||||
disko
|
||||
nixpkgs-nixos-stable
|
||||
sops-nix
|
||||
private
|
||||
;
|
||||
inherit pkgs deployPkgs system;
|
||||
flakeSelf = self;
|
||||
};
|
||||
in
|
||||
{
|
||||
checks = import ./checks/default.nix importParams;
|
||||
deploy = import ./deploy/default.nix importParams;
|
||||
devShells = import ./dev-shells/default.nix importParams;
|
||||
formatter.${system} = pkgs.writeShellScriptBin "formatter" ''
|
||||
${pkgs.findutils}/bin/find $1 -type f -name '*.nix' -exec ${pkgs.nixfmt-rfc-style}/bin/nixfmt ''${@:2} {} +
|
||||
'';
|
||||
nixosConfigurations = import ./nixos-configurations/default.nix importParams;
|
||||
nixosModules = import ./nixos-modules/default.nix importParams;
|
||||
packages = import ./packages/default.nix importParams;
|
||||
lib = import ./lib/default.nix importParams;
|
||||
checks = import ./checks/default.nix (
|
||||
importParams
|
||||
// {
|
||||
self = {
|
||||
inherit (self)
|
||||
lib
|
||||
packages
|
||||
nixosModules
|
||||
nixosConfigurations
|
||||
deploy
|
||||
;
|
||||
};
|
||||
}
|
||||
);
|
||||
deploy = import ./deploy/default.nix (
|
||||
importParams
|
||||
// {
|
||||
self = {
|
||||
inherit (self)
|
||||
lib
|
||||
packages
|
||||
nixosModules
|
||||
nixosConfigurations
|
||||
;
|
||||
};
|
||||
}
|
||||
);
|
||||
devShells = import ./dev-shells/default.nix (
|
||||
importParams
|
||||
// {
|
||||
self = {
|
||||
inherit (self) lib packages;
|
||||
};
|
||||
}
|
||||
);
|
||||
formatter.${system} = pkgs.nixfmt-tree;
|
||||
nixosConfigurations = import ./nixos-configurations/default.nix (
|
||||
importParams
|
||||
// {
|
||||
self = {
|
||||
inherit (self) lib packages nixosModules;
|
||||
};
|
||||
}
|
||||
);
|
||||
nixosModules = import ./nixos-modules/default.nix (
|
||||
importParams
|
||||
// {
|
||||
self = {
|
||||
inherit (self) lib packages;
|
||||
};
|
||||
}
|
||||
);
|
||||
packages = import ./packages/default.nix (
|
||||
importParams
|
||||
// {
|
||||
self = {
|
||||
inherit (self) lib packages;
|
||||
};
|
||||
}
|
||||
);
|
||||
lib = import ./lib/default.nix { inherit pkgs; };
|
||||
};
|
||||
}
|
||||
|
|
|
@ -7,27 +7,23 @@
|
|||
...
|
||||
}@inputs:
|
||||
let
|
||||
inherit (pkgs.lib) genAttrs;
|
||||
inherit (nixpkgs-nixos-stable.lib) nixosSystem;
|
||||
configs = self.lib.foldersWithNix ./.;
|
||||
in
|
||||
pkgs.lib.genAttrs configs (
|
||||
genAttrs configs (
|
||||
config:
|
||||
nixpkgs-nixos-stable.lib.nixosSystem {
|
||||
nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
modules = [
|
||||
self.nixosModules.default
|
||||
./${config}/default.nix
|
||||
disko.nixosModules.disko
|
||||
sops-nix.nixosModules.sops
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
system.extraSystemBuilderCmds = "ln -s ${self} $out/nixos-configuration";
|
||||
imports = [ ./secrets.nix ];
|
||||
}
|
||||
)
|
||||
self.nixosModules.default
|
||||
./${config}/default.nix
|
||||
./secrets.nix
|
||||
];
|
||||
}
|
||||
)
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ config, ... }:
|
||||
{
|
||||
qois.nixpkgs-cache = {
|
||||
enable = true;
|
||||
hostname = "nixpkgs-cache.qo.is";
|
||||
dnsResolvers = [ config.qois.meta.network.virtual.lindberg-vms-nat.hosts.lindberg.v4.ip ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
inputs: {
|
||||
{ private, self, ... }:
|
||||
{
|
||||
default =
|
||||
{ config, pkgs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
|
||||
imports = (inputs.self.lib.loadSubmodulesFrom ./.) ++ [ inputs.private.nixosModules.default ];
|
||||
imports = (self.lib.loadSubmodulesFrom ./.) ++ [ private.nixosModules.default ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ with lib;
|
|||
hostname = mkOption {
|
||||
type = types.str;
|
||||
example = "mycache.myhost.org";
|
||||
default = "nixpkgs-cache.qo.is";
|
||||
description = "Hostname, under which the cache is served";
|
||||
};
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
settings =
|
||||
let
|
||||
substituters = [
|
||||
"https://${inputs.self.nixosConfigurations.lindberg-build.config.qois.nixpkgs-cache.hostname}?priority=39"
|
||||
"https://${config.qois.nixpkgs-cache.hostname}?priority=39"
|
||||
"https://cache.nixos.org?priority=40"
|
||||
"https://attic.qo.is/qois-infrastructure"
|
||||
];
|
||||
|
|
|
@ -7,6 +7,5 @@
|
|||
}:
|
||||
|
||||
{
|
||||
nixpkgs.overlays = [ (import ../../overlays) ];
|
||||
nix.nixPath = options.nix.nixPath.default;
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
self: super: {
|
||||
lib = (super.lib or { }) // {
|
||||
qois = import ../lib { lib = self.lib; };
|
||||
};
|
||||
}
|
|
@ -1,37 +1,28 @@
|
|||
{
|
||||
self,
|
||||
flakeSelf,
|
||||
system,
|
||||
private,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with pkgs.lib;
|
||||
let
|
||||
inherit (self.lib) foldersWithNix;
|
||||
inherit (pkgs.lib)
|
||||
path
|
||||
genAttrs
|
||||
;
|
||||
in
|
||||
{
|
||||
${system} =
|
||||
let
|
||||
packages = pipe (self.lib.foldersWithNix ./.) [
|
||||
(map (name: {
|
||||
inherit name;
|
||||
path = path.append ./. "./${name}/default.nix";
|
||||
}))
|
||||
(map (
|
||||
{ name, path }:
|
||||
{
|
||||
inherit name;
|
||||
value = pkgs.callPackage path {
|
||||
inherit self;
|
||||
inherit system;
|
||||
};
|
||||
}
|
||||
))
|
||||
listToAttrs
|
||||
];
|
||||
in
|
||||
packages
|
||||
// {
|
||||
default =
|
||||
let
|
||||
nixosConfigs = mapAttrsToList (n: v: v.config.system.build.toplevel) self.nixosConfigurations;
|
||||
in
|
||||
pkgs.linkFarmFromDrvs "all" (nixosConfigs ++ (attrValues packages));
|
||||
};
|
||||
${system} = genAttrs (foldersWithNix ./.) (
|
||||
name:
|
||||
pkgs.callPackage (path.append ./. "./${name}/default.nix") {
|
||||
inherit
|
||||
self
|
||||
flakeSelf
|
||||
system
|
||||
private
|
||||
;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
deploy-rs,
|
||||
self,
|
||||
flakeSelf,
|
||||
writeShellApplication,
|
||||
...
|
||||
}:
|
||||
|
@ -9,6 +9,6 @@ writeShellApplication {
|
|||
meta.description = "Deploy configuration to specificed targets.";
|
||||
runtimeInputs = [ deploy-rs ];
|
||||
text = ''
|
||||
deploy --interactive --targets "''${@:-${self}}"
|
||||
deploy --interactive --targets "''${@:-${flakeSelf}}"
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
mdbook-plantuml,
|
||||
mdbook,
|
||||
plantuml,
|
||||
self,
|
||||
flakeSelf,
|
||||
stdenv,
|
||||
...
|
||||
}:
|
||||
let
|
||||
version = self.rev or self.dirtyRev;
|
||||
version = flakeSelf.rev or flakeSelf.dirtyRev;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
inherit version;
|
||||
|
@ -19,6 +19,6 @@ stdenv.mkDerivation {
|
|||
mdbook-plantuml
|
||||
plantuml
|
||||
];
|
||||
src = self;
|
||||
src = flakeSelf;
|
||||
buildPhase = "mdbook build --dest-dir $out";
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
gnupg,
|
||||
lib,
|
||||
runCommand,
|
||||
self,
|
||||
private,
|
||||
ssh-to-age,
|
||||
writeText,
|
||||
...
|
||||
|
@ -13,7 +13,7 @@ let
|
|||
metaHostConfigs = import ../../defaults/meta/hosts.nix { };
|
||||
userPgpKeys =
|
||||
let
|
||||
keysFolder = "${self.inputs.private}/sops_keys";
|
||||
keysFolder = "${private}/sops_keys";
|
||||
gpgFingerprintsFile =
|
||||
runCommand "userPgpKeys"
|
||||
{
|
||||
|
|
2
private
2
private
|
@ -1 +1 @@
|
|||
Subproject commit 33cf80043c64ddd6882268430454e3cbe98b692b
|
||||
Subproject commit f79080b8802eec4463bb4a25c64f82f73e6e31db
|
Loading…
Add table
Reference in a new issue