Compare commits

..

10 commits

29 changed files with 185 additions and 254 deletions

View file

@ -1,48 +0,0 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1756683562,
"narHash": "sha256-3fcIqwm1u+rF3kkgUYYEIcLrs93+Pi+a6AwiEAxdP5g=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "fccb44df77266a3891939f35197f538dace3442f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1756542300,
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d7600c775f877cd87b4f5a831c28aa94137377aa",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

View file

@ -1,31 +0,0 @@
{
description = "Home Manager configuration of lunita";
inputs = {
# Specify the source of Home Manager and Nixpkgs.
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ nixpkgs, home-manager, ... }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in
{
homeConfigurations."lunita" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
# Specify your home configuration modules here, for example,
# the path to your home.nix.
modules = [ ./home.nix ];
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
};
};
}

View file

@ -1,91 +0,0 @@
{ config, pkgs, ... }:
{
home.username = "lunita";
home.homeDirectory = "/home/lunita";
home.stateVersion = "25.05";
programs.zsh = {
enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
c = "clear";
nf = "neofetch";
v = "nvim";
d = "cd ~/Documents";
D = "cd ~/Downloads";
dot = "cd ~/dotfiles";
};
initContent = ''
# '~' => goto base of user home directory
alias ~='cd ~'
# Vim keybinds
bindkey -v
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vim'
else
export EDITOR='nvim'
fi
# Set TERM for Ghostty ssh workaround
if [[ "$TERM_PROGRAM" == "ghostty" ]]; then
export TERM=xterm-256color
fi
'';
history.size = 10000;
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "lambda";
};
};
programs.git = {
enable = true;
userName = "lulusilly";
userEmail = "lunita@puppygirl.onl";
aliases = {
ci = "commit";
co = "checkout";
s = "status";
pu = "push origin master";
rmc = "rm -r --cached";
};
};
nixpkgs.config.allowUnfree = true;
home.packages = with pkgs; [
tree # Nice file tree views w/permissions
neofetch # Muh epic r1ce!!!
btop # Resource manager
stow # For dotfiles deployment. May use home.file in future
imagemagick # For converting images into other fmts
sxiv # Minimal image viewer
mpv # Video player
zathura # PDF/CBZ/EPUB/DJVU reader
tmux # Tride and true terminal multiplexer
obsidian # For epic note taking (really just mediocre journaling)
keepassxc # Secure password manager
syncthing # Self explanatory
ghostty # Terminal emulator
# Fonts
nerd-fonts.jetbrains-mono
miracode
monocraft
];
fonts.fontconfig.enable = true;
home.file = {
};
home.sessionVariables = {
EDITOR = "emacs";
};
programs.home-manager.enable = true;
}

View file

@ -1,16 +0,0 @@
{ config, pkgs, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
../../modules/kanata.nix
../../modules/laptop.nix
../../modules/efi.nix
../../modules/hypr.nix
];
networking.hostName = "syntheticnexus";
system.stateVersion = "25.05";
}

13
.gitignore vendored Normal file → Executable file
View file

@ -12,3 +12,16 @@ user-dirs.dirs
user-dirs.locale
espanso
obsidian
mimeapps.list
syncthing
systemd
nicotine
medialib.dbpl
playlists
running
index-v0.14.0.db
CURRENT.bak
LOG
dolphinrc
QtProject.conf
kde.org

0
.config/nix/flake.lock → nix/flake.lock generated Normal file → Executable file
View file

View file

@ -16,13 +16,13 @@
./hosts/common.nix
./hosts/mecca/configuration.nix
];
};
syntheticnexus = nixpkgs.lib.nixosSystem {
};
cantor = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {inherit inputs;};
modules = [
./hosts/common.nix
./hosts/syntheticnexus/configuration.nix
./hosts/cantor/configuration.nix
];
};
};

View file

@ -0,0 +1,18 @@
{ config, pkgs, lib, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
../../modules/kanata/kanata.nix
../../modules/laptop.nix
../../modules/efi.nix
../../modules/hypr.nix
../../modules/syncthing.nix
];
networking.hostName = "cantor";
# Overriding this, as the touchpad doesn't work properly anymore.
services.libinput.enable = lib.mkForce false;
system.stateVersion = "25.05";
}

View file

@ -8,24 +8,29 @@
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/c7f03532-bbad-4c5d-9309-052c7cb7f63c";
{ device = "/dev/disk/by-uuid/b6a3dc2d-983b-4be5-a1ae-e834b786377f";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/2A5E-652D";
{ device = "/dev/disk/by-uuid/12CE-A600";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
options = [ "fmask=0022" "dmask=0022" ];
};
fileSystems."/data/hdd" =
{ device = "/dev/disk/by-uuid/8db7c071-8946-4619-96fd-83259ae8d228";
fsType = "xfs";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/fcd83e93-64eb-40be-97ae-3e512bd8f97e"; }
[ { device = "/dev/disk/by-uuid/222e2b22-388c-490a-845f-35f774c395a8"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
@ -34,7 +39,6 @@
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp0s20f0u5.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";

31
.config/nix/hosts/common.nix → nix/hosts/common.nix Normal file → Executable file
View file

@ -1,7 +1,6 @@
{ config, lib, pkgs, inputs, ... }:
{
imports = [
inputs.home-manager.nixosModules.default
];
@ -9,11 +8,7 @@
users.users.lunita = {
isNormalUser = true;
description = "Lunita";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
neovim
firefox
];
extraGroups = [ "networkmanager" "wheel" "syncthing" ];
shell = pkgs.zsh;
};
home-manager = {
@ -65,19 +60,35 @@
services.flatpak.enable = true;
# Tailscale
services.tailscale.enable = true;
# Syncthing
services.syncthing.enable = true;
# GPG
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# Espanso for text expansion
services.espanso.enable = true;
# OpenSSH
services.openssh.enable = true;
# Hardware acceleration support
hardware.graphics.extraPackages = with pkgs; [
intel-media-driver
];
# Enable udisks2 for removable media support
services.udisks2.enable = true;
# Can't disable sudo due to dependency for nixos-rebuild
# security.sudo.enable = false;
# Setup doas
security.doas = {
enable = true;
extraRules = [{
users = ["lunita"];
keepEnv = true;
noPass = true;
}];
};
# System package definitions
environment.systemPackages = with pkgs; [
neovim # Terminal text editor
wget # coreutil for some script compatibility
wiremix # TUI mixer for pipewire
];
}

View file

View file

@ -10,10 +10,10 @@ keybind = ctrl+j=goto_split:down
keybind = ctrl+k=goto_split:up
keybind = ctrl+l=goto_split:right
keybind = ctrl+d>h=new_split:left
keybind = ctrl+d>j=new_split:down
keybind = ctrl+d>k=new_split:up
keybind = ctrl+d>l=new_split:right
keybind = ctrl+d>f=toggle_split_zoom
keybind = ctrl+shift+h=new_split:left
keybind = ctrl+shift+j=new_split:down
keybind = ctrl+shift+k=new_split:up
keybind = ctrl+shift+l=new_split:right
keybind = ctrl+f=toggle_split_zoom
window-save-state = always

0
.config/hypr/bg.jpg → nix/hosts/dotfiles/hypr/bg.jpg Normal file → Executable file
View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Before After
Before After

View file

@ -197,8 +197,8 @@ bind = $tMod SHIFT, O, movetoworkspace, 9
bind = $tMod SHIFT, P, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
bind = $tMod, S, togglespecialworkspace, magic
bind = $tMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
@ -235,4 +235,4 @@ bindl = , XF86AudioPrev, exec, playerctl previous
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

View file

View file

@ -1,35 +1,33 @@
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
print_info() {
info title
info underline
info "OS" distro
info "Host" model
info "Kernel" kernel
# info "Kernel" kernel
info "Uptime" uptime
info "Packages" packages
info "Shell" shell
# info "Packages" packages
# info "Shell" shell
info "Resolution" resolution
info "DE" de
info "WM" wm
info "WM Theme" wm_theme
info "Theme" theme
info "Icons" icons
info "Terminal" term
info "Terminal Font" term_font
# info "DE" de
# info "WM" wm
# info "WM Theme" wm_theme
# info "Theme" theme
# info "Icons" icons
# info "Terminal" term
# info "Terminal Font" term_font
info "CPU" cpu
info "GPU" gpu
# info "GPU" gpu
info "Memory" memory
# info "GPU Driver" gpu_driver # Linux/macOS only
# info "CPU Usage" cpu_usage
# info "Disk" disk
# info "Battery" battery
info "Disk" disk
info "Battery" battery
# info "Font" font
# info "Song" song
# [[ "$player" ]] && prin "Music Player" "$player"
# info "Local IP" local_ip
info "Song" song
[[ "$player" ]] && prin "Music Player" "$player"
info "Local IP" local_ip
# info "Public IP" public_ip
# info "Users" users
# info "Locale" locale # This only works on glibc systems.
@ -85,7 +83,7 @@ distro_shorthand="off"
# Example:
# on: 'Arch Linux x86_64'
# off: 'Arch Linux'
os_arch="on"
os_arch="off"
# Uptime
@ -101,7 +99,7 @@ os_arch="on"
# on: '2 days, 10 hours, 3 mins'
# tiny: '2d 10h 3m'
# off: '2 days, 10 hours, 3 minutes'
uptime_shorthand="on"
uptime_shorthand="tiny"
# Memory
@ -128,7 +126,7 @@ memory_percent="off"
# kib '1020928KiB / 7117824KiB'
# mib '1042MiB / 6951MiB'
# gib: ' 0.98GiB / 6.79GiB'
memory_unit="mib"
memory_unit="gib"
# Packages
@ -195,7 +193,7 @@ speed_type="bios_limit"
# Example:
# on: 'i7-6500U (4) @ 3.1GHz'
# off: 'i7-6500U (4) @ 3.100GHz'
speed_shorthand="off"
speed_shorthand="on"
# Enable/Disable CPU brand in output.
#
@ -249,7 +247,7 @@ cpu_cores="logical"
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
# off: 'Intel i7-6500U (4) @ 3.1GHz'
cpu_temp="off"
cpu_temp="C"
# GPU
@ -298,7 +296,7 @@ gpu_type="all"
# Example:
# on: '1920x1080 @ 60Hz'
# off: '1920x1080'
refresh_rate="off"
refresh_rate="on"
# Gtk Theme / Icons / Font

View file

@ -28,6 +28,8 @@ end
vim.opt.rtp:prepend(lazypath)
-- Setup the plugins you need.
require("lazy").setup({
-- For background transparency
{ 'xiyaowong/transparent.nvim' },
-- === The colorscheme plugin is specified here. ===
-- Gruvbox theme plugin. It will be automatically installed by lazy.nvim.
{ 'ellisonleao/gruvbox.nvim', config = function()
@ -59,12 +61,22 @@ require("lazy").setup({
end
},
})
-- Transparent configuration
require('transparent').setup({
enable = true, -- boolean: enable transparent
extra_groups = { -- table: additional groups to clear
'Normal', 'NormalNC', 'Comment', 'Constant', 'Identifier',
'Statement', 'PreProc', 'Type', 'Special', 'Underlined',
'Todo', 'String', 'Function', 'Conditional', 'Repeat',
'Operator', 'Structure', 'LineNr', 'SignColumn', 'EndOfBuffer'
},
})
-- Treesitter configuration.
require("nvim-treesitter.configs").setup({
highlight = { enable = true },
-- require("nvim-treesitter.configs").setup({
-- highlight = { enable = true },
-- You can specify languages to install with `ensure_installed`.
-- e.g., ensure_installed = { "lua", "python", "javascript" },
})
-- })
-- Autocomplete (cmp) configuration.
local cmp = require("cmp")
cmp.setup({
@ -123,4 +135,6 @@ vim.keymap.set('n', '<leader>a', 'ggVG', { desc = 'Select entire file' })
-- Groff => PDF
vim.keymap.set('n', '<leader>cg', ':!groff -ms -e %:t -T pdf > %:r.pdf<CR>', { desc = 'Compile Groff file to PDF' })
-- Typst => PDF
vim.keymap.set('n', '<leader>ct', ':!typst compile %:t<CR>', { desc = 'Compile Typst file to PDF'} )
vim.keymap.set('n', '<leader>ct', ':!typst compile %:t<CR>', { desc = 'Compile Typst file to PDF'} )
-- Keybinding to toggle transparency
vim.api.nvim_set_keymap('n', '<leader>tt', ':TransparentToggle<CR>', { noremap = true, silent = true })

View file

View file

65
.config/nix/hosts/home.nix → nix/hosts/home.nix Normal file → Executable file
View file

@ -6,6 +6,15 @@
home.stateVersion = "25.05";
xdg.userDirs = {
enable = true;
createDirectories = true;
};
gtk = {
enable = true;
colorScheme = "dark";
};
programs.zsh = {
enable = true;
syntaxHighlighting.enable = true;
@ -59,27 +68,54 @@
co = "checkout";
s = "status";
pu = "push origin master";
po = "push origin main";
rmc = "rm -r --cached";
};
};
nixpkgs.config.allowUnfree = true;
# Librewolf comes with safe defaults already, so minimal changes are necessary.
programs.librewolf = {
enable = true;
settings = {
"webgl.disabled" = false;
# "privacy.clearOnShutdown.history" = false;
# "privacy.clearOnShutdown.cookies" = false;
"network.cookie.lifetimePolicy" = 0;
};
};
services.udiskie = {
enable = true;
settings = {
program_options = {
file_manager = "${pkgs.kdePackages.dolphin}/bin/dolphin";
};
};
};
home.packages = with pkgs; [
tree # Nice file tree views w/permissions
tree # Nice file tree views w/ permissions
linux-wifi-hotspot # For hotspotting while over ethernet
neofetch # Muh epic r1ce!!!
btop # Resource manager
stow # For dotfiles deployment. May use home.file in future
hyfetch # basically neofetch but with queer flags
htop # OG resource manager
btop # Pretty resource manager
imagemagick # For converting images into other fmts
sxiv # Minimal image viewer
mpv # Video player
mpv # Media player
zathura # PDF/CBZ/EPUB/DJVU reader
tmux # Tride and true terminal multiplexer
obsidian # For epic note taking (really just mediocre journaling)
keepassxc # Secure password manager
syncthing # Self explanatory
syncthing # File syncing
ghostty # Terminal emulator
irssi # Terminal IRC client
nyxt # Customizable browser
cmus # C Music Player (TUI)
deadbeef # Closest thing to foobar2000 native on Linux
nicotine-plus # FOSS client for SoulSeek
kdePackages.dolphin # GUI File Manager
# Fonts
nerd-fonts.jetbrains-mono
miracode
@ -88,6 +124,25 @@
fonts.fontconfig.enable = true;
home.file = {
# Ghostty
".config/ghostty/config" .source = dotfiles/ghostty/config;
# Neovim
".config/nvim/init.lua" .source = dotfiles/nvim/init.lua;
# Emacs
".emacs.d/init.el" .source = dotfiles/.emacs.d/init.el;
# MPV
".config/mpv/mpv.conf" .source = dotfiles/mpv/mpv.conf;
# Btop
# ".config/btop/btop.conf" .source = dotfiles/btop/btop.conf;
# Neofetch
".config/neofetch/config.conf" .source = dotfiles/neofetch/config.conf;
# Hyprland
".config/hypr/bg.jpg" .source = dotfiles/hypr/bg.jpg;
".config/hypr/hyprland.conf" .source = dotfiles/hypr/hyprland.conf;
".config/hypr/start.sh" .source = dotfiles/hypr/start.sh;
# Waybar
".config/waybar/config" .source = dotfiles/waybar/config;
".config/waybar/style.css" .source = dotfiles/waybar/style.css;
};
home.sessionVariables = {

0
.config/nix/modules/efi.nix → nix/modules/efi.nix Normal file → Executable file
View file

4
.config/nix/modules/hypr.nix → nix/modules/hypr.nix Normal file → Executable file
View file

@ -12,10 +12,6 @@
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
environment.systemPackages = with pkgs; [
# home-manager # For using Nix Home Manager
zsh # Default user shell
neovim # Terminal text editor
wget # coreutil for some script compatibility
waybar # Status bar
libnotify # Desktop notifications
swww # Wallpaper manager

View file

@ -25,10 +25,7 @@
devices = [
"/dev/input/by-path/platform-i8042-serio-0-event-kbd"
];
configFile = builtins.fetchurl {
url = https://git.luluslly.xyz/lulusilly/dotfiles/raw/branch/master/.config/kanata/conf.kbd;
sha256 = "97947618d01cc8bd553c2d305537b9db6962a3a9205cda43abadc1b87eed901f";
};
configFile = ./conf.kbd;
};
};
};

View file

11
nix/modules/syncthing.nix Executable file
View file

@ -0,0 +1,11 @@
{ config, pkgs, inputs, ... }:
{
services.syncthing = {
enable = true;
user = "lunita";
group = "syncthing";
dataDir = "/home/lunita/Sync";
configDir = "/home/lunita/.config/syncthing";
};
}