Jafner.net/nix/iso/pc-configuration.nix

414 lines
11 KiB
Nix

{ pkgs, ... }:
{
imports = [
];
services = {
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
openssh = {
enable = true;
settings.PasswordAuthentication = false;
settings.KbdInteractiveAuthentication = false;
};
printing.enable = true;
libinput = {
enable = true;
mouse.naturalScrolling = true;
touchpad.naturalScrolling = true;
};
flatpak = {
enable = true;
update.onActivation = true;
};
displayManager = {
autoLogin = {
enable = true;
user = "admin";
};
sddm = {
enable = true;
wayland.enable = true;
};
};
};
fonts.packages = with pkgs; [
font-awesome
noto-fonts noto-fonts-cjk noto-fonts-emoji
powerline-symbols
(pkgs.nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; } )
];
home-manager.users.admin = { pkgs, ... }: {
home.packages = with pkgs; [
vim
fastfetch
tree
btop
bat
fd
eza
fzf
cifs-utils
git
dig
];
programs.home-manager.enable = true;
home.stateVersion = "24.05";
};
home-manager.users.joey = { pkgs, ... }: {
home.username = "joey";
home.homeDirectory = "/home/joey";
home.file = {
rbw-config = {
target = ".config/rbw/config.json";
text = ''
{
"email": "jafner425@gmail.com",
"sso_id": null,
"base_url": "https://bitwarden.jafner.tools",
"identity_url": null,
"ui_url": null,
"notifications_url": null,
"lock_timeout": 3600,
"sync_interval": 3600,
"pinentry": "pinentry-curses",
"client_cert_path": null
}
'';
};
};
home.packages = with pkgs; [
fastfetch
tree
btop
bat
fd
eza
fzf-git-sh
wl-clipboard
killall
pkgs-unstable.fzf
git
kdePackages.kdeconnect-kde
base16-schemes
rofi-rbw-wayland
rbw
pinentry-rofi
pinentry-all
nixd
vesktop
vlc
feh
flatpak
];
programs = {
home-manager.enable = true;
git = {
enable = true;
userName = "Joey Hafner";
userEmail = "joey@jafner.net";
delta.enable = true;
delta.options = {
side-by-side = true;
};
};
obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
obs-vaapi
obs-vkcapture
input-overlay
];
};
rofi = { enable = true; };
vscode = {
enable = true;
package = pkgs.vscodium;
mutableExtensionsDir = true;
extensions = with pkgs.vscode-extensions; [
jnoortheen.nix-ide
continue.continue
];
userSettings = {
"nix.serverPath" = "nixd";
"nix.enableLanguageServer" = true;
"explorer.confirmDragAndDrop" = false;
"workbench.colorTheme" = "Stylix";
"git.autofetch" = true;
"git.confirmSync" = false;
"editor.fontFamily" = lib.mkForce "'Symbols Nerd Font Mono', 'PowerlineSymbols', 'DejaVu Sans Mono'";
"git.enableSmartCommit" = true;
};
userTasks = {
version = "2.0.0";
tasks = [
{
type = "shell";
label = "NixOS Rebuild Switch";
command = "sudo nixos-rebuild switch --flake ~/Jafner.net/nix";
problemMatcher = [];
}
{
type = "shell";
label = "Home-Manager Switch";
command = "home-manager switch -b bak --flake ~/Jafner.net/nix";
problemMatcher = [];
}
{
label = "System Rebuild";
dependsOn = ["NixOS Rebuild Switch" "Home-Manager Switch" ];
dependsOrder = "sequence";
problemMatcher = [];
}
];
};
};
kitty = { enable = true; };
tmux = {
enable = true;
newSession = true;
shell = "$HOME/.nix-profile/bin/zsh";
};
zsh = {
enable = true;
dotDir = ".config/zsh";
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
bat = "bat --paging=never --color=always";
fd = "fd -Lu";
ls = "eza";
lt = "eza --tree";
fetch = "fastfetch";
neofetch = "fetch";
find = ''fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"'';
nu = "sudo nixos-rebuild switch --flake ~/Jafner.net/nix";
hmu = "home-manager switch -b bak --flake ~/Jafner.net/nix";
ngls = "nix-env --profile /nix/var/nix/profiles/system --list-generations";
ngclean = "nix-collect-garbage --delete-old";
ngcleanboot = "/run/current-system/bin/switch-to-configuration boot";
};
history = {
share = true;
save = 10000;
size = 10000;
expireDuplicatesFirst = false;
extended = false;
ignoreAllDups = false;
ignoreDups = true;
};
initExtra = ''
bindkey '^[[1;5A' history-search-backward # Ctrl+Up-arrow
bindkey '^[[1;5B' history-search-forward # Ctrl+Down-arrow
bindkey '^[[1;5D' backward-word # Ctrl+Left-arrow
bindkey '^[[1;5C' forward-word # Ctrl+Right-arrow
bindkey '^[[H' beginning-of-line # Home
bindkey '^[[F' end-of-line # End
bindkey '^[w' kill-region # Delete
bindkey '^I^I' autosuggest-accept # Tab, Tab
bindkey '^[' autosuggest-clear # Esc
_fzf_compgen_path() {
fd --hidden --exclude .git . "$1"
}
_fzf_compgen_dir() {
fd --hidden --exclude .git . "$1"
}
eval "$(~/.nix-profile/bin/fzf --zsh)"
source ${pkgs.fzf-git-sh}/share/fzf-git-sh/fzf-git.sh
'';
};
eza = {
enable = true;
enableZshIntegration = true;
git = true;
extraOptions = [
"--color=always"
"--long"
"--icons=always"
"--no-time"
"--no-user"
];
};
vim = {
enable = true;
defaultEditor = true;
settings = {
copyindent = true;
relativenumber = true;
expandtab = true;
tabstop = 2;
};
extraConfig = ''
set nocompatible
filetype on
filetype plugin on
filetype indent on
syntax on
set cursorline
set wildmenu
set wildmode=list:longest
'';
};
fzf = {
enable = true;
package = pkgs-unstable.fzf;
};
};
services = {
flatpak = {
enable = true;
uninstallUnmanaged = true;
packages = [
{ appId = "io.github.zen_browser.zen"; origin = "flathub"; }
];
};
};
stylix = {
enable = true;
autoEnable = true;
polarity = "dark";
targets {
wofi.enable = true;
waybar = {
enableLeftBackColors = true;
enableCenterBackColors = true;
enableRightBackColors = true;
};
};
fonts = {
monospace = {
name = "DejaVu Sans Mono";
package = pkgs.dejavu_fonts;
};
serif = {
name = "DejaVu Serif";
package = pkgs.dejavu_fonts;
};
sansSerif = {
name = "DejaVu Sans";
package = pkgs.dejavu_fonts;
};
emoji = {
name = "Noto Color Emoji";
package = pkgs.noto-fonts-color-emoji;
};
sizes = {
terminal = 14;
applications = 12;
popups = 12;
desktop = 12;
};
};
};
home.stateVersion = "24.05";
};
users.users = {
admin = {
isNormalUser = true;
shell = pkgs.zsh;
description = "${userSettings.user}";
extraGroups = [ "networkmanager" "wheel" ];
openssh.authorizedKeys.keys = let
authorizedKeys = pkgs.fetchurl {
url = "https://github.com/Jafner.keys";
sha256 = "1i3Vs6mPPl965g3sRmbXGzx6zQBs5geBCgNx2zfpjF4=";
};
in pkgs.lib.splitString "\n" (builtins.readFile authorizedKeys);
};
joey = {
isNormalUser = true;
shell = pkgs.zsh;
description = "${userSettings.user}";
extraGroups = [ "networkmanager" "wheel" ];
openssh.authorizedKeys.keys = let
authorizedKeys = pkgs.fetchurl {
url = "https://github.com/Jafner.keys";
sha256 = "1i3Vs6mPPl965g3sRmbXGzx6zQBs5geBCgNx2zfpjF4=";
};
in pkgs.lib.splitString "\n" (builtins.readFile authorizedKeys);
};
};
environment.systemPackages = with pkgs; [
git
mako
libnotify
swww
wofi
polkit-kde-agent
xfce.thunar
( writeShellScriptBin "nix-installer" ''
#!/usr/bin/env bash
set -euo pipefail
if [ "$(id -u)" -eq 0 ]; then
echo "$ERROR! $(basename "$0") should be run as a regular user"
exit 1
fi
if [ ! -d "$HOME/Jafner.net/.git ]; then
git clone https://gitea.jafner.tools "$HOME/Jafner.net"
fi
sudo nixos-install --flake "$HOME/Jafner.net/nix"
'' )
];
nix.settings.experimental-features = [ "nix-command" "flakes" ];
networking = {
hostName = "${systemSettings.hostname}";
networkmanager.enable = true;
};
security = {
sudo = {
enable = true;
extraRules = [{
commands = [
{
command = "ALL";
options = [ "NOPASSWD" ];
}
];
groups = [ "wheel" ];
}];
};
rtkit.enable = true;
};
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
};
time.timeZone = "America/Los_Angeles";
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
};
systemd.services = {
"getty@tty1".enable = false;
"autovt@tty1".enable = false;
};
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
hardware.pulseaudio.enable = false;
# DO NOT CHANGE
system.stateVersion = "24.05";
}