Initial commit

This commit is contained in:
Tyler Beckman 2024-11-21 22:31:12 -07:00
commit af34a76818
Signed by: Ty
GPG key ID: 2813440C772555A4
22 changed files with 1498 additions and 0 deletions

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
flake.lock linguist-generated=true

216
configuration.nix Executable file
View file

@ -0,0 +1,216 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ pkgs, inputs, system, ... }:
{
imports = [
./hardware-configuration.nix
];
fileSystems."/mnt/arch" = {
device = "/dev/mapper/arch";
fsType = "btrfs";
encrypted = {
enable = true;
blkDev = "/dev/disk/by-uuid/60b6f21d-85b2-4d4b-90f4-38612138eeec";
keyFile = "/sysroot/root/keyfiles/arch.key";
label = "arch";
};
};
# Bootloader.
boot = {
loader = {
grub = {
enable = true;
useOSProber = false;
devices = [ "nodev" ];
efiSupport = true;
extraEntries = ''
menuentry "Poweroff" {
halt
}
menuentry "Reboot" {
reboot
}
'';
theme = inputs.nixos-grub-themes.packages."${system}".hyperfluent;
};
efi.canTouchEfiVariables = true;
};
plymouth = {
enable = true;
theme = "bgrt";
};
consoleLogLevel = 0;
initrd.verbose = false;
kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
"udev.log_priority=3"
];
initrd.systemd.enable = true;
};
networking.hostName = "ty-nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/Denver";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.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";
};
# Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session.
services.xserver.enable = false;
# KDE + SDDM Configuration
services.desktopManager.plasma6.enable = true;
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
sugarCandyNix = {
enable = true;
settings = {
HeaderText = ":3";
};
};
};
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
# Tailscale
services.tailscale = {
enable = true;
useRoutingFeatures = "both";
openFirewall = true;
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
users.mutableUsers = false;
users.defaultUserShell = pkgs.zsh;
users.users.ty = {
isNormalUser = true;
shell = pkgs.zsh;
description = "Tyler Beckman";
extraGroups = [ "networkmanager" "wheel" ];
hashedPassword = "$y$j9T$XCQtsX/NObNFzrYu7JcJe/$HHgvh4Re6UjKvxMz.XuHw7dwNecnMP8je.4AHUjHnsB";
};
# Install firefox.
programs.firefox = {
enable = true;
preferences = {
# Disable bullshit
"browser.ml.chat.enabled" = false;
"browser.aboutConfig.showWarning" = false;
"extensions.pocket.enabled" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.feeds.system.topstories" = false;
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
# Experimental prefs
"image.jxl.enabled" = true;
# Security
"security.pki.certificate_transparency.mode" = true;
};
preferencesStatus = "locked";
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
environment.systemPackages = with pkgs; [
# Basic system packages
wget
curl
neovim
git
jujutsu
];
programs.zsh.enable = true;
# Env vars
environment.sessionVariables.NIXOS_OZONE_WL = "1";
environment.pathsToLink = [ "/share/zsh" ];
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
networking.firewall.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.05"; # Did you read the comment?
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Enable bluetooth
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
}

364
flake.lock generated Executable file
View file

@ -0,0 +1,364 @@
{
"nodes": {
"cachix": {
"locked": {
"lastModified": 1635350005,
"narHash": "sha256-tAMJnUwfaDEB2aa31jGcu7R7bzGELM9noc91L2PbVjg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1c1f5649bb9c1b0d98637c8c365228f57126f361",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-20.09",
"repo": "nixpkgs",
"type": "github"
}
},
"firefox-addons": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"dir": "/pkgs/firefox-addons",
"lastModified": 1732248209,
"narHash": "sha256-Mv8k0VuGdb6YhhKt+8SIvhMdmI4xZhw/3ycSvlAq19Q=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "4a8ba00d1be3f3745428ed56efbb32155c548192",
"type": "gitlab"
},
"original": {
"dir": "/pkgs/firefox-addons",
"owner": "rycee",
"repo": "nur-expressions",
"type": "gitlab"
}
},
"firefox-nightly": {
"inputs": {
"cachix": "cachix",
"flake-compat": "flake-compat",
"lib-aggregate": "lib-aggregate",
"mozilla": "mozilla",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1732244603,
"narHash": "sha256-yuMZQA+j0IjdlnimtrKHsci3mZI7JKhkJrFs7d765Kw=",
"owner": "nix-community",
"repo": "flake-firefox-nightly",
"rev": "49020629d258bd02d69db90d74b5bad72f9e076c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-firefox-nightly",
"type": "github"
}
},
"flake-compat": {
"locked": {
"lastModified": 1717312683,
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1629284811,
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1732025103,
"narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a46e702093a5c46e192243edbd977d5749e7f294",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"lib-aggregate": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1731845570,
"narHash": "sha256-5reOtlm18XLnh3ezruPOg2wQO+MB7ztsFaIzSUAzeh8=",
"owner": "nix-community",
"repo": "lib-aggregate",
"rev": "7a1d37b2b16f32536628df9cea6a2003d79a49f9",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "lib-aggregate",
"type": "github"
}
},
"mozilla": {
"flake": false,
"locked": {
"lastModified": 1704373101,
"narHash": "sha256-+gi59LRWRQmwROrmE1E2b3mtocwueCQqZ60CwLG+gbg=",
"owner": "mozilla",
"repo": "nixpkgs-mozilla",
"rev": "9b11a87c0cc54e308fa83aac5b4ee1816d5418a2",
"type": "github"
},
"original": {
"owner": "mozilla",
"repo": "nixpkgs-mozilla",
"type": "github"
}
},
"nixos-grub-themes": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1720290504,
"narHash": "sha256-QeIUxy0XJtp8SPes/TdDxzHCl96rgwYhX9kd65rIZ2s=",
"owner": "jeslie0",
"repo": "nixos-grub-themes",
"rev": "781c410c3522fc62a99206a6c3e8469a5fc90a01",
"type": "github"
},
"original": {
"owner": "jeslie0",
"repo": "nixos-grub-themes",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1732014248,
"narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "23e89b7da85c3640bbc2173fe04f4bd114342367",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1731805462,
"narHash": "sha256-yhEMW4MBi+IAyEJyiKbnFvY1uARyMKJpLUhkczI49wk=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "b9f04e3cf71c23bea21d2768051e6b3068d44734",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"plasma-manager": {
"inputs": {
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1731193165,
"narHash": "sha256-pGF8L5g9QpkQtJP9JmNIRNZfcyhJHf7uT+d8tqI1h6Y=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "f33173b9d22e554a6f869626bc01808d35995257",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "plasma-manager",
"type": "github"
}
},
"root": {
"inputs": {
"firefox-addons": "firefox-addons",
"firefox-nightly": "firefox-nightly",
"home-manager": "home-manager",
"nixos-grub-themes": "nixos-grub-themes",
"nixpkgs": "nixpkgs",
"plasma-manager": "plasma-manager",
"sddm-sugar-candy-nix": "sddm-sugar-candy-nix",
"vscode-extensions": "vscode-extensions"
}
},
"sddm-sugar-candy-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1722593422,
"narHash": "sha256-uZTuVWQEnfmcZj9QEEFCh0lMuCJULXQSurLTC/9tRgY=",
"owner": "Zhaith-Izaliel",
"repo": "sddm-sugar-candy-nix",
"rev": "35d6fdb4eed20d682e992ae3c6095427e89c2b74",
"type": "gitlab"
},
"original": {
"owner": "Zhaith-Izaliel",
"repo": "sddm-sugar-candy-nix",
"type": "gitlab"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"vscode-extensions": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_3",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1732240454,
"narHash": "sha256-P6DAyU0CoDhl8uCSjtrgbFEODfZdQalOpSb8itVmeIo=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "ac441321f5667f9a12c45ba8e5a2969c1b57e318",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

75
flake.nix Executable file
View file

@ -0,0 +1,75 @@
{
description = "NixOS Configuration";
inputs = {
# General NixOS config
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
# NixOS Grub Themes (hyperfluent)
nixos-grub-themes = {
url = "github:jeslie0/nixos-grub-themes";
inputs.nixpkgs.follows = "nixpkgs";
};
# SDDM Sugar Candy
sddm-sugar-candy-nix = {
url = "gitlab:Zhaith-Izaliel/sddm-sugar-candy-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
# Home Manager + Plasma
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
# Firefox Nightly + Addons
firefox-nightly = {
url = "github:nix-community/flake-firefox-nightly";
inputs.nixpkgs.follows = "nixpkgs";
};
firefox-addons = {
type = "gitlab";
owner = "rycee";
repo = "nur-expressions";
dir = "/pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
# VSCode extensions
vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ nixpkgs, home-manager, sddm-sugar-candy-nix, ... }: {
nixosConfigurations.ty-nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
sddm-sugar-candy-nix.nixosModules.default
{
nixpkgs = {
overlays = [
sddm-sugar-candy-nix.overlays.default
];
};
}
# Import legacy configuration
./configuration.nix
# Home manager
home-manager.nixosModules.home-manager
./home-manager
];
specialArgs = {
inherit inputs;
system = "x86_64-linux";
};
};
};
}

41
hardware-configuration.nix Executable file
View file

@ -0,0 +1,41 @@
# 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" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/f9bea90d-1dca-42d5-8297-0b5be85190a1";
fsType = "btrfs";
options = [ "subvol=@" ];
};
boot.initrd.luks.devices."luks-16827abe-333c-43d7-b1b0-7d0df0b5931f".device = "/dev/disk/by-uuid/16827abe-333c-43d7-b1b0-7d0df0b5931f";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/B22B-9CCA";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
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.wlp2s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

16
home-manager/default.nix Executable file
View file

@ -0,0 +1,16 @@
{ inputs, system, ... }:
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.sharedModules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
home-manager.extraSpecialArgs = {
inherit inputs;
inherit system;
};
home-manager.users.ty = {
imports = [
./home.nix
];
};
}

16
home-manager/home.nix Executable file
View file

@ -0,0 +1,16 @@
{ ... }:
{
home.stateVersion = "24.05";
imports = [
./modules/packages.nix
./modules/plasma.nix
./modules/vcs
./modules/firefox.nix
./modules/thunderbird.nix
./modules/accounts
./modules/gpg.nix
./modules/shell
./modules/vscode.nix
];
}

View file

@ -0,0 +1,6 @@
{ ... }:
{
imports = [
./email.nix
];
}

View file

@ -0,0 +1,44 @@
{ ... }:
{
accounts.email.accounts = {
PurelyMail = {
realName = "Tyler Beckman";
address = "ty@myriation.xyz";
userName = "ty@myriation.xyz";
primary = true;
folders = {
inbox = "INBOX";
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
gpg = {
encryptByDefault = false;
signByDefault = false;
key = "A6299C20250223DCDEBA5E2C933B9437A97A56B8";
};
imap = {
host = "imap.purelymail.com";
port = 993;
tls = {
enable = true;
useStartTls = false;
};
};
smtp = {
host = "smtp.purelymail.com";
port = 465;
tls = {
enable = true;
useStartTls = false;
};
};
thunderbird.enable = true;
};
};
}

159
home-manager/modules/firefox.nix Executable file
View file

@ -0,0 +1,159 @@
{ pkgs, inputs, system, ... }:
{
programs.firefox = {
enable = true;
policies = {
ExtensionSettings = {
# Force install alpenglow theme (why wouldn't you want it)
"firefox-alpenglow@mozilla.org" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/firefox-alpenglow/latest.xpi";
installation_mode = "force_installed";
};
};
};
profiles = {
default = {
id = 0;
name = "default";
isDefault = true;
# Settings
settings = {
# Theming
"extensions.activeThemeID" = "firefox-alpenglow@mozilla.org"; # Purple
"browser.tabs.inTitlebar" = 0; # Enable native title bar
"browser.uidensity" = 2; # Touchscreen density
"browser.newtab.extensionControlled" = true; # Tabliss
"browser.startup.homepage_override.extensionControlled" = true; # More tabliss
# Extensions
"extensions.autoDisableScopes" = 0; # Auto enable extensions
# Basic options
"privacy.userContext.newTabContainerOnLeftClick.enabled" = true; # Container selection on +
# Toolbar customization
"browser.uiCustomization.state" = ''
{
"placements": {
"widget-overflow-fixed-list": [],
"unified-extensions-area": [],
"nav-bar": [
"back-button",
"forward-button",
"stop-reload-button",
"customizableui-special-spring1",
"urlbar-container",
"customizableui-special-spring2",
"save-to-pocket-button",
"downloads-button",
"fxa-toolbar-menu-button",
"reset-pbm-toolbar-button",
"unified-extensions-button",
"ublock0_raymondhill_net-browser-action",
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
],
"toolbar-menubar": [
"menubar-items"
],
"TabsToolbar": [
"firefox-view-button",
"tabbrowser-tabs",
"new-tab-button",
"alltabs-button"
],
"vertical-tabs": [],
"PersonalToolbar": [
"import-button",
"personal-bookmarks"
]
},
"seen": [
"reset-pbm-toolbar-button",
"profiler-button",
"developer-button",
"ublock0_raymondhill_net-browser-action",
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
],
"dirtyAreaCache": [
"nav-bar",
"vertical-tabs",
"PersonalToolbar",
"toolbar-menubar",
"TabsToolbar",
"unified-extensions-area"
],
"currentVersion": 20,
"newElementCount": 3
}
'';
};
# Search engine configuration
search = {
force = true;
default = "SearXNG";
order = [ "SearXNG" "Google" "Wikipedia" "Nix Packages" "NixOS Wiki" ];
engines = {
# Nix Package Search
"Nix Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@np" ];
};
# NixOS Wiki Search
"NixOS Wiki" = {
urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
iconUpdateURL = "https://nixos.wiki/favicon.png";
updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@nw" ];
};
# Personal SearXNG instance
"SearXNG" = {
urls = [{ template = "https://search.myriation.xyz/?q={searchTerms}"; }];
iconUpdateURL = "https://search.myriation.xyz/static/themes/simple/img/favicon.png";
updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@sx" "@searx" ];
};
"Bing".metaData.hidden = true;
"eBay".metaData.hidden = true;
"Amazon.com".metaData.hidden = true;
"DuckDuckGo".metaData.hidden = true;
};
};
# Extensions (NUR)
extensions = with inputs.firefox-addons.packages."${system}"; [
bitwarden
ublock-origin
tabliss
];
# Containers
containersForce = true;
containers = {
# The letters are a hack to sort the entries in firefox (it adds them alphabetically)
A-Personal = {
id = 2;
name = "Personal";
color = "purple";
icon = "fingerprint";
};
B-College = {
id = 1;
name = "College";
color = "orange";
icon = "fruit";
};
};
};
};
};
}

62
home-manager/modules/gpg.nix Executable file
View file

@ -0,0 +1,62 @@
{ pkgs, ... }:
{
programs.gpg = {
enable = true;
package = pkgs.gnupg;
mutableKeys = false;
mutableTrust = false;
settings = {
keyid-format = "LONG";
};
publicKeys = [
{
trust = "ultimate";
text = ''
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEY3FNLRYJKwYBBAHaRw8BAQdAzJpw9e+NCq+lNNxIooZqGdEq3eIySxi5iDaG
WajRMYS0E1R5IDx0eUBibGFoYWoubGFuZD6IkwQTFgoAOwIbAQULCQgHAgIiAgYV
CgkICwIEFgIDAQIeBwIXgBYhBKYpnCAlAiPc3rpeLJM7lDepela4BQJmy32yAAoJ
EJM7lDepela4D5IA/jf1E/e1J3uc35VKc6AeJokbh4W/2r27ZFQv1H1oHBttAQCU
FcMt0PGG//kiv6xKX0chxWAYoggmxeNGlcI548qBArQvVHlsZXIgQmVja21hbiAo
ZWQyNTUxOSkgPHRiZWNrbWFuNTMwQGdtYWlsLmNvbT6IkAQTFggAOAIbAQULCQgH
AgYVCgkICwIEFgIDAQIeAQIXgBYhBKYpnCAlAiPc3rpeLJM7lDepela4BQJkv+yV
AAoJEJM7lDepela4FtABAJ80Vp0h7VatARFMO14WWow1zngUPJiBWvHmW7zflT1d
AQDHh7N3Sj/Ij085NHbljB8oFhGUnFJv3PrP7RpA1oVTC7QgVHlsZXIgQmVja21h
biA8dHlAbXlyaWF0aW9uLnh5ej6IzgQTFgoAdgIbAQULCQgHAgIiAgYVCgkICwIE
FgIDAQIeBwIXgAIZARYhBKYpnCAlAiPc3rpeLJM7lDepela4BQJmy323NxSAAAAA
ABAAHnByb29mQGFyaWFkbmUuaWRodHRwczovL215cmlhdGlvbi54eXova2V5b3hp
ZGUACgkQkzuUN6l6VrhigwD+K+8YuIY6osUklUcvKbQMxOZbBIqjSa3MtavPTgXM
K0EA/0QAN+/16mGdS0YPcq2AOISQNi4C3V1Lq9Xv+OePi0kEuDgEY3FPuxIKKwYB
BAGXVQEFAQEHQJdRgJB1cY/faxDU76UfjRt91RhNMJ2+gmpgLjE+c3VXAwEIB4h4
BBgWCAAgFiEEpimcICUCI9zeul4skzuUN6l6VrgFAmNxT7sCGwwACgkQkzuUN6l6
VrhjUgEA5Jd1CjRsVnSDD6ujKqbER0fjhar8b2OHndzaJFjZcRAA/iIXZAQdZODL
i67R7A5v97w8jN7a4wk45rscVbvNRfkLuDMEY3FPsBYJKwYBBAHaRw8BAQdAYwtz
4Tcw9VBhrM62l+J0/ny0UNLGWNRKjT5evoNGrxeI7wQYFggAIBYhBKYpnCAlAiPc
3rpeLJM7lDepela4BQJjcU+wAhsCAIEJEJM7lDepela4diAEGRYIAB0WIQTwjV6o
sLRXn8aFdnQoE0QMdyVVpAUCY3FPsAAKCRAoE0QMdyVVpL43APsFQ/d9RJEuyQnG
cy3f3Cjg5jb2XmERFHVB3D/90//yEgEAoPH4NEkVDc1m1zol34gcpMiUNvSTb/Rp
sb5rpZ4HnARhtAEA825zCEk043kWRxrkPMRRa4QZwzBrPBJ9dFGi0WOr2Q8A/3vW
pDJcqur4dGidvTzbLJXkm+vO5BJY9M6MuanT8iADuDMEY3FSeRYJKwYBBAHaRw8B
AQdAf/an3gK28Vcj8Jcu50K7kpgV/wB96zWjcbtPXAsV4Y+IeAQYFggAIBYhBKYp
nCAlAiPc3rpeLJM7lDepela4BQJjcVJ5AhsgAAoJEJM7lDepela46ocA/1NnMRDq
vb0WHflAttm+HV4DJy+nXXEKrP52/7CqZ4X+AQDlf0iShUkvcj7ruMP9QSP+qmP2
15dYmwRFY3dXw5+ZCQ==
=tMzS
-----END PGP PUBLIC KEY BLOCK-----
'';
}
];
};
services.gpg-agent = {
enable = true;
enableSshSupport = true;
enableZshIntegration = true;
pinentryPackage = pkgs.pinentry-qt;
# sshKeys = [ ];
};
}

View file

@ -0,0 +1,47 @@
{ pkgs, inputs, system, ... }:
{
home.packages = (with pkgs; let vscode-extensions = inputs.vscode-extensions.extensions."${system}"; in [
# Chat
element-desktop
vesktop
# Tailsccale
tailscale
# Fonts
fira-code-nerdfont
# KDE Packages
kdePackages.kate
kdePackages.elisa
kdePackages.kdeconnect-kde
# KDE Themes
vimix-cursors
# Programming
nixd # NixD LSP for .nix files
# :3
fastfetch
# Tools
ripgrep # Text searching and manipulation
jq # JSON filtering
eza # Directory lister
bat # File reading
doggo # DNS Requests
nmap # Network scanning
glow # Markdown rendering
# Process tools
btop # Process monitor
nvtopPackages.full # GPU monitor
# Basic linux tools
usbutils # `lsusb`
]) ++ [
# Firefox nightly
inputs.firefox-nightly.packages.${system}.firefox-nightly-bin
];
}

37
home-manager/modules/plasma.nix Executable file
View file

@ -0,0 +1,37 @@
{ pkgs, ... }:
{
programs.plasma = {
enable = true;
workspace = {
# Enable Breeze Dark theme
lookAndFeel = "org.kde.breezedark.desktop";
# Set cursor theme
cursor = {
theme = "Vimix-cursors";
size = 24;
};
# Set icon theme TODO Package modern beautyline
iconTheme = "breeze-dark";
# Set wallpaper to Shell
wallpaper = "${pkgs.kdePackages.plasma-workspace-wallpapers}/share/wallpapers/Shell/contents/images/5120x2880.jpg";
};
# TODO Powerdevil
kwin = {
edgeBarrier = 0; # Disables the highlighting when approaching an edge with an effect
cornerBarrier = false;
};
kscreenlocker = {
lockOnResume = true;
timeout = 10;
};
configFile = {
# Enable indexing
baloofilerc."Basic Settings"."Indexing-Enabled" = true;
};
};
}

View file

@ -0,0 +1,8 @@
{ ... }:
{
imports = [
./zsh.nix
./starship.nix
./konsole.nix
];
}

View file

@ -0,0 +1,23 @@
{ pkgs, ... }:
{
programs.konsole = {
enable = true;
defaultProfile = "Primary";
profiles = {
Primary = {
name = "Primary";
command = "${pkgs.zsh}/bin/zsh";
font = {
name = "FiraMono Nerd Font Mono";
};
extraConfig = {
Appearance = {
UseFontBrailleChararacters = true;
};
Scrolling.HistoryMode = 1;
};
};
};
};
}

View file

@ -0,0 +1,215 @@
{ ... }: {
# Shell prompt
programs.starship = {
enable = true;
enableZshIntegration = true;
settings = {
add_newline = true;
format = ""
# Left powerline
+ "[](fg:242)[](fg:238)"
+ "$os"
+ "[ ](fg:007 bg:prev_bg)"
+ "[$username@$hostname](bg:prev_bg)"
+ "[ ](fg:007 bg:prev_bg)"
+ "$shell$shlvl"
+ "[ ](fg:007 bg:prev_bg)"
+ "$directory"
+ "[ ](bg:prev_bg)[](fg:prev_bg bg:none)"
# Middle filling
+ "$fill"
# Right powerline
+ "[](fg:238 bg:none)[ ](bg:prev_fg)"
+ "\${custom.status}"
+ "\${custom.time}"
+ "[ ](fg:007 bg:prev_bg)"
+ "\${custom.date}"
+ "[ ](fg:007 bg:prev_bg)"
+ "$battery"
+ "[](fg:prev_bg)[ ](fg:242)"
# Left prompter
+ "\n[ ](fg:242)";
# Right prompter
right_format = "[ ](fg:242)";
os = {
disabled = false;
style = "bg:238 fg:007";
symbols = {
Arch = "󰣇";
Ubuntu = "󰕈";
NixOS = "󱄅";
};
};
username = {
disabled = false;
format = "[$user]($style)";
style_user = "bg:prev_bg fg:#63D0EE bold";
style_root = "bg:prev_bg fg:#EFA9B1 bold";
show_always = true;
};
hostname = {
disabled = false;
ssh_only = false;
ssh_symbol = "🌐 ";
trim_at = "";
style = "bg:prev_bg fg:prev_fg";
format = "[$ssh_symbol$hostname]($style)";
};
shell = {
disabled = false;
format = "[$indicator]($style)";
style = "fg:#FFFFFF bg:prev_bg";
};
shlvl = {
disabled = false;
threshold = 2;
symbol = "";
repeat = false;
format = "[ \\(](bg:prev_bg fg:#FFFFFF)[$symbol$shlvl]($style)[\\)](bg:prev_bg fg:#FFFFFF)";
style = "bg:prev_bg fg:#F5F543";
};
directory = {
disabled = false;
home_symbol = "~";
read_only = " ";
truncate_to_repo = true;
use_logical_path = true;
fish_style_pwd_dir_length = 1;
truncation_length = 3;
style = "bold fg:#63D0EE bg:prev_bg";
read_only_style = "bold fg:#63D0EE bg:prev_bg";
format = "[$read_only]($read_only_style)[$path]($style)";
repo_root_format = "[$read_only]($read_only_style)[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)[$path]($style)";
};
# [status]
# disabled = false
# recognize_signal_code = false
# map_symbol = false
# success_symbol = "✔"
# symbol = "✘"
# # TODO Figure out status-dependent styling
# style = "bold fg:#26FF05 bg:prev_bg"
# format = "[$status $symbol]($style)"
custom.status = {
disabled = false;
when = ''test "$?" -ne 0'';
command = ''echo "$?"'';
style = "bg:238 fg:#EFA9B1";
symbol = "";
format = "[$output $symbol]($style)";
};
custom.time = {
disabled = false;
when = true;
command = ''date +"%I:%M:%S"'';
description = "The current local time";
style = "bg:238 fg:#63D0EE bold";
format = "[$output]($style)";
};
custom.date = {
disabled = false;
when = true;
command = ''date +"%b %e %Y"'';
description = "The current local date";
style = "bg:238 fg:#E5B9E9 bold";
format = "[$output]($style)";
};
battery = {
disabled = false;
format = "[$symbol$percentage ]($style)";
display = [
{
threshold = 10;
discharging_symbol = "󰂃 ";
charging_symbol = "󰂄 ";
style = "bold fg:#EFA9B1 bg:prev_bg";
}
{
threshold = 20;
discharging_symbol = "󰁻 ";
charging_symbol = "󰂄 ";
style = "bold fg:#FF9933 bg:prev_bg";
}
{
threshold = 30;
discharging_symbol = "󰁼 ";
charging_symbol = "󰂄 ";
style = "bold fg:#FF9933 bg:prev_bg";
}
{
threshold = 40;
discharging_symbol = "󰁽 ";
charging_symbol = "󰂄 ";
style = "bold fg:#F8E45C bg:prev_bg";
}
{
threshold = 50;
discharging_symbol = "󰁾 ";
charging_symbol = "󰂄 ";
style = "bold fg:#F8E45C bg:prev_bg";
}
{
threshold = 60;
discharging_symbol = "󰁿 ";
charging_symbol = "󰂄 ";
style = "bold fg:#FFFFFF bg:prev_bg";
}
{
threshold = 70;
discharging_symbol = "󰂀 ";
charging_symbol = "󰂄 ";
style = "bold fg:#FFFFFF bg:prev_bg";
}
{
threshold = 75;
discharging_symbol = "󰂀 ";
charging_symbol = "󰂄 ";
style = "bold fg:green bg:prev_bg";
}
{
threshold = 80;
discharging_symbol = "󰂁 ";
charging_symbol = "󰂄 ";
style = "bold fg:green bg:prev_bg";
}
{
threshold = 97;
discharging_symbol = "󰁹 ";
charging_symbol = "󰂄 ";
style = "bold fg:green bg:prev_bg";
}
{
threshold = 100;
discharging_symbol = "󰁹 ";
charging_symbol = "󰂄 ";
style = "bold fg:green bg:prev_bg";
}
];
};
fill = {
disabled = false;
style = "fg:242";
symbol = "";
};
};
};
}

View file

@ -0,0 +1,59 @@
{ ... }:
{
# Zsh itself
programs.zsh = {
enable = true;
autosuggestion = {
enable = true;
strategy = [ "completion" ];
};
syntaxHighlighting = {
enable = true;
highlighters = [ "main" "brackets" "cursor" "line" ];
};
initExtra = ''
bindkey "^[[H" beginning-of-line
bindkey "^[[F" end-of-line
bindkey "^[[3~" delete-char
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey "5~" kill-word
bindkey "^H" backward-kill-word
bindkey "^Z" undo
'';
};
# Atuin shell history
programs.atuin = {
enable = true;
enableZshIntegration = true;
settings = {
dialect = "us";
auto_sync = true;
update_check = false;
sync_address = "https://atuin.myriation.xyz";
sync_frequency = "0";
search_mode = "fuzzy";
filter_mode = "global";
style = "full";
invert = false;
show_help = true;
exit_mode = "return-query";
store_failed = true;
secrets_filter = true;
enter_accept = false;
stats = {
common_prefix = [ "sudo" "doas" ];
};
sync = {
records = true;
dotfiles = false;
};
};
};
}

View file

@ -0,0 +1,15 @@
{ pkgs, ... }:
{
programs.thunderbird = {
enable = true;
package = pkgs.thunderbird-latest;
profiles = {
default = {
isDefault = true;
withExternalGnupg = true;
};
};
settings = {};
};
}

View file

@ -0,0 +1,7 @@
{ ... }:
{
imports = [
./git.nix
./jj.nix
];
}

View file

@ -0,0 +1,18 @@
{ pkgs, ... }:
{
programs.git = {
enable = true;
package = pkgs.git;
userName = "Tyler Beckman";
userEmail = "ty@myriation.xyz";
delta.enable = true;
lfs.enable = true;
signing = {
key = "A6299C20250223DCDEBA5E2C933B9437A97A56B8";
signByDefault = true;
};
};
}

View file

@ -0,0 +1,29 @@
{ pkgs, ... }:
{
programs.jujutsu = {
enable = true;
package = pkgs.jujutsu;
settings = {
user = {
name = "Tyler Beckman";
email = "ty@myriation.xyz";
};
signing = {
sign-all = true;
backend = "gpg";
key = "A6299C20250223DCDEBA5E2C933B9437A97A56B8";
};
ui = {
pager = "delta";
default-command = "log";
diff = {
format = "git";
};
};
};
};
}

View file

@ -0,0 +1,40 @@
{ pkgs, inputs, system, ... }:
{
programs.vscode = {
enable = true;
package = pkgs.vscodium;
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
mutableExtensionsDir = false;
extensions = with inputs.vscode-extensions.extensions."${system}".open-vsx; [
rust-lang.rust-analyzer
jnoortheen.nix-ide
];
userSettings = {
# Editor
"editor.fontFamily" = "'FiraCode Nerd Font Mono', 'Droid Sans Mono', 'monospace', monospace";
# JJ
"files.watcherExclude" = [
"**/.git/objects/**"
"**/.git/subtree-cache/**"
"**/.hg/store/**"
"**/.jj"
];
"files.exclude" = [
"**/.git"
"**/.jj"
"**/.svn"
"**/.hg"
"**/CVS"
"**/.DS_Store"
"**/Thumbs.db"
];
# Nix
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nixd";
};
};
}