{ description = "NixOS config"; nixConfig = { extra-substituters = [ "https://nix-community.cachix.org" "https://nix-gaming.cachix.org" ]; extra-trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" ]; }; inputs = { nixpkgs = { url = "github:nixos/nixpkgs?ref=nixos-25.05"; }; unstable = { url = "github:nixos/nixpkgs?ref=nixos-unstable"; }; master = { url = "github:nixos/nixpkgs?ref=master"; }; nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; stylix.url = "github:danth/stylix?ref=release-25.05"; nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest"; sops-nix.url = "github:Mic92/sops-nix"; home-manager = { url = "github:nix-community/home-manager?ref=release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; impermanence.url = "github:nix-community/impermanence"; emacs-kylekrein = { url = "git+https://git.kylekrein.com/kylekrein/emacs-config"; inputs.nixpkgs.follows = "nixpkgs"; }; beeengine = { url = "git+https://github.com/KyleKrein/BeeEngine?submodules=1"; #"git+https://git.kylekrein.com/BeeEngine/BeeEngine?shallow=1"; inputs.nixpkgs.follows = "nixpkgs"; }; conduwuit = { url = "github:continuwuity/continuwuity?ref=v0.5.0-rc.7"; inputs.nixpkgs.follows = "nixpkgs"; }; niri-flake = { url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; lanzaboote.url = "github:nix-community/lanzaboote"; # The name "snowfall-lib" is required due to how Snowfall Lib processes your # flake's inputs. snowfall-lib = { url = "github:anntnzrb/snowfall-lib"; #"git+file:///home/kylekrein/Git/snowfall-lib"; inputs.nixpkgs.follows = "nixpkgs"; }; snowfall-flake = { url = "github:snowfallorg/flake"; inputs.nixpkgs.follows = "nixpkgs"; }; deploy-rs = { url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; }; pre-commit-hooks = { url = "github:cachix/git-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; quickshell = { url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; inputs.nixpkgs.follows = "nixpkgs"; }; dgop = { url = "github:AvengeMedia/dgop"; inputs.nixpkgs.follows = "nixpkgs"; }; desktopShell = { url = "github:KyleKrein/DesktopShell"; inputs.nixpkgs.follows = "nixpkgs"; inputs.dgop.follows = "dgop"; inputs.quickshell.follows = "quickshell"; }; rose-pine-hyprcursor = { url = "github:ndom91/rose-pine-hyprcursor"; inputs.nixpkgs.follows = "nixpkgs"; }; declarative-jellyfin = { url = "github:Sveske-Juice/declarative-jellyfin"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs: let lib = inputs.snowfall-lib.mkLib { inherit inputs; src = ./.; snowfall = { namespace = "custom"; meta = { name = "KyleKrein's awesome Nix Flake"; title = "KyleKrein's awesome Nix Flake"; }; }; }; in lib.mkFlake { inherit inputs; src = ./.; channels-config = { allowUnfree = true; permittedInsecurePackages = [ "olm-3.2.16" ]; }; # Per-channel config channels = { nixpkgs-cuda = { config = { allowUnfree = true; cudaSupport = true; }; input = inputs.nixpkgs; }; }; # Use custom channel for specific host #systems.hosts.kylekrein-framework12.channelName = "nixpkgs-x86_64-v4"; overlays = with inputs; [ emacs-kylekrein.overlays.default niri-flake.overlays.niri snowfall-flake.overlays.default ]; systems.modules.nixos = with inputs; [ home-manager.nixosModules.home-manager nix-flatpak.nixosModules.nix-flatpak niri-flake.nixosModules.niri sops-nix.nixosModules.sops nixos-facter-modules.nixosModules.facter home-manager.nixosModules.default disko.nixosModules.default chaotic.nixosModules.nyx-cache chaotic.nixosModules.nyx-overlay chaotic.nixosModules.nyx-registry lanzaboote.nixosModules.lanzaboote impermanence.nixosModules.impermanence declarative-jellyfin.nixosModules.default desktopShell.nixosModules.greeter ]; systems.hosts.kylekrein-framework12.modules = with inputs; [ nixos-hardware.nixosModules.framework-12-13th-gen-intel ]; homes.modules = with inputs; [ impermanence.homeManagerModules.impermanence nix-flatpak.homeManagerModules.nix-flatpak ]; templates = import ./templates {}; deploy = lib.mkDeploy { inherit (inputs) self; overrides = { user = "root"; stargate = { hostname = "kylekrein.com"; remoteBuild = true; }; kylekrein-homepc.remoteBuild = true; }; exclude = ["kylekrein-wsl-wm" "kylekrein-server"]; }; outputs-builder = channels: { formatter = channels.nixpkgs.alejandra; }; #schemas = inputs.flake-schemas.schemas; }; }