{ description = "teutat3s hosts in nix"; nixConfig.extra-experimental-features = "nix-command flakes"; inputs = { # Track channels with commits tested and built by hydra nixos-22-05.url = "github:nixos/nixpkgs/nixos-22.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; unstable.url = "github:nixos/nixpkgs/nixos-unstable"; master.url = "github:nixos/nixpkgs/master"; fork.url = "github:teutat3s/nixpkgs/fix-element-desktop-screen-sharing-23.11"; flake-compat.url = "github:edolstra/flake-compat"; flake-compat.flake = false; nix-darwin.url = "github:lnl7/nix-darwin/master"; nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; home-manager.url = "github:nix-community/home-manager/release-23.11"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; flake-parts.url = "github:hercules-ci/flake-parts"; nixos-flake.url = "github:srid/nixos-flake"; deploy-rs.url = "github:serokell/deploy-rs"; deploy-rs.inputs.nixpkgs.follows = "nixpkgs"; deploy-rs.inputs.flake-compat.follows = "flake-compat"; agenix.url = "github:ryantm/agenix"; agenix.inputs.nixpkgs.follows = "nixpkgs"; agenix.inputs.darwin.follows = "nix-darwin"; agenix.inputs.home-manager.follows = "home-manager"; nixos-hardware.url = "github:nixos/nixos-hardware"; # PubSolarOS additions triton-vmtools.url = "git+https://git.pub.solar/pub-solar/infra-vintage?ref=main&dir=vmtools"; triton-vmtools.inputs.nixpkgs.follows = "unstable"; tritonshell.url = "git+https://git.pub.solar/teutat3s/tritonshell?ref=main"; tritonshell.inputs.nixpkgs.follows = "unstable"; wayland-pipewire-idle-inhibit.url = "github:rafaelrc7/wayland-pipewire-idle-inhibit"; wayland-pipewire-idle-inhibit.inputs.nixpkgs.follows = "nixpkgs"; wayland-pipewire-idle-inhibit.inputs.flake-parts.follows = "flake-parts"; }; outputs = inputs@{ self, ...}: inputs.flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; imports = [ inputs.nixos-flake.flakeModule ./lib ./modules ./hosts ./users ./overlays ]; perSystem = args@{ system, pkgs, config, ... }: { _module.args = { inherit inputs; pkgs = import inputs.nixpkgs { inherit system; overlays = [ inputs.agenix.overlays.default ]; }; unstable = import inputs.unstable { inherit system; }; master = import inputs.master { inherit system; }; }; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ deploy-rs nixpkgs-fmt agenix cachix editorconfig-checker nodePackages.prettier nvfetcher shellcheck shfmt treefmt nixos-generators ]; }; }; flake = { deploy.nodes = self.lib.deploy.mkDeployNodes self.nixosConfigurations { #example = { # hostname = "example.com:22"; # sshUser = "bartender"; # fastConnect = true; # profilesOrder = ["system" "direnv"]; # profiles.direnv = { # user = "bartender"; # path = self.pkgs.x86_64-linux.nixos.deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurationsPortable.x86_64-linux.bartender; # }; #}; fae = { hostname = "192.168.13.35"; sshUser = "pub-solar"; }; powder = { hostname = "80.71.153.194"; sshUser = "root"; profilesOrder = ["system" "direnv"]; profiles.direnv = { user = "pub-solar"; path = self.pkgs.x86_64-linux.nixos.deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurationsPortable.x86_64-linux.pub-solar; }; }; }; }; }; }