nixos/flake.nix

68 lines
2.4 KiB
Nix
Raw Normal View History

# reference: https://github.com/kenranunderscore/dotfiles/blob/main/flake.nix
# also good: https://github.com/cab404/home
{
inputs = {
nixpkgs.url = github:NixOS/nixpkgs;
home-manager.url = github:nix-community/home-manager;
home-manager.inputs.nixpkgs.follows = "nixpkgs";
emacs-overlay.url = github:nix-community/emacs-overlay;
emacs-overlay.inputs.nixpkgs.follows = "nixpkgs";
sops-nix.url = github:Mic92/sops-nix;
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
q-sh.url = sourcehut:~knazarov/q.sh;
q-sh.inputs.nixpkgs.follows = "nixpkgs";
knazarovcom.url = sourcehut:~knazarov/knazarov.com;
knazarovcom.inputs.nixpkgs.follows = "nixpkgs";
vmatveevacom.url = github:valeriya-matveeva/vmatveeva.com;
vmatveevacom.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, home-manager, emacs-overlay, sops-nix, q-sh, knazarovcom, vmatveevacom, ... }@attrs:
let
system = "x86_64-linux";
specialArgs = {
inherit attrs;
};
buildConfig = modules: system: { inherit modules system specialArgs; };
buildSystem = modules: system: nixpkgs.lib.nixosSystem (buildConfig modules system);
hostAttrs = dir: {
settings = import "${dir}/host-metadata.nix";
config = import "${dir}/configuration.nix";
hw-config = import "${dir}/hardware-configuration.nix";
};
node = dir: with hostAttrs dir; buildSystem [
({ config, pkgs, ... }: { nixpkgs.overlays = [ emacs-overlay.overlay q-sh.overlays.default]; })
sops-nix.nixosModules.sops
home-manager.nixosModule
config
hw-config
./configuration.nix
]
settings.system;
server = dir: with hostAttrs dir; buildSystem [
({ config, pkgs, ... }: { nixpkgs.overlays = [
emacs-overlay.overlay
q-sh.overlays.default
knazarovcom.overlays.default
vmatveevacom.overlays.default]; })
sops-nix.nixosModules.sops
home-manager.nixosModule
config
hw-config
#(dir + "/configuration.nix")
]
settings.system;
in
{
nixosConfigurations = {
mira = node ./nodes/mira;
framework = node ./nodes/framework;
knazarovcom = server ./nodes/knazarovcom;
};
};
}