{ description = "Configuration for Everest"; inputs = { secrets = { url = "git+http://git.everest.sable-pancake.ts.net/Toast/nix-secrets"; flake = false; }; nixpkgs-raw.url = "nixpkgs/nixos-23.11"; nixpkgs-unstable-raw.url = "nixpkgs/nixos-unstable"; agenix = { url = "github:ryantm/agenix"; inputs = { nixpkgs.follows = "nixpkgs-raw"; darwin.follows = ""; # Not using this on MacOS, so this doesn't pull it's dependencies }; }; home-manager = { url = "github:nix-community/home-manager/release-23.11"; inputs.nixpkgs.follows = "nixpkgs-raw"; }; home-manager-unstable = { url = "github:nix-community/home-manager/"; inputs.nixpkgs.follows = "nixpkgs-unstable-raw"; }; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; jovian = { url = "github:Jovian-Experiments/Jovian-NixOS"; inputs.nixpkgs.follows = "nixpkgs-unstable-raw"; }; nix-impermanence.url = "github:nix-community/impermanence"; /* These are the same input, just following different nixpkgs versions This avoids some wierdness when using one that follows unstable on a stable nixpkgs */ nix-index-db = { url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs-raw"; }; nix-index-db-unstable = { url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs-unstable-raw"; }; plasma-manager = { url = "github:pjones/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs-unstable-raw"; inputs.home-manager.follows = "home-manager-unstable"; }; catppuccin-vsc = { url = "github:catppuccin/vscode"; inputs.nixpkgs.follows = "nixpkgs-unstable-raw"; }; vscode-extensions = { url = "github:nix-community/nix-vscode-extensions"; inputs.nixpkgs.follows = "nixpkgs-unstable-raw"; }; nix-flatpak.url = "github:gmodena/nix-flatpak/main"; nur.url = "github:nix-community/NUR"; nix-gaming = { url = "github:fufexan/nix-gaming"; inputs.nixpkgs.follows = "nixpkgs-unstable-raw"; }; }; outputs = { ... } @inputs: with inputs; # Patch nixpkgs # https://ertt.ca/nix/patch-nixpkgs/ let nixpkgs-unstable-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches { name = "patched-nixpkgs-unstable"; src = nixpkgs-unstable-raw; patches = [ ]; }; nixpkgs-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches { name = "patched-nixpkgs"; src = nixpkgs-raw; patches = [ ./nixpkgs-patches/0001-catppuccin-add-grub-theme.patch ./nixpkgs-patches/0002-catppuccin-add-starship-theme.patch ]; }; # https://discourse.nixos.org/t/proper-way-of-applying-patch-to-system-managed-via-flake/21073/26 nixpkgs-unstable = (import "${nixpkgs-unstable-patched}/flake.nix").outputs { self = inputs.self; }; nixpkgs = (import "${nixpkgs-patched}/flake.nix").outputs { self = inputs.self; }; in { devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell { name = "toast-devshell"; # The agenix cli is not needed to activate a configuration, so instead of installing it # I'll just add it to de devShell, since that's the only real time I'm going to use it. packages = with nixpkgs.legacyPackages.x86_64-linux; [ agenix.packages.x86_64-linux.default git nix-diff just nix-diff ]; shellHook ='' export PS1="$PS1(toast-configs)> " ''; }; packages = { x86_64-linux = with import nixpkgs-unstable-raw { system = "x86_64-linux"; }; { anything-sync-daemon = callPackage ./pkgs/anything-sync-daemon {}; discord-krisp-fixer = callPackage ./pkgs/discord-krisp-fixer {}; }; }; nixosConfigurations = { Archie = nixpkgs-unstable.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; /* I used to set up nixpkgs in the flake, but doing that made defining overlays in modules impossible (or at least I could not figure out how) Also has nice side effect of making it easier to add new systems :3 */ modules = [ agenix.nixosModules.default home-manager-unstable.nixosModule nix-index-db-unstable.nixosModules.nix-index ./roles/common ./roles/desktop ./roles/kde ./roles/gaming ./roles/school ./machines/Archie ]; }; SurfaceGo = nixpkgs-unstable.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; modules = [ agenix.nixosModules.default home-manager-unstable.nixosModule nixos-hardware.nixosModules.microsoft-surface-go nix-index-db-unstable.nixosModules.nix-index ./roles/common ./roles/desktop ./roles/kde ./machines/SurfaceGo ]; }; SteamDeck = nixpkgs-unstable.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; modules = [ agenix.nixosModules.default jovian.nixosModules.default home-manager-unstable.nixosModule nix-index-db-unstable.nixosModules.nix-index ./roles/common ./roles/desktop ./roles/kde ./roles/gaming ./roles/school ./machines/SteamDeck ]; }; WinMax2 = nixpkgs-unstable.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; modules = [ agenix.nixosModules.default jovian.nixosModules.default home-manager-unstable.nixosModule nix-index-db-unstable.nixosModules.nix-index nixos-hardware.nixosModules.gpd-win-max-2-2023 ./roles/common ./roles/desktop ./roles/kde ./roles/gaming ./roles/school ./machines/WinMax2 ]; }; Everest = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs-raw; flakeSelf = self; }; modules = [ agenix.nixosModules.default home-manager.nixosModule nix-index-db.nixosModules.nix-index ./roles/common ./roles/server ./machines/Everest ]; }; }; }; }