{ description = "My NixOs dotfiles"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; sorre-website = { url = "git+https://codeberg.org/miranb/sorre-website.git"; inputs.nixpkgs.follows = "nixpkgs"; }; snippets-ls = { url = "github:quantonganh/snippets-ls"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { flake-utils, ... }@inputs: flake-utils.lib.eachDefaultSystem (system: let pkgs = inputs.nixpkgs.legacyPackages.${system}; in { formatter = pkgs.nixfmt; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ git gitui sops ]; }; }) // { nixosConfigurations = let generateNixosConfig = name: _value: { system = "x86_64-linux"; # I don't have any other type of machine yet modules = with inputs; [ home-manager.nixosModules.home-manager sops-nix.nixosModules.sops disko.nixosModules.disko ./share/system/common.nix # This directory has to exist and have a `default.nix` in it, see # `./hosts` directory for examples ./hosts/${name} ]; specialArgs = { inherit inputs; flakeRoot = ./.; }; }; # wrapper around nixpkgs.lib.nixosSystem to enable using it on attrsets generateNixosSystem = _name: value: inputs.nixpkgs.lib.nixosSystem value; hosts = builtins.readDir ./hosts; nixosConfigs = builtins.mapAttrs generateNixosConfig hosts; # If you want to add something to a particular system, do it here before # the `in ...` line in builtins.mapAttrs generateNixosSystem nixosConfigs; }; }