68 lines
2.4 KiB
Nix
68 lines
2.4 KiB
Nix
|
# 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;
|
||
|
};
|
||
|
};
|
||
|
}
|