diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index 81b47aa..e69de29 --- a/.gitignore +++ b/.gitignore @@ -1,6 +0,0 @@ -ISSUES/ -secrets/ -nib/ - -result -rebuild*.log diff --git a/GUIDE.md b/GUIDE.md deleted file mode 100644 index 7666492..0000000 --- a/GUIDE.md +++ /dev/null @@ -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 -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/docs/inspiration.md b/INSPIRATION old mode 100755 new mode 100644 similarity index 55% rename from docs/inspiration.md rename to INSPIRATION index fdb73ab..2c5adf0 --- a/docs/inspiration.md +++ b/INSPIRATION @@ -6,7 +6,3 @@ Gorgeous 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/README.md b/README.md old mode 100644 new mode 100755 index 36d887e..ce2a13b --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ -## My NixOS Flake ### Philosophy -> [!TODO] My philosophy has kinda changed since the beginning +I try to use Home Manager as little as possible. When I first started with NixOS I found +it distracting and confusing. NixOS already handles system wide and user packages, so having +another user level package management method was baffling. Obviously I understand now how +it can be useful (so I do use it). But where possible I will instead use the functionality +of Nix rather than Home Manager. -### Repo Structure +###### Structuring Modules Modules are organised into groups (ie "Core"), from here a module is structured as either: 1. a single `.nix` file (ie bluetooth.nix). I do this when I won't implement an alternative 2. a directory (ie `sound`) containing a set of alternative implementations and a `default.nix` @@ -10,19 +13,15 @@ that simply imports one of the implementations. For the `sound` example I curren to default to `pipewire.nix`. I haven't made alternatives yet but the idea is that it is HIGHLY likely I do in future. -### Security Considerations -###### Hashing -For services where password hashing is done infrequently (ie my forgejo instance with signups disabled) -use argon2 (argon2id) with default `argon2$2$65536$8$50` (typically). Otherwise bcrypt is preferred. ### TODO -There are a lot of commented `# TODO: ...` items in this repository. -All (most) of my commented directives can be found via this pattern: -```sh -grep -rnE '^\s*(//|#)\s*[A-Z]*:\s*.+$' --exclude-dir=.git 2>/dev/null -``` +There are a lot of `TODO` items in this repository. To improve these dotfiles +I should run a command to find files containing "TODO" and then implement the +recommendation I left behind :) -### Random Explanation of Fonts + + +##### Small Explanation of Fonts There are four types of fonts (to my knowledge at least): 1. serif (funny squigles / small elegant strokes included) 2. sans-serif (meaning "without serifs") @@ -34,9 +33,19 @@ Fun fact: on Android, the emojis you are seeing are part of the noto-emoji font For finding a font for programming I highly recommend trying https://www.codingfont.com/ -### Links -#### Inspiration -##### Explaining my Vision with r/unixporn posts +### My config + +Font: +Iosevka nerd font set as default/prefered font +Terminal uses IosevkaTerm nerd font + +Home-Manager: +I just to use home-manager standalone and not as a NixOS module, thus allowing +my dotfiles to also work on non-NixOS systems. + + + +### Explaining my Vision with r/unixporn posts I want the side panel from https://www.reddit.com/r/unixporn/comments/12wpvyf/hyprland_eww_is_all_i_need/ but not the colour scheme and I'm 50/50 on the bar being on th eleft side lol. Also I love the volume bar on the right! @@ -55,29 +64,22 @@ Their window decorations and bar are great, also being able to hide everything u https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/ If their colour scheme was a little less white I'd love it but overall one of my favourites every -##### Other Inspiring Shtuff -1. https://github.com/sabrehagen/desktop-environment -#### Wallpaper Sources +### Wallpaper Sources 1. https://www.wallpaperflare.com/ 2. https://alphacoders.com especially this one person: https://alphacoders.com/users/profile/69089/robokoboto and also the lofi category: https://alphacoders.com/lofi -#### Teach Yourself Nix -1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles) - Really good security oriented NixOS stuff -2. https://jade.fyi/blog/flakes-arent-real/ - Interesting blog post on using flakes -#### Credits +### Credits 1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles - The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. +The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. 2. https://github.com/Misterio77/nix-starter-configs - Really great starter config for learning how parts interact and how to generally structure flakes +Really great starter config for learning how parts interact and how to generally structure flakes 3. https://nixos.wiki/wiki/Fonts - Wiki page explaining how to install fonts and nerd fonts on NixOS +Wiki page explaining how to install fonts and nerd fonts on NixOS 4. https://github.com/adi1090x/rofi - For the Rofi theme +For the Rofi theme 5. https://github.com/zDyanTB/HyprNova - For the really cool hyprlock theme +For the really cool hyprlock theme diff --git a/SCREENSHARING b/SCREENSHARING deleted file mode 100644 index d3046f6..0000000 --- a/SCREENSHARING +++ /dev/null @@ -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 diff --git a/docs/TODO.md b/TODO old mode 100755 new mode 100644 similarity index 100% rename from docs/TODO.md rename to TODO diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 6b9f235..0000000 --- a/TODO.md +++ /dev/null @@ -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) diff --git a/docs/TODO_UI.md b/TODO_UI old mode 100755 new mode 100644 similarity index 100% rename from docs/TODO_UI.md rename to TODO_UI diff --git a/banner b/banner deleted file mode 100644 index 67e1bd9..0000000 --- a/banner +++ /dev/null @@ -1,6 +0,0 @@ - .------------. - | oh my | - '------------' - ^ (\_(\ - '----- ( -.-) - o_(")(") diff --git a/config.temp/hyprland.conf b/config.temp/hyprland.conf deleted file mode 100755 index 4876e8a..0000000 --- a/config.temp/hyprland.conf +++ /dev/null @@ -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 diff --git a/deploy b/deploy index 911d054..b72232d 100755 --- a/deploy +++ b/deploy @@ -1,82 +1,3 @@ #!/usr/bin/env bash -set -e - -# TODO: use `nixos-rebuild build-vm` - -usage="Usage: $(basename $0) [OPTIONS] - -Options: - -f, --fresh Remove old content in the nixstore (good for debugging) - -b, --bootloader Reinstall the bootloader - -r, --remote Locally build and remotely deploy Colmena hive - -h, --help Show this message (^_^)" - -# delete all cached entries -# to make the system from scratch -collect_garbage () { - sudo nix-collect-garbage --delete-old -} - -rebuild_flake () { - # make sure all changes are visible to nixos - git add . --verbose - local FLAGS= - if [ "$1" = "reinstall-bootloader" ]; then - FLAGS="--install-bootloader" - # sudo nixos-rebuild switch --flake . --install-bootloader - # STC_DISPLAY_ALL_UNITS=1 (verbose, show output of all units) - fi - - # LOG="$(mktemp /tmp/rebuild-XXXXXXXX)" - LOG="./rebuild.log" - echo "[*] Logging to $LOG" - sudo nixos-rebuild switch --flake . $FLAGS 2>&1 | tee "$LOG" - #nixos-rebuild build --flake .# --cores 8 -j 1 -} - -deploy_hive () { - echo "[+] Adding keys to ssh-agent" - ssh-add ~/.ssh/id_hyrule - printf "\n" - - git add . --verbose - # Deploy to all Colmena hives - colmena build --experimental-flake-eval - colmena apply --experimental-flake-eval - # colmena apply --on hyrule --experimental-flake-eval -} - -# check which flags were given -flag_fresh=false -flag_bootloader=false -for flag in "$@"; do - case "$flag" in - -r|--remote) - deploy_hive - exit 0 ;; - -f|--fresh) - flag_fresh=true ;; - -b|--bootloader) - flag_bootloader=true ;; - -h|--help) - echo "$usage" - exit 0 ;; - *) - echo "[!] Unknown flag \"$flag\"" - exit 1 ;; - esac -done - -# delete cached items in nixstore -if [ "$flag_fresh" = true ]; then - collect_garbage - exit 0 -fi - -# nixos-rebuild switch ... -if [ "$flag_bootloader" = true ]; then - collect_garbage - rebuild_flake "reinstall-bootloader" -else - rebuild_flake -fi +sudo nixos-rebuild switch --flake . +#nixos-rebuild build --flake .# --cores 8 -j 1 diff --git a/docs/DEVDOC.md b/docs/DEVDOC.md deleted file mode 100644 index 4b8567e..0000000 --- a/docs/DEVDOC.md +++ /dev/null @@ -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) diff --git a/docs/DEV_ENV.md b/docs/DEV_ENV.md deleted file mode 100644 index 65e8bb0..0000000 --- a/docs/DEV_ENV.md +++ /dev/null @@ -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 diff --git a/docs/PROBLEMLOG.md b/docs/PROBLEMLOG.md deleted file mode 100644 index 5b0e3a6..0000000 --- a/docs/PROBLEMLOG.md +++ /dev/null @@ -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 diff --git a/docs/nixos_notes.md b/docs/nixos_notes.md deleted file mode 100644 index e396b10..0000000 --- a/docs/nixos_notes.md +++ /dev/null @@ -1,2 +0,0 @@ -Building specific parts of a NixOS system -https://nixos.org/manual/nixos/stable/#sec-building-parts diff --git a/flake.lock b/flake.lock old mode 100644 new mode 100755 index e1ab303..1977cf0 --- a/flake.lock +++ b/flake.lock @@ -1,36 +1,130 @@ { "nodes": { - "colmena": { + "ags": { "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", - "nix-github-actions": "nix-github-actions", - "nixpkgs": "nixpkgs", - "stable": "stable" + "astal": "astal", + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1734374287, - "narHash": "sha256-rINodqeUuezuCWOnpJgrH7u9vJ86fYT+Dj8Mu8T/IBc=", - "owner": "zhaofengli", - "repo": "colmena", - "rev": "47b6414d800c8471e98ca072bc0835345741a56a", + "lastModified": 1738087375, + "narHash": "sha256-GLyNtU9A2VN22jNRHZ2OXuFfTJLh8uEVVt+ftsKUX0c=", + "owner": "Aylur", + "repo": "ags", + "rev": "a6a7a0adb17740f4c34a59902701870d46fbb6a4", "type": "github" }, "original": { - "owner": "zhaofengli", - "repo": "colmena", - "rev": "47b6414d800c8471e98ca072bc0835345741a56a", + "owner": "Aylur", + "repo": "ags", + "type": "github" + } + }, + "ags_2": { + "inputs": { + "astal": "astal_2", + "nixpkgs": [ + "hyprpanel", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736090999, + "narHash": "sha256-B5CJuHqfJrzPa7tObK0H9669/EClSHpa/P7B9EuvElU=", + "owner": "aylur", + "repo": "ags", + "rev": "5527c3c07d92c11e04e7fd99d58429493dba7e3c", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "ags", + "type": "github" + } + }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739103745, + "narHash": "sha256-c53dcRaw0F4Os9WD05HwIRs9kTDZw4Mxe1XK4edEALo=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "a3dda0d10ce9aa1d1dfb7a6c139ea8c2872c74bd", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "astal": { + "inputs": { + "nixpkgs": [ + "ags", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737670815, + "narHash": "sha256-ZCxxshGN7XooabArcoGkYSNx5yVunqjKJi2aTv6cznI=", + "owner": "aylur", + "repo": "astal", + "rev": "127e9cdcbf173846a3c40ddc0abfbb038df48042", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "astal", + "type": "github" + } + }, + "astal_2": { + "inputs": { + "nixpkgs": [ + "hyprpanel", + "ags", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735172721, + "narHash": "sha256-rtEAwGsHSppnkR3Qg3eRJ6Xh/F84IY9CrBBLzYabalY=", + "owner": "aylur", + "repo": "astal", + "rev": "6c84b64efc736e039a8a10774a4a1bf772c37aa2", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "astal", "type": "github" } }, "flake-compat": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -39,18 +133,55 @@ "type": "github" } }, - "flake-utils": { + "flake-compat_2": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, @@ -59,11 +190,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1757136219, - "narHash": "sha256-tKU+vq34KHu/A2wD7WdgP5A4/RCmSD8hB0TyQAUlixA=", + "lastModified": 1734412921, + "narHash": "sha256-JeMqc7lLowKn6klrCcOkcOg38yNqF7MPbN4Elh6Xvq0=", "owner": "vinceliuice", "repo": "grub2-themes", - "rev": "80dd04ddf3ba7b284a7b1a5df2b1e95ee2aad606", + "rev": "f6ab2438e124f60a340a526543e498e5e33b3c53", "type": "github" }, "original": { @@ -72,54 +203,353 @@ "type": "github" } }, - "nix-github-actions": { + "home-manager": { "inputs": { "nixpkgs": [ - "colmena", "nixpkgs" ] }, "locked": { - "lastModified": 1729742964, - "narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=", + "lastModified": 1736373539, + "narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=", "owner": "nix-community", - "repo": "nix-github-actions", - "rev": "e04df33f62cdcf93d73e9a04142464753a16db67", + "repo": "home-manager", + "rev": "bd65bc3cde04c16755955630b344bc9e35272c56", "type": "github" }, "original": { "owner": "nix-community", - "repo": "nix-github-actions", + "ref": "release-24.11", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1738664950, + "narHash": "sha256-xIeGNM+iivwVHkv9tHwOqoUP5dDrtees34bbFKKMZYs=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "7c6d165e1eb9045a996551eb9f121b6d1b30adc3", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739049071, + "narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_3", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1739211449, + "narHash": "sha256-zuNQu1w9xXWOBD+FlNSqmQticolSyLNp/iSkpE5BBNc=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "f2d43e5f2180adb81b3b7b51a7d0f39dace70b05", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1738422629, + "narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1737634706, + "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "8810df502cdee755993cb803eba7b23f189db795", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739048983, + "narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739048914, + "narHash": "sha256-vd5rJBTmp2w7SDgfv23Zcd84ktI5eDA7e5UBzx+pKrU=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "a7334904d591f38757c46fbe2ab68651877d9099", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprpanel": { + "inputs": { + "ags": "ags_2", + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1739002652, + "narHash": "sha256-W83O9ASWUFaDAFY7H9vvW/Gm9PN5Lkh0McYW3bA/6aU=", + "owner": "Jas-SinghFSU", + "repo": "HyprPanel", + "rev": "0d5f80ff5cd525b8f27adfb84cef67d90e3d7f10", + "type": "github" + }, + "original": { + "owner": "Jas-SinghFSU", + "repo": "HyprPanel", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739048933, + "narHash": "sha256-ck6MaoYvISBQKqZR+HcxXnx0wOhyCauxfVMaV5zhJxQ=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "e4e018a2ca6f5a9c33511973454199e1c7c85499", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739049028, + "narHash": "sha256-RleJp7LYbr6s+M1xgbmhtBs+fYa3ZdIiF7+QalJ4D1g=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "04146df74a8d5ec0b579657307be01f1e241125f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "nix-flatpak": { + "locked": { + "lastModified": 1711997201, + "narHash": "sha256-J71xzQlVYsjagA4AsVwRazhBh2rZrPpKvxTgs6UzL7c=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "b76fa31346db7fc958a9898f3c594696ca71c4fd", + "type": "github" + }, + "original": { + "owner": "gmodena", + "ref": "v0.4.1", + "repo": "nix-flatpak", + "type": "github" + } + }, + "nixcord": { + "inputs": { + "flake-compat": "flake-compat_2", + "nixpkgs": "nixpkgs_5", + "systems": "systems_2", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1739009891, + "narHash": "sha256-H3QgHEQhr8aAqrCTeJ2qZekAuzw2HhCnuzzeyxB0wbk=", + "owner": "kaylorben", + "repo": "nixcord", + "rev": "677db34f35bdffcdca07246099ea3b22fc6688dc", + "type": "github" + }, + "original": { + "owner": "kaylorben", + "repo": "nixcord", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1734119587, - "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", - "owner": "NixOS", + "lastModified": 1737469691, + "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5", + "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1761114652, - "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", - "type": "github" - }, - "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -127,11 +557,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1761269590, - "narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=", + "lastModified": 1739240429, + "narHash": "sha256-pSpuHZvcvcWeRJwVpILrIjwFuFxsTVsHq6P470rOd/4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d792a6e0cd4ba35c90ea787b717d72410f56dc40", + "rev": "3f5198c541172f46867427d4160cc9a2918414a0", "type": "github" }, "original": { @@ -143,41 +573,311 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1761016216, - "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", + "lastModified": 1739020877, + "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1736344531, + "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "481cf557888e05d3128a76f14c76397b7d7cc869", + "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-25.05", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, + "nixpkgs_5": { + "locked": { + "lastModified": 1737003892, + "narHash": "sha256-RCzJE9wKByLCXmRBp+z8LK9EgdW+K+W/DXnJS4S/NVo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ae06b9c2d83cb5c8b12d7d0e32692e93d1379713", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1735554305, + "narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1739055578, + "narHash": "sha256-2MhC2Bgd06uI1A0vkdNUyDYsMD0SLNGKtD8600mZ69A=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a45fa362d887f4d4a7157d95c28ca9ce2899b70e", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1735471104, + "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { - "colmena": "colmena", + "ags": "ags", "grub2-themes": "grub2-themes", - "nixpkgs": "nixpkgs_3", - "nixpkgs-unstable": "nixpkgs-unstable" + "home-manager": "home-manager", + "hyprland": "hyprland", + "hyprpanel": "hyprpanel", + "nix-flatpak": "nix-flatpak", + "nixcord": "nixcord", + "nixpkgs": "nixpkgs_7", + "spicetify-nix": "spicetify-nix", + "swww": "swww" } }, - "stable": { + "spicetify-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_3" + }, "locked": { - "lastModified": 1730883749, - "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede", + "lastModified": 1739223162, + "narHash": "sha256-YrbYTM0CkZQG38Ysr2gF4BYdsQDNQtQ4YdQTDgw/zWM=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "dea717737d04a2a3e877c082bfd2c7f91c1a33ff", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, + "swww": { + "inputs": { + "flake-compat": "flake-compat_3", + "nixpkgs": "nixpkgs_8", + "utils": "utils" + }, + "locked": { + "lastModified": 1737129944, + "narHash": "sha256-XBwgv80YfLZ70XYVEnR0nA7Rz5jP241D5FiwrTg7tDk=", + "owner": "LGFae", + "repo": "swww", + "rev": "3e2e2ba8f44469a1446138ee97d2988e22b093bf", + "type": "github" + }, + "original": { + "owner": "LGFae", + "repo": "swww", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "id": "systems", + "type": "indirect" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1737103437, + "narHash": "sha256-uPNWcYbhY2fjY3HOfRCR5jsfzdzemhfxLSxwjXYXqNc=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "d1ed3b385f8130e392870cfb1dbfaff8a63a1899", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems_4" + }, + "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" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737634991, + "narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", "type": "github" } } diff --git a/flake.nix b/flake.nix old mode 100644 new mode 100755 index e339ce6..def51aa --- a/flake.nix +++ b/flake.nix @@ -2,55 +2,62 @@ description = "Emile's Nix Dotfiles"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; - nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + #nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + #nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - colmena.url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a"; + home-manager = { + #url = "github:nix-community/home-manager"; + url = "github:nix-community/home-manager/release-24.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + spicetify-nix = { + url = "github:Gerg-L/spicetify-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixcord.url = "github:kaylorben/nixcord"; grub2-themes.url = "github:vinceliuice/grub2-themes"; + + # is this necessary? (aren't I enabling it in `configuration.nix` anyways?) + hyprland.url = "github:hyprwm/Hyprland"; + + swww.url = "github:LGFae/swww"; + + # TODO: declarative flatpak management + nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; + + ags.url = "github:Aylur/ags"; + + hyprpanel.url = "github:Jas-SinghFSU/HyprPanel"; }; outputs = { self, nixpkgs, - nixpkgs-unstable, + home-manager, + hyprland, grub2-themes, - colmena, + nixcord, ... } @ inputs: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; - config = { - allowUnfree = false; # sanity check - }; + config.allowUnfree = true; }; - pkgs-unstable = import nixpkgs-unstable { - inherit system; - config = { - allowUnfree = true; # TODO: bandaid solution... (for minecraft-server) - }; - }; - # TODO: come back to this its really cool # this is just something I'm experimenting with - # PROJECT_ROOT = builtins.toString ./.; + PROJECT_ROOT = builtins.toString ./.; in { - devShells."x86_64-linux".default = pkgs.mkShell { - shell = "${pkgs.bash}/bin/bash"; - - packages = with pkgs; [ - # ./script/* dependencies - mkpasswd - ]; - }; - nixosConfigurations = { # i be on my puter fr myputer = nixpkgs.lib.nixosSystem { - # nix passes these to every single module - specialArgs = {inherit inputs pkgs-unstable;}; + # nix passes these to every single module above + specialArgs = {inherit inputs pkgs;}; modules = [ ./hosts/myputer @@ -60,32 +67,22 @@ # my laptop 0w0 lolcathost = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs pkgs-unstable;}; + specialArgs = {inherit inputs pkgs;}; modules = [ ./hosts/lolcathost grub2-themes.nixosModules.default ]; }; - }; - # remote deployment to my servers!! - colmenaHive = colmena.lib.makeHive { - meta = { - nixpkgs = pkgs; - specialArgs = {inherit pkgs-unstable;}; + # my server (vps) + imbored = nixpkgs.lib.nixosSystem { + specialargs = {inherit inputs pkgs;}; # home-manager - # set nixpkgs per server - nodeNixpkgs = { - hyrule = import nixpkgs { - system = "x86_64-linux"; - config.allowUnfree = false; - }; - }; + modules = [ + ./hosts/imbored + ]; }; - - # meine vps - hyrule = import ./hosts/hyrule; }; }; } diff --git a/homes/ae/default.nix b/homes/ae/default.nix deleted file mode 100644 index 3c33619..0000000 --- a/homes/ae/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { - nixpkgs = { - config.allowUnfree = false; - }; - - imports = [ - ../modules/fish.nix - ../modules/bat.nix - ../modules/btop.nix - ]; - - home = { - username = "ae"; - homeDirectory = "/home/ae"; - }; - - # Nicely reload system units when changing configs - systemd.user.startServices = "sd-switch"; - - home.stateVersion = "24.11"; # DO NOT MODIFY -} diff --git a/homes/me/ags-end4/assets/icons/ai-openai-symbolic.svg b/homes/me/ags-end4/assets/icons/ai-openai-symbolic.svg new file mode 120000 index 0000000..c9ee0b3 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/ai-openai-symbolic.svg @@ -0,0 +1 @@ +openai-symbolic.svg \ No newline at end of file diff --git a/homes/me/ags-end4/assets/icons/ai-oxygen-symbolic.svg b/homes/me/ags-end4/assets/icons/ai-oxygen-symbolic.svg new file mode 100644 index 0000000..5e1cc19 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/ai-oxygen-symbolic.svg @@ -0,0 +1,54 @@ + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/ai-zukijourney.png b/homes/me/ags-end4/assets/icons/ai-zukijourney.png new file mode 100644 index 0000000..917335e Binary files /dev/null and b/homes/me/ags-end4/assets/icons/ai-zukijourney.png differ diff --git a/homes/me/ags-end4/assets/icons/arch-symbolic.svg b/homes/me/ags-end4/assets/icons/arch-symbolic.svg new file mode 100644 index 0000000..7de9094 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/arch-symbolic.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/cachyos-symbolic.svg b/homes/me/ags-end4/assets/icons/cachyos-symbolic.svg new file mode 100644 index 0000000..4a9db19 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/cachyos-symbolic.svg @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/cloudflare-dns-symbolic.svg b/homes/me/ags-end4/assets/icons/cloudflare-dns-symbolic.svg new file mode 100644 index 0000000..bd48d3c --- /dev/null +++ b/homes/me/ags-end4/assets/icons/cloudflare-dns-symbolic.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/crosshair-symbolic.svg b/homes/me/ags-end4/assets/icons/crosshair-symbolic.svg new file mode 100644 index 0000000..2296749 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/crosshair-symbolic.svg @@ -0,0 +1,65 @@ + + + + + + + ionicons-v5_logos + + + + ionicons-v5_logos + + + + + + diff --git a/homes/me/ags-end4/assets/icons/debian-symbolic.svg b/homes/me/ags-end4/assets/icons/debian-symbolic.svg new file mode 100644 index 0000000..252f853 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/debian-symbolic.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/endeavouros-symbolic.svg b/homes/me/ags-end4/assets/icons/endeavouros-symbolic.svg new file mode 100644 index 0000000..3be4cc4 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/endeavouros-symbolic.svg @@ -0,0 +1,96 @@ + + + + + EndeavourOS Logo + + + + image/svg+xml + + EndeavourOS Logo + + + + + + + + + + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/fedora-symbolic.svg b/homes/me/ags-end4/assets/icons/fedora-symbolic.svg new file mode 100644 index 0000000..1a4e8c8 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/fedora-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/flatpak-symbolic.svg b/homes/me/ags-end4/assets/icons/flatpak-symbolic.svg new file mode 100644 index 0000000..0c2bf62 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/flatpak-symbolic.svg @@ -0,0 +1,52 @@ + + + + + Flatpak + + + + + Flatpak + + + + diff --git a/homes/me/ags-end4/assets/icons/github-symbolic.svg b/homes/me/ags-end4/assets/icons/github-symbolic.svg new file mode 100644 index 0000000..c1c9f19 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/github-symbolic.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/homes/me/ags-end4/assets/icons/google-gemini-symbolic.svg b/homes/me/ags-end4/assets/icons/google-gemini-symbolic.svg new file mode 100644 index 0000000..9de741b --- /dev/null +++ b/homes/me/ags-end4/assets/icons/google-gemini-symbolic.svg @@ -0,0 +1,56 @@ + + + + + + + ionicons-v5_logos + + + + + ionicons-v5_logos + + + + diff --git a/homes/me/ags-end4/assets/icons/linux-symbolic.svg b/homes/me/ags-end4/assets/icons/linux-symbolic.svg new file mode 100644 index 0000000..63f9c7e --- /dev/null +++ b/homes/me/ags-end4/assets/icons/linux-symbolic.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/nixos-symbolic.svg b/homes/me/ags-end4/assets/icons/nixos-symbolic.svg new file mode 100644 index 0000000..b697b0d --- /dev/null +++ b/homes/me/ags-end4/assets/icons/nixos-symbolic.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/ollama-symbolic.svg b/homes/me/ags-end4/assets/icons/ollama-symbolic.svg new file mode 100644 index 0000000..0145481 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/ollama-symbolic.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/icons/openai-symbolic.svg b/homes/me/ags-end4/assets/icons/openai-symbolic.svg new file mode 100644 index 0000000..8ffc912 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/openai-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/homes/me/ags-end4/assets/icons/openrouter-symbolic.svg b/homes/me/ags-end4/assets/icons/openrouter-symbolic.svg new file mode 100644 index 0000000..32aaaf5 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/openrouter-symbolic.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/homes/me/ags-end4/assets/icons/ubuntu-symbolic.svg b/homes/me/ags-end4/assets/icons/ubuntu-symbolic.svg new file mode 100644 index 0000000..07746c9 --- /dev/null +++ b/homes/me/ags-end4/assets/icons/ubuntu-symbolic.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/homes/me/ags-end4/assets/themes/sourceviewtheme-dark-monokai-license.txt b/homes/me/ags-end4/assets/themes/sourceviewtheme-dark-monokai-license.txt new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/homes/me/ags-end4/assets/themes/sourceviewtheme-dark-monokai-license.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/homes/me/ags-end4/assets/themes/sourceviewtheme-light.xml b/homes/me/ags-end4/assets/themes/sourceviewtheme-light.xml new file mode 100644 index 0000000..bf39bfb --- /dev/null +++ b/homes/me/ags-end4/assets/themes/sourceviewtheme-light.xml @@ -0,0 +1,95 @@ + + + end_4 + <_description>Catppuccin port but very random + +