diff --git a/GUIDE.md b/GUIDE.md new file mode 100644 index 0000000..7666492 --- /dev/null +++ b/GUIDE.md @@ -0,0 +1,109 @@ +# The Nix Documentation Situation +The Nix documentation situation is notorious bad. It's difficult to find +a concise answer with detailed justification/explanation. And most people +(myself included) tend resort to the [ArchWiki](https://wiki.archlinux.org). +> [!NOTE] +> The [Nix documentation team](https://nixos.org/community/teams/documentation) has an incredibly difficult job. + +Unlike the *centralised* [ArchWiki](https://wiki.archlinux.org), the Nix ecosystem +is incredibly large: +1. **Nix** (the package manager) +2. **Nix/NixLang** (the programming language) +3. **Nixpkgs** (the package repository) +4. **NixOS** (the linux distribution) +5. **Home-Manager** (user environment management) +6. **NUR** (Nix User Repository, like the AUR but Nix!) +7. *and **many** more...* + +Often each project has its own website, wiki, styling, etc. There is tonnes +of information available online but its so hard to find it. + +**Notable organisations:** +1. NixOS Foundation (*official organisation that maintains Nix/Nixpkgs/NixOS*) +2. Nix Community (*unofficial community providing infrastructure/hosting/visibility for projects*) + +## About Me +I love and hate Nix simultaneously. + +Originally *(circa 2023)* I used Windows 10/11 exclusively for programming. +But this is tedious and my friend started mentioning Arch Linux. So with their +help I formatted a spare SSD and began my journey. + +But I **REALLY** like computers... I have servers, routers, 3 computers +actively powered in my bedroom, and *I believe* 8 laptops *currently* in my posession. + +Documenting **every** change I make to a system and spending a week +setting up a device I don't really care about isn't sustainable. +And then *(circa October 2024)* I learnt about NixOS... And now life is "easy". +But learning Nix/NixLang/Nixpkgs/NixOS/Home-Manager/blah-blah-blah was exhausting. +So now I'll try to simplify this learning curve for other newbies **<3** + + +## Nix/NixOS How To +### NixOS Documentation +Using "the" NixOS wiki is surprisingly confusing (at least it was for me). +Why? Because there are multiple and you probably won't realise the difference. + +**Main Wikis:** +> These are visually and structurally identical... And are both community run. +> But they're content does differ. [nixos.wiki] was created +> because ""[wiki.nixos.org] was too limiting with regards to wiki features". +1. [https://wiki.nixos.org] (the **official** NixOS wiki) +2. [https://nixos.wiki] (the **unofficial** user's wiki, community run) + + +**Other Resources:** +> [!TODO] + + +### Migrate to a Newer Version of Nixpkgs +```bash +# Determine the channel name you're using +nix-channel --list +nix-channel --remove +nix-channel --add # ie https://nixos.org/channels/nixos-25.05 +nix-channel --update + +# Now upgrade system profile (log to file in case of failure) +nixos-rebuild boot --upgrade | tee rebuild.log +``` + + + +## Security Implications +### NixOS Default Home Permissions +```bash +# Executing from $HOME +>>> mkdir example.d && ls -l example.d +-rw-r--r-- 1 me users 1 Jul 25 10:13 example.d +>>> echo > example.f && ls -l example.f +-rw-r--r-- 1 me users 1 Jul 25 10:15 example.f + +## But these ignore facl? +>>> getfacl "$HOME" +# file: home/me +# owner: me +# group: users +user::rwx +group::--- +other::--- +``` +Many commands default to permissions that ignore the file access control listl (file ACLs). +This is not a NixOS specific issue. However this isn't ideal from a security perspective. +The simplest solution is a recursive `chmod -R 600 ~` but there are plenty of files we +intentionally want to be different. +> [!TODO] +> Solution: Make a Nix/Home-Manager package allowing for control over folder permissions. +> SOlution: Also it should warn if any files owned by $USER have a 2 + + + +## Further Reading +### Finding New Things to Do +`man 5 configuration.nix` is incredibly useful + similar info can be found at https://mynixos.com/options + +### For your curiosity +1. https://wiki.nixos.org/wiki/Firejail + + diff --git a/SCREENSHARING b/SCREENSHARING new file mode 100644 index 0000000..d3046f6 --- /dev/null +++ b/SCREENSHARING @@ -0,0 +1,11 @@ +Excellent Resource +https://gist.github.com/brunoanc/2dea6ddf6974ba4e5d26c3139ffb7580#install-xdg-desktop-portal-and-friends + +Hyprland official page on screensharing +https://wiki.hyprland.org/Useful-Utilities/Screen-Sharing/ + + +Multiple sources seem to think that use xdg-desktop-portal-wlr works (but I can't stream individual applications) +but I suppose that's better than nothing? + +Also check out xwaylandvideobridge diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..6b9f235 --- /dev/null +++ b/TODO.md @@ -0,0 +1,32 @@ +## Next Up +1. Rename user "ae" to "cry" or "vps" +2. Add 404 page to nginx on hyrule +3. Add a user called "mirror" that stores important mirrors (inspiration: https://git.gay/mirror) + +## TODO +SOON: fix having to keep specifying new sha256 for home-manager (where I fetchTarball for it) + +Create a command palette accessible with MOD+P (MOD => Windows Key) + (ie make fullscreen, send to monitor, etc) + +Boring stuff (ie work and uni should go on a separate user account) + on in some separate $HOME atleast + +Is home-manager installed standalone? If so please remove that... + +Rewrite the README.md file its all over the place (add more structure to the `docs` directory instead) + +Add a MAC Changer module like +https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles/blob/main/nixos/mac-randomize.nix + +Make each monitor's window styling slightly different (just for fun) + +Research "input methods" ie https://wiki.archlinux.org/title/Input_method + +Bind 5 workspaces per connected monitor. + Then use the command palette (discussed prior) to send to + a different workspace (ie because I currently use MOD+SHIFT+n + but if n>=10 then it doesnt work! hence we need a command palette!) + +Can I run openvpn only for a specific proccess and its children? + then ie run qbittorrent (just in case the VPN isnt private) diff --git a/banner b/banner new file mode 100644 index 0000000..67e1bd9 --- /dev/null +++ b/banner @@ -0,0 +1,6 @@ + .------------. + | oh my | + '------------' + ^ (\_(\ + '----- ( -.-) + o_(")(") diff --git a/config.temp/hyprland.conf b/config.temp/hyprland.conf new file mode 100755 index 0000000..4876e8a --- /dev/null +++ b/config.temp/hyprland.conf @@ -0,0 +1,373 @@ +# All hyprland configuration variables are listed (even niche ones) +# to save you the hassle. Reference: https://wiki.hypr.land/Configuring/Variables/ +# +# You can split this configuration into multiple files +# Create your files separately and then link them to this file like this: +# source = ~/.config/hypr/myColors.conf + + +################ +### MONITORS ### +################ + +# Programming: +monitor=eDP-1, highres@highrr, auto, 1.0 +# Comfy: +#monitor=eDP-1, highres@highrr, auto, 1.5 + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = ghostty #rio +$fileManager = thunar +# $menu = wofi --show drun +# $menu = ags -t "applauncher" +$menu = fuzzel +$colorpicker = hyprpicker | head -c 7 | wl-copy + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +# exec-once = $terminal +# exec-once = nm-applet & +# exec-once = waybar & hyprpaper & firefox +exec-once = swww-daemon & +exec-once = mako & +# TODO: or do I do `swww init` or `swww restore`? + +# █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█ +# ██▄ █░▀█ ▀▄▀   ▀▄▀ █▀█ █▀▄ + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +#env = HYPRCURSOR_THEME,Bibata-Modern-Ice +env = HYPRCURSOR_SIZE,16 +#env = XCURSOR_THEME,Bibata-Modern-Ice +env = XCURSOR_SIZE,16 + +env = QT_QPA_PLATFORM,wayland +env = QT_QPA_PLATFORMTHEME,qt5ct +env = XDG_MENU_PREFIX,arch- + +# TODO: make this variable (not dependent on helix) in my flake +env = EDITOR,hx +env = TERMINAL,rio + + + + +# DEBUG: attempting to get screensharing working... (please god help me) +# REFERENCE: https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/251#issuecomment-2345631820 +env = XDG_CURRENT_DESKTOP,Hyprland +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +#exec-once = dbus-update-activation-environment --systemd --all +#exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP + + + +# .__. .___ __..___. . . .___ .___. ._. __ __. +# [__] [__ (__ | |__| [__ | | / ` (__ +# | | [___ .__) | | | [___ | _|_ \__. .__) + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 12 # margin between windows + gaps_out = 25 # margin from windows to monitor edge + gaps_workspaces = 0 # margin between workspaces (stacks with gaps_out) + # float_gaps = 0 # gaps_out but for floating windows + + border_size = 4 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(00000000) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = true + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle + + snap { + enabled = false + window_gap = 10 + monitor_gap = 10 + border_overlap = false + # respect_gaps = false + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 20 + rounding_power = 4.0 # Lp norm + border_part_of_window = true # consider border as part of its window + screen_shader = # path to custom GLSL fragment shader + + # Window Transparency + active_opacity = 1.0 + inactive_opacity = 0.95 + fullscreen_opacity = 1.0 # fullscreened windows + # Inactive Window Dimming + dim_inactive = false + dim_strength = 0.5 + dim_special = 0.2 + dim_around = 0.4 + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + new_optimizations = true + xray = false # floating windows xray through tiling windows + ignore_opacity = true + + # Blur Parameters + size = 8 + passes = 1 + noise = 0.0117 # default + contrast = 0.8916 # default + brightness = 0.8172 # default + vibrancy = 0.1696 # default + vibrancy_darkness = 0.0 # default + + # Blurring For Specific Window Types + special = false # blur special windows + popups = false # blur popups + popups_ignorealpha = 0.2 + input_methods = false + input_methods_ignorealpha = 0.2 + } + + shadow { + enabled = true + ignore_window = true # only render at edges (not behind) + + range = 3 + render_power = 1 # falloff rate + sharp = false # aka infinite shadow.render_power + offset = 0 0 # vec2 + scale = 1.0 + + color = rgba(00000000) + color_inactive = rgba(000000ff) # defaults to shadow.color if unset + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = yes, please :) + + # Animation Declaration Format: + # "animation = NAME, ENABLE, SPEED, BEZIER [,STYLE]" + # SPEED: in ds (where 1ds = 100ms) + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + + #animation = windows, 1, 4.79, easeOutQuint + #animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsIn, 1, 4, linear, slide bottom + # animation = windowsOut, 1, 1.49, linear, popin 87% + animation = windowsOut, 1, 10, linear, popin + + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade +} + +# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ +# "Smart gaps" / "No gaps when only" +# uncomment all if you wish to use that. +# workspace = w[t1], gapsout:0, gapsin:0 +# workspace = w[tg1], gapsout:0, gapsin:0 +# workspace = f[1], gapsout:0, gapsin:0 +# windowrulev2 = bordersize 0, floating:0, onworkspace:w[t1] +# windowrulev2 = rounding 0, floating:0, onworkspace:w[t1] +# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tg1] +# windowrulev2 = rounding 0, floating:0, onworkspace:w[tg1] +# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] +# windowrulev2 = rounding 0, floating:0, onworkspace:f[1] + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to MOD + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + #force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( + disable_splash_rendering = true +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = false + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = true +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +#device { +# name = epic-mouse-v1 +# sensitivity = -0.5 +#} + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$MOD = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $MOD, RETURN, exec, $terminal +bind = $MOD, E, exec, $fileManager +bind = $MOD, R, exec, $menu +bind = $MOD, H, exec, $colorpicker + +bind = $MOD, F, fullscreen +bind = $MOD, V, togglefloating, +bind = $MOD, P, pseudo, # dwindle +bind = $MOD, J, togglesplit, # dwindle + +bind = $MOD, C, killactive, +#bind = $MOD, M, exit, + +# Move focus with MOD + arrow keys +bind = $MOD, left, movefocus, l +bind = $MOD, right, movefocus, r +bind = $MOD, up, movefocus, u +bind = $MOD, down, movefocus, d + +# Switch workspaces with MOD + [0-9] +bind = $MOD, 1, workspace, 1 +bind = $MOD, 2, workspace, 2 +bind = $MOD, 3, workspace, 3 +bind = $MOD, 4, workspace, 4 +bind = $MOD, 5, workspace, 5 +bind = $MOD, 6, workspace, 6 +bind = $MOD, 7, workspace, 7 +bind = $MOD, 8, workspace, 8 +bind = $MOD, 9, workspace, 9 +bind = $MOD, 0, workspace, 10 + +# Move active window to a workspace with MOD + SHIFT + [0-9] +bind = $MOD SHIFT, 1, movetoworkspace, 1 +bind = $MOD SHIFT, 2, movetoworkspace, 2 +bind = $MOD SHIFT, 3, movetoworkspace, 3 +bind = $MOD SHIFT, 4, movetoworkspace, 4 +bind = $MOD SHIFT, 5, movetoworkspace, 5 +bind = $MOD SHIFT, 6, movetoworkspace, 6 +bind = $MOD SHIFT, 7, movetoworkspace, 7 +bind = $MOD SHIFT, 8, movetoworkspace, 8 +bind = $MOD SHIFT, 9, movetoworkspace, 9 +bind = $MOD SHIFT, 0, movetoworkspace, 10 + +# Example special workspace (scratchpad) +bind = $MOD, S, togglespecialworkspace, magic +bind = $MOD SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with MOD + scroll +bind = $MOD, mouse_up, workspace, e-1 +bind = $MOD, mouse_down, workspace, e+1 +# Or with the keyboard +bind = $MOD SHIFT, left, workspace, e-1 +bind = $MOD SHIFT, right, workspace, e+1 + +# Move/resize windows with MOD + LMB/RMB and dragging +bindm = $MOD, mouse:272, movewindow +bindm = $MOD, mouse:273, resizewindow + +# Laptop multimedia keys for volume and LCD brightness +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +windowrulev2 = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 diff --git a/docs/DEVDOC.md b/docs/DEVDOC.md new file mode 100644 index 0000000..4b8567e --- /dev/null +++ b/docs/DEVDOC.md @@ -0,0 +1,25 @@ +## Users + +#### me +My main personal account, used on my PC and laptop. +Contains a hyprland graphical environment by default. + +#### ae +Primary account on my servers. Contains the bare +essentials for my work, no graphical environment. + + +#### friends +A simple account I let me friends connect to. +Limited functionality, mostly just for letting +them test small things or for giving them files. + + +## Setup Guide +##### Adding a New Server +Enable an ssh server on the remote host, then on the +local machine set `.ssh/config` to have a profile for +your desired host and have a key pair that's authorised +to your desired user. + +NOTE: these keys must have permission 600 (only readable/writable by you) diff --git a/docs/DEV_ENV.md b/docs/DEV_ENV.md new file mode 100644 index 0000000..65e8bb0 --- /dev/null +++ b/docs/DEV_ENV.md @@ -0,0 +1,67 @@ +This file will document what features I believe I need +for NixOS to be a good development environment. + + +Issues I've encountered: +- [X] Audio not working +- [X] Tesseract is a pain in the ass to setup on Nix +- [ ] ags no longer supports `-t` flag, so applauncher won't work, requires switching to Astral +- [ ] script to enable/disable passwordless sudo + +- [X] Move Emile.Vault to new vault (I lost the password...) + +- [X] Add a simple and ugly bar + +- [ ] Install powertop (funny name) for monitoring power usage by processes +- [ ] Try to make my battery life bettery + +- [ ] Apply for JetBrains student license +- [ ] JetBrains Rider and VSCodium for C# +2. Imperative development environment behind NixOS (declarative), +similar to python's virtualenv but for the entirety of my system. + +- [X] Call my wishlist command "subspace (highway)" (Scott Pilgrim reference) + +- [ ] Create a GitHub profile readme like this persons: + https://github.com/yuyudhn +- [ ] Set a new GitHub profile picture (like github:@Vendicated) + artists credit: https://dotpict.net/users/1598051 +- [ ] Change GitHub location to /dev/zero, /dev/null, www, World Wide Web, etc +- [ ] Clean up my GitHub profile (only have things I'm proud of) + +- [X] Put a template website on my VPS +- [ ] Put a neoweb-esque webiste on my VPS +- [ ] Host a blog on my VPS + +- [ ] Clean laptop and PC, there's tons of unnecessary files and documents now +- [ ] Clean nixdots repo, start modularising it ^_^ +- [ ] Disable `allowUnfree` in nixdots everywhere, if a program needs it then they + can `mkForce` override it + +- [X] Add LSP for Nix in helix +- [ ] Make a way for me to put my laptop in a low power state, doing very specific actions like: + 1. disabling LSP use by default temporarily + +- [ ] Add https://github.com/levnikmyskin/hyprland-virtual-desktops + +TODO: +- [X] make btop theming declarative +- [X] Merge laptop and PC dotfiles repos +- [ ] declaratively install themes for gitkraken using home-manager + +Cool Technologies: +- wishlist (by charmbracelet) +- Vaultwarden server + Keyguard client +- devbox + + + +Random Idea List: +- [ ] powertop is cool but it's outdated and ugly, make a prettier one with charmbracelet's tui library + and call it powerbtm lmao +- [ ] Blog Post: a modern alternative to the suckless philosphy, + why GNU keeps failing cause their programs are amazing but + aren't designed for humans. suckless programs are excellent + too when writing shell scripts, but they suck in dev environments. + The solution is to gamify our code and focus on aesthetics + and "ergonomics" (usability) like what CharmBracelet does diff --git a/docs/PROBLEMLOG.md b/docs/PROBLEMLOG.md new file mode 100644 index 0000000..5b0e3a6 --- /dev/null +++ b/docs/PROBLEMLOG.md @@ -0,0 +1,5 @@ +180GB of disk space were used by my system which seemed absurd. Running the NixOS +garbage collector only removed 7GB. The rest was found via: +`du -hs ./.local/share/Games/drive_c/Program\ Files\ \(x86\)/Steam/dumps/reports/*` +tldr: there were 2714 30MB crash report files generated every minute of May 2nd 2025 (10 days ago) + SOLUTION: delete them all and hope it doesn't happen again diff --git a/docs/TODO.md b/docs/TODO.md new file mode 100755 index 0000000..f498088 --- /dev/null +++ b/docs/TODO.md @@ -0,0 +1,91 @@ +Get Utilities: +1. httpie +2. curlie +3. zoxide +4. doggo + +1. Get helix editor +2. Custom helix +3. Complete helix tutorial + +Get nixcord working +Get thunar working +Set a GTK theme & icon theme +Get better wallpapers +Get hyprcursor working with Bibata-Modern-Ice + +Get a GRUB theme working +Get SDDM and a theme working + +Make a custom hyprlock screen + +Get AGS working +Make an applauncher in AGS +Remove hyprland splash screen on init +Made lolcathost home modular + +Overtime just install more programs that I need regularly: ie +- btop/htop/etc + +Get GTK Bibata Cursors to be the same size as my system cursor (NOT SURE WHAT I DID...) + + +Get waybar (or another bar) working + +Get a QT theme + +Fix pipewire audio sometimes working and sometimes not :( + +Bind new terminal to SUPER+Enter instead of SUPER+Q + +Join Rio Terminal's discord and ask if they support nerdfonts or if I'm doing something wrong + + + +Change Dell loading screen (Boot Graphics Resource Table, aka BGRT) + + + + +Fix: your 131072x1 screen size is bogus. expect trouble + + + +Search for all "TODO" items in my nix dotfiles + +Push nixdots to github + + + + +Check out the Ekala Project (I joined their discord server) + + +Create a program that enables/disables passwordless sudo access + (add to github too) + +Learn to package my own home-manager modules + + + + +Ideal Features: +1. AI assistant +2. searching can also be used to calculate stuff (like I do on my iPad) + + + + +Fork nixcord and fix documentation (the installation is confusing) +But firstly the first code snippet is wrong... +```nix +inputs.nixcord = { + url = "github:kaylorben/nixcord" +}; +``` +Should actually be +```nix +inputs.nixcord = { + url = "github:kaylorben/nixcord"; # dont forget the semicolon +}; +``` diff --git a/docs/TODO_UI.md b/docs/TODO_UI.md new file mode 100755 index 0000000..34b5246 --- /dev/null +++ b/docs/TODO_UI.md @@ -0,0 +1,3 @@ +1. Create more themes for my applauncher +2. Create more themes for hyprlock + check out: https://github.com/MrVivekRajan/Hyprlock-Styles diff --git a/docs/inspiration.md b/docs/inspiration.md new file mode 100755 index 0000000..fdb73ab --- /dev/null +++ b/docs/inspiration.md @@ -0,0 +1,12 @@ +Godlike + https://github.com/end-4/dots-hyprland + +Gorgeous + https://github.com/prasanthrangan/hyprdots + +Very nice + https://github.com/linuxmobile/hyprland-dots + + +I love their hyprpanel! + https://www.reddit.com/r/unixporn/comments/1ha3mjw/hyprlandnixos_is_the_pretty_ucking_solid_i_love/ diff --git a/docs/nixos_notes.md b/docs/nixos_notes.md new file mode 100644 index 0000000..e396b10 --- /dev/null +++ b/docs/nixos_notes.md @@ -0,0 +1,2 @@ +Building specific parts of a NixOS system +https://nixos.org/manual/nixos/stable/#sec-building-parts diff --git a/flake.lock b/flake.lock index b111dd1..3cf7a06 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1770316708, - "narHash": "sha256-i9oEi2PUIZfp+73ZvQE/Ze0aCEV3y3+vvaJ/ZmAe3bw=", + "lastModified": 1770121583, + "narHash": "sha256-BI9UgaWtIHqyV8L4Vfh5Vrakax65QOG6m0a28L05YzM=", "ref": "refs/heads/main", - "rev": "955746af205e2a94a8e0798a911941da9c5af779", - "revCount": 117, + "rev": "d511138e76f03990da593d1d0129f58c1ec3f570", + "revCount": 100, "type": "git", "url": "https://forge.dobutterfliescry.net/cry/site" }, @@ -104,22 +104,6 @@ "type": "github" } }, - "nix-flatpak": { - "locked": { - "lastModified": 1767983141, - "narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=", - "owner": "gmodena", - "repo": "nix-flatpak", - "rev": "440818969ac2cbd77bfe025e884d0aa528991374", - "type": "github" - }, - "original": { - "owner": "gmodena", - "ref": "v0.7.0", - "repo": "nix-flatpak", - "type": "github" - } - }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -143,11 +127,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1770536720, - "narHash": "sha256-pbmbaQUuoG+v37b91lqcNcz05YUvVif7iWjIx9lF8R4=", + "lastModified": 1761269590, + "narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3c64ab24b22579c833895b6030c9563837e41a70", + "rev": "d792a6e0cd4ba35c90ea787b717d72410f56dc40", "type": "github" }, "original": { @@ -159,11 +143,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1770197578, - "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", "type": "github" }, "original": { @@ -175,11 +159,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1767313136, - "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", + "lastModified": 1761016216, + "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", + "rev": "481cf557888e05d3128a76f14c76397b7d7cc869", "type": "github" }, "original": { @@ -194,7 +178,6 @@ "colmena": "colmena", "dobutterfliescry-net": "dobutterfliescry-net", "grub2-themes": "grub2-themes", - "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable", "systems": "systems_2" diff --git a/flake.nix b/flake.nix index 170c392..b6d5a67 100644 --- a/flake.nix +++ b/flake.nix @@ -16,8 +16,6 @@ }; }; - nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.7.0"; - grub2-themes.url = "github:vinceliuice/grub2-themes"; dobutterfliescry-net = { diff --git a/homes/subspace/default.nix b/homes/subspace/default.nix new file mode 100644 index 0000000..c827022 --- /dev/null +++ b/homes/subspace/default.nix @@ -0,0 +1,87 @@ +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: { + nixpkgs = { + config.allowUnfree = false; + }; + + imports = [ + ]; + + home = { + username = "subspace"; + homeDirectory = "/home/subspace"; + }; + + programs = { + fish = { + enable = true; + # Extra commands to run when entering a interactive shell + # (for the subspace user this will be exiting fish to + # run wishlist instead, a shell should not pop up!) + loginShellInit = '' + clear + exec wishlist + ''; + }; + + ssh = { + enable = true; + forwardAgent = true; + addKeysToAgent = "yes"; + + matchBlocks = { + hyrule = { + hostname = "imbored.dev"; + user = "ae"; + port = 22; + identityFile = "~/.ssh/id_hyrule"; + setEnv = { + TERM = "linux"; + }; + }; + dead = { + hostname = "deadlyserver.com"; + user = "emile"; + port = 29843; + identityFile = "~/.ssh/id_deadlyserver"; + setEnv = { + TERM = "xterm-256color"; + }; + }; + youcue = { + hostname = "moss.labs.eait.uq.edu.au"; + user = "s4740056"; + port = 22; + identityFile = "~/.ssh/id_youcue"; + setEnv = { + TERM = "xterm-256color"; + }; + }; + }; + }; + }; + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + # SERVICE: webfishing (example for wishlist) + #systemd.user.services.webfishing = { + # Unit.Description = "I be out here webfishing frfr"; + + # Install.WantedBy = ["default.target"]; + + # Service = { + # Type = "exec"; + # ExecStart = "echo $HOME; cat $HOME/.ssh/config"; + # Restart = "always"; + # }; + #}; + + home.stateVersion = "24.11"; # DO NOT MODIFY +} diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index 95044d6..837fc4d 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -129,12 +129,6 @@ in { wishlist ]; }; - - friends = { - isNormalUser = true; - shell = pkgs.fish; - home = "/home/friends"; - }; }; }; @@ -186,7 +180,6 @@ in { git vim helix - tcpdump ]; system.stateVersion = "24.11"; # DO NOT MODIFY diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 698dbf5..60098b1 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -27,8 +27,6 @@ in { #../modules/flipperzero.nix #../modules/chameleonultragui.nix - - inputs.nix-flatpak.nixosModules.nix-flatpak ]; nix.settings = { @@ -146,8 +144,6 @@ in { # ----- SERVICES ----- services = { - flatpak.enable = true; - # Set display manager (login screen) displayManager = { # sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects @@ -333,7 +329,6 @@ in { gobuster nth zap - wireguard-tools httpie curlie @@ -381,7 +376,6 @@ in { # Games prismlauncher # minecraft pkgs-unstable.olympus - discord ]; # DEBUG: configuring xdg portal here instead?