{ description = "grimmauld-nixos"; inputs = { nixpkgs = { url = "github:NixOS/nixpkgs/nixos-unstable"; # url = "git+file:///home/grimmauld/coding/nixpkgs"; }; chaotic = { url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; inputs.nixpkgs.follows = "nixpkgs"; }; agenix = { url = "github:yaxitech/ragenix"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-mailserver = { url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-matrix-modules = { url = "github:dali99/nixos-matrix-modules"; inputs.nixpkgs.follows = "nixpkgs"; }; # ranger_udisk_menu.url = "git+https://git.grimmauld.de/Grimmauld/ranger_udisk_menu"; # glibc-eac.url = "github:Frogging-Family/glibc-eac"; aagl-gtk-on-nix = { url = "github:ezKEa/aagl-gtk-on-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; aa-alias-manager = { url = "github:LordGrimmauld/aa-alias-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs-update = { url = "github:nix-community/nixpkgs-update"; # inputs.nixpkgs.follows = "nixpkgs"; }; apparmor-dev = { url = "github:LordGrimmauld/apparmor-dev"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { # https://github.com/nix-community/home-manager/issues/3415 # https://github.com/nix-community/home-manager/pull/2548 # url = "github:nix-community/home-manager"; url = "git+file:///home/grimmauld/coding/home-manager"; # url = "github:pasqui23/home-manager/nixos-late-start"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, agenix, nixpkgs, chaotic, aagl-gtk-on-nix, nixos-mailserver, nixos-matrix-modules, aa-alias-manager, nixpkgs-update, apparmor-dev, home-manager, ... }: let patches = [ { url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/368415.patch"; hash = "sha256-P5+8Y/XLF1xv66kr69idNWKsD9WYyTAE3twv5C5NvIg="; } ]; customNixosSystem = system: definitions: let unpatched = nixpkgs.legacyPackages.${system}; patched = unpatched.applyPatches { name = "nixpkgs-patched"; src = inputs.nixpkgs; patches = map (p: if (builtins.isPath p) then p else (unpatched.fetchpatch p)) patches; }; nixosSystem = if patches == [ ] then nixpkgs.lib.nixosSystem else import (patched + "/nixos/lib/eval-config.nix"); in nixosSystem ( { inherit system; specialArgs = { inherit inputs system; }; } // definitions ); systems = [ "x86_64-linux" "aarch64-linux" ]; forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system); in { formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style); nixosConfigurations = { grimmauld-nixos = customNixosSystem "x86_64-linux" { modules = [ agenix.nixosModules.default chaotic.nixosModules.default aagl-gtk-on-nix.nixosModules.default ./configuration.nix ./specific/grimm-nixos-laptop/configuration.nix ]; }; grimm-nixos-ssd = customNixosSystem "x86_64-linux" { modules = [ agenix.nixosModules.default chaotic.nixosModules.default aagl-gtk-on-nix.nixosModules.default ./configuration.nix aa-alias-manager.nixosModules.default # apparmor-dev.nixosModules.default ./specific/grimm-nixos-ssd/configuration.nix ( { modulesPath, lib, ... }: { imports = lib.singleton "${modulesPath}/profiles/hardened.nix"; } ) home-manager.nixosModules.home-manager ./hm ]; }; grimmauld-nixos-server = customNixosSystem "x86_64-linux" { modules = [ agenix.nixosModules.default nixos-matrix-modules.nixosModules.default nixos-mailserver.nixosModules.default ./configuration.nix ./specific/grimmauld-nixos-server/configuration.nix ./modules ]; }; }; }; }