mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-01-11 22:30:25 +01:00
201 lines
6.6 KiB
Nix
201 lines
6.6 KiB
Nix
{
|
|
description = "Ryan Yin's nix configuration for both NixOS & macOS";
|
|
|
|
##################################################################################################################
|
|
#
|
|
# Want to know Nix in details? Looking for a beginner-friendly tutorial?
|
|
# Check out https://github.com/ryan4yin/nixos-and-flakes-book !
|
|
#
|
|
##################################################################################################################
|
|
|
|
outputs = inputs: import ./outputs inputs;
|
|
|
|
# the nixConfig here only affects the flake itself, not the system configuration!
|
|
# for more information, see:
|
|
# https://nixos-and-flakes.thiscute.world/nix-store/add-binary-cache-servers
|
|
nixConfig = {
|
|
# substituers will be appended to the default substituters when fetching packages
|
|
extra-substituters = [
|
|
# "https://nix-gaming.cachix.org"
|
|
# "https://nixpkgs-wayland.cachix.org"
|
|
# "https://install.determinate.systems"
|
|
];
|
|
extra-trusted-public-keys = [
|
|
# "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="
|
|
# "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
|
|
# "cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM="
|
|
];
|
|
};
|
|
|
|
# This is the standard format for flake.nix. `inputs` are the dependencies of the flake,
|
|
# Each item in `inputs` will be passed as a parameter to the `outputs` function after being pulled and built.
|
|
inputs = {
|
|
# There are many ways to reference flake inputs. The most widely used is github:owner/name/reference,
|
|
# which represents the GitHub repository URL + branch/commit-id/tag.
|
|
|
|
# Official NixOS package source, using nixos's unstable branch by default
|
|
# Find git commit hash with build status here(3 jobs per day):
|
|
# https://hydra.nixos.org/jobset/nixpkgs/unstable
|
|
# update via nix flake update nixpkgs --override-input nixpkgs github:NixOS/nixpkgs/<commit-hash>
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11";
|
|
nixpkgs-2505.url = "github:nixos/nixpkgs/nixos-25.05";
|
|
|
|
# nixpkgs with some custom patches
|
|
nixpkgs-patched.url = "github:ryan4yin/nixpkgs/nixos-unstable-patched";
|
|
# get some latest packages from the master branch
|
|
nixpkgs-master.url = "github:nixos/nixpkgs/master";
|
|
|
|
# for macos
|
|
# nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-25.11-darwin";
|
|
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
|
nix-darwin = {
|
|
url = "github:lnl7/nix-darwin";
|
|
inputs.nixpkgs.follows = "nixpkgs-darwin";
|
|
};
|
|
|
|
# home-manager, used for managing user configuration
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager/master";
|
|
# url = "github:nix-community/home-manager/release-25.11";
|
|
|
|
# The `follows` keyword in inputs is used for inheritance.
|
|
# Here, `inputs.nixpkgs` of home-manager is kept consistent with the `inputs.nixpkgs` of the current flake,
|
|
# to avoid problems caused by different versions of nixpkgs dependencies.
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# https://github.com/catppuccin/nix
|
|
catppuccin = {
|
|
url = "github:catppuccin/nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
lanzaboote = {
|
|
url = "github:nix-community/lanzaboote/v0.4.3";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
preservation = {
|
|
url = "github:nix-community/preservation";
|
|
};
|
|
|
|
# community wayland nixpkgs
|
|
# nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
|
|
|
|
# anyrun - a wayland launcher
|
|
anyrun = {
|
|
url = "github:/anyrun-org/anyrun/v25.9.3";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# generate iso/qcow2/docker/... image from nixos configuration
|
|
nixos-generators = {
|
|
url = "github:nix-community/nixos-generators";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
# secrets management
|
|
agenix = {
|
|
# lock with git commit at May 18, 2025
|
|
url = "github:ryantm/agenix/4835b1dc898959d8547a871ef484930675cb47f1";
|
|
# replaced with a type-safe reimplementation to get a better error message and less bugs.
|
|
# url = "github:ryan4yin/ragenix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
disko = {
|
|
url = "github:nix-community/disko/v1.11.0";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# add git hooks to format nix code before commit
|
|
pre-commit-hooks = {
|
|
url = "github:cachix/git-hooks.nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nuenv = {
|
|
url = "github:DeterminateSystems/nuenv";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
haumea = {
|
|
url = "github:nix-community/haumea/v0.2.2";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nixpak = {
|
|
url = "github:nixpak/nixpak";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
ghostty = {
|
|
url = "github:ghostty-org/ghostty/tip"; # Latest Continuous Release
|
|
};
|
|
|
|
blender-bin = {
|
|
url = "github:edolstra/nix-warez?dir=blender";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nixos-apple-silicon = {
|
|
# asahi-6.17.7-2
|
|
url = "github:nix-community/nixos-apple-silicon";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
helix = {
|
|
# Helix with steel as plugin system
|
|
# https://github.com/helix-editor/helix/pull/8675
|
|
url = "github:mattwparas/helix/steel-event-system";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# -------------- Gaming ---------------------
|
|
|
|
nix-gaming = {
|
|
url = "github:fufexan/nix-gaming";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
aagl = {
|
|
url = "github:ezKEa/aagl-gtk-on-nix/release-25.11";
|
|
# inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
######################## Some non-flake repositories #########################################
|
|
|
|
nu_scripts = {
|
|
url = "github:ryan4yin/nu_scripts";
|
|
flake = false;
|
|
};
|
|
|
|
######################## My own repositories #########################################
|
|
|
|
# my private secrets, it's a private repository, you need to replace it with your own.
|
|
# use ssh protocol to authenticate via ssh-agent/ssh-key, and shallow clone to save time
|
|
mysecrets = {
|
|
url = "git+ssh://git@github.com/ryan4yin/nix-secrets.git?shallow=1";
|
|
flake = false;
|
|
};
|
|
|
|
my-asahi-firmware = {
|
|
url = "git+ssh://git@github.com/ryan4yin/asahi-firmware.git?shallow=1";
|
|
flake = false;
|
|
};
|
|
|
|
# my wallpapers
|
|
wallpapers = {
|
|
url = "github:ryan4yin/wallpapers";
|
|
flake = false;
|
|
};
|
|
|
|
nur-ryan4yin = {
|
|
url = "github:ryan4yin/nur-packages";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# for waydroid
|
|
# nur-ataraxiasjel.url = "github:AtaraxiaSjel/nur";
|
|
};
|
|
}
|