{ description = "NixOS configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nix-xilinx = { url = "gitlab:asmir.abdulahovic/nix-xilinx"; inputs.nixpkgs.follows = "nixpkgs"; }; peerix = { url = "gitlab:asmir.abdulahovic/peerix"; inputs.nixpkgs.follows = "nixpkgs"; }; zremap = { url = "git+https://git.project-cloud.net/asmir/zremap"; inputs.nixpkgs.follows = "nixpkgs"; }; swaysw = { url = "git+https://git.project-cloud.net/asmir/swaysw"; inputs.nixpkgs.follows = "nixpkgs"; }; nvim = { url = "git+https://git.project-cloud.net/asmir/nvim_flake"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; simple-nixos-mailserver = { url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; inputs.nixpkgs.follows = "nixpkgs"; }; project-cloud = { url = "git+https://git.project-cloud.net/asmir/project-cloud"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ home-manager, nixpkgs, nix-xilinx, nvim, peerix, project-cloud, simple-nixos-mailserver, sops-nix, swaysw, zremap, ... }: let pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs; in { nixosConfigurations = rec { nixy = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = [ { _module.args = inputs; } { _module.args.system = system; } { nix.registry.nixpkgs.flake = nixpkgs; } ./common/packages.nix ./common/suspend.nix ./nixy/configuration.nix ./nixy/hardware-configuration.nix sops-nix.nixosModules.sops home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.akill = import ./home/home.nix; home-manager.extraSpecialArgs = { inherit inputs system; }; home-manager.backupFileExtension = "home_backup"; } peerix.nixosModules.peerix { services.peerix = { enable = true; globalCacheTTL = 10; package = peerix.packages.x86_64-linux.peerix; openFirewall = true; # UDP/12304 privateKeyFile = nixy.config.sops.secrets."peerix/private".path; publicKeyFile = ./nixy/peerix-public; publicKey = "peerix-mediabox:UDgG3xdQYv7bmx2l4ZPNRPJtp2zMmY++H/fnGeJ9BQw="; }; } ]; }; mediabox = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = [ { _module.args = inputs; } { _module.args.system = system; } { nix.registry.nixpkgs.flake = nixpkgs; } ./common/packages.nix ./common/suspend.nix ./mediabox/configuration.nix ./mediabox/hardware-configuration.nix ./modules/qbittorrent.nix sops-nix.nixosModules.sops home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.akill = import ./home/home.nix; home-manager.extraSpecialArgs = { inherit inputs system; }; } peerix.nixosModules.peerix { services.peerix = { enable = true; globalCacheTTL = 10; package = peerix.packages.x86_64-linux.peerix; openFirewall = true; # UDP/12304 privateKeyFile = mediabox.config.sops.secrets."peerix/private".path; publicKeyFile = ./mediabox/peerix-public; publicKey = "peerix-nixy:8THqS0R2zWF/47ai0RFmqJnieYTZ1jaWOD9tnzpvA6s="; }; } ]; }; blue = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = [ { _module.args = inputs; } { _module.args.system = system; } { nix.registry.nixpkgs.flake = nixpkgs; } ./blue/configuration.nix ./blue/hardware-configuration.nix ./common/packages.nix home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.akill = import ./home/home.nix; home-manager.extraSpecialArgs = { inherit inputs system; }; } ]; }; magpie = nixpkgs.lib.nixosSystem rec { system = "aarch64-linux"; modules = [ { _module.args = inputs; } { _module.args.system = system; } { nix.registry.nixpkgs.flake = nixpkgs; } ./magpie/configuration.nix ./magpie/hardware-configuration.nix simple-nixos-mailserver.nixosModule sops-nix.nixosModules.sops (builtins.toPath "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix") ]; }; }; devShell.x86_64-linux = pkgs.mkShell { buildInputs = with pkgs; [ sops ssh-to-age age ]; shellHook = '' echo "Configuring NixOS!" ''; }; formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra; }; }