Compare commits

...

8 Commits

12 changed files with 283 additions and 9 deletions

View File

@ -8,7 +8,7 @@
"network", "custom/separator",
"cpu", "custom/separator",
"memory", "custom/separator",
"custom/mouse", "custom/separator",
"custom/laptop_batt", "custom/mouse", "custom/separator",
"pulseaudio", "custom/separator",
"custom/disk", "custom/bits"],
@ -49,6 +49,11 @@
"format-disconnected": "",
"on-click": "nm-connection-editor"
},
"custom/laptop_batt": {
"format": " 󰁹 <span color=\"#{{ .themes.gruvbox.red }}\">{}</span>% ",
"interval": 5,
"exec": "cat /sys/class/power_supply/BAT0/capacity",
},
"custom/mouse": {
"format": " 󰍽 <span color=\"#{{ .themes.gruvbox.red }}\">{}</span>% ",
"interval": 5,
@ -77,7 +82,7 @@
"spacing": 10
},
"custom/separator": {
"format": " | ",
"format": " <span color=\"#{{ .themes.gruvbox.green }}\">|</span> ",
"interval": "once",
"tooltip": false
},

View File

@ -114,6 +114,10 @@ window#waybar.hidden {
color: @fg;
}
#custom-laptop_batt {
color: @fg;
}
#custom-mouse {
color: @fg;
}

View File

@ -2,6 +2,13 @@
The following documents some NixOS setup that wasn't automated.
## Hyprland
Detecting monitor configs is annoying and I don't feel like it is worth the time
to figure out. After doing the first `chezmoi apply` you will need copy `monitors.conf.example`
in the hyprland config folder to `monitors.conf` and edit for correct monitor
settings.
## Encryption Keys
### Github SSH
@ -109,3 +116,20 @@ launch command to run them within gamescope.
```bash
gamescope -w 2560 -h 1440 -f %command%
```
## Obsidian Vault on New machine
Clone `vulcan` vault from personal github.
```bash
git clone https://<user>:<token>@git.tstarr.us/tstarr/vulcan.git
```
Copy another `.obsidian` folder for the new host (i.e. `.obsidian-<host>`).
Open vault folder in obsidian and change the `.obsidian` folder in settings.
## Wifi on Shivan
Connect to wifi network with: `nmcli device wifi connect <SSID> password <password>`.

View File

@ -51,6 +51,28 @@
];
};
shivan = lib.nixosSystem {
inherit system;
specialArgs = { inherit user; inherit inputs; };
modules = [
./modules
./hosts/shivan/configuration.nix
./hosts/shivan/hardware.nix
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit user; };
home-manager.users.${user} = {
imports = [
./home-modules
./hosts/shivan/home-configuration.nix
];
};
}
];
};
torus = lib.nixosSystem {
inherit system;
specialArgs = { inherit user; inherit inputs; };

View File

@ -16,6 +16,7 @@
settings.devices = {
"bulwark" = { id = "ZGLQ725-OJSDNTE-MXYLIUD-XDB7REJ-2B2DVNU-PAFF6VC-MUUWRI6-4SNPWAK"; };
"torus" = { id = "WCZYHD7-5Y33SSU-74JHAQR-V7LYMDM-SDG2NTN-DJ2VKF2-DUBBUE5-PU5CGQN"; };
"shivan" = { id = "KUSOQSH-RKLLA32-T3KAPQP-VNJISLL-QSQCGFZ-ZL7ZULE-MJC67DK-2U6G4Q7"; };
};
settings.folders = {
"Gamecube Saves" = {
@ -38,6 +39,10 @@
path = "/home/${user}/.local/share/ares/Saves";
devices = [ "bulwark" ];
};
"General Sync" = {
path = "/home/${user}/sync";
devices = [ "shivan" ];
};
};
};
}

View File

@ -0,0 +1,119 @@
{ config, pkgs, user, lib, ... }:
{
imports = [
./syncthing.nix
];
nix = {
package = pkgs.nixFlakes;
extraOptions = "experimental-features = nix-command flakes";
settings.auto-optimise-store = true;
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
# Add non-free packages
nixpkgs.config.allowUnfree = true;
nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" "openssl-1.1.1w" ];
nixpkgs.overlays = import ../../lib/overlays.nix;
# Use zen kernel
boot.kernelPackages = pkgs.linuxPackages_zen;
# Hardware options
hardware.bluetooth.enable = true;
hardware.bluetooth.package = pkgs.bluez;
hardware.sensor.iio.enable = true;
hardware.opengl.enable = true;
hardware.opengl.driSupport = true;
hardware.opengl.driSupport32Bit = true;
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Set networking options
networking.hostName = "shivan";
networking.firewall.checkReversePath = "loose";
networking.firewall.enable = false;
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/Los_Angeles";
i18n.defaultLocale = "en_US.UTF-8";
# Add fonts
fonts.packages = with pkgs; [
nerdfonts
];
# Enable docker
virtualisation.docker.enable = true;
# Define user account.
users.users.${user} = {
isNormalUser = true;
extraGroups = [ "dialout" "wheel" "docker" "libvirtd" ]; # Enable sudo for the user.
};
# Password-less root
security.sudo.extraRules = [{
users = [ "${user}" ];
commands = [{
command = "ALL" ;
options= [ "NOPASSWD" ];
}];
}];
# List packages installed in system profile.
environment.systemPackages = with pkgs; [
# One-off stable packages
distrobox
] ++ [
# One-off unstable packages
];
# Enable modules
modules = {
desktop = {
sway.enable = true;
browser.enable = true;
};
devel = {
engineering.enable = true;
notes.enable = true;
python.enable = true;
tooling.enable = true;
};
gaming = {
steam.enable = false;
emulation.enable = false;
misc.enable = false;
};
services = {
jellyfin.enable = false;
peripherals.enable = true;
samba-client.enable = true;
virt-manager.enable = false;
};
system = {
secrets.enable = true;
ssh.enable = true;
terminal.enable = true;
wireguard-client = {
enable = false;
#privateKeyFile = "/run/secrets/wireguard/kestrel";
#address = [ "192.168.3.3/24" ];
#publicKey = "bd7bbZOngl/FTdBlnbIhgCLNf6yx5X8WjiRB7E1NEQQ=";
#endpoint = "66.218.43.87";
};
};
};
# Did you read the comment?
system.stateVersion = "23.11";
}

View File

@ -0,0 +1,38 @@
# 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 = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/fe18234e-9b76-4c4e-bb5b-3672fa15e426";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/1940-C125";
fsType = "vfat";
};
swapDevices = [ ];
# 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.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,32 @@
{ config, pkgs, user, ... }:
{
home.username = "${user}";
home.homeDirectory = "/home/${user}";
programs.home-manager.enable = true;
# Setup direnv
programs.direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv.enable = true;
};
# Setup git
programs.git = {
enable = true;
userName = "starr-dusT";
userEmail = "starrtyler88@gmail.com";
};
home.packages = with pkgs; [
];
# Enable home modules
modules = {
desktop = {
kitty.enable = true;
};
};
home.stateVersion = "23.11";
}

View File

@ -0,0 +1,26 @@
{ config, lib, pkgs, user, ... }:
{
networking.firewall.allowedTCPPorts = [ 8384 22000 ];
networking.firewall.allowedUDPPorts = [ 22000 21027 ];
environment.systemPackages = with pkgs; [ syncthing ];
services.syncthing = {
enable = true;
user = "${user}";
dataDir = "/home/${user}/.local/share/syncthing";
configDir = "/home/${user}/.config/syncthing";
guiAddress = "0.0.0.0:8384";
overrideDevices = true;
overrideFolders = true;
settings.devices = {
"kestrel" = { id = "KYEWTBL-GL343U7-OIM63LT-2IYGJAP-RCL545L-2KJOIY4-6352W6Y-DZRVGAL"; };
};
settings.folders = {
"General Sync" = {
path = "/home/${user}/sync";
devices = [ "kestrel" ];
};
};
};
}

View File

@ -24,18 +24,16 @@ Set of configs files to setup NixOS.
git clone https://github.com/starr-dusT/dotfiles ~/.local/share/chezmoi
```
Move the installer created hardware.nix to dotfiles.
Copy `.chezmoidata.yaml.example` to `.chezmoidata.yaml` and edit with desired
settings then run the following commands:
Move the installer created hardware.nix to dotfiles. E.g. `provision/hosts/<host>/hardware.nix`.
```bash
nixos-update # Assuming hostname is same as flake name
cd ~/.local/share/chezmoi/provision
sudo nixos-rebuild switch --flake .#<host>
```
Perform additional setup found in [additional-setup](additional-setup.md)
## Update
`nixos-update` command is aliased assuming the flake is named the same at the
`nixos-rebuild` command is aliased to `nu` assuming the flake is named the same at the
hostname of the machine.

View File

@ -18,3 +18,4 @@ for information on initial installation.
| <img src="./resources/img/kestrel.png" width="100"> | [Kestrel](./provision/hosts/kestrel/) | Primary desktop | Main machine that does it all gaming, programming, 3D modelling, etc. |
| <img src="./resources/img/torus.png" width="100"> | [Torus](./provision/hosts/torus/) | Home server | Primary home server for storage, hosting machine backups, and running services like Jellyfin. |
| <img src="./resources/img/bulwark.png" width="100"> | [Bulwark](./provision/hosts/bulwark/) | Steam Deck | NixOS based Steam Deck that can has my linux niceties and acts like a Steam Deck using the great [Jovian Nixos](https://github.com/Jovian-Experiments/Jovian-NixOS). |
| <img src="./resources/img/shivan.png" width="100"> | [Shivan](./provision/hosts/shivan/) | Personal Laptop | Personal (and very slow) laptop for basic mobile work. |

BIN
resources/img/shivan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB