{ 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 nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable-small"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-ollama.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-patched.url = "github:ryan4yin/nixpkgs/nixos-unstable-patched"; # for macos # nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-25.05-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.05"; # 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"; }; determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*"; # https://github.com/catppuccin/nix catppuccin = { url = "github:catppuccin/nix"; inputs.nixpkgs.follows = "nixpkgs"; }; lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.2"; 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.0"; 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"; }; blender-bin = { url = "github:edolstra/nix-warez?dir=blender"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-apple-silicon = { # 2025-08-25 asahi-6.15.10-3 url = "github:nix-community/nixos-apple-silicon/b99bf9bf7445416fe55da09034fc4a6cd733805c"; inputs.nixpkgs.follows = "nixpkgs"; }; niri.url = "github:sodiboo/niri-flake"; # -------------- Gaming --------------------- nix-gaming = { url = "github:fufexan/nix-gaming"; inputs.nixpkgs.follows = "nixpkgs"; }; aagl = { url = "github:ezKEa/aagl-gtk-on-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; ######################## Some non-flake repositories ######################################### polybar-themes = { url = "github:adi1090x/polybar-themes"; 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"; }; }