{ description = "Alex's super mega awesome nixos config"; # A flake's inputs specify the dependencies that get pulled in. Each input is pinned to a specific version (the git commit) of that dependency. inputs = { nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; # This flake also takes in nixpkgs as its own input, so we can override it here to ensure the same pkgs are used! }; firefox-addons = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; inputs.nixpkgs.follows = "nixpkgs"; }; atau-nixpkgs = { url = "git+https://git.atauno.com/atau/atau-nixpkgs?ref=main&rev=1e72f4b1e9b7a2991e3ccdebbe75d312f016da3b"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, home-manager, firefox-addons, ... }@inputs: let pcUser = "alex"; pcSystem = "x86_64-linux"; mkPcSystem = { user, hostname, system, inputs }: nixpkgs.lib.nixosSystem { inherit system; modules = [ ./config/hosts/${hostname} ] ++ (import ./config/modules/home-manager.nix { inherit system inputs user; }).modules; }; in { nixosConfigurations = { ## ---- personal computers (linux) ---- nixos76 = mkPcSystem { hostname = "nixos76"; user = pcUser; system = pcSystem; inherit inputs; }; thelio76 = mkPcSystem { hostname = "thelio76"; user = pcUser; system = pcSystem; inherit inputs; }; ## ---- servers ---- ursa-minor = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = [ ./ursa-minor/configuration.nix ]; }; ursa-major = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = [ ./ursa-major/configuration.nix ]; }; atauno = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = [ ./atauno/configuration.nix ]; }; }; }; }