Merge remote-tracking branch 'forge/main'

This commit is contained in:
Emile Clark-Boman 2026-02-08 19:35:28 +10:00
commit 833c05e31a
17 changed files with 40 additions and 832 deletions

109
GUIDE.md
View file

@ -1,109 +0,0 @@
# 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 <OLD_CHANNEL>
nix-channel --add <NEW_CHANNEL> # 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

View file

@ -1,11 +0,0 @@
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

32
TODO.md
View file

@ -1,32 +0,0 @@
## 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)

6
banner
View file

@ -1,6 +0,0 @@
.------------.
| oh my |
'------------'
^ (\_(\
'----- ( -.-)
o_(")(")

View file

@ -1,373 +0,0 @@
# 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

View file

@ -1,25 +0,0 @@
## 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)

View file

@ -1,67 +0,0 @@
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

View file

@ -1,5 +0,0 @@
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

View file

@ -1,91 +0,0 @@
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
};
```

View file

@ -1,3 +0,0 @@
1. Create more themes for my applauncher
2. Create more themes for hyprlock
check out: https://github.com/MrVivekRajan/Hyprlock-Styles

View file

@ -1,12 +0,0 @@
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/

View file

@ -1,2 +0,0 @@
Building specific parts of a NixOS system
https://nixos.org/manual/nixos/stable/#sec-building-parts

35
flake.lock generated
View file

@ -138,6 +138,22 @@
"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": [
@ -183,11 +199,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1761016216,
"narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=",
"owner": "nixos",
"lastModified": 1770536720,
"narHash": "sha256-pbmbaQUuoG+v37b91lqcNcz05YUvVif7iWjIx9lF8R4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "481cf557888e05d3128a76f14c76397b7d7cc869",
"rev": "3c64ab24b22579c833895b6030c9563837e41a70",
"type": "github"
},
"original": {
@ -199,11 +215,11 @@
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"lastModified": 1761114652,
"narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c",
"type": "github"
},
"original": {
@ -235,6 +251,7 @@
"grub2-themes": "grub2-themes",
"nixcord": "nixcord",
"nixpkgs": "nixpkgs",
"nix-flatpak": "nix-flatpak",
"nixpkgs-unstable": "nixpkgs-unstable",
"systems": "systems_2"
}

View file

@ -16,6 +16,7 @@
};
};
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.7.0";
grub2-themes = {
url = "github:vinceliuice/grub2-themes";
inputs.nixpkgs.follows = "nixpkgs";

View file

@ -1,87 +0,0 @@
{
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
}

View file

@ -135,6 +135,12 @@ in {
wishlist
];
};
friends = {
isNormalUser = true;
shell = pkgs.fish;
home = "/home/friends";
};
};
};
@ -186,6 +192,7 @@ in {
git
vim
helix
tcpdump
];
system.stateVersion = "24.11"; # DO NOT MODIFY

View file

@ -27,6 +27,8 @@ in {
#../modules/flipperzero.nix
#../modules/chameleonultragui.nix
inputs.nix-flatpak.nixosModules.nix-flatpak
];
nix.settings = {
@ -144,6 +146,8 @@ in {
# ----- SERVICES -----
services = {
flatpak.enable = true;
# Set display manager (login screen)
displayManager = {
# sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects
@ -329,6 +333,7 @@ in {
gobuster
nth
zap
wireguard-tools
httpie
curlie
@ -376,6 +381,7 @@ in {
# Games
prismlauncher # minecraft
pkgs-unstable.olympus
discord
];
# DEBUG: configuring xdg portal here instead?