diff --git a/hosts/template.nix b/hosts/template.josh.nix similarity index 100% rename from hosts/template.nix rename to hosts/template.josh.nix diff --git a/hosts/template.luser.nix b/hosts/template.luser.nix new file mode 100644 index 0000000..8e3c256 --- /dev/null +++ b/hosts/template.luser.nix @@ -0,0 +1,112 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; + home-manager.url = "github:rycee/home-manager/release-25.05"; + + # Use relative to get current version for testing + # common.url = "path:../../flakes/common"; + common.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/common"; + # secrets.url = "path:../../flakes/secrets"; + secrets.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/secrets"; + + ros_neovim.url = "git+https://git.joshuabell.xyz/ringofstorms/nvim"; + }; + + outputs = + { + nixpkgs, + home-manager, + common, + secrets, + ros_neovim, + ... + }: + let + configuration_name = "SYSTEM_NAME"; + system = "x86_64-linux"; + stateVersion = "25.05"; + primaryUser = "luser"; + lib = nixpkgs.lib; + in + { + nixosConfigurations = { + "${configuration_name}" = ( + lib.nixosSystem { + inherit system; + modules = [ + home-manager.nixosModules.default + + secrets.nixosModules.default + ros_neovim.nixosModules.default + + common.nixosModules.essentials + common.nixosModules.git + common.nixosModules.tmux + common.nixosModules.boot_systemd + common.nixosModules.hardening + common.nixosModules.jetbrains_font + common.nixosModules.nix_options + common.nixosModules.tailnet + common.nixosModules.timezone_auto + common.nixosModules.tty_caps_esc + common.nixosModules.zsh + ( + { + config, + pkgs, + upkgs, + lib, + ... + }: + rec { + # Home Manager + home-manager = { + useUserPackages = true; + useGlobalPkgs = true; + backupFileExtension = "bak"; + # add all normal users to home manager so it applies to them + users = lib.mapAttrs (name: user: { + home.stateVersion = stateVersion; + programs.home-manager.enable = true; + }) (lib.filterAttrs (name: user: user.isNormalUser or false) users.users); + + sharedModules = [ + common.homeManagerModules.tmux + common.homeManagerModules.atuin + common.homeManagerModules.direnv + common.homeManagerModules.git + common.homeManagerModules.postgres_cli_options + common.homeManagerModules.ssh + common.homeManagerModules.starship + common.homeManagerModules.zoxide + common.homeManagerModules.zsh + ]; + }; + + # System configuration + system.stateVersion = stateVersion; + networking.hostName = configuration_name; + programs.nh.flake = "/home/${primaryUser}/.config/nixos-config/hosts/${config.networking.hostName}"; + nixpkgs.config.allowUnfree = true; + users.users = { + "${primaryUser}" = { + isNormalUser = true; + initialPassword = "password1"; + extraGroups = [ + "wheel" + "networkmanager" + "input" + ]; + openssh.authorizedKeys.keys = [ + "REPLACE" + ]; + }; + }; + } + ) + ]; + } + ); + }; + }; +}