diff --git a/README.md b/README.md index c15328d..3faefc5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,68 @@ # Wyatt's Nix configuration Designed and developed by Wyatt J. Miller, 2024 + +Licensed by the Mozilla Public License v2 + +## What is this?? + +This repository is my multi-machine Nix configuration, written in a Nix flake! + +## How do I get this? + +Make sure the following is installed: + +- `git` (most operating systems come with git already installed) +- `nix` (if you are on macOS or a non-NixOS system) + +If you don't have `git` installed and are running macOS, run the following command: + +```bash +sudo xcode-select --install +``` + +If you don't have `nix` installed and are running Linux, use the Determinate Nix Installer! + +```bash +curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install +``` + +If you don't have `nix` installed and are running macOS, use the Determinate Nix Installer! + +```bash +curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install +``` + +There's a separate installer Determinate Systems releases (and feel free to try it) but that's not on the install list here. + +Once you got everything required, it's clonin' time! + +```bash +git clone https://scm.wyattjmiller.com/wymiller/nix-config-v2 +``` + +Once that's done, head to the next section. + +## How do I run this? + +For NixOS systems: + +```bash +sudo nixos-rebuild switch --flake .# +``` + +For macOS systems: + +```bash +nix run nix-darwin --extra-experimental-features nix-command --extra-experimental-features flakes -- switch --flake .# +``` + +_or_ + +```bash +darwin-rebuild switch --flake .# +``` + +where `` is the particular configuration you would like to run. + +Non-NixOS Linux systems should be coming soon! diff --git a/flake.lock b/flake.lock index 7e3367e..087431b 100644 --- a/flake.lock +++ b/flake.lock @@ -3,19 +3,20 @@ "darwin": { "inputs": { "nixpkgs": [ - "nixpkgs-darwin" + "nixpkgs" ] }, "locked": { - "lastModified": 1722082646, - "narHash": "sha256-od8dBWVP/ngg0cuoyEl/w9D+TCNDj6Kh4tr151Aax7w=", + "lastModified": 1730448474, + "narHash": "sha256-qE/cYKBhzxHMtKtLK3hlSR3uzO1pWPGLrBuQK7r0CHc=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "0413754b3cdb879ba14f6e96915e5fdf06c6aab6", + "rev": "683d0c4cd1102dcccfa3f835565378c7f3cbe05e", "type": "github" }, "original": { "owner": "lnl7", + "ref": "master", "repo": "nix-darwin", "type": "github" } @@ -27,16 +28,15 @@ ] }, "locked": { - "lastModified": 1720042825, - "narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=", + "lastModified": 1730490306, + "narHash": "sha256-AvCVDswOUM9D368HxYD25RsSKp+5o0L0/JHADjLoD38=", "owner": "nix-community", "repo": "home-manager", - "rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073", + "rev": "1743615b61c7285976f85b303a36cdf88a556503", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-24.05", "repo": "home-manager", "type": "github" } @@ -57,34 +57,52 @@ "type": "github" } }, - "nixpkgs": { + "nix-ld": { + "inputs": { + "nixpkgs": "nixpkgs" + }, "locked": { - "lastModified": 1725407940, - "narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3", + "lastModified": 1728031945, + "narHash": "sha256-NRkLjdMtVfC6dD1gEbYZWFEtbmC2xfD6ft1IP7l76Vw=", + "owner": "Mic92", + "repo": "nix-ld", + "rev": "4524c512e8729ccb5a1b9239d01e1474cbf074a2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-24.05", + "owner": "Mic92", + "repo": "nix-ld", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1727634051, + "narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-darwin": { + "nixpkgs_2": { "locked": { - "lastModified": 1725498621, - "narHash": "sha256-m12se55InZz03onhRji85deKJp4i0jrw980aDdxT0IM=", + "lastModified": 1726243404, + "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0409a1b650bb50c225485f2ca21c325eb33f45c7", + "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-24.05-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -94,8 +112,8 @@ "darwin": "darwin", "home-manager": "home-manager", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs", - "nixpkgs-darwin": "nixpkgs-darwin" + "nix-ld": "nix-ld", + "nixpkgs": "nixpkgs_2" } } }, diff --git a/flake.nix b/flake.nix index fb5c50b..5abd142 100644 --- a/flake.nix +++ b/flake.nix @@ -1,16 +1,16 @@ { description = "Wyatt's nix configuration suite"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; - nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-24.05-darwin"; + nix-ld.url = "github:Mic92/nix-ld"; home-manager = { - url = "github:nix-community/home-manager/release-24.05"; + url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; darwin = { - url = "github:lnl7/nix-darwin"; - inputs.nixpkgs.follows = "nixpkgs-darwin"; + url = "github:lnl7/nix-darwin/master"; + inputs.nixpkgs.follows = "nixpkgs"; }; }; @@ -18,6 +18,7 @@ self, nixpkgs, nix-flatpak, + nix-ld, darwin, home-manager, ... @@ -36,10 +37,10 @@ hostname = "sephiroth"; }; modules = [ - ./modules/nix-core.nix - ./modules/darwin/configuration.nix - ./modules/darwin/apps.nix - ./modules/host-users.nix + ./modules/common/core.nix + ./modules/common/users.nix + ./modules/machine/sephiroth/configuration.nix + ./modules/machine/sephiroth/apps.nix home-manager.darwinModules.home-manager { @@ -52,17 +53,19 @@ }; # Primary desktop computer - nixosConfiguration."cloud" = nixpkgs.lib.nixosSystem { + nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit userName userEmail; hostname = "cloud"; }; modules = [ - /etc/nixos/configuration.nix - ./modules/nix-core.nix - ./modules/nixos/configuration.nix - ./modules/host-users.nix + nix-flatpak.nixosModules.nix-flatpak + nix-ld.nixosModules.nix-ld + ./modules/common/core.nix + ./modules/common/users.nix + ./modules/machine/cloud/hardware-configuration.nix + ./modules/machine/cloud/configuration.nix home-manager.nixosModules.home-manager { @@ -70,11 +73,61 @@ home-manager.useUserPackages = true; home-manager.extraSpecialArgs = extraSpecialArgs; home-manager.users.${userName}.imports = [ - nix-flatpak.homeManagerModules.nix-flatpak ./home ]; } ]; }; + + # Apartment appliance server + nixosConfigurations."valefor" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit userName userEmail; + hostname = "valefor"; + }; + # modules = [ + # nix-ld.nixosModules.nix-ld + # ./modules/nix-core.nix + # ./modules/host-users.nix + # + # home-manager.nixosModules.home-manager + # { + # home-manager.useGlobalPkgs = true; + # home-manager.useUserPackages = true; + # home-manager.extraSpecialArgs = extraSpecialArgs; + # home-manager.users.${userName}.imports = [ + # ./home + # ]; + # } + # ]; + }; + + # Storage, status, game, and media server + nixosConfigurations."ixion" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit userName userEmail; + hostname = "ixion"; + }; + # modules = [ + # nix-flatpak.nixosModules.nix-flatpak + # nix-ld.nixosModules.nix-ld + # ./modules/nixos/hardware-configuration.nix + # ./modules/nix-core.nix + # ./modules/nixos/configuration.nix + # ./modules/host-users.nix + # + # home-manager.nixosModules.home-manager + # { + # home-manager.useGlobalPkgs = true; + # home-manager.useUserPackages = true; + # home-manager.extraSpecialArgs = extraSpecialArgs; + # home-manager.users.${userName}.imports = [ + # ./home + # ]; + # } + # ]; + }; }; } diff --git a/home/default.nix b/home/default.nix index 7adf604..84f605a 100644 --- a/home/default.nix +++ b/home/default.nix @@ -15,7 +15,7 @@ in { imports = map (module: import module {inherit lib pkgs dirs userName userEmail;}) [ ./atuin.nix ./shell.nix - ./core.nix + ./packages ./git.nix ./starship.nix ./eza.nix @@ -33,9 +33,23 @@ in { if pkgs.stdenv.isDarwin then "/Users/${userName}" else "/home/${userName}"; + sessionVariables = { XDG_CURRENT_DESKTOP = "sway"; + XDG_SESSION_TYPE = "wayland"; + XDG_CONFIG_HOME = "$HOME/.config"; + XDG_CACHE_HOME = "$HOME/.cache"; + XDG_DATA_HOME = "$HOME/.local/share"; + XDG_STATE_HOME = "$HOME/.local/state"; }; + + pointerCursor = lib.mkIf pkgs.stdenv.isLinux { + gtk.enable = true; + package = pkgs.catppuccin-cursors.mochaDark; + name = "catppuccin-mocha-dark-cursors"; + size = 22; + }; + stateVersion = "24.05"; }; diff --git a/home/flatpak.nix b/home/flatpak.nix index 933e61a..6b4a586 100644 --- a/home/flatpak.nix +++ b/home/flatpak.nix @@ -1,12 +1,6 @@ {...}: { services.flatpak = { - remotes = [ - { - name = "flathub"; - location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; - } - ]; - + enable = true; packages = [ "com.github.tchx84.Flatseal" "com.slack.Slack" diff --git a/home/git.nix b/home/git.nix index 43bbe6e..532edb6 100644 --- a/home/git.nix +++ b/home/git.nix @@ -32,7 +32,8 @@ # common aliases br = "branch"; co = "checkout"; - st = "status"; + st = "status -sb"; + status = "status -sb"; ls = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate"; ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat"; cm = "commit -m"; diff --git a/home/core.nix b/home/packages/common.nix similarity index 84% rename from home/core.nix rename to home/packages/common.nix index 64ac322..ea7a501 100644 --- a/home/core.nix +++ b/home/packages/common.nix @@ -21,6 +21,9 @@ fh aria2 yt-dlp + obsidian + vscode + weechat # misc cowsay @@ -43,17 +46,5 @@ deadnix alejandra statix - - # productivity - iterm2 - discord - obsidian - vscode - weechat - # iamb - ollama - - # games? - # prismlauncher ]; } diff --git a/home/packages/darwin.nix b/home/packages/darwin.nix new file mode 100644 index 0000000..4306b58 --- /dev/null +++ b/home/packages/darwin.nix @@ -0,0 +1,10 @@ +{ + pkgs, + lib, + ... +}: { + home.packages = lib.mkIf pkgs.stdenv.isDarwin (with pkgs; [ + discord + ollama + ]); +} diff --git a/home/packages/default.nix b/home/packages/default.nix new file mode 100644 index 0000000..58789ec --- /dev/null +++ b/home/packages/default.nix @@ -0,0 +1,11 @@ +{ + pkgs, + lib, + ... +}: { + imports = [ + ./common.nix + ./darwin.nix + ./linux.nix + ]; +} diff --git a/home/packages/linux.nix b/home/packages/linux.nix new file mode 100644 index 0000000..af40187 --- /dev/null +++ b/home/packages/linux.nix @@ -0,0 +1,12 @@ +{ + pkgs, + lib, + ... +}: { + home.packages = lib.mkIf pkgs.stdenv.isLinux (with pkgs; [ + imv + betterdiscordctl + vesktop + xdg-utils + ]); +} diff --git a/home/shell.nix b/home/shell.nix index 559e7c6..0704c2f 100644 --- a/home/shell.nix +++ b/home/shell.nix @@ -69,4 +69,19 @@ fi ''; }; + + + programs.bash = { + enable = true; + initExtra = '' + if [[ -z "$BASH_EXECUTION_STRING" ]]; then + if [[ -n "$ZSH_VERSION" ]]; then + LOGIN_OPTION="--login" + else + LOGIN_OPTION="" + fi + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; } diff --git a/home/sway.nix b/home/sway.nix index d698b69..5b9f88e 100644 --- a/home/sway.nix +++ b/home/sway.nix @@ -1,6 +1,10 @@ -{pkgs, ...}: let +{ + lib, + pkgs, + ... +}: let dirs = { - defaults = ./defaults; + defaults = ../defaults; }; in { wayland.windowManager.sway = { @@ -14,87 +18,14 @@ in { }; }; - programs.wofi.enable = pkgs.stdenv.isLinux; - programs.mako.enable = pkgs.stdenv.isLinux; + xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config); + xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config); + xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css); + programs.rofi.enable = pkgs.stdenv.isLinux; + services.mako.enable = pkgs.stdenv.isLinux; # programs.cliphist.enable = pkgs.stdenv.isLinux; programs.waybar = { enable = pkgs.stdenv.isLinux; systemd.enable = true; - style = '' - * { - border: none; - border-radius: 0; - font-family: "Monaspace Krypton"; - font-size: 13px; - min-height: 0; - } - - window#waybar { - background: #1f2335; - border-bottom: 1px solid #24283b; - color: #c0caf5; - opacity: 0.808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808; - } - - #workspaces button { - padding: 5px; - padding-left: 12px; - padding-right: 12px; - background: transparent; - color: #c0caf5; - border-bottom: 1px solid transparent; - } - - #workspaces button.focused { - background: #c0caf5; - color: #1d2021; - border-bottom: 1px solid #c0caf5; - } - - #cpu, - #memory, - #pulseaudio, - #network, - #battery, - #clock, - #custom-playerctl { - padding: 0 10px; - margin: 0 5px; - } - - #battery.charging { - color: #9ece6a; - } - - #battery.warning:not(.charging) { - color: #ff9e64; - } - - @keyframes blink { - to { - background-color: #1d2021; - color: #ebdbb2; - } - } - - #battery.critical:not(.charging) { - background: #f7768e; - color: #ebdbb2; - border-bottom: 1px solid #ebdbb2; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; - } - - #network.disconnected { - color: #cc241d; - } - - #pulseaudio.muted { - color: #cc241d; - } - ''; }; } diff --git a/modules/common/README.md b/modules/common/README.md new file mode 100644 index 0000000..42bc1c6 --- /dev/null +++ b/modules/common/README.md @@ -0,0 +1,9 @@ +# Shared configurations + +Developed and designed by Wyatt J. Miller, 2024 + +Licensed by the Mozilla Public License v2 + +## Synopsis + +This is the directory that holds shared configuration files amongst computers that I own. They are called by the root `flake.nix` file. diff --git a/modules/nix-core.nix b/modules/common/core.nix similarity index 63% rename from modules/nix-core.nix rename to modules/common/core.nix index c908c6e..1bd62c9 100644 --- a/modules/nix-core.nix +++ b/modules/common/core.nix @@ -1,19 +1,14 @@ - -{ pkgs, lib, ... }: - { + pkgs, + lib, + ... +}: { # enable flakes globally - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.experimental-features = ["nix-command" "flakes"]; # Allow unfree packages nixpkgs.config.allowUnfree = true; - # Auto upgrade nix package and the daemon service. - services.nix-daemon.enable = true; - # Use this instead of services.nix-daemon.enable if you - # don't wan't the daemon service to be managed for you. - # nix.useDaemon = true; - nix.package = pkgs.nix; # do garbage collection weekly to keep disk usage low diff --git a/modules/host-users.nix b/modules/common/users.nix similarity index 54% rename from modules/host-users.nix rename to modules/common/users.nix index bc78d23..d8185d8 100644 --- a/modules/host-users.nix +++ b/modules/common/users.nix @@ -1,4 +1,5 @@ { + lib, pkgs, userName, hostname, @@ -6,22 +7,31 @@ } @ args: { # Set up networking configuration networking.hostName = hostname; - networking.computerName = hostname; + # networking.computerName = hostname; # networking.firewall.enable = true; # VERY important, do not touch # networking.firewall.allowedTCPPorts = []; # networking.firewall.allowedUDPPorts = []; # networking.networkmanager.enable = pkgs.stdenv.isLinux; # Linux tool for managing network connections - system.defaults.smb.NetBIOSName = hostname; + # system.defaults.smb.NetBIOSName = hostname; # Set up user accounts # Don't forget to set a password with ‘passwd’! - users.users."${userName}" = { - home = - if pkgs.stdenv.isDarwin - then "/Users/${userName}" - else "/home/${userName}"; - description = userName; - }; + users.users."${userName}" = lib.mkMerge [ + { + home = + if pkgs.stdenv.isDarwin + then "/Users/${userName}" + else "/home/${userName}"; + description = userName; + } + + (lib.mkIf (pkgs.stdenv.isLinux) { + group = "${userName}"; + isNormalUser = true; + }) + ]; + + users.groups.wyatt = {}; nix.settings.trusted-users = [userName]; } diff --git a/modules/machine/README.md b/modules/machine/README.md new file mode 100644 index 0000000..66b8967 --- /dev/null +++ b/modules/machine/README.md @@ -0,0 +1,15 @@ +# Machine specific configuration directories + +These are where the machine specific configurations live. + +I like Final Fantasy, alright? Isn't everyone supposed to have a hobby? + +## Naming schemes + +### Desktops, Laptops, and Workstations + +These are named after Final Fantasy VII characters. + +### Servers/Network Infrastructure + +These are named after Final Fantasy summons. diff --git a/modules/machine/cloud/README.md b/modules/machine/cloud/README.md new file mode 100644 index 0000000..6650285 --- /dev/null +++ b/modules/machine/cloud/README.md @@ -0,0 +1,9 @@ +# Machine specific configuration - cloud + +Designed and developed by Wyatt J. Miller, 2024 + +Licensed by the Mozilla Public License v2 + +## Synopsis + +This directory is where the machine-specific configuration files for hostname `cloud` live, my primary desktop. These files get called by the root `flake.nix` file. diff --git a/modules/nixos/configuration.nix b/modules/machine/cloud/configuration.nix similarity index 58% rename from modules/nixos/configuration.nix rename to modules/machine/cloud/configuration.nix index 0c06960..ea02bb2 100644 --- a/modules/nixos/configuration.nix +++ b/modules/machine/cloud/configuration.nix @@ -1,16 +1,8 @@ { - inputs, - config, - lib, pkgs, userName, ... }: { - # Bring in the hardware configuration - imports = [ - /etc/nixos/hardware-configuration.nix - ]; - # Enable flakes for NixOS nix.settings.experimental-features = ["nix-command" "flakes"]; @@ -20,9 +12,9 @@ # Install and enable common graphics drivers hardware.opengl = { - driSupport = true; + # driSupport = true; extraPackages = with pkgs; [ - mesa_drivers + mesa libvdpau-va-gl libva libva-utils @@ -34,17 +26,17 @@ # For systems with AMD graphics, this enables Vulkan on 32-bit applications # For 64-bit application, however, Vulkan is enabled by default - hardware.graphics.driSupport32Bit = true; + # hardware.graphics.driSupport32Bit = true; # For systems with AMD graphics, enable AMDVLK - hardware.hardware = { - extraPackages = with pkgs; [ - amdvlk - ]; - extraPackages32 = with pkgs; [ - driversi686Linux - ]; - }; + #hardware.graphics = { + # extraPackages = with pkgs; [ + # amdvlk + # ]; + # extraPackages32 = with pkgs; [ + # driversi686Linux + # ]; + #}; # Enable Bluetooth if present hardware.bluetooth.enable = true; @@ -68,14 +60,21 @@ git wireguard-tools podman + buildah + podman-tui + podman-compose + podman-desktop toolbox grim slurp playerctl light brightnessctl + firefox wttrbar cliphist + xivlauncher + patchelf ]; # Install system-wide fonts @@ -120,16 +119,31 @@ programs.steam = { enable = true; remotePlay.openFirewall = true; - localNetworkGameTransfers = true; + localNetworkGameTransfers.openFirewall = true; }; + # Enable gamemode (gamemode, gamemoded, gamemoderun) when needed + programs.gamemode.enable = true; + + # Enable gamescope (compositor) when needed + programs.gamescope.enable = true; + # Add username to groups "wheel" and "video" - more may be added here later - users.users.${userName}.extraGroups = ["wheel" "video"]; + users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"]; # XDG stuff xdg = { portal = { enable = true; + wlr.enable = true; + config = { + common = { + default = [ + "wlr" + ]; + }; + }; + xdgOpenUsePortal = true; extraPortals = with pkgs; [ xdg-desktop-portal-wlr xdg-desktop-portal-gtk @@ -139,10 +153,55 @@ # Firewall stuff not allowed in common user and network creation networking.firewall.enable = true; # VERY important, do not touch - # networking.firewall.allowedTCPPorts = []; - # networking.firewall.allowedUDPPorts = []; + networking.firewall.allowedTCPPorts = []; + networking.firewall.allowedUDPPorts = []; networking.networkmanager.enable = true; # Linux tool for managing network connections # Enable Flatpak (app containerization) - services.flatpak.enable = true; + # services.flatpak.enable = true; + services.flatpak = { + enable = true; + remotes = [ + { + name = "flathub"; + location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; + } + ]; + packages = [ + "com.github.tchx84.Flatseal" + "com.slack.Slack" + "info.beyondallreason.bar" + "io.dbeaver.DBeaverCommunity" + "io.openrct2.OpenRCT2" + "md.obsidian.Obsidian" + "org.prismlauncher.PrismLauncher" + "sh.cider.Cider" + ]; + update = { + auto = { + enable = true; + onCalendar = "weekly"; + }; + }; + }; + + # Enable Podman (OCI containers) + virtualisation.podman = { + enable = true; + dockerSocket.enable = true; + defaultNetwork.settings.dns_enabled = true; + }; + + services.shairport-sync = { + enable = pkgs.stdenv.isLinux; + openFirewall = pkgs.stdenv.isLinux; + arguments = "-v -o pw"; + }; + + # users.users."${userName}" = { + # group = "${userName}"; + # isNormalUser = true; + # }; + + system.stateVersion = "24.05"; } diff --git a/modules/machine/cloud/hardware-configuration.nix b/modules/machine/cloud/hardware-configuration.nix new file mode 100644 index 0000000..5c77f62 --- /dev/null +++ b/modules/machine/cloud/hardware-configuration.nix @@ -0,0 +1,45 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-amd"]; + boot.extraModulePackages = []; + + fileSystems."/" = { + device = "/dev/disk/by-label/COMPUTER"; + fsType = "xfs"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; + + swapDevices = [ + {device = "/dev/disk/by-label/SWAP";} + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp9s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp8s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/machine/ixion/README.md b/modules/machine/ixion/README.md new file mode 100644 index 0000000..c8e7023 --- /dev/null +++ b/modules/machine/ixion/README.md @@ -0,0 +1,9 @@ +# Machine specific configuration - ixion + +Designed and developed by Wyatt J. Miller, 2024 + +Licensed by the Mozilla Public License v2 + +## Synopsis + +This directory is currently empty so, currently, there's nothing to see! However, this is where the machine-specific configuration files for hostname `ixion` live, my storage, status, game, and media server. These files get called by the root `flake.nix` file. diff --git a/modules/machine/sephiroth/README.md b/modules/machine/sephiroth/README.md new file mode 100644 index 0000000..d1d7b2a --- /dev/null +++ b/modules/machine/sephiroth/README.md @@ -0,0 +1,9 @@ +# Machine specific configuration - sephiroth + +Designed and developed by Wyatt J. Miller, 2024 + +Licensed by the Mozilla Public License v2 + +## Synopsis + +This directory is where the machine-specific configuration files for hostname `sephiroth` live, my primary laptop. These files get called by the root `flake.nix` file. diff --git a/modules/darwin/apps.nix b/modules/machine/sephiroth/apps.nix similarity index 87% rename from modules/darwin/apps.nix rename to modules/machine/sephiroth/apps.nix index 4ccbd86..e603b34 100644 --- a/modules/darwin/apps.nix +++ b/modules/machine/sephiroth/apps.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: { - +{pkgs, ...}: { environment.systemPackages = with pkgs; [ neovim git @@ -19,7 +18,7 @@ # Applications to install from Mac App Store using mas. # You need to install all these Apps manually first so that your apple account have records for them. # otherwise Apple Store will refuse to install them. - # For details, see https://github.com/mas-cli/mas + # For details, see https://github.com/mas-cli/mas masApps = { Xcode = 497799835; "Reeder 5." = 1529448980; @@ -35,6 +34,8 @@ ]; casks = [ + "raycast" + "jordanbaird-ice" ]; }; } diff --git a/modules/darwin/configuration.nix b/modules/machine/sephiroth/configuration.nix similarity index 92% rename from modules/darwin/configuration.nix rename to modules/machine/sephiroth/configuration.nix index b394f80..f2adfad 100644 --- a/modules/darwin/configuration.nix +++ b/modules/machine/sephiroth/configuration.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + hostname, + ... +}: { system = { # activationScripts are executed every time you boot the system or run `nixos-rebuild` / `darwin-rebuild`. activationScripts.postUserActivation.text = '' @@ -145,6 +149,13 @@ # }; }; + networking.hostName = hostname; + networking.computerName = hostname; + # networking.firewall.enable = true; # VERY important, do not touch + # networking.firewall.allowedTCPPorts = []; + # networking.firewall.allowedUDPPorts = []; + system.defaults.smb.NetBIOSName = hostname; + # Add ability to used TouchID for sudo authentication security.pam.enableSudoTouchIdAuth = true; @@ -157,6 +168,14 @@ pkgs.bash ]; + # Auto upgrade nix package and the daemon service. + # services.nix-daemon.enable = true; + # Use this instead of services.nix-daemon.enable if you + # don't wan't the daemon service to be managed for you. + services.nix-daemon.enable = true; + + system.stateVersion = 5; + # Set your time zone. time.timeZone = "America/Detroit"; } diff --git a/modules/machine/valefor/README.md b/modules/machine/valefor/README.md new file mode 100644 index 0000000..1f2e918 --- /dev/null +++ b/modules/machine/valefor/README.md @@ -0,0 +1,9 @@ +# Machine specific configuration - valefor + +Designed and developed by Wyatt J. Miller, 2024 + +Licensed by the Mozilla Public License v2 + +## Synopsis + +This directory is currently empty so, currently, there's nothing to see! However, this is where the machine-specific configuration files for hostname `valefor` live, my apartment appliance server. These files get called by the root `flake.nix` file.