153 lines
4.6 KiB
Nix
153 lines
4.6 KiB
Nix
# Uses Snowfall: https://snowfall.org/
|
|
# For info on Flakes, see: https://nixos-and-flakes.thiscute.world/nixos-with-flakes/nixos-with-flakes-enabled
|
|
{
|
|
description = "Aires' system Flake";
|
|
|
|
inputs = {
|
|
# Import the desired Nix channel. Defaults to unstable, which uses a fully tested rolling release model.
|
|
# You can find a list of channels at https://wiki.nixos.org/wiki/Channel_branches
|
|
# To follow a different channel, replace `nixos-unstable` with the channel name, e.g. `nixos-24.05`.
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
|
|
# Power management via auto-cpufreq
|
|
auto-cpufreq = {
|
|
url = "github:AdnanHodzic/auto-cpufreq/v2.4.0";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# Flatpak support
|
|
flatpak.url = "github:gmodena/nix-flatpak/v0.5.1";
|
|
|
|
# Home-manager support
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager/release-24.11";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# SecureBoot support
|
|
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.1";
|
|
|
|
# Use Lix in place of Nix.
|
|
# If you'd rather use regular Nix, remove `lix-module.nixosModules.default` from the `modules` section below.
|
|
# To learn more about Lix, see https://lix.systems/
|
|
lix = {
|
|
url = "git+https://git.lix.systems/lix-project/nixos-module?ref=stable";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# NixOS hardware quirks
|
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
|
|
|
# Snowfall lib: https://snowfall.org/guides/lib/quickstart/
|
|
# Jake's reference config: https://github.com/jakehamilton/config
|
|
snowfall-lib = {
|
|
url = "github:snowfallorg/lib";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# Code formatter
|
|
treefmt = {
|
|
url = "github:numtide/treefmt-nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
inputs:
|
|
let
|
|
lib = inputs.snowfall-lib.mkLib {
|
|
inherit inputs;
|
|
|
|
# Root dir for flake.nix
|
|
src = ./.;
|
|
|
|
# Configure Snowfall
|
|
snowfall = {
|
|
# Choose a namespace to use for your flake's packages, library, and overlays.
|
|
namespace = "Sapana";
|
|
|
|
# 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 = "aires-flake";
|
|
|
|
# A title to show for your flake, typically the name.
|
|
title = "Aires' Flake";
|
|
};
|
|
};
|
|
};
|
|
in
|
|
lib.mkFlake {
|
|
# Configure Nix channels
|
|
channels-config.allowUnfree = true;
|
|
|
|
# Define systems
|
|
systems = {
|
|
# Modules to import for all systems
|
|
modules.nixos = with inputs; [
|
|
auto-cpufreq.nixosModules.default
|
|
lix.nixosModules.default
|
|
lanzaboote.nixosModules.lanzaboote
|
|
flatpak.nixosModules.nix-flatpak
|
|
home-manager.nixosModules.home-manager
|
|
{
|
|
_module.args = {
|
|
inherit inputs;
|
|
};
|
|
home-manager = {
|
|
/*
|
|
When running, Home Manager will use the global package cache.
|
|
It will also back up any files that it would otherwise overwrite.
|
|
The originals will have the extension shown below.
|
|
*/
|
|
useGlobalPkgs = true;
|
|
useUserPackages = true;
|
|
backupFileExtension = "home-manager-backup";
|
|
};
|
|
}
|
|
];
|
|
|
|
# Individual host configurations
|
|
hosts = {
|
|
Dimaga.modules = with inputs; [
|
|
nixos-hardware.nixosModules.common-cpu-intel
|
|
];
|
|
|
|
Hevana.modules = with inputs; [
|
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
nixos-hardware.nixosModules.common-gpu-amd
|
|
];
|
|
|
|
Khanda.modules = with inputs; [
|
|
nixos-hardware.nixosModules.microsoft-surface-pro-9
|
|
];
|
|
|
|
Pihole.modules = with inputs; [
|
|
nixos-hardware.nixosModules.raspberry-pi-4
|
|
];
|
|
|
|
Shura.modules = with inputs; [
|
|
nixos-hardware.nixosModules.lenovo-legion-16arha7
|
|
];
|
|
};
|
|
};
|
|
|
|
# Use treefmt to format project repo
|
|
outputs-builder =
|
|
channels:
|
|
let
|
|
treefmtEval = inputs.treefmt.lib.evalModule channels.nixpkgs ./treefmt.nix;
|
|
in
|
|
{
|
|
# For `nix fmt`
|
|
formatter = treefmtEval.config.build.wrapper;
|
|
|
|
# For `nix flake check`
|
|
checks = {
|
|
formatting = treefmtEval.config.build.check inputs.self;
|
|
};
|
|
};
|
|
};
|
|
}
|