diff --git a/apps/home/neovim/neovim.nix b/apps/home/neovim/neovim.nix new file mode 100644 index 0000000..3e960d2 --- /dev/null +++ b/apps/home/neovim/neovim.nix @@ -0,0 +1,9 @@ +{ + inputs, + system, + ... +}: { + home.packages = [ + inputs.nixovim.packages.${system}.full + ]; +} diff --git a/config.nix b/config.nix new file mode 100644 index 0000000..a8ad11c --- /dev/null +++ b/config.nix @@ -0,0 +1,27 @@ +{ + myConfig = { + nixos = { + username = "kenji"; + hostname = "hakase"; + timezone = "America/Chicago"; + shell = "fish"; + }; + git = { + username = "kenji"; + email = "kenji@hakase"; + defaultBranch = "master"; + }; + ssh = { + extraConfig = '' + Host macair + User biscuit + HostName 192.168.68.81 + + Host gitea.sakamoto.dev + User kenji + ProxyCommand cloudflared access ssh --hostname %h + HostName gitea.sakamoto.dev + ''; + }; + }; +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a644859 --- /dev/null +++ b/flake.nix @@ -0,0 +1,42 @@ +{ + description = "Hakase Configuration"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixovim = { + url = "git+https://git.sakamoto.dev/kenji/nixovim.git"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { + self, + nixpkgs, + home-manager, + nixovim, + ... + } @ inputs: let + config = import ./config.nix; + system = "x86_64-linux"; + args = + { + inherit inputs system; + } + // config; + in { + nixosConfigurations = { + hakase = nixpkgs.lib.nixosSystem { + specialArgs = args; + modules = [ + home-manager.nixosModules.home-manager + ./hosts/hakase/configuration.nix + ]; + }; + }; + }; +} diff --git a/home/hakase.nix b/home/hakase.nix new file mode 100644 index 0000000..bd56dc6 --- /dev/null +++ b/home/hakase.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + imports = [ + ../modules/home/terminal.nix + ]; +} diff --git a/hosts/hakase/configuration.nix b/hosts/hakase/configuration.nix new file mode 100644 index 0000000..971e3a4 --- /dev/null +++ b/hosts/hakase/configuration.nix @@ -0,0 +1,9 @@ +{pkgs, ...}: { + imports = [ + ../../system/version.nix + ../../system/user.nix + ../../system/home-manager.nix + ../../system/hardware.nix + ../../system/services.nix + ]; +} diff --git a/modules/home/terminal.nix b/modules/home/terminal.nix new file mode 100644 index 0000000..629f8e5 --- /dev/null +++ b/modules/home/terminal.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ../../apps/home/neovim/neovim.nix + ]; +} diff --git a/system/hardware.nix b/system/hardware.nix new file mode 100644 index 0000000..563a14e --- /dev/null +++ b/system/hardware.nix @@ -0,0 +1,16 @@ +{pkgs, ...}: { + hardware = { + bluetooth = { + enable = true; + powerOnBoot = true; + }; + networking = { + networkmanager.enable = true; + firewall = { + enable = true; + allowedTCPPorts = [22 80]; + allowedUDPPorts = [53]; + }; + }; + }; +} diff --git a/system/home-manager.nix b/system/home-manager.nix new file mode 100644 index 0000000..3506638 --- /dev/null +++ b/system/home-manager.nix @@ -0,0 +1,16 @@ +{ + specialArgs, + myConfig, + ... +}: { + home-manager = { + backupFileExtension = "backup"; + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = specialArgs; + users.${myConfig.nixos.username} = import ../home/hakase.nix; + }; + + imports = [ + ]; +} diff --git a/system/services.nix b/system/services.nix new file mode 100644 index 0000000..bf7980b --- /dev/null +++ b/system/services.nix @@ -0,0 +1,20 @@ +{pkgs, ...}: { + services = { + openssh.enable = true; + blueman.enable = true; + # Complements printer support + printing.enable = true; + avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + pipewire = { + enable = true; + alsa = { + enable = true; + support32bit = true; + }; + }; + }; +} diff --git a/system/user.nix b/system/user.nix new file mode 100644 index 0000000..7c3ea2b --- /dev/null +++ b/system/user.nix @@ -0,0 +1,15 @@ +{ + pkgs, + myConfig, + ... +}: { + users = { + users = { + ${myConfig.nixos.username} = { + isNormalUser = true; + extraGroups = ["wheel" "networkmanager" "input" "video"]; + useDefaultShell = true; + }; + }; + }; +} diff --git a/system/version.nix b/system/version.nix new file mode 100644 index 0000000..a967d1d --- /dev/null +++ b/system/version.nix @@ -0,0 +1,4 @@ +{pkgs, ...}: { + system.stateVersion = "25.05"; + nixpkgs.config.allowUnfree = true; +}