267 lines
9.0 KiB
Nix
267 lines
9.0 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.05";
|
|
|
|
# The name "snowfall-lib" is required due to how Snowfall Lib processes your
|
|
# flake's inputs.
|
|
snowfall-lib = {
|
|
url = "github:snowfallorg/lib";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
|
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
impermanence.url = "github:nix-community/impermanence";
|
|
|
|
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
|
|
|
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
|
|
|
sops-nix.url = "github:Mic92/sops-nix";
|
|
|
|
steam-rom-manager = {
|
|
url = "github:mjallen18/nix-steam-rom-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.home-manager.follows = "home-manager";
|
|
};
|
|
|
|
cosmic.url = "github:lilyinstarlight/nixos-cosmic";
|
|
|
|
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
|
|
|
|
authentik-nix.url = "github:nix-community/authentik-nix";
|
|
|
|
crowdsec.url = "git+https://codeberg.org/kampka/nix-flake-crowdsec.git";
|
|
|
|
nixai.url = "github:olafkfreund/nix-ai-help";
|
|
|
|
disko = {
|
|
# the fork is needed for partition attributes support
|
|
url = "github:nvmd/disko/gpt-attrs";
|
|
# url = "github:nix-community/disko";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nixos-raspberrypi.url = "github:mjallen18/nixos-raspberrypi";
|
|
|
|
jovian.url = "github:Jovian-Experiments/Jovian-NixOS";
|
|
|
|
darwin.url = "github:LnL7/nix-darwin";
|
|
|
|
nix-homebrew.url = "github:zhaofengli/nix-homebrew";
|
|
|
|
homebrew-core = {
|
|
url = "github:homebrew/homebrew-core";
|
|
flake = false;
|
|
};
|
|
|
|
homebrew-cask = {
|
|
url = "github:homebrew/homebrew-cask";
|
|
flake = false;
|
|
};
|
|
|
|
nixos-apple-silicon.url = "github:nix-community/nixos-apple-silicon";
|
|
|
|
pre-commit-hooks-nix.url = "github:cachix/pre-commit-hooks.nix";
|
|
|
|
treefmt-nix = {
|
|
url = "github:numtide/treefmt-nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nix-index-database = {
|
|
url = "github:nix-community/nix-index-database";
|
|
inputs = {
|
|
nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
};
|
|
|
|
# We will handle this in the next section.
|
|
outputs = inputs:
|
|
let
|
|
snowfall = inputs.snowfall-lib.mkFlake {
|
|
# You must provide our flake inputs to Snowfall Lib.
|
|
inherit inputs;
|
|
|
|
# The `src` must be the root of the flake. See configuration
|
|
# in the next section for information on how you can move your
|
|
# Nix files to a separate directory.
|
|
src = ./.;
|
|
|
|
# Add a module to a specific host.
|
|
systems = {
|
|
# common modules
|
|
modules.nixos = with inputs; [
|
|
authentik-nix.nixosModules.default
|
|
chaotic.nixosModules.default
|
|
crowdsec.nixosModules.crowdsec
|
|
crowdsec.nixosModules.crowdsec-firewall-bouncer
|
|
disko.nixosModules.disko
|
|
impermanence.nixosModules.impermanence
|
|
lanzaboote.nixosModules.lanzaboote
|
|
sops-nix.nixosModules.sops
|
|
home-manager.nixosModules.home-manager
|
|
];
|
|
|
|
# common darwin modules
|
|
modules.darwin = with inputs; [
|
|
nix-homebrew.darwinModules.nix-homebrew
|
|
home-manager.darwinModules.home-manager
|
|
];
|
|
|
|
# Host config
|
|
hosts = {
|
|
# ######################################################
|
|
# Desktop #
|
|
# ######################################################
|
|
desktop = {
|
|
modules = with inputs; [
|
|
nixos-hardware.nixosModules.common-cpu-amd
|
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
nixos-hardware.nixosModules.common-gpu-amd
|
|
nixos-hardware.nixosModules.common-hidpi
|
|
nixos-hardware.nixosModules.common-pc
|
|
];
|
|
};
|
|
|
|
# ######################################################
|
|
# NAS #
|
|
# ######################################################
|
|
nas = {
|
|
modules = with inputs; [
|
|
nixos-hardware.nixosModules.common-pc
|
|
nixos-hardware.nixosModules.common-cpu-amd
|
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
nixos-hardware.nixosModules.common-hidpi
|
|
home-manager.nixosModules.home-manager
|
|
];
|
|
# overlays = with inputs; [ crowdsec.overlays.default ];
|
|
};
|
|
|
|
# ######################################################
|
|
# Steamdeck #
|
|
# ######################################################
|
|
deck = {
|
|
modules = with inputs; [
|
|
disko.nixosModules.disko
|
|
jovian.nixosModules.jovian
|
|
nixos-hardware.nixosModules.common-cpu-amd
|
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
nixos-hardware.nixosModules.common-gpu-amd
|
|
nixos-hardware.nixosModules.common-hidpi
|
|
nixos-hardware.nixosModules.common-pc
|
|
];
|
|
};
|
|
|
|
# ######################################################
|
|
# NUC #
|
|
# ######################################################
|
|
nuc = {
|
|
modules = with inputs; [
|
|
disko.nixosModules.disko
|
|
nixos-hardware.nixosModules.common-cpu-amd
|
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
nixos-hardware.nixosModules.common-gpu-amd
|
|
nixos-hardware.nixosModules.common-hidpi
|
|
nixos-hardware.nixosModules.common-pc
|
|
];
|
|
};
|
|
|
|
# ######################################################
|
|
# Pi4 #
|
|
# ######################################################
|
|
pi4 = {
|
|
modules = with inputs; [
|
|
disko.nixosModules.disko
|
|
nixos-raspberrypi.nixosModules.raspberry-pi-4.base
|
|
nixos-raspberrypi.nixosModules.raspberry-pi-4.display-vc4
|
|
nixos-raspberrypi.lib.inject-overlays
|
|
];
|
|
};
|
|
|
|
# ######################################################
|
|
# Pi5 #
|
|
# ######################################################
|
|
pi5 = {
|
|
modules = with inputs; [
|
|
disko.nixosModules.disko
|
|
nixos-raspberrypi.nixosModules.raspberry-pi-5.base
|
|
nixos-raspberrypi.nixosModules.raspberry-pi-5.display-vc4
|
|
nixos-raspberrypi.nixosModules.raspberry-pi-5.bluetooth
|
|
nixos-raspberrypi.lib.inject-overlays
|
|
];
|
|
};
|
|
|
|
# ######################################################
|
|
# Mac #
|
|
# ######################################################
|
|
macbook-pro-nixos = {
|
|
modules = with inputs; [
|
|
nixos-apple-silicon.nixosModules.default
|
|
];
|
|
};
|
|
};
|
|
|
|
overlays = with inputs; [ nix-vscode-extensions.overlays.default ];
|
|
|
|
homes = {
|
|
modules = with inputs; [
|
|
nix-index-database.homeModules.nix-index
|
|
sops-nix.homeManagerModules.sops
|
|
];
|
|
|
|
overlays = with inputs; [
|
|
nix-vscode-extensions.overlays.default
|
|
];
|
|
|
|
users = {
|
|
# "matt@desktop" = {
|
|
# modules = with inputs; [
|
|
# sops-nix.homeManagerModules.sops
|
|
# ];
|
|
# };
|
|
"deck@deck" = {
|
|
modules = with inputs; [
|
|
steam-rom-manager.homeManagerModules.default
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
# Configure Snowfall Lib, all of these settings are optional.
|
|
snowfall = {
|
|
# Choose a namespace to use for your flake's packages, library,
|
|
# and overlays.
|
|
namespace = "mjallen";
|
|
|
|
# Add flake metadata that can be processed by tools like Snowfall Frost.
|
|
meta = {
|
|
# A slug to use in documentation when displaying things like file paths.
|
|
name = "mjallen";
|
|
|
|
# A title to show for your flake, typically the name.
|
|
title = "mjallen Flake";
|
|
};
|
|
};
|
|
|
|
outputs-builder = channels: {
|
|
formatter = inputs.treefmt-nix.lib.mkWrapper channels.nixpkgs ./treefmt.nix;
|
|
};
|
|
};
|
|
in
|
|
snowfall // {
|
|
nixosConfigurations = snowfall.nixosConfigurations;
|
|
};
|
|
} |