shared-public-infra/flake.nix

134 lines
4.4 KiB
Nix
Raw Normal View History

{
description = "NixOS configuration with flakes";
# To update all inputs:
# $ nix flake update --recreate-lock-file
inputs = {
2024-10-12 18:22:06 +00:00
lix.url = "git+https://git.lix.systems/lix-project/lix.git";
lix.inputs.nixpkgs.follows = "nixpkgs";
lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
lix-module.inputs.nixpkgs.follows = "nixpkgs";
lix-module.inputs.lix.follows = "lix";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
flake-parts.url = "github:hercules-ci/flake-parts";
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware";
nur.url = "github:nix-community/NUR";
home-manager.url = "github:rycee/home-manager/release-24.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixpkgs";
colmena.url = "github:zhaofengli/colmena";
colmena.inputs.nixpkgs.follows = "nixpkgs";
2023-08-07 12:46:46 +00:00
attic.url = "github:zhaofengli/attic";
srvos.url = "github:nix-community/srvos";
# actually not used when using the modules but than nothing ever will try to fetch this nixpkgs variant
srvos.inputs.nixpkgs.follows = "nixpkgs";
# Ryan's experimental hypervisor based on cloud-hypervisor
# Private repository, you need a valid SSH key to access it
# nixos-hypervisor.url = "git+ssh://gitea@git.newtype.fr/newtype/nixos-hypervisor?ref=main";
# nixos-hypervisor.inputs.nixpkgs.follows = "nixpkgs";
};
outputs =
2024-10-12 18:22:06 +00:00
{
flake-parts,
...
}@inputs:
(flake-parts.lib.evalFlakeModule { inherit inputs; } (
{ self, inputs, ... }:
{
systems = [
"x86_64-linux"
"aarch64-linux"
"aarch64-darwin"
];
imports = [
./configurations.nix
# ./modules/monitoring/flake-module.nix
# ./pkgs/flake-module.nix
# ./templates
];
# provide debug, allSystems, currentSystem in the resulting flake
debug = true;
2024-10-12 18:22:06 +00:00
perSystem =
{ self', pkgs, system, ... }:
2024-10-12 18:22:06 +00:00
{
# apply the lix overlay to banish CppNix
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [ inputs.lix-module.overlays.default ];
};
2024-10-12 18:22:06 +00:00
devShells.default = pkgs.mkShellNoCC {
buildInputs = [
pkgs.ipmitool
pkgs.colmena
pkgs.python3.pkgs.invoke
#Until nixos-anywhere is packaged
pkgs.python3.pkgs.deploykit
pkgs.mypy
pkgs.pixiecore
pkgs.dnsmasq
pkgs.python3.pkgs.netaddr
pkgs.qemu_kvm
pkgs.openssh
pkgs.gitMinimal # for git flakes
pkgs.rsync
pkgs.nix
pkgs.coreutils
pkgs.curl # when uploading tarballs
pkgs.gnugrep
pkgs.findutils
pkgs.gnused # needed by ssh-copy-id
# sops dependencies
pkgs.age
pkgs.yq-go
] ++ pkgs.lib.optional (pkgs.stdenv.isLinux) pkgs.mkpasswd;
};
packages = {
# netboot = pkgs.callPackage ./modules/netboot/netboot.nix {
# # this nixosSystem is built for x86_64 machines regardless of the host machine
# pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux;
# inherit (inputs.nixpkgs.lib) nixosSystem;
# extraModules = [
# self.inputs.nur.nixosModules.nur
# { _module.args.inputs = self.inputs; }
# ];
# };
# netboot-pixie-core = pkgs.callPackage ./modules/netboot/netboot-pixie-core.nix {
# inherit (self'.packages) netboot;
# };
};
};
flake = {
2024-10-12 18:22:06 +00:00
hydraJobs =
inputs.nixpkgs.lib.mapAttrs' (
name: config: inputs.nixpkgs.lib.nameValuePair "nixos-${name}" config.config.system.build.toplevel
) self.nixosConfigurations
// {
devShells = self.devShells.x86_64-linux.default;
};
};
2024-10-12 18:22:06 +00:00
}
)).config.flake;
}