{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; # nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Use relative to get current version for testing common.url = "path:../../common"; # Pin to specific version # common.url = "git+https://git.joshuabell.xyz/dotfiles?rev=88f2d95e6a871f084dccfc4f45ad9d2b31720998"; ros_neovim.url = "git+https://git.joshuabell.xyz/nvim"; }; outputs = { nixpkgs, common, ... }@inputs: let configuration_name = "lio"; lib = nixpkgs.lib; in { nixosConfigurations = { "${configuration_name}" = let auto_modules = builtins.concatMap ( input: lib.optionals (builtins.hasAttr "nixosModules" input && builtins.hasAttr "default" input.nixosModules) [ input.nixosModules.default ] ) (builtins.attrValues inputs); in (lib.nixosSystem { modules = [ ./configuration.nix ./hardware-configuration.nix (import ./containers.nix { inherit inputs; }) ( { config, pkgs, ... }: { ringofstorms_common = { systemName = configuration_name; boot.systemd.enable = true; general = { disableRemoteBuildsOnLio = true; }; desktopEnvironment.gnome.enable = true; programs = { qFlipper.enable = true; rustDev.enable = true; uhkAgent.enable = true; tailnet.enable = true; ssh.enable = true; docker.enable = true; }; users = { # Users are all normal users and default password is password1 admins = [ "josh" ]; # First admin is also the primary user owning nix config users = { josh = { openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJN2nsLmAlF6zj5dEBkNSJaqcCya+aB6I0imY8Q5Ew0S nix2lio" ]; extraGroups = [ "networkmanager" "video" "input" ]; shell = pkgs.zsh; packages = with pkgs; [ signal-desktop spotify blender google-chrome discordo discord firefox-esr openscad vlc bitwarden vaultwarden ]; }; }; }; homeManager = { users = { josh = { imports = with common.homeManagerModules; [ tmux atuin kitty direnv git nix_deprecations obs postgres slicer ssh starship zoxide zsh ]; }; }; }; }; programs = { steam.enable = true; }; environment.systemPackages = with pkgs; [ lua qdirstat # qflipper steam ]; # Also allow this key to work for root user, this will let us use this as a remote builder easier users.users.root.openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJN2nsLmAlF6zj5dEBkNSJaqcCya+aB6I0imY8Q5Ew0S nix2lio" ]; # Allow emulation of aarch64-linux binaries for cross compiling boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; } ) ] ++ auto_modules; specialArgs = { inherit inputs; }; }); }; }; }