{ inputs = { nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-21.11"; nixos-hardware.url = "github:NixOS/nixos-hardware"; home-manager.url = "github:nix-community/home-manager/release-21.11"; home-manager.inputs.nixpkgs.follows = "nixpkgs-stable"; qois-infrastructure.url = "path:/etc/nixos/qois-infrastructure"; threema.url = "path:/etc/nixos/defaults/threema"; threema.inputs.nixpkgs-unstable.follows = "nixpkgs-unstable"; fabianhauser-etaxes-sg.url = "github:fabianhauser/etaxes-sg-nix"; fabianhauser-etaxes-sg.inputs.nixpkgs.follows = "nixpkgs-stable"; }; outputs = { self, nixpkgs-unstable, nixpkgs-stable, home-manager , qois-infrastructure, fabianhauser-etaxes-sg, nixos-hardware, threema, ... }@inputs: let system = "x86_64-linux"; pkgsUnstable = import nixpkgs-unstable { inherit system; config.allowUnfree = true; # For vscode }; hosts = [ "speer" "hummelberg" ]; in { checks.${system}.formatCheck = let pkgs = pkgsUnstable; in pkgs.runCommand "nixfmt-check" { } '' set -euo pipefail cd ${self} ${pkgs.findutils}/bin/find . -type f -name '*.nix' -exec ${pkgs.nixfmt}/bin/nixfmt --check {} + mkdir $out ''; # Build with `nixos-rebuild --flake .#` or # `nix build .#nixosConfigurations..config.system.build.toplevel nixosConfigurations = let home-manager-config = { home-manager = { useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { inherit pkgsUnstable; threemaModules = threema.nixosModules; pkgsEtaxesSg = fabianhauser-etaxes-sg.packages.${system}; }; users.fhauser = import ./home/fhauser/default.nix; }; }; mapHostnameToAttr = host: nixpkgs-stable.lib.nixosSystem { inherit system; specialArgs = { hardwareModules = nixos-hardware.nixosModules; threemaModules = threema.nixosModules; }; modules = [ qois-infrastructure.nixosModule home-manager.nixosModules.home-manager home-manager-config ./host/${host}/default.nix ]; }; in pkgsUnstable.lib.genAttrs hosts mapHostnameToAttr; homeConfigurations = { fhauser = home-manager.lib.homeManagerConfiguration rec { inherit system; username = "fhauser"; configuration = import ./home/${username}/default.nix; extraSpecialArgs = { inherit pkgsUnstable; threemaModules = threema.nixosModules; }; # Update the state version as needed. # See the changelog here: # https://nix-community.github.io/home-manager/release-notes.html#sec-release-21.05 stateVersion = "21.11"; }; }; devShell.${system} = import ./shell.nix { pkgs = pkgsUnstable; }; packages.${system}.defaultPackage.${system} = let configs = map (host: self.nixosConfigurations.${host}.config.system.build.toplevel) hosts; in pkgsUnstable.linkFarmFromDrvs "allHosts" configs; apps.${system} = { format = let pkgs = pkgsUnstable; formatter = pkgsUnstable.writeShellScriptBin "formatter" '' ${pkgs.findutils}/bin/find . -type f -name '*.nix' -exec ${pkgs.nixfmt}/bin/nixfmt {} + ''; in { type = "app"; program = "${formatter}/bin/formatter"; }; }; }; }