Fediversity/mkFlake.nix
Kiara Grouwstra cecdf38ad5
WIP: overlay proxmox to use regular nixpkgs version
Signed-off-by: Kiara Grouwstra <kiara@procolix.eu>
2025-10-26 23:19:13 +01:00

94 lines
2.8 KiB
Nix

## This file contains a tweak of flake-parts's `mkFlake` function to splice in
## sources taken from npins.
## NOTE: Much of the logic in this file feels like it should be not super
## specific to fediversity. Could it make sense to extract the core of this to
## another place it feels closer to in spirit, such as @fricklerhandwerk's
## flake-inputs (which this code already depends on anyway, and which already
## contained two distinct helpers for migrating away from flakes)? cf
## https://git.fediversity.eu/Fediversity/Fediversity/pulls/447#issuecomment-8671
inputs@{ self, system, ... }:
let
sources = import ./npins;
inherit (import sources.flake-inputs) import-flake;
# XXX(@fricklerhandwerk): this atrocity is required to splice in a foreign Nixpkgs via flake-parts
# XXX - this is just importing a flake
nixpkgs = import-flake { src = sources.nixpkgs; };
overlays = [
# https://github.com/SaumonNet/proxmox-nixos/issues/188
(
_: prev:
let
# override nixpkgs versions in proxmox-nixos
pm = import "${sources.proxmox-nixos}/pkgs" {
craneLib = prev.callPackage "${sources.crane}/lib" { };
pkgs = prev;
pkgs-unstable = prev;
};
vncterm = pm.vncterm.override {
libvncserver = prev.libvncserver.overrideAttrs (_: {
version = "0.9.14";
src = sources.libvncserver;
});
};
pve-qemu-server = pm.pve-qemu-server.override { inherit vncterm; };
pve-ha-manager = pm.pve-ha-manager.override { inherit pve-qemu-server; };
pve-manager = pm.pve-manager.override { inherit pve-ha-manager; };
proxmox-ve = pm.proxmox-ve.override {
inherit
pve-ha-manager
pve-manager
pve-qemu-server
vncterm
;
};
in
{
inherit
proxmox-ve
pve-ha-manager
;
}
)
];
pkgs = import nixpkgs { inherit system overlays; };
# XXX - this overrides the inputs attached to `self`
inputs' = self.inputs // {
nixpkgs = pkgs;
};
self' = self // {
inputs = inputs';
};
inherit (pkgs) lib outPath;
flake-parts-lib = import "${sources.flake-parts}/lib.nix" { inherit lib; };
in
flakeModule:
flake-parts-lib.mkFlake
{
# XXX - finally we override the overall set of `inputs` -- we need both:
# `flake-parts obtains `nixpkgs` from `self.inputs` and not from `inputs`.
inputs = inputs // {
nixpkgs = pkgs;
};
self = self';
specialArgs = {
inherit sources;
modulesPath = "${builtins.toString outPath}/nixos/modules";
};
}
{
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
imports = [ flakeModule ];
}