{ description = "flake for multiple systems"; inputs = { # default nix flake imports nixpkgs = { url = "github:nixos/nixpkgs/nixos-unstable"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; # custom flakes ## nix-flatpaks nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest"; }; outputs = inputs @ { nixpkgs, home-manager, ... }: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; }; commonLibs = with pkgs; lib.makeLibraryPath [ acl attr bzip2 curl stdenv.cc.cc libsodium libssh libxml2 libz musl openssl util-linux xz zlib zstd ]; commonModules = [ home-manager.nixosModules.home-manager { home-manager = { extraSpecialArgs = { inherit inputs; system = system; }; useGlobalPkgs = true; useUserPackages = true; users.aethrvmn = import ./home-manager; backupFileExtension = "backup"; }; } ./modules/common ]; ClientModules = [ inputs.nix-flatpak.nixosModules.nix-flatpak ./modules/client ]; ServerModules = [ ./modules/server ]; mkHost = { hostPath, extraModules }: nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ hostPath ] ++ extraModules; }; in { nixosConfigurations = { pad = mkHost { hostPath = ./hosts/pad; extraModules = commonModules ++ ClientModules; }; station = mkHost { hostPath = ./hosts/station; extraModules = commonModules ++ ClientModules ++ ServerModules; }; server = mkHost { hostPath = ./hosts/server; extraModules = commonModules ++ ServerModules; }; }; # -------------- devShells -------------# devShells.x86_64-linux = { python = pkgs.mkShell { name = "python"; packages = with pkgs; [ (python3.withPackages (py-pkgs: with py-pkgs; [ python-lsp-ruff python-lsp-server ruff ])) (poetry.override { python3 = python313; }) ]; shellHook = '' echo "$(python --version)" echo "$(poetry --version)" ''; env.LD_LIBRARY_PATH = commonLibs; }; nim = pkgs.mkShell { name = "nim"; packages = with pkgs; [ musl nim nimble nimlangserver upx ]; shellHook = '' echo "$(nim --version)" echo "$(nimble --version)" echo "nimlangserver $(nimlangserver --version)" ''; env.LD_LIBRARY_PATH = commonLibs; }; js = pkgs.mkShell { name = "js"; packages = with pkgs; [ bun ]; shellHook = '' echo "$(bun --version)" ''; env.LD_LIBRARY_PATH = commonLibs; }; }; }; }