nixos/flake.nix

97 lines
2.5 KiB
Nix
Raw Normal View History

2023-02-06 22:44:12 +01:00
{
description = "NixOS Configuration";
inputs = rec {
nixpkgs-git.url = "github:/NixOS/nixpkgs";
2023-02-06 22:44:12 +01:00
nixpkgs-stable.url = "github:/NixOS/nixpkgs/nixos-22.11";
nixpkgs-unstable.url = "github:/NixOS/nixpkgs/nixos-unstable";
nixpkgs.url = "github:/NixOS/nixpkgs/nixos-unstable";
2023-09-11 20:05:16 +02:00
alejandra = {
2023-09-11 21:20:14 +02:00
url = "github:kamadorueda/alejandra/3.0.0";
2023-09-11 20:05:16 +02:00
inputs.nixpkgs.follows = "nixpkgs";
};
2024-02-21 21:35:45 +01:00
hyprland = {
url = "github:hyprwm/Hyprland";
inputs.nixpkgs.follows = "nixpkgs";
};
hy3 = {
url = "github:outfoxxed/hy3";
inputs.hyprland.follows = "hyprland";
};
2023-02-06 22:44:12 +01:00
mailserver.url = "gitlab:/simple-nixos-mailserver/nixos-mailserver";
sops-nix = {
2023-09-11 21:20:14 +02:00
url = "github:Mic92/sops-nix";
2023-02-06 22:44:12 +01:00
inputs.nixpkgs.follows = "nixpkgs";
};
};
2023-09-11 20:23:04 +02:00
outputs = {
self,
nixpkgs,
alejandra,
mailserver,
sops-nix,
...
} @ attrs: let
2023-09-11 21:20:14 +02:00
inherit (nixpkgs) lib;
2023-09-11 20:23:04 +02:00
fn = import ./fn.nix {inherit lib;};
2023-09-11 20:05:16 +02:00
mappedFormatter = builtins.mapAttrs (arch: packages: packages.default) alejandra.packages;
2023-09-11 21:20:14 +02:00
mappedApps =
builtins.mapAttrs (_arch: packages: {
"lint" = {
type = "app";
program = "${packages.statix}/bin/statix";
};
})
nixpkgs.legacyPackages;
2023-02-06 22:44:12 +01:00
system = "x86_64-linux";
2023-09-11 20:23:04 +02:00
machineList = fn.lst {
p = toString ./machines;
t = "directory";
b = false;
};
configFiles = fn.lst {
p = toString ./config;
b = true;
};
pkgsFiles = fn.lst {
p = toString ./pkgs;
b = true;
};
serviceFiles = fn.lst {
p = toString ./services;
b = true;
};
2023-02-06 22:44:12 +01:00
nixosSystemFor = machine: {
name = machine;
value = let
machinePath = lib.concatStringsSep "/" [(toString ./.) "machines" machine];
2023-09-11 21:20:14 +02:00
machineFiles = lib.filter (lib.strings.hasSuffix ".nix") (fn.lst {
2023-09-11 20:23:04 +02:00
p = machinePath;
b = true;
});
in
nixpkgs.lib.nixosSystem {
inherit system;
2024-05-09 13:28:32 +02:00
specialArgs =
attrs
// {
inherit system;
inherit fn;
};
2023-09-11 20:23:04 +02:00
modules =
[
(toString ./options/machine.nix)
sops-nix.nixosModules.sops
]
++ machineFiles
++ configFiles
++ pkgsFiles
++ serviceFiles;
};
2023-02-06 22:44:12 +01:00
};
in {
2023-09-11 20:59:03 +02:00
apps = mappedApps;
2023-09-11 20:05:16 +02:00
formatter = mappedFormatter;
2023-02-06 22:44:12 +01:00
nixosConfigurations = lib.listToAttrs (map nixosSystemFor machineList);
};
}