NixOS/flake.nix
2024-08-16 20:49:18 -06:00

60 lines
1.9 KiB
Nix

{
description = "JawZ NixOS flake setup";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-24.05";
unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable";
master.url = "github:nixos/nixpkgs?ref=master";
jellyfin.url =
"github:nixos/nixpkgs?rev=c82ad1b10b310442e685bc150199747fdee92095";
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-gaming.url = "github:fufexan/nix-gaming";
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-cosmic = {
url = "github:lilyinstarlight/nixos-cosmic";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, unstable, master, jellyfin, home-manager, sops-nix
, nixos-cosmic, ... }@inputs:
let
inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib;
system = "x86_64-linux";
makePkgs = repo:
import repo {
inherit system;
config.allowUnfree = true;
};
pkgs = makePkgs nixpkgs;
pkgsU = makePkgs unstable;
pkgsM = makePkgs master;
pkgsJ = makePkgs jellyfin;
overlays = [ (import ./overlay.nix { inherit pkgs pkgsU pkgsM pkgsJ; }) ];
createConfig = name: {
inherit system;
specialArgs = { inherit inputs outputs; };
modules = [
./hosts/${name}/configuration.nix
sops-nix.nixosModules.sops
({ ... }: { nixpkgs.overlays = overlays; })
nixos-cosmic.nixosModules.default
];
};
in {
inherit lib pkgs;
formatter = pkgs.alejandra;
nixosConfigurations = {
workstation = lib.nixosSystem (createConfig "workstation");
miniserver = lib.nixosSystem (createConfig "miniserver");
server = lib.nixosSystem (createConfig "server");
};
};
}