{ description = "flake for matt-nixos"; inputs = { ##################################################### # Desktop # ##################################################### # nixpgs desktop-nixpkgs = { url = "github:NixOS/nixpkgs/nixos-unstable"; }; # Chaotic-nix desktop-chaotic = { url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; }; # Home Manager desktop-home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "desktop-nixpkgs"; }; # Impermenance desktop-impermanence = { url = "github:nix-community/impermanence"; }; # Lanzaboote desktop-lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.2"; inputs.nixpkgs.follows = "desktop-nixpkgs"; }; # Nix hardware desktop-nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; }; # Sops-nix desktop-sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "desktop-nixpkgs"; }; # steam rom manager desktop-steam-rom-manager = { url = "github:mjallen18/nix-steam-rom-manager"; inputs.nixpkgs.follows = "desktop-nixpkgs"; inputs.home-manager.follows = "desktop-home-manager"; }; ##################################################### # NAS # ##################################################### # nixpgs nas-nixpkgs = { # url = "github:NixOS/nixpkgs/nixos-24.11"; url = "github:NixOS/nixpkgs/nixos-unstable"; }; nas-nixpkgs-stable = { url = "github:NixOS/nixpkgs/nixos-24.11"; }; # Authentik nas-authentik-nix = { url = "github:nix-community/authentik-nix"; inputs.nixpkgs.follows = "nas-nixpkgs"; }; # cosmic launcher nas-cosmic = { url = "github:lilyinstarlight/nixos-cosmic"; inputs.nixpkgs.follows = "nas-nixpkgs-stable"; }; # crowdsec nas-crowdsec = { url = "git+https://codeberg.org/kampka/nix-flake-crowdsec.git"; inputs.nixpkgs.follows = "nas-nixpkgs"; }; # Home Manager nas-home-manager = { # url = "github:nix-community/home-manager/release-24.11"; url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nas-nixpkgs"; }; # Impermenance nas-impermanence = { url = "github:nix-community/impermanence"; }; # Lanzaboote nas-lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.2"; inputs.nixpkgs.follows = "nas-nixpkgs"; }; # Nix hardware nas-nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; }; # Sops-nix nas-sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nas-nixpkgs"; }; ##################################################### # pi5 # ##################################################### # nixpgs pi5-nixpkgs = { url = "github:NixOS/nixpkgs/nixos-unstable"; }; # Home Manager pi5-home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "pi5-nixpkgs"; }; # Impermenance pi5-impermanence = { url = "github:nix-community/impermanence"; }; # Nix hardware pi5-nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; }; # Sops-nix pi5-sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "pi5-nixpkgs"; }; nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi"; ##################################################### # pi4 # ##################################################### # nixpgs pi4-nixpkgs = { url = "github:NixOS/nixpkgs/nixos-unstable"; }; # Home Manager pi4-home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "pi4-nixpkgs"; }; # Impermenance pi4-impermanence = { url = "github:nix-community/impermanence"; }; # Sops-nix pi4-sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "pi4-nixpkgs"; }; # Nix hardware pi4-nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; }; pi4-nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi"; pi4-disko = { # the fork is needed for partition attributes support url = "github:nvmd/disko/gpt-attrs"; # url = "github:nix-community/disko"; inputs.nixpkgs.follows = "pi4-nixpkgs"; }; ##################################################### # Steamdeck # ##################################################### # nixpgs steamdeck-nixpkgs = { url = "github:NixOS/nixpkgs/nixos-unstable"; }; # Joviain for steamdeck steamdeck-jovian = { url = "github:Jovian-Experiments/Jovian-NixOS"; inputs.nixpkgs.follows = "steamdeck-nixpkgs"; }; # Chaotic-nix steamdeck-chaotic = { url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; }; # Impermenance steamdeck-impermanence = { url = "github:nix-community/impermanence"; }; # Home Manager steamdeck-home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "steamdeck-nixpkgs"; }; # Lanzaboote steamdeck-lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.2"; inputs.nixpkgs.follows = "steamdeck-nixpkgs"; }; # Sops-nix steamdeck-sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "steamdeck-nixpkgs"; }; # Nix hardware steamdeck-nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; }; # steam rom manager steamdeck-steam-rom-manager = { url = "github:mjallen18/nix-steam-rom-manager"; inputs.nixpkgs.follows = "steamdeck-nixpkgs"; inputs.home-manager.follows = "steamdeck-home-manager"; }; steamdeck-disko = { # the fork is needed for partition attributes support url = "github:nvmd/disko/gpt-attrs"; # url = "github:nix-community/disko"; inputs.nixpkgs.follows = "steamdeck-nixpkgs"; }; ##################################################### # MacBook # ##################################################### #Apple nix-darwin = { url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "desktop-nixpkgs"; }; ##################################################### # Common # ##################################################### nixpkgs-unstable = { url = "github:NixOS/nixpkgs/nixos-unstable"; }; nixpkgs-stable = { url = "github:NixOS/nixpkgs/nixos-24.11"; }; }; outputs = { self, # Desktop desktop-nixpkgs, desktop-chaotic, desktop-home-manager, desktop-impermanence, desktop-lanzaboote, desktop-nixos-hardware, desktop-sops-nix, desktop-steam-rom-manager, # NAS nas-nixpkgs, nas-nixpkgs-stable, nas-authentik-nix, nas-cosmic, nas-crowdsec, nas-home-manager, nas-impermanence, nas-lanzaboote, nas-nixos-hardware, nas-sops-nix, # pi5 pi5-nixpkgs, pi5-home-manager, pi5-impermanence, pi5-nixos-hardware, pi5-sops-nix, nixos-raspberrypi, # pi4 pi4-nixpkgs, pi4-home-manager, pi4-impermanence, pi4-sops-nix, pi4-nixos-hardware, pi4-nixos-raspberrypi, pi4-disko, # Steamdeck steamdeck-nixpkgs, steamdeck-chaotic, steamdeck-home-manager, steamdeck-impermanence, steamdeck-jovian, steamdeck-lanzaboote, steamdeck-nixos-hardware, steamdeck-sops-nix, steamdeck-steam-rom-manager, steamdeck-disko, # MacBook nix-darwin, # Common nixpkgs-unstable, nixpkgs-stable, }@inputs: let inherit (self) outputs; in { overlays = import ./overlays { inherit inputs; }; nixosConfigurations = { # Desktop "matt-nixos" = desktop-nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs outputs; }; modules = [ ./base/base-nogui ./base/base-gui ./hosts/desktop/configuration.nix ./modules/desktop-environments/gnome # Lanzaboote desktop-lanzaboote.nixosModules.lanzaboote # Chaotic Nyx desktop-chaotic.nixosModules.default # Impermanence desktop-impermanence.nixosModules.impermanence ./share/impermanence desktop-sops-nix.nixosModules.sops # Home Manager desktop-home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.matt = { ... }: { imports = [ ./hosts/desktop/home.nix ./share/home/defaults.nix ./share/home/git.nix ./share/home/gnome.nix ./share/home/librewolf.nix ./share/home/office.nix ./share/home/shell.nix ./share/home/vscode.nix desktop-steam-rom-manager.homeManagerModules.default desktop-sops-nix.homeManagerModules.sops ]; }; home-manager.users.root = { ... }: { imports = [ ./share/root-user desktop-sops-nix.homeManagerModules.sops ]; }; home-manager.backupFileExtension = "backup"; } # nixos hardware desktop-nixos-hardware.nixosModules.common-cpu-amd desktop-nixos-hardware.nixosModules.common-cpu-amd-pstate desktop-nixos-hardware.nixosModules.common-cpu-amd-zenpower desktop-nixos-hardware.nixosModules.common-gpu-amd desktop-nixos-hardware.nixosModules.common-hidpi desktop-nixos-hardware.nixosModules.common-pc ]; }; # NAS "jallen-nas" = nas-nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs outputs; }; modules = [ ./base/base-nogui ./base/base-gui ./hosts/nas/configuration.nix ./modules/desktop-environments/cosmic nas-lanzaboote.nixosModules.lanzaboote nas-impermanence.nixosModules.impermanence ./hosts/nas/impermanence.nix nas-cosmic.nixosModules.default nas-home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = false; home-manager.useUserPackages = true; home-manager.users.admin = { ... }: { imports = [ ./hosts/nas/home.nix ./share/home/defaults.nix ./share/home/git.nix ./share/home/librewolf.nix ./share/home/shell.nix ./share/home/vscode.nix nas-sops-nix.homeManagerModules.sops ]; }; home-manager.users.root = { ... }: { imports = [ ./share/root-user nas-sops-nix.homeManagerModules.sops ]; }; home-manager.backupFileExtension = "backup"; } nas-authentik-nix.nixosModules.default nas-sops-nix.nixosModules.sops nas-crowdsec.nixosModules.crowdsec nas-crowdsec.nixosModules.crowdsec-firewall-bouncer ( { ... }: { nixpkgs.overlays = [ nas-crowdsec.overlays.default ]; } ) nas-nixos-hardware.nixosModules.common-pc nas-nixos-hardware.nixosModules.common-cpu-amd nas-nixos-hardware.nixosModules.common-cpu-amd-pstate nas-nixos-hardware.nixosModules.common-cpu-amd-zenpower nas-nixos-hardware.nixosModules.common-hidpi ]; }; # pi5 "pi5" = nixos-raspberrypi.lib.nixosSystem { specialArgs = inputs; system = "aarch64-linux"; modules = [ ./base/base-nogui ./base/base-gui pi5-impermanence.nixosModules.impermanence pi5-sops-nix.nixosModules.sops ./hosts/pi5/configuration.nix pi5-nixos-hardware.nixosModules.raspberry-pi-5 { # Hardware specific configuration, see section below for a more complete # list of modules imports = with nixos-raspberrypi.nixosModules; [ raspberry-pi-5.base raspberry-pi-5.display-vc4 raspberry-pi-5.bluetooth ]; } pi5-home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.backupFileExtension = "backup"; home-manager.users.matt = { ... }: { imports = [ ./hosts/pi5/home.nix pi5-sops-nix.homeManagerModules.sops ]; }; home-manager.users.root = { ... }: { imports = [ ./share/root-user pi5-sops-nix.homeManagerModules.sops ]; }; } ]; }; # pi4 "pi4" = pi4-nixpkgs.lib.nixosSystem { # specialArgs = inputs; specialArgs = { inherit inputs outputs; }; system = "aarch64-linux"; modules = [ ./base/base-nogui pi4-disko.nixosModules.disko ./share/disko/pi-uefi-disko.nix pi4-nixos-hardware.nixosModules.raspberry-pi-4 pi4-impermanence.nixosModules.impermanence pi4-sops-nix.nixosModules.sops ./hosts/pi4/configuration.nix pi4-home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.backupFileExtension = "backup"; home-manager.users.matt = { ... }: { imports = [ ./hosts/pi4/home.nix pi4-sops-nix.homeManagerModules.sops ]; }; home-manager.users.root = { ... }: { imports = [ ./share/root-user pi4-sops-nix.homeManagerModules.sops ]; }; } ]; }; "steamdeck" = steamdeck-nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs outputs; }; modules = [ ./base/base-nogui ./base/base-gui ./hosts/deck/configuration.nix ./modules/desktop-environments/gnome steamdeck-lanzaboote.nixosModules.lanzaboote steamdeck-disko.nixosModules.disko ./share/disko/disko.nix steamdeck-impermanence.nixosModules.impermanence ./share/impermanence steamdeck-home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.deck = { ... }: { imports = [ ./hosts/deck/home.nix ./share/home/defaults.nix ./share/home/git.nix ./share/home/gnome.nix ./share/home/librewolf.nix ./share/home/office.nix ./share/home/shell.nix ./share/home/vscode.nix steamdeck-sops-nix.homeManagerModules.sops steamdeck-steam-rom-manager.homeManagerModules.default ]; }; home-manager.users.root = { ... }: { imports = [ ./share/root-user steamdeck-sops-nix.homeManagerModules.sops ]; }; home-manager.backupFileExtension = "backup"; } steamdeck-nixos-hardware.nixosModules.common-cpu-amd steamdeck-nixos-hardware.nixosModules.common-cpu-amd-pstate steamdeck-nixos-hardware.nixosModules.common-cpu-amd-zenpower steamdeck-nixos-hardware.nixosModules.common-gpu-amd steamdeck-nixos-hardware.nixosModules.common-hidpi steamdeck-nixos-hardware.nixosModules.common-pc steamdeck-sops-nix.nixosModules.sops steamdeck-jovian.nixosModules.jovian steamdeck-chaotic.nixosModules.default ]; }; # home assistant # "jallen-hass" = nixpkgs-unstable.lib.nixosSystem { # system = "x86_64-linux"; # modules = [ # impermanence.nixosModules.impermanence # ./hosts/homeassistant/configuration.nix # sops-nix.nixosModules.sops # home-manager.nixosModules.home-manager # { # home-manager.useGlobalPkgs = true; # home-manager.useUserPackages = true; # home-manager.users.hass-admin = import ./hosts/homeassistant/home.nix; # } # ]; # }; }; darwinConfigurations = { "MacBook-Pro" = nix-darwin.lib.darwinSystem { system = "aarch64-darwin"; modules = [ ./hosts/mac/configuration.nix desktop-home-manager.darwinModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.mattjallen = import ./hosts/mac/home.nix; } ]; }; }; # Expose the package set, including overlays, for convenience. darwinPackages = self.darwinConfigurations."MacBook-Pro".pkgs; # Set Git commit hash for darwin-version. system.configurationRevision = self.rev or self.dirtyRev or null; }; }