{ description = "NixOS configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager/release-23.05"; # The `follows` keyword in inputs is used for inheritance. # Here, `inputs.nixpkgs` of home-manager isn't kept consistent with the `inputs.nixpkgs` of the current flake, # to not avoid problems caused by different versions of nixpkgs dependencies. inputs.nixpkgs.follows = "nixpkgs-unstable"; }; # modern window compositor # hyprland.url = "github:hyprwm/Hyprland"; hyprland = { url = "github:hyprwm/Hyprland"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; nix-colors.url = "github:misterio77/nix-colors"; #community wayland nixpkgs # nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland"; # anyrun - a wayland launcher # anyrun = { # url = "github:Kirottu/anyrun"; # inputs.nixpkgs.follows = "nixpkgs-unstable"; # }; # # generate iso/qcow2/docker/... image from nixos configuration # nixos-generators = { # url = "github:nix-community/nixos-generators"; # inputs.nixpkgs.follows = "nixpkgs"; # }; #secrets management, lock with git commit at 20xx/x/xx #......... ##################### Some non-flake repositories ######################################### # # AstroNvim is an aesthetic and feature-ruch neovim config. # astronvim = { # url = "github:AstroNvim/AstroVnim/v3.36.0"; # flake = false; # }; # useful nushell scripts, such as auto_completion nushell-scripts = { url = "github:nushell/nu_scripts"; flake = false; }; # ryan4yin wallpapers wallpapers = { url = "github:ryan4yin/wallpapers"; flake = false; }; # # nur-ryan4yin = { # url = "github:ryan4yin/nur-packages"; # # inputs.nixpkgs.follows "nixpkgs"; # }; # # riscv64 SBCs # nixos-licheepi4a.url = "github:ryan4yin/nixos-licheepi4a"; # # nixos-jh7110.url = "github:ryan4yin/nixos-jh7110"; # aarch64 SBCs # nixos-rk3588.url = "github:ryan4yin/nixos-rk3588"; ############# Personal 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 = ""; # flake = false; # }; ##################### Color Schemes ####################################### #color scheme -catppuccin catppuccin-btop = { url = "github:catppuccin/btop"; flake = false; }; catppuccin-bat = { url = "github:catppuccin/bat"; flake = false; }; catppuccin-alacritty = { url = "github:catppuccin/alacritty"; flake = false; }; catppuccin-helix = { url = "github:catppuccin/helix"; flake = false; }; catppuccin-starship = { url = "github:catppuccin/starship"; flake = false; }; catppuccin-hyprland = { url = "github:catppuccin/hyprland"; flake = false; }; # # the nixConfig here only affects the flake inself, not the system configuration! # nixConfig = { # experimental-features = ["nix-command" "flakes"]; # substituters = [ # #my own cache server # "url-here" # "https://cache.nixos.org" # "https://hyprland.cachix.org" # ]; # # nix community's cache server # extra-substituters = [ # "https://nix-community.cachix.org" # "https://nixpkgs-wayland.cachix.org" # ]; # extra-trusted-public-keys = [ # "keys here" # ]; # }; }; outputs = inputs@{ self, ...}: with inputs; { # let # inherit (self) outputs; # lib = nixpkgs.lib //home-manager.lib; # systems = [ "x86_64-linux" ]; # forEachSystem = f: lib.genAttrs systems (system: f pkgsFor.${system}); # pkgsFor = lib.genAttrs systems (system: import nixpkgs { # inherit system; # config.allowUnfreee = true; # }); # in { # inherit lib; # nixosModules = import ./modules/nixos; # homeManagerModules = import ./modules/home-manager; # # templates = import ./templates; # # overlays = import ./overlays { inherit inputs outputs; }; # # hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; }); # # devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; }); # # formatter = forEachSystem (pkgs: pkgs.nixpkgs-fmt); # # wallpapers = inherit wallpapers; #NOTE broken # nixosConfigurations = { # # Main desktop # khad = lib.nixosSystem { # modules = [ ./machines/khad ]; # specialArgs = { inherit inputs outputs; }; # }; # # Personal laptop # nixos-zenbook = lib.nixosSystem { # modules = [ ./machines/khad ]; # specialArgs = { inherit inputs outputs; }; # }; # }; # homeConfigurations = { # # Desktop # "defin@khad" = lib.homeManagerConfiguration { # modules = [ ./home-manager/home.nix ]; # pkgs = pkgsFor.x86_64-linux; # extraSpecialArgs = { inherit inputs outputs; }; # }; # # Laptop # "defin@nixos-zenbook" = lib.homeManagerConfiguration { # modules = [ ./home-manager/home.nix ]; # pkgs = pkgsFor.x86_64-linux; # extraSpecialArgs = { inherit inputs outputs; }; # }; # }; # }; nixosConfigurations = { live = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ (nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") ./modules/users/defin.nix ./modules/nixos/system-packages.nix ]; }; zenbook = nixpkgs.lib.nixosSystem { # inherit system; modules = [ ./machines/zenbook/configuration.nix # Default users ./modules/users/defin.nix ./modules/users/root.nix home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.defin = import ./home-manager/home.nix; home-manager.extraSpecialArgs = { inherit nix-colors catppuccin-btop catppuccin-helix catppuccin-starship; }; # home-manager.extraSpecialArgs = { inherit (self) outputs; }; # Optionally, use home-manager.extraSpecialArgs to pass # arguments to home.nix } # hyprland.homeManagerModules.default {wayland.windowManager.hyprland.enable = true;} ./modules/nixos/hyprland.nix ./modules/nixos/bluetooth.nix ./modules/nixos/environment.nix ./modules/nixos/kde-connect.nix ./modules/nixos/nix-common.nix ./modules/nixos/services.nix ./modules/nixos/steam.nix ./modules/nixos/sway.nix ./modules/nixos/system-packages.nix # ./home-manager/home.nix # # Let 'nixos-version --json' know the Git revision of this flake. # system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev; # nix.registry.nixpkgs.flake = nixpkgs; ]; # specialArgs = { inherit inputs; }; }; doretta = nixpkgs.lib.nixosSystem { # this is my build server modules = [ ./machines/doretta/configuration.nix ./modules/nixos/nix-common.nix ./modules/nixos/environment.nix ./modules/nixos/system-packages.nix ./modules/users/defin.nix ./modules/users/root.nix ]; }; bosco = nixpkgs.lib.nixosSystem { # this is my networking server modules = [ ./machines/bosco/configuration.nix ./modules/nixos/nix-common.nix ./modules/nixos/environment.nix ./modules/nixos/system-packages.nix ./modules/users/defin.nix ./modules/users/root.nix ./modules/nixos/headscale.nix ]; }; khad = nixpkgs.lib.nixosSystem { modules = [ ./machines/khad/configuration.nix ./modules/users/defin.nix ./modules/users/root.nix home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.defin = import ./home-manager/home.nix; home-manager.extraSpecialArgs = { inherit nix-colors catppuccin-btop catppuccin-helix catppuccin-starship; }; # home-manager.extraSpecialArgs = { inherit inputs outputs; }; } ./modules/nixos/hyprland.nix ./modules/nixos/bluetooth.nix ./modules/nixos/environment.nix ./modules/nixos/kde-connect.nix ./modules/nixos/nix-common.nix ./modules/nixos/services.nix ./modules/nixos/steam.nix ./modules/nixos/sway.nix ./modules/nixos/system-packages.nix ]; }; }; }; }