{ description = "A simple NixOS flakes"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; helix = { url = "github:helix-editor/helix/master"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; oskars-dotfiles = { url = "github:oskardotglobal/.dotfiles/nix"; inputs.nixpkgs.follows = "nixpkgs"; }; niri-flake = { url = "github:sodiboo/niri-flake"; }; nixos-cosmic = { url = "github:lilyinstarlight/nixos-cosmic"; }; ghostty = { url = "github:ghostty-org/ghostty"; }; nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; }; dae = { url = "github:daeuniverse/flake.nix"; }; flake-parts = { url = "github:hercules-ci/flake-parts"; }; flake-utils = { url = "github:numtide/flake-utils"; }; nur-xddxdd = { url = "github:xddxdd/nur-packages?ref=master&dir=/pkgs/uncategorized"; flake = false; }; firefox-addons = { url = "git+https://gitlab.com/rycee/nur-expressions.git?dir=pkgs/firefox-addons&ref=master"; flake = false; }; }; outputs = { self, nixpkgs, flake-parts, flake-utils, ... }@inputs: let inherit (self) outputs; in flake-parts.lib.mkFlake { inherit inputs; } { systems = flake-utils.lib.defaultSystems; flake = { nix.settings = { # substituters shared in home-manager and nixos configuration substituters = let channelStore = x: "https://${x}/nix-channels/store"; mirrors = map (x: channelStore "mirrors.${x}.edu.cn") [ "bfsu" "tuna.tsinghua" "ustc" ]; cachix = x: "https://${x}.cachix.org"; in nixpkgs.lib.flatten [ mirrors (cachix "nix-community") "https://cache.nixos.org" (cachix "cosmic") ]; }; nixosModules.default = import ./nixos/modules; overlays = { modifications = (import ./overlays/modifications { inherit inputs; }); }; nixosConfigurations = let nixosConfigDir = ./nixos/configurations; in nixpkgs.lib.genAttrs (map (f: nixpkgs.lib.removeSuffix ".nix" f) (builtins.attrNames (builtins.readDir nixosConfigDir))) ( hostName: nixpkgs.lib.nixosSystem { modules = [ ( let dirPath = nixosConfigDir + "/${hostName}"; filePath = nixosConfigDir + "/${hostName}.nix"; in if builtins.pathExists dirPath then dirPath else filePath ) ./configuration.nix ./users ] ++ [ outputs.nixosModules.default ]; specialArgs = { inherit inputs outputs; }; } ); }; }; }