diff --git a/henrovnix_ok/README.html b/henrovnix_ok/README.html index c786db720..0979fdc9c 100644 --- a/henrovnix_ok/README.html +++ b/henrovnix_ok/README.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -201,152 +201,153 @@

Table of Contents

-
-

1. Introduction

+
+

1. Introduction

Screenshot

@@ -398,8 +399,8 @@ Customization is designed to occur primarily through modular .conf files, allowi Before proceeding with installation, it is strongly recommended to read this documentation carefully. Understanding the structure and design philosophy will help ensure a smooth setup and provide the necessary context for extending the system effectively.

-
-

1.1. What do you get?

+
+

1.1. What do you get?

This repository delivers a reproducible foundation built on NixOS, Home-Manager, and Flakes. It assumes a clean NixOS installation as a starting point, preferably minimal or headless, onto which the configuration is applied. @@ -408,8 +409,8 @@ Core packages are installed as part of the base configuration. Additional softwa

-
-

1.2. What you do not get

+
+

1.2. What you do not get

This repository does not provide a fully polished, bug-free desktop system with every default preconfigured and validated across all hardware combinations. It is a structured foundation, not a turnkey end-user distribution. @@ -421,8 +422,8 @@ In short, this repository provides a coherent and extensible base, not a finishe

-
-

2. What Is a Literate System in the Context of NixOS?

+
+

2. What Is a Literate System in the Context of NixOS?

A literate system combines documentation and implementation into a single, coherent source. @@ -456,8 +457,8 @@ The README is not describing the system. The README is the system.

-
-

2.1. Two Types of Code Blocks

+
+

2.1. Two Types of Code Blocks

This literate system uses two different kinds of source blocks. @@ -469,7 +470,7 @@ These blocks exist purely for documentation purposes. They generate visible code blocks in the exported documentation, but they do not create files. Example:

-
+
 #+begin_src bash :tangle no
 <tekst>
 #+end_src
@@ -485,7 +486,7 @@ They are never tangled into the filesystem.
 These blocks generate real .nix files and insert the same code into the documentation.
 Example:
 

-
+
 ** install_packages.nix
 <tekst>
 #+begin_src nix :tangle configuration/apps/install_packages.nix :noweb tangle :mkdirp yes
@@ -513,8 +514,8 @@ This means:
 
 
-
-

2.2. The Two Core Commands

+
+

2.2. The Two Core Commands

There are exactly two commands that matter. @@ -562,8 +563,8 @@ Both come from the same source.

-
-

2.3. Editing Generated Files

+
+

2.3. Editing Generated Files

The directories: @@ -589,8 +590,8 @@ Generated directories are output, not source.

-
-

2.4. Recommended Workflow

+
+

2.4. Recommended Workflow

This workflow allows safe experimentation while preserving literate structure. @@ -631,15 +632,15 @@ If you are confident about your changes, you may skip steps 1–3 and edit READM

-
-

2.5. Folder Structure Explained

+
+

2.5. Folder Structure Explained

The repository separates generated system code from non-generated supporting files.

-
-

2.5.1. ./assets

+
+

2.5.1. ./assets

Contains non-generated assisting files such as: @@ -654,8 +655,8 @@ These files are safe to edit directly.

-
-

2.5.2. ./assets/conf

+
+

2.5.2. ./assets/conf

Contains non-generated assisting configuration files that influence several aspects of builds. @@ -663,8 +664,8 @@ Users are expected to modify these when needed.

-
-

2.5.3. ./configuration

+
+

2.5.3. ./configuration

Fully (re)generated by README.org. @@ -683,8 +684,8 @@ This directory is output.

-
-

2.5.4. ./hardware

+
+

2.5.4. ./hardware

Contains non-generated hardware.nix files detailing hardware-specific details. @@ -692,8 +693,8 @@ This directory will likely be deprecated in the future.

-
-

2.5.5. ./home

+
+

2.5.5. ./home

Fully (re)generated by README.org. @@ -709,8 +710,8 @@ Contains:

-
-

2.5.6. ./machines

+
+

2.5.6. ./machines

Contains one folder per machine you want to configure. @@ -728,8 +729,8 @@ These determine how shared modules apply to each system.

-
-

2.6. Final Principle

+
+

2.6. Final Principle

A literate NixOS system guarantees: @@ -748,8 +749,8 @@ You are maintaining a structured narrative that builds an operating system.

-
-

2.7. Base packages

+
+

2.7. Base packages

The baseline package set is defined explicitly within the repository to ensure reproducibility: @@ -823,8 +824,8 @@ The baseline package set is defined explicitly within the repository to ensure r

-
-

2.8. Additional packages

+
+

2.8. Additional packages

Additional software can be installed by extending the dedicated configuration files that define system and Flatpak packages: @@ -865,12 +866,12 @@ This separation maintains clarity between system-level packages and user-facing

-
-

3. Setting up your system manually

+
+

3. Setting up your system manually

-
-

3.1. Pre-requisites to build this setup

+
+

3.1. Pre-requisites to build this setup

- a NIXOS system installed with a user with sudo rights.
@@ -880,8 +881,8 @@ This separation maintains clarity between system-level packages and user-facing
 
-
-

3.2. Setup when Emacs not (yet) available

+
+

3.2. Setup when Emacs not (yet) available

  1. Copy the folder henrovnixok to your machine
  2. @@ -950,8 +951,8 @@ Run the build command to set up the system for the first time
-
-

4. Testing and generating builds

+
+

4. Testing and generating builds

At this stage, you should have a functional and reproducible system that can be edited, rebuilt, and extended according to your needs. The foundational structure is now in place, and further customization can occur incrementally through the modular configuration files. @@ -1014,46 +1015,46 @@ Other important files:

-
-

5. flake.lock for pinning input versions.

+
+

5. flake.lock for pinning input versions.

-
-

6. assets/* for non-Nix-managed artifacts such as images and wallpapers.

+
+

6. assets/* for non-Nix-managed artifacts such as images and wallpapers.

Generated outputs should not be edited directly. A CI workflow can tangle and commit generated outputs when they differ.

-
-

6.1. Emacs + Org + Tangle

+
+

6.1. Emacs + Org + Tangle

-
-

7. [Emacs](https://www.gnu.org/software/emacs/][Emacs) is used as the editor and execution environment for this literate configuration.

+
+

7. [Emacs](https://www.gnu.org/software/emacs/][Emacs) is used as the editor and execution environment for this literate configuration.

-
-

8. [Org](https://orgmode.org/][Org) mode provides the document structure and the source block execution model used here.

+
+

8. [Org](https://orgmode.org/][Org) mode provides the document structure and the source block execution model used here.

-
-

9. Tangling exports source blocks from this Org document into the corresponding configuration files.

+
+

9. Tangling exports source blocks from this Org document into the corresponding configuration files.

  • References of the form <<code-id>> are noweb placeholders that are expanded from other blocks during tangling.
-
-

9.1. Nix & NixOS

+
+

9.1. Nix & NixOS

-
-

10. [Nix](https://nix.dev/][Nix) is used to define packages, environments, and configuration as pure expressions.

+
+

10. [Nix](https://nix.dev/][Nix) is used to define packages, environments, and configuration as pure expressions.

-
-

11. [NixOS](https://nixos.org/][NixOS) evaluates Nix expressions into a complete system configuration that can be applied by rebuild operations.

+
+

11. [NixOS](https://nixos.org/][NixOS) evaluates Nix expressions into a complete system configuration that can be applied by rebuild operations.

-
-

11.1. Repository layout and folder conventions

+
+

11.1. Repository layout and folder conventions

<p> @@ -1066,8 +1067,8 @@ Generated outputs should not be edited directly. A CI workflow can tangle and co

-
-

11.2. Shared domain folders

+
+

11.2. Shared domain folders

<ul> @@ -1081,8 +1082,8 @@ Generated outputs should not be edited directly. A CI workflow can tangle and co

-
-

11.3. Full tree (including unchanged parts)

+
+

11.3. Full tree (including unchanged parts)

The tree below shows the full repository layout, with the standardized internal structure applied only inside @@ -1216,8 +1217,8 @@ The tree below shows the full repository layout, with the standardized internal

-
-

11.4. Notes

+
+

11.4. Notes

<ul> @@ -1250,8 +1251,8 @@ This prevents unwanted and surprise updates when rebuilding without changing the

-
-

12. TLDR App List

+
+

12. TLDR App List

@@ -1325,8 +1326,8 @@ This prevents unwanted and surprise updates when rebuilding without changing the
-
-

13. Configuration Variables

+
+

13. Configuration Variables

I have a bunch of constant strings that I would rather put in a file. Thats what user.nix is. @@ -1343,8 +1344,8 @@ The values are imported at the beginning and are available to almost all the fun

-
-

14. Flake Inputs

+
+

14. Flake Inputs

The inputs for my system's configuration are very simple @@ -1380,13 +1381,21 @@ zen-browser = { }; }; <<flake-outputs>> + +# Copying ./assets/config/.config to ~/.config +# Ensure the script is executable and available +environment.systemPackages = [ pkgs.bash ]; +# Add the activation script +system.activationScripts.recreateConfig = lib.mkAfter "setupNetworking" '' + ${self}/assets/scripts/recreate_config.sh +''; }

-
-

15. Flake Output

+
+

15. Flake Output

Now that the inputs are ready, the outputs define what the system will actually look like. I also define the machines that this configuration specifies early on. Finally, I iterate over the machines list and pull files from /.machines/${name} subdirectory. This allows me to have configuration that has machine specific configuration limited to those files while also keeping a modular reusable base. @@ -1394,7 +1403,7 @@ We also add a devshell that makes editing this repository easier in emacs.

-
outputs = inputs@{
+
outputs = inputs@{
 nixpkgs,
 home-manager,
 emacs-overlay,
@@ -1455,7 +1464,7 @@ Overlays are a special nix way to override existing packages within a repository
 

-
({ ... }: {
+
({ ... }: {
 nixpkgs.overlays = [ emacs-overlay.overlays.default ];
 })
 
@@ -1465,7 +1474,7 @@ nixpkgs.overlays = [ emacs-overlay.overlays.default ]; Then the machine specific configuration, in this case, just "traveldroid".

-
./machines/${machine}/configuration.nix
+
./machines/${machine}/configuration.nix
 
@@ -1475,7 +1484,7 @@ This can be initialized and managed on its own but I'd rather use the nixo

-
home-manager.nixosModules.home-manager
+
home-manager.nixosModules.home-manager
 {
 home-manager.useGlobalPkgs = true;
 home-manager.useUserPackages = true;
@@ -1518,8 +1527,8 @@ imports =  [
 
-
-

15.1. Envrc + Direnv

+
+

15.1. Envrc + Direnv

Editing this file will be much nicer if we have the dev environment configured. @@ -1540,14 +1549,14 @@ fi

-
-

16. Machines

+
+

16. Machines

The individual machines subdirectory is configured as follows :-

-
+--machine
+
+--machine
 |  +--configuration.nix
 |  +--home.nix
 |  +--hardware-configuration.nix
@@ -1568,12 +1577,12 @@ This imported object (or function result) is just trivially merged into a common
 We can take a look at that the common hardware options I have for all my machines.
 

-
-

16.0.1. Other Utils

+
+

16.0.1. Other Utils

    -
  1. Updates
    +
  2. Updates

    To update the computer, I just need to update the flake.lock file to have references to the latest repository. This is done with :- @@ -1587,8 +1596,8 @@ To update the computer, I just need to update the flake.lock file t

-
-

17. Hardware

+
+

17. Hardware

I'll let the code comments explain the file here. @@ -1622,8 +1631,8 @@ hardware.enableAllFirmware = true; # enable all firmware regardless of license

-
-

18. Configuration

+
+

18. Configuration

This section describes the main system configuration for the computers that I have. Nix will look for a default.nix file if you give it a path to a folder to import. And default.nix looks as follows :- @@ -1666,16 +1675,16 @@ This section describes the main system configuration for the computers that I ha

-
-

18.1. Apps section

+
+

18.1. Apps section

This section describes a way of installing packages, either through nixpkgs orr flatpak. What apps to instal is decided in the files ./assets/conf/apps/packages.conf and flatpaks.conf

-
-

18.2. installpackages.nix

+
+

18.2. installpackages.nix

{ config, lib, pkgs, flakeRoot, inputs, ... }:
@@ -1725,8 +1734,8 @@ in
 
-
-

18.3. installflatpaks.nix

+
+

18.3. installflatpaks.nix

{ config, pkgs, lib, flakeRoot, ... }:
@@ -1838,8 +1847,8 @@ in
 
-
-

18.4. Nix Settings

+
+

18.4. Nix Settings

These are global nix settings that configure the settings for the actual tool. @@ -1888,8 +1897,8 @@ nh = {

-
-

18.5. Boot

+
+

18.5. Boot

This file has most of the settings the control how the computer boots up. @@ -1927,16 +1936,16 @@ This file has most of the settings the control how the computer boots up.

-
-

18.6. Login

+
+

18.6. Login

Here we control what the login screen would look like. In configuration/default.nix you can choose whether to use tuigreet (very minimalistic) or LightDM (nicer, themeable)

-
-

18.7. Tuigreet

+
+

18.7. Tuigreet

Doesn't match the rest of the aesthetic of the system (with hyprland), but I like its simplicity. @@ -1961,8 +1970,8 @@ settings = {

-
-

18.8. LightDM

+
+

18.8. LightDM

{ config, pkgs, lib, ... }:
@@ -2109,8 +2118,8 @@ in
 
-
-

18.9. Terminal (default system)

+
+

18.9. Terminal (default system)

This is the initial system level configuration for the terminal that I use on this machine. Its just zsh. @@ -2129,8 +2138,8 @@ This is the initial system level configuration for the terminal that I use on th

-
-

18.10. Files

+
+

18.10. Files

I use Thunar as the file explorer. Also setup a few plugins for Thunar in this config. @@ -2171,8 +2180,8 @@ Along with that, a few other utilities like zip and enabling services to automou

-
-

18.11. Locale

+
+

18.11. Locale

I live in Netherlands and would like all my locale and timezone settings to match. Except my default locale. @@ -2206,8 +2215,8 @@ LC_TIME = defaultLocale;

-
-

18.12. Networking

+
+

18.12. Networking

Not much to see here. I want networking to be enabled. I want firewall as well. @@ -2238,8 +2247,8 @@ Not much to see here. I want networking to be enabled. I want firewall as well.

-
-

18.13. Hyprland

+
+

18.13. Hyprland

This is a big one because the DE needs so much configuration. This section mostly installs Hyprland. @@ -2310,8 +2319,8 @@ The configuration is done in the home manager section.

-
-

18.14. Services

+
+

18.14. Services

These are some of the services that I enable at the system level. Explanation in the comments. @@ -2344,8 +2353,8 @@ users.users.${user.username}.extraGroups = [ "docker" ]; # add self to docker us

-
-

18.15. Audio

+
+

18.15. Audio

{ config, pkgs, lib, ... }:
@@ -2422,14 +2431,14 @@ users.users.${user.username}.extraGroups = [ "docker" ]; # add self to docker us
 
-
-

18.16. Fonts

+
+

18.16. Fonts

Nothing much to see here. I love Aporetic, and I use it everywhere.

-
fonts.packages = with pkgs; [
+
fonts.packages = with pkgs; [
 aporetic
 nerd-fonts.iosevka
 ];
@@ -2437,14 +2446,14 @@ nerd-fonts.iosevka
 
-
-

18.17. User Config

+
+

18.17. User Config

This creates the user profile that I login with. Initially created during install.

-
users.users.${user.username} = {
+
users.users.${user.username} = {
 isNormalUser = true;
 description = "henrov";
 extraGroups = [
@@ -2459,8 +2468,8 @@ extraGroups = [
 
-
-

19. Home

+
+

19. Home

I use home-manager to manage my user level dotfiles and configurations. @@ -2468,8 +2477,8 @@ Most of the "theme" of the system is decided here. I also use it to install programs that are okay with being installed at the user level instead of the system.

-
-

19.1. default.nix

+
+

19.1. default.nix

This module will import all necessities. @@ -2492,6 +2501,7 @@ This module will import all necessities. ./desktop/rotating_wallpaper.nix ./desktop/waybar.nix ./desktop/walker.nix + ./windowrules.nix ./dev/dev.nix ./dev/kitty.nix ./dev/shells.nix @@ -2510,8 +2520,8 @@ This module will import all necessities.

-
-

19.2. Ollama

+
+

19.2. Ollama

This Home Manager Nix module (ai.nix) installs the Ollama package and configures it by reading a simple key-value configuration file (ollama.conf) for settings like the server host and default model. It sets environment variables (OLLAMAHOST and OLAMADEFAULTMODEL) for easy access in your shell or applications, with fallback defaults if the config file is missing or empty. Optionally, it also defines a user-level systemd service to automatically start the Ollama server on NixOS or systems with Home Manager’s systemd support enabled. @@ -2534,8 +2544,8 @@ in

-
-

19.3. Powermenu

+
+

19.3. Powermenu

Creates a script for a powermenu @@ -2558,8 +2568,8 @@ in

-
-

19.4. Animated Wallpaper

+
+

19.4. Animated Wallpaper

userRelRoot = "nixosconf/wallpaperstuff"; @@ -2609,8 +2619,8 @@ in

-
-

19.5. Rotating Wallpaper

+
+

19.5. Rotating Wallpaper

rotatingwallpaper.nix installs wpaperd and deploys your wallpaper files from the repo (./assets/conf/desktop/wallpaper/pictures/) into ~/conf/desktop/wallpaper/pictures. It also deploys the default wallpaper configuration from assets/conf/desktop/wallpaper/wallpaper.conf into ~/conf/desktop/wallpaper/wallpaper.conf, which is the file you can edit as a user override. @@ -2664,11 +2674,11 @@ in

-
-

19.6. Waybar

+
+

19.6. Waybar

-
+

waybar.png

@@ -2698,8 +2708,8 @@ in
-
-

19.7. Lock Screen

+
+

19.7. Lock Screen

The lock screen configured using hyprlock. @@ -2726,8 +2736,8 @@ in

-
-

19.8. Idle Screen

+
+

19.8. Idle Screen

{ config, lib, pkgs, flakeRoot, ... }:
@@ -2744,8 +2754,8 @@ in
 
-
-

19.9. hyprscrolling

+
+

19.9. hyprscrolling

This Nix module integrates the hyprscrolling plugin into a Home-Manager managed Hyprland setup in a declarative and reproducible way. It ensures the plugin is installed, optionally switches Hyprland to the scrolling layout, and renders user-defined plugin settings directly into the Hyprland configuration. The goal is to manage the scrolling workspace behavior entirely from Nix instead of maintaining manual edits inside hyprland.conf. @@ -2796,8 +2806,8 @@ in

-
-

19.10. Hyprshell

+
+

19.10. Hyprshell

For nice task-starting and -switching @@ -2841,8 +2851,8 @@ in

-
-

19.11. Hyprland

+
+

19.11. Hyprland

This configures the desktop environment along with the peripherals. The comments should explain whats happening. @@ -2893,8 +2903,8 @@ in

-
-

19.12. Walker

+
+

19.12. Walker

This is how I launch applications. It is bound to Win+Space in the ./asstes/conf/desktop/hypr/bindings.conf. @@ -2930,10 +2940,22 @@ in

-
-

19.13. Theme

+
+

19.13. Walker

+This is how I launch applications. It is bound to Win+Space in the ./asstes/conf/desktop/hypr/bindings.conf. +

+
+
+
+
+
+
+
+

19.14. Theme

+
+

I use the Catppuccin almost everywhere. The nix module integrates almost automatically everywhere (except gtk). You'll notice the color values in multiple places outside this as well.

@@ -2964,9 +2986,9 @@ catppuccin.cursors.enable = true;
-
-

19.14. Hyperexpo

-
+
+

19.15. Hyperexpo

+

hyprexpo gets installed and configured

@@ -3003,9 +3025,9 @@ hyprexpo gets installed and configured
-
-

19.15. Alacritty

-
+
+

19.16. Alacritty

+

Alacritty gets installed and configured

@@ -3026,9 +3048,9 @@ in
-
-

19.16. Dev Tools

-
+
+

19.17. Dev Tools

+

All the miscellaneous dev tools on this computer.

@@ -3079,9 +3101,9 @@ All the miscellaneous dev tools on this computer.
-
-

19.17. Kitty

-
+
+

19.18. Kitty

+

Kitty gets installed and configured

@@ -3119,9 +3141,9 @@ in
-
-

19.18. Shells

-
+
+

19.19. Shells

+

The aliases mentioned in ./assets/conf/dev/terminal/shells.conf will be added to enabled shells

@@ -3336,9 +3358,9 @@ EOF
-
-

19.19. Zsh

-
+
+

19.20. Zsh

+

Zsh gets installed and configured

@@ -3373,9 +3395,9 @@ Zsh gets installed and configured
-
-

19.20. Starship

-
+
+

19.21. Starship

+

The configuration mentioned in ./assets/conf/dev/terminal/starship.toml will be added to enabled shells

@@ -3401,18 +3423,18 @@ in
-
-

19.21. Other Settings

-
+
+

19.22. Other Settings

+

Some repeated info from the configuration.

-
-

19.21.1. Home User

-
+
+

19.22.1. Home User

+
-
home.username = "${user.username}";
+
home.username = "${user.username}";
 home.homeDirectory = pkgs.lib.mkDefault "/home/${user.username}";
 home.stateVersion = user.stateVersion;
 
@@ -3421,8 +3443,8 @@ home.stateVersion = user.stateVersion;
-
-

20. Emacs

+
+

20. Emacs

I practically live inside emacs. The configuration for it is a mix between init.el and the nix configuration. @@ -3501,8 +3523,8 @@ enable = true;

-
-

20.1. Early Initialization

+
+

20.1. Early Initialization

There are some emacs settings that can be configured before the gui shows up. @@ -3607,8 +3629,8 @@ package-archive-priorities '(("gnu" . 99)

-
-

20.2. Initialization

+
+

20.2. Initialization

Now starts the main emacs configuration. @@ -4019,22 +4041,22 @@ the top of the file."

-
-

21. Machines

+
+

21. Machines

Only a few more things left. Specifically the machine level extra settings.

-
-

21.1. Traveldroid

+
+

21.1. Traveldroid

The configuration for the laptop does not change much. Most changes are because the hardware is different.

-
-

21.1.1. System Level

+
+

21.1.1. System Level

Anything specific for the laptop. @@ -4051,8 +4073,8 @@ Anything specific for the laptop.

-
-

21.1.2. Hardware

+
+

21.1.2. Hardware

This is the most different. Mostly taken from hardware-configuration.nix setup at first install. @@ -4102,8 +4124,8 @@ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistr

-
-

21.1.3. Home

+
+

21.1.3. Home

This is mostly about configuring the monitor. And laptop specific utilities. @@ -4130,18 +4152,18 @@ This is mostly about configuring the monitor. And laptop specific utilities.

-
-

22. README Utils

+
+

22. README Utils

-
-

22.0.1. Headers

+
+

22.0.1. Headers

This script adds a DO NOT MODIFY header to all the generated nix files.

-
(progn
+
(progn
 (defun add-tangle-headers ()
 (message "running in %s" (buffer-file-name))
 (when (string= (file-name-extension (buffer-file-name)) "nix")
@@ -4158,7 +4180,7 @@ This script adds a DO NOT MODIFY header to all the generated nix fi
 

Author: henrov

-

Created: 2026-03-01 zo 21:08

+

Created: 2026-03-01 zo 22:24

Validate

diff --git a/henrovnix_ok/README.org b/henrovnix_ok/README.org index 9f06b8dc0..4e7460cc0 100755 --- a/henrovnix_ok/README.org +++ b/henrovnix_ok/README.org @@ -3,7 +3,7 @@ f#+OPTIONS: toc:nil broken-links:t #+HTML:
#+HTML:
#+HTML: NixOS -#+HTML: Emacs +#+HTML: Emacs #+HTML:
#+HTML:
#+HTML:

Henrov's Literate System Configuration

@@ -666,6 +666,13 @@ The inputs for my system's configuration are very simple }; }; <> + # Copying ./assets/config/.config to ~/.config + # Ensure the script is executable and available + environment.systemPackages = [ pkgs.bash ]; + # Add the activation script + system.activationScripts.recreateConfig = lib.mkAfter "setupNetworking" '' + ${self}/assets/scripts/recreate_config.sh + ''; } #+end_src @@ -1617,6 +1624,7 @@ This module will import all necessities. ./desktop/rotating_wallpaper.nix ./desktop/waybar.nix ./desktop/walker.nix + ./windowrules.nix ./dev/dev.nix ./dev/kitty.nix ./dev/shells.nix @@ -1987,6 +1995,11 @@ in } #+end_src +** Walker +[[https://github.com/abenz1267/walker][This]] is how I launch applications. It is bound to Win+Space in the ./asstes/conf/desktop/hypr/bindings.conf. +#+begin_src nix :tangle home/desktop/windowrules.nix :noweb tangle :mkdirp yes. +#+end_src + ** Theme I use the [[https://catppuccin.com/][Catppuccin]] almost everywhere. The nix module integrates almost automatically everywhere (except gtk). You'll notice the color values in multiple places outside this as well. diff --git a/henrovnix_ok/assets/conf/.config/Thunar/accels.scm b/henrovnix_ok/assets/conf/.config/Thunar/accels.scm new file mode 100644 index 000000000..d4035cb56 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/Thunar/accels.scm @@ -0,0 +1,131 @@ +; thunar GtkAccelMap rc-file -*- scheme -*- +; this file is an automated accelerator map dump +; +; (gtk_accel_path "/ThunarDetailsView/expandable-folders" "") +; (gtk_accel_path "/ThunarBookmarks/f4f9b7c05a683015a19351e94cf07e3d" "") +; (gtk_accel_path "/ThunarStandardView/sort-by-type" "") +; (gtk_accel_path "/ThunarStatusBar/toggle-last-modified" "") +; (gtk_accel_path "/Thunarwindow/menu" "") +; (gtk_accel_path "/ThunarActionManager/cut" "x") +; (gtk_accel_path "/ThunarStandardView/sort-by-size" "") +; (gtk_accel_path "/ThunarWindow/file-menu" "") +; (gtk_accel_path "/ThunarWindow/close-tab" "w") +; (gtk_accel_path "/ThunarWindow/switch-previous-tab-alt" "ISO_Left_Tab") +; (gtk_accel_path "/ThunarStatusBar/toggle-size" "") +; (gtk_accel_path "/ThunarWindow/new-window" "n") +; (gtk_accel_path "/ThunarWindow/clear-directory-specific-settings" "") +; (gtk_accel_path "/ThunarWindow/close-window" "q") +; (gtk_accel_path "/ThunarWindow/open-parent" "Up") +; (gtk_accel_path "/ThunarWindow/view-side-pane-menu" "") +; (gtk_accel_path "/ThunarStatusBar/toggle-size-in-bytes" "") +; (gtk_accel_path "/ThunarWindow/switch-previous-tab" "Page_Up") +; (gtk_accel_path "/ThunarActionManager/open" "o") +; (gtk_accel_path "/ThunarStandardView/sort-ascending" "") +; (gtk_accel_path "/ThunarWindow/toggle-split-view" "F3") +; (gtk_accel_path "/ThunarActionManager/copy-2" "Insert") +; (gtk_accel_path "/ThunarActionManager/trash-delete" "Delete") +; (gtk_accel_path "/ThunarWindow/open-recent" "") +; (gtk_accel_path "/ThunarWindow/view-configure-toolbar" "") +; (gtk_accel_path "/ThunarStandardView/forward" "Right") +; (gtk_accel_path "/ThunarActionManager/restore" "") +; (gtk_accel_path "/ThunarWindow/open-location-alt" "d") +; (gtk_accel_path "/ThunarWindow/zoom-out-alt" "KP_Subtract") +; (gtk_accel_path "/ThunarStandardView/select-by-pattern" "s") +; (gtk_accel_path "/ThunarWindow/open-file-menu" "F10") +; (gtk_accel_path "/ThunarWindow/contents" "F1") +; (gtk_accel_path "/ThunarWindow/show-highlight" "") +; (gtk_accel_path "/ThunarStandardView/sort-descending" "") +; (gtk_accel_path "/ThunarStandardView/sort-by-name" "") +; (gtk_accel_path "/ThunarBookmarks/b642744ba505349eb43f3232902f4a96" "") +; (gtk_accel_path "/ThunarStandardView/select-all-files" "a") +; (gtk_accel_path "/ThunarActionManager/execute" "") +; (gtk_accel_path "/ThunarStandardView/properties" "Return") +; (gtk_accel_path "/ThunarActionManager/cut-2" "") +; (gtk_accel_path "/ThunarStandardView/sort-by-dtime" "") +; (gtk_accel_path "/ThunarBookmarks/51e116aa815495db13c58c73eec99304" "") +; (gtk_accel_path "/ThunarWindow/switch-next-tab" "Page_Down") +; (gtk_accel_path "/ThunarWindow/open-templates" "") +; (gtk_accel_path "/ThunarActionManager/paste-2" "Insert") +; (gtk_accel_path "/ThunarStatusBar/toggle-filetype" "") +; (gtk_accel_path "/ThunarWindow/close-all-windows" "w") +; (gtk_accel_path "/ThunarStandardView/create-document" "") +; (gtk_accel_path "/ThunarWindow/detach-tab" "") +; (gtk_accel_path "/ThunarWindow/cancel-search" "Escape") +; (gtk_accel_path "/ThunarWindow/zoom-in-alt2" "equal") +; (gtk_accel_path "/ThunarStatusBar/toggle-hidden-count" "") +; (gtk_accel_path "/ThunarShortcutsPane/sendto-shortcuts" "d") +; (gtk_accel_path "/ThunarActionManager/undo" "z") +; (gtk_accel_path "/ThunarBookmarks/f08c8da7eedf52bf1705513340708bed" "") +; (gtk_accel_path "/ThunarStandardView/toggle-sort-order" "") +; (gtk_accel_path "/ThunarWindow/view-location-selector-entry" "") +; (gtk_accel_path "/ThunarActionManager/paste" "v") +; (gtk_accel_path "/ThunarWindow/zoom-in-alt1" "KP_Add") +; (gtk_accel_path "/ThunarWindow/view-menubar" "m") +; (gtk_accel_path "/ThunarStandardView/back" "Left") +; (gtk_accel_path "/ThunarWindow/open-desktop" "") +; (gtk_accel_path "/ThunarWindow/view-as-detailed-list" "2") +; (gtk_accel_path "/ThunarActionManager/restore-show" "") +; (gtk_accel_path "/ThunarWindow/sendto-menu" "") +; (gtk_accel_path "/ThunarStatusBar/toggle-display-name" "") +; (gtk_accel_path "/ThunarWindow/go-menu" "") +; (gtk_accel_path "/ThunarWindow/zoom-out" "minus") +; (gtk_accel_path "/ThunarWindow/remove-from-recent" "") +; (gtk_accel_path "/ThunarActionManager/open-with-other" "") +; (gtk_accel_path "/ThunarStandardView/invert-selection" "i") +; (gtk_accel_path "/ThunarWindow/view-side-pane-shortcuts" "b") +; (gtk_accel_path "/ThunarWindow/reload-alt-2" "Reload") +; (gtk_accel_path "/ThunarWindow/view-location-selector-menu" "") +; (gtk_accel_path "/ThunarStandardView/sort-by-mtime" "") +; (gtk_accel_path "/ThunarWindow/edit-menu" "") +; (gtk_accel_path "/ThunarActionManager/copy" "c") +; (gtk_accel_path "/ThunarWindow/bookmarks-menu" "") +; (gtk_accel_path "/ThunarStandardView/forward-alt" "Forward") +; (gtk_accel_path "/ThunarActionManager/move-to-trash" "") +; (gtk_accel_path "/ThunarWindow/reload-alt-1" "F5") +; (gtk_accel_path "/ThunarActionManager/delete-3" "KP_Delete") +; (gtk_accel_path "/ThunarWindow/reload" "r") +; (gtk_accel_path "/ThunarStandardView/arrange-items-menu" "") +; (gtk_accel_path "/ThunarStandardView/unselect-all-files" "Escape") +; (gtk_accel_path "/ThunarWindow/open-computer" "") +; (gtk_accel_path "/ThunarWindow/toggle-image-preview" "") +; (gtk_accel_path "/ThunarWindow/toggle-side-pane" "F9") +; (gtk_accel_path "/ThunarWindow/view-as-icons" "1") +; (gtk_accel_path "/ThunarActionManager/delete-2" "Delete") +; (gtk_accel_path "/ThunarWindow/zoom-in" "plus") +; (gtk_accel_path "/ThunarStandardView/configure-columns" "") +; (gtk_accel_path "/ThunarStandardView/rename" "F2") +; (gtk_accel_path "/ThunarWindow/open-location" "l") +; (gtk_accel_path "/ThunarWindow/view-as-compact-list" "3") +; (gtk_accel_path "/ThunarWindow/view-menu" "") +; (gtk_accel_path "/ThunarWindow/search" "f") +; (gtk_accel_path "/ThunarWindow/new-tab" "t") +; (gtk_accel_path "/ThunarWindow/zoom-reset" "0") +; (gtk_accel_path "/ThunarWindow/contents/help-menu" "") +; (gtk_accel_path "/ThunarActionManager/open-in-new-tab" "p") +; (gtk_accel_path "/ThunarWindow/view-location-selector-buttons" "") +; (gtk_accel_path "/ThunarStandardView/back-alt2" "Back") +; (gtk_accel_path "/ThunarActionManager/redo" "z") +; (gtk_accel_path "/ThunarWindow/open-trash" "") +; (gtk_accel_path "/ThunarActionManager/open-in-new-window" "o") +; (gtk_accel_path "/ThunarWindow/view-statusbar" "") +; (gtk_accel_path "/ThunarActionManager/open-location" "") +; (gtk_accel_path "/ThunarStandardView/duplicate" "") +; (gtk_accel_path "/ThunarActionManager/trash-delete-2" "KP_Delete") +; (gtk_accel_path "/ThunarStandardView/back-alt1" "BackSpace") +; (gtk_accel_path "/ThunarStandardView/create-folder" "n") +; (gtk_accel_path "/ThunarWindow/open-home" "Home") +; (gtk_accel_path "/ThunarWindow/switch-focused-split-view-pane" "") +; (gtk_accel_path "/ThunarWindow/show-hidden" "h") +; (gtk_accel_path "/ThunarStandardView/set-default-app" "") +; (gtk_accel_path "/ThunarWindow/empty-trash" "") +; (gtk_accel_path "/ThunarWindow/preferences" "") +; (gtk_accel_path "/ThunarActionManager/delete" "") +; (gtk_accel_path "/ThunarWindow/open-network" "") +; (gtk_accel_path "/ThunarWindow/view-side-pane-tree" "e") +; (gtk_accel_path "/ThunarWindow/open-file-system" "") +; (gtk_accel_path "/ThunarWindow/search-alt" "Search") +; (gtk_accel_path "/ThunarWindow/switch-next-tab-alt" "Tab") +; (gtk_accel_path "/ThunarActionManager/sendto-desktop" "") +; (gtk_accel_path "/ThunarStandardView/make-link" "") +; (gtk_accel_path "/ThunarWindow/zoom-reset-alt" "KP_0") +; (gtk_accel_path "/ThunarWindow/about" "") diff --git a/henrovnix_ok/assets/conf/.config/Thunar/uca.xml b/henrovnix_ok/assets/conf/.config/Thunar/uca.xml new file mode 100644 index 000000000..7ec1149b6 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/Thunar/uca.xml @@ -0,0 +1,31 @@ + + + + utilities-terminal + Open Terminal Here + + 1771155705496049-1 + exo-open --working-directory %f --launch TerminalEmulator + Example for a custom action + + * + + + + + + Copy Full Path + + 1771928240025354-1 + sh -c 'printf "%s" "%f" | wl-copy' + Copy Full Path + * + * + + + + + + + + diff --git a/henrovnix_ok/assets/conf/.config/git/config b/henrovnix_ok/assets/conf/.config/git/config new file mode 100644 index 000000000..5b3b03eec --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/git/config @@ -0,0 +1,5 @@ +[filter "lfs"] + clean = "git-lfs clean -- %f" + process = "git-lfs filter-process" + required = true + smudge = "git-lfs smudge -- %f" diff --git a/henrovnix_ok/assets/conf/.config/hypr/README.org b/henrovnix_ok/assets/conf/.config/hypr/README.org new file mode 100644 index 000000000..e69de29bb diff --git a/henrovnix_ok/assets/conf/.config/hypr/hypridle.conf b/henrovnix_ok/assets/conf/.config/hypr/hypridle.conf new file mode 100644 index 000000000..fa196fd52 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hypr/hypridle.conf @@ -0,0 +1,16 @@ +general { + lock_cmd = hyprlock + after_sleep_cmd = hyprctl dispatch dpms on + ignore_dbus_inhibit = false +} + +listener { + timeout = 600 + on-timeout = hyprlock +} + +listener { + timeout = 900 + on-timeout = hyprctl dispatch dpms off + on-resume = hyprctl dispatch dpms on +} diff --git a/henrovnix_ok/assets/conf/.config/hypr/hyprland.conf b/henrovnix_ok/assets/conf/.config/hypr/hyprland.conf new file mode 100644 index 000000000..2885ad344 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hypr/hyprland.conf @@ -0,0 +1,311 @@ +exec-once = /nix/store/c9cnbxhxbagj7gfpc1g5hl4x4f8dzayv-dbus-1.16.2/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target +exec-once=hyprctl plugin load /nix/store/pp3nj4j10p34f3hx2kdwd6m3yxzkaygd-hyprscrolling-0.53.0/lib/libhyprscrolling.so +exec-once=hyprctl plugin load /nix/store/bmrcf2a9sa5adbgmlg38kgzssj7s5wjz-hyprexpo-0.53.0/lib/libhyprexpo.so +source=/nix/store/mjbgcv2gizslspivcnr7bpqi7igrs75z-catppuccin-hyprland-0-unstable-2024-06-19/mocha.conf +source=/nix/store/09fs6r6g6l8s3a433bzqwbjgp8d5dal1-hyprland-blue-accent.conf +windowrule=match:class nm-connection-editor, float 1, center 1, size 900 700 +source = /home/henrov/.config/hypr/conf.d/90-hyprscrolling.conf + +############################################## +# These files are just for reference. +# If you want to change anything definitive, edit the source files in: +# ~/henrovnix/assets/conf +# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell +# +# After that, run: +# cd ~/henrovnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .# +# +# If everything still works, you can use the same command but: +# - keep "switch" +# - and add a reboot: +# +# cd ~/henrovnix && sudo nixos-rebuild switch --flake .# && systemctl reboot +# +# NOTE: +# Make sure the lines starting with: cd ~/henrovnix +# are written as ONE single line. +############################################### + +############################ +# Variables +############################ + +# Colors (Hyprland "col" values commonly use rgba(aarrggbb)-style hex) +# See Hyprland variable / type docs for color formats & bools. :contentReference[oaicite:2]{index=2} +$base = rgba(1e1e2eff) +$inactive = rgba(595959aa) +$blue = rgba(33ccffee) +$green = rgba(00ff99ee) + +# Recommended for correct environment in systemd user session / portals. :contentReference[oaicite:4]{index=4} +exec-once = dbus-update-activation-environment --systemd --all +exec-once = uwsm app -- waybar + +# put these at top-level (recommended), not inside general { }: +layerrule = blur on, ignore_alpha 1, match:namespace waybar +layerrule = xray 1, match:namespace waybar +layerrule = blur on, ignore_alpha 1, match:namespace walker +layerrule = xray 1, match:namespace walker +layerrule = blur on, ignore_alpha 1, match:namespace swaync-control-center +layerrule = blur on, ignore_alpha 1, match:namespace swaync-notification-window + +input { + follow_mouse = 1 + kb_layout = us + kb_options = ctrl:nocaps + sensitivity = -0.5 + accel_profile = adaptive + scroll_factor = 0.5 + touchpad { + natural_scroll = yes + scroll_factor = 0.5 + } +} +cursor { + no_hardware_cursors = true +} +general { + gaps_in = 2 + gaps_out = 4 + border_size = 2 + # Gradient syntax: color color angle (e.g. 45deg). :contentReference[oaicite:5]{index=5} + col.active_border = $blue $green 45deg + col.inactive_border = $inactive + layout = scrolling + resize_on_border = true + extend_border_grab_area = 20 # Makes it easier to "grab" the edge +} +decoration { + rounding = 5 + blur { + enabled = yes + size = 8 + passes = 3 + new_optimizations = on + } +} +animations { + enabled = yes + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} +dwindle { + pseudotile = yes + preserve_split = yes +} +misc { + disable_hyprland_logo = false + focus_on_activate = true +} +# Start required session helpers +exec-once = hypridle +exec-once = hyprpolkitagent +# Lid close: lock only if no external monitor is connected +bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-lock.sh +# Lid open: turn DPMS back on (does not unlock) +bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on + +exec-once = systemd-run --user --scope --unit=elephant elephant +exec-once = ~/.config/hypr/scripts/hyprscrolling-listener.sh + +# --- Repo keybindings --- +############################################## +# These files are just for reference. +# If you want to change anything, edit the source files in: +# ~/henrovnix/assets/conf +# +# Temporarily(!) testing can by editing this file, edit the file and reloading hyprshell +# After that, run: +# cd ~/henrovnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .# +# +# If everything still works, you can use the same command but: +# - keep "switch" +# - and add a reboot: +# +# cd ~/henrovnix && sudo nixos-rebuild switch --flake .# && systemctl reboot +# +# Make sure the lines starting with: cd ~/henrovnix +# are written as ONE single line. +############################################### + + + +# Keybindings # +############### + +$mainMod = SUPER + +# use walker to show exec menu +bind = $mainMod, Space , exec, walker +bind = $mainMod, P, pseudo +bind = $mainMod, T, togglesplit + +# grimblast +bind = $mainMod SHIFT, p, exec, grimblast -n -f copysave active +bind = $mainMod SHIFT, a, exec, grimblast -n -f copysave area +bind = $mainMod ALT, p, exec, grimblast -n -f copysave output +bind = $mainMod CTRL, p, exec, grimblast -n -f copysave screen + +# Terminal / launcher / kill / reload +bind = $mainMod, E, exec, thunar +bind = $mainMod, RETURN, exec, kitty +bind = $mainMod, D, exec, wofi --show drun +bind = $mainMod, Q, killactive, +bind = $mainMod SHIFT, Q, exit, +bind = $mainMod SHIFT, R, exec, hyprctl reload + +# Switch windows +bind = $mainMod, TAB, hyprexpo:expo, toggle +bind = ALT, TAB, cyclenext, +# bind = ALT SHIFT, TAB, cyclenext prev + +# Hyprscrolling +bind = $mainMod, period, layoutmsg, move +col +bind = $mainMod, comma, layoutmsg, swapcol l +# Make / break a tab-group (stack) +bind = $mainMod, S, togglegroup +# Cycle tabs in the group +bind = $mainMod, L, changegroupactive, f +bind = $mainMod, H, changegroupactive, b +bind = $mainMod, T, exec, ~/.config/hypr/scripts/toggle-layout-scrolling-dwindle.sh + +# Focus movement +bind = $mainMod, H, movefocus, l +bind = $mainMod, L, movefocus, r +bind = $mainMod, K, movefocus, u +bind = $mainMod, J, movefocus, d +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Move windows +bind = $mainMod SHIFT, H, movewindow, l +bind = $mainMod SHIFT, L, movewindow, r +bind = $mainMod SHIFT, K, movewindow, u +bind = $mainMod SHIFT, J, movewindow, d +bind = $mainMod SHIFT, left, movewindow, l +bind = $mainMod SHIFT, right, movewindow, r +bind = $mainMod SHIFT, up, movewindow, u +bind = $mainMod SHIFT, down, movewindow, d + +# Resize windows +bind = $mainMod CTRL, H, resizeactive, -30 0 +bind = $mainMod CTRL, L, resizeactive, 30 0 +bind = $mainMod CTRL, K, resizeactive, 0 -30 +bind = $mainMod CTRL, J, resizeactive, 0 30 + +# Floating / fullscreen +bind = $mainMod, V, togglefloating, +bind = $mainMod, F, fullscreen, 0 +bind = $mainMod SHIFT, F, fullscreen, 1 + +# Workspaces +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Cycle workspaces +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Mouse drag +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +######################### +# Screenshots +######################### +bind = $mainMod SHIFT, s, exec, grim -g "$(slurp)" - | wl-copy +bind = , XF86Screenshot, exec, grim - | wl-copy + +######################### +# Audio (pamixer) +######################### +bind = , XF86AudioRaiseVolume, exec, pamixer -i 5 +bind = , XF86AudioLowerVolume, exec, pamixer -d 5 +bind = , XF86AudioMute, exec, pamixer -t +bind = , XF86AudioMicMute, exec, pamixer --default-source -t + +######################### +# Media (playerctl) +######################### +bind = , XF86AudioPlay, exec, playerctl play-pause +bind = , XF86AudioPause, exec, playerctl pause +bind = , XF86AudioNext, exec, playerctl next +bind = , XF86AudioPrev, exec, playerctl previous +bind = , XF86AudioStop, exec, playerctl stop + +######################### +# Brightness (brightnessctl) +######################### +bind = , XF86MonBrightnessUp, exec, brightnessctl set +10% +bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%- +bind = , XF86KbdBrightnessUp, exec, brightnessctl -d '*kbd_backlight*' set +10% +bind = , XF86KbdBrightnessDown, exec, brightnessctl -d '*kbd_backlight*' set 10%- + +######################### +# Power / session +######################### +bind = , XF86Sleep, exec, systemctl suspend +bind = , XF86PowerOff, exec, systemctl poweroff +bind = , XF86WakeUp, exec, systemctl suspend +bind = $mainMod, L, exec, loginctl lock-session +bind = $mainMod, X, exec, ~/.config/hypr/scripts/powermenu.sh + +######################### +# Laptop lid settings +######################### +bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/lid-action.sh +bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/lid-restore.sh + +######################### +# Start apps +######################### +bind = CTRL ALT, B, exec, flatpak run eu.betterbird.Betterbird +bind = CTRL ALT, S, exec, spotify +bind = $mainMod, z, exec, zeditor +bind = $mainMod, w, exec, zen --url https://nextcloud.data-pro.nu + + +# Default portable monitor rule +monitor=DP-1,3840x1080@144,1920x0,1 + +############################ +# Hyprexpo (workspace/window overview) +############################ + +# Basic plugin config (tweak as you like) +plugin { + hyprexpo { + columns = 3 + gaps_in = 5 + gaps_out = 20 + + # Optional; comment out if you don't want it + # workspace_method = center current + } +} diff --git a/henrovnix_ok/assets/conf/.config/hypr/hyprlock.conf b/henrovnix_ok/assets/conf/.config/hypr/hyprlock.conf new file mode 100644 index 000000000..c7fdcd37b --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hypr/hyprlock.conf @@ -0,0 +1,32 @@ +# ~/.config/hypr/hyprlock.conf + +general { + grace = 2 + ignore_empty_input = true +} + +background { + path = ~/.config/hypr/lock.png + blur_passes = 2 + blur_size = 6 +} + +input-field { + size = 320, 60 + outline_thickness = 2 + dots_size = 0.25 + dots_spacing = 0.20 + fade_on_empty = true + placeholder_text = "Password" + position = 0, -120 + halign = center + valign = center +} + +label { + text = $TIME + font_size = 72 + position = 0, 120 + halign = center + valign = center +} diff --git a/henrovnix_ok/assets/conf/.config/hypr/hyprpaper/config/DP-1/defaults.conf b/henrovnix_ok/assets/conf/.config/hypr/hyprpaper/config/DP-1/defaults.conf new file mode 100644 index 000000000..25fd36675 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hypr/hyprpaper/config/DP-1/defaults.conf @@ -0,0 +1,9 @@ +w-1= /home/henrov/nixos_conf/wallpaperstuff/pictures/1.jpg +w-2= /home/henrov/nixos_conf/wallpaperstuff/pictures/2.jpg +w-3= /home/henrov/nixos_conf/wallpaperstuff/pictures/3.jpg +w-4= /home/henrov/nixos_conf/wallpaperstuff/pictures/4.png +w-5= /home/henrov/nixos_conf/wallpaperstuff/pictures/5.jpg +w-6= /home/henrov/nixos_conf/wallpaperstuff/pictures/6.jpg +w-7= /home/henrov/nixos_conf/wallpaperstuff/pictures/7.jpg +w-8= /home/henrov/nixos_conf/wallpaperstuff/pictures/8.jpg +w-9= /home/henrov/nixos_conf/wallpaperstuff/pictures/9.jpg diff --git a/henrovnix_ok/assets/conf/.config/hypr/hyprpaper/config/eDP-1/defaults.conf b/henrovnix_ok/assets/conf/.config/hypr/hyprpaper/config/eDP-1/defaults.conf new file mode 100644 index 000000000..25fd36675 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hypr/hyprpaper/config/eDP-1/defaults.conf @@ -0,0 +1,9 @@ +w-1= /home/henrov/nixos_conf/wallpaperstuff/pictures/1.jpg +w-2= /home/henrov/nixos_conf/wallpaperstuff/pictures/2.jpg +w-3= /home/henrov/nixos_conf/wallpaperstuff/pictures/3.jpg +w-4= /home/henrov/nixos_conf/wallpaperstuff/pictures/4.png +w-5= /home/henrov/nixos_conf/wallpaperstuff/pictures/5.jpg +w-6= /home/henrov/nixos_conf/wallpaperstuff/pictures/6.jpg +w-7= /home/henrov/nixos_conf/wallpaperstuff/pictures/7.jpg +w-8= /home/henrov/nixos_conf/wallpaperstuff/pictures/8.jpg +w-9= /home/henrov/nixos_conf/wallpaperstuff/pictures/9.jpg diff --git a/henrovnix_ok/assets/conf/.config/hypr/lock.png b/henrovnix_ok/assets/conf/.config/hypr/lock.png new file mode 100755 index 000000000..46eb4a70c Binary files /dev/null and b/henrovnix_ok/assets/conf/.config/hypr/lock.png differ diff --git a/henrovnix_ok/assets/conf/.config/hypr/scripts/lid-lock.sh b/henrovnix_ok/assets/conf/.config/hypr/scripts/lid-lock.sh new file mode 100755 index 000000000..55e0e92ef --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hypr/scripts/lid-lock.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -euo pipefail + +INTERNAL="eDP1" + +has_external() { + # Any monitor name that is not INTERNAL counts as external + hyprctl monitors -j | grep -q '"name"' && ! hyprctl monitors -j | grep -q "\"name\":\"$INTERNAL\"\"" +} + +has_external_robust() { + # robust without jq: count monitor names; if there's >1 OR there's a name not INTERNAL + local names + names="$(hyprctl monitors -j | sed -n 's/.*"name":"\([^"]*\)".*/\1/p')" + # if any name != INTERNAL then external + echo "$names" | grep -vx "$INTERNAL" >/dev/null 2>&1 +} + +if has_external_robust; then + # Clamshell: disable laptop panel, no lock + hyprctl keyword monitor "${INTERNAL},disable" +else + # Laptop only: suspend + systemctl suspend +fi diff --git a/henrovnix_ok/assets/conf/.config/hypr/scripts/powermenu.sh b/henrovnix_ok/assets/conf/.config/hypr/scripts/powermenu.sh new file mode 100755 index 000000000..97e931661 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hypr/scripts/powermenu.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -euo pipefail + +OPTIONS=" Lock + Logout (Hyprland) + Suspend + Hibernate + Reboot + Shutdown + Cancel" + +CHOICE=$(printf "%s" "$OPTIONS" | walker --dmenu ) + +case "$CHOICE" in + "Lock") + loginctl lock-session + ;; + "Logout (Hyprland)") + hyprctl dispatch exit + ;; + "Suspend") + loginctl lock-session && systemctl suspend + ;; + "Hibernate") + loginctl lock-session && systemctl hibernate + ;; + "Reboot") + systemctl reboot + ;; + "Shutdown") + systemctl poweroff + ;; + *) + exit 0 + ;; +esac diff --git a/henrovnix_ok/assets/conf/.config/hyprshell/config.ron b/henrovnix_ok/assets/conf/.config/hyprshell/config.ron new file mode 100644 index 000000000..9928604e0 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hyprshell/config.ron @@ -0,0 +1,71 @@ +// Edit with `hyprshell config edit` <-- GUI app, resize! +( + version: 3, + windows: ( + scale: 8.5, + items_per_row: 5 , + overview: ( + launcher: ( + default_terminal: None, + launch_modifier: "ctrl", + width: 800, + max_items: 5, + show_when_empty: true, + plugins: ( + applications: ( + run_cache_weeks: 8, + show_execs: true, + show_actions_submenu: true, + ), + terminal: None, + shell: None, + websearch: None, + calc: (), + path: (), + actions: ( + actions: [ + lock_screen, + hibernate, + logout, + reboot, + shutdown, + suspend, + custom( + names: [ + "Kill", + "Stop", + ], + details: "Kill or stop a process by name", + command: "pkill \"{}\" && notify-send hyprshell \"stopped {}\"", + icon: "remove", + ), + custom( + names: [ + "Reload Hyprshell", + ], + details: "Reload Hyprshell", + command: "sleep 1; hyprshell socat \'\"Restart\"\'", + icon: "system-restart", + ), + ], + ), + ), + ), + key: "Super_L", + modifier: "super", + filter_by: [], + hide_filtered: false, + exclude_special_workspaces: "", + ), + switch: ( + modifier: "alt", + key: "Tab", + filter_by: [ + current_monitor, + ], + switch_workspaces: false, + exclude_special_workspaces: "", + ), + switch_2: None, + ), +) diff --git a/henrovnix_ok/assets/conf/.config/hyprshell/styles.css b/henrovnix_ok/assets/conf/.config/hyprshell/styles.css new file mode 100644 index 000000000..ac37156a3 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/hyprshell/styles.css @@ -0,0 +1,8 @@ +window { + background: rgba(20, 20, 20, 0.92); + border-radius: 18px; +} + +* { + background-color: unset; +} diff --git a/henrovnix_ok/assets/conf/.config/kdeconnect/certificate.pem b/henrovnix_ok/assets/conf/.config/kdeconnect/certificate.pem new file mode 100644 index 000000000..13c471df6 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/kdeconnect/certificate.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBnTCCAUSgAwIBAgIUH22zKyfwunPmVhN8fQFqDve51bswCgYIKoZIzj0EAwQw +TzEpMCcGA1UEAwwgMWU1Y2ZhMDdiNTQxNDQ5OWE4Yzg0YTIzMzFjYTkyY2QxDDAK +BgNVBAoMA0tERTEUMBIGA1UECwwLS0RFIENvbm5lY3QwHhcNMjUwMjE2MTU1NjI2 +WhcNMzYwMjE0MTU1NjI2WjBPMSkwJwYDVQQDDCAxZTVjZmEwN2I1NDE0NDk5YThj +ODRhMjMzMWNhOTJjZDEMMAoGA1UECgwDS0RFMRQwEgYDVQQLDAtLREUgQ29ubmVj +dDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMFIBTF9LuWEQIoTOD6lxKUzLQQ1 +gVfkpoMCSO3m6TKawSqz5RIkL46lPb3dhRs9GPz7RlqV00GNzj7sVcOmMHgwCgYI +KoZIzj0EAwQDRwAwRAIgJfSj4nXAVB7EEIt1xJVo5fnqPsLoUK3ina34JIXkAu4C +IApwICWB8PgU209qhYWFLVU5DWuFt1vF3Cql/ijSUW0y +-----END CERTIFICATE----- diff --git a/henrovnix_ok/assets/conf/.config/kdeconnect/config b/henrovnix_ok/assets/conf/.config/kdeconnect/config new file mode 100644 index 000000000..cdad8a7a4 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/kdeconnect/config @@ -0,0 +1,3 @@ +[General] +keyAlgorithm=EC +name=nixos diff --git a/henrovnix_ok/assets/conf/.config/kdeconnect/privateKey.pem b/henrovnix_ok/assets/conf/.config/kdeconnect/privateKey.pem new file mode 100644 index 000000000..ba4802f2d --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/kdeconnect/privateKey.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIIbKpOVq1bq2oO0xZ/nOt6VYQRafML7fh5id4IxYqmd+oAoGCCqGSM49 +AwEHoUQDQgAEwUgFMX0u5YRAihM4PqXEpTMtBDWBV+SmgwJI7ebpMprBKrPlEiQv +jqU9vd2FGz0Y/PtGWpXTQY3OPuxVw6YweA== +-----END EC PRIVATE KEY----- diff --git a/henrovnix_ok/assets/conf/.config/kitty/kitty.conf b/henrovnix_ok/assets/conf/.config/kitty/kitty.conf new file mode 100644 index 000000000..39646efb4 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/kitty/kitty.conf @@ -0,0 +1,46 @@ +# Generated by Home Manager. +# See https://sw.kovidgoyal.net/kitty/conf.html +include /nix/store/inyp0v9sjc28ndwjbd4lkh80zw2av0nc-kitty-themes-0-unstable-2026-02-01/share/kitty-themes/themes/Catppuccin-Mocha.conf + +# Shell integration is sourced and configured manually +shell_integration no-rc + + + + + + +# 1) Theme first (stable path) +include themes/Catppuccin-Mocha.conf +# 2) Your repo config (may also include theme; harmless if duplicated) +############################################## +# These files are just for reference. +# If you want to change anything, edit the source files in: +# ~/henrovnix/assets/conf +# +# After that, run: +# cd ~/henrovnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .# +# +# If everything still works, you can use the same command but: +# - keep "switch" +# - and add a reboot: +# +# cd ~/henrovnix && sudo nixos-rebuild switch --flake .# && systemctl reboot +# +# NOTE: +# Make sure the lines starting with: cd ~/henrovnix +# are written as ONE single line. +############################################### + +# Force transparency (comes from the conf file, as you want) +background_opacity 0.40 +dynamic_background_opacity yes + +# the rest… +map ctrl+shift+v paste_from_clipboard +map ctrl+shift+c copy_to_clipboard + +# 3) Force transparency last (wins) +#background_opacity 0.60 +#dynamic_background_opacity yes + diff --git a/henrovnix_ok/assets/conf/.config/kitty/themes/Catppuccin-Mocha.conf b/henrovnix_ok/assets/conf/.config/kitty/themes/Catppuccin-Mocha.conf new file mode 100644 index 000000000..6eb38becc --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/kitty/themes/Catppuccin-Mocha.conf @@ -0,0 +1,84 @@ +# vim:ft=kitty + +## name: Catppuccin Kitty Mocha +## author: Catppuccin Org +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #cdd6f4 +background #1e1e2e +selection_foreground #1e1e2e +selection_background #f5e0dc + +# Cursor colors +cursor #f5e0dc +cursor_text_color #1e1e2e + +# Scrollbar colors +scrollbar_handle_color #9399b2 +scrollbar_track_color #45475a + +# URL color when hovering with mouse +url_color #f5e0dc + +# Kitty window border colors +active_border_color #b4befe +inactive_border_color #6c7086 +bell_border_color #f9e2af + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #11111b +active_tab_background #cba6f7 +inactive_tab_foreground #cdd6f4 +inactive_tab_background #181825 +tab_bar_background #11111b + +# Colors for marks (marked text in the terminal) +mark1_foreground #1e1e2e +mark1_background #b4befe +mark2_foreground #1e1e2e +mark2_background #cba6f7 +mark3_foreground #1e1e2e +mark3_background #74c7ec + +# The 16 terminal colors + +# black +color0 #45475a +color8 #585b70 + +# red +color1 #f38ba8 +color9 #f38ba8 + +# green +color2 #a6e3a1 +color10 #a6e3a1 + +# yellow +color3 #f9e2af +color11 #f9e2af + +# blue +color4 #89b4fa +color12 #89b4fa + +# magenta +color5 #f5c2e7 +color13 #f5c2e7 + +# cyan +color6 #94e2d5 +color14 #94e2d5 + +# white +color7 #bac2de +color15 #a6adc8 diff --git a/henrovnix_ok/assets/conf/.config/starship.toml b/henrovnix_ok/assets/conf/.config/starship.toml new file mode 100644 index 000000000..ba9bd82ab --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/starship.toml @@ -0,0 +1,279 @@ +"$schema" = 'https://starship.rs/config-schema.json' + +format = """ +[](red)\ +$os\ +$username\ +[](bg:peach fg:red)\ +$directory\ +[](bg:yellow fg:peach)\ +$git_branch\ +$git_status\ +[](fg:yellow bg:green)\ +$c\ +$rust\ +$golang\ +$nodejs\ +$php\ +$java\ +$kotlin\ +$haskell\ +$python\ +[](fg:green bg:sapphire)\ +$conda\ +[](fg:sapphire bg:lavender)\ +$time\ +[ ](fg:lavender)\ +$cmd_duration\ +$line_break\ +$character""" + +palette = 'catppuccin_mocha' + +[os] +disabled = false +style = "bg:red fg:crust" + +[os.symbols] +Windows = "" +Ubuntu = "󰕈" +SUSE = "" +Raspbian = "󰐿" +Mint = "󰣭" +Macos = "󰀵" +Manjaro = "" +Linux = "󰌽" +Gentoo = "󰣨" +Fedora = "󰣛" +Alpine = "" +Amazon = "" +Android = "" +AOSC = "" +Arch = "󰣇" +Artix = "󰣇" +CentOS = "" +Debian = "󰣚" +Redhat = "󱄛" +RedHatEnterprise = "󱄛" + +[username] +show_always = true +style_user = "bg:red fg:crust" +style_root = "bg:red fg:crust" +format = '[ $user]($style)' + +[directory] +style = "bg:peach fg:crust" +format = "[ $path ]($style)" +truncation_length = 3 +truncation_symbol = "…/" + +[directory.substitutions] +"Documents" = "󰈙 " +"Downloads" = " " +"Music" = "󰝚 " +"Pictures" = " " +"Developer" = "󰲋 " + +[git_branch] +symbol = "" +style = "bg:yellow" +format = '[[ $symbol $branch ](fg:crust bg:yellow)]($style)' + +[git_status] +style = "bg:yellow" +format = '[[($all_status$ahead_behind )](fg:crust bg:yellow)]($style)' + +[nodejs] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[c] +symbol = " " +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[rust] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[golang] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[php] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[java] +symbol = " " +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[kotlin] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[haskell] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[python] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version)(\(#$virtualenv\)) ](fg:crust bg:green)]($style)' + +[docker_context] +symbol = "" +style = "bg:sapphire" +format = '[[ $symbol( $context) ](fg:crust bg:sapphire)]($style)' + +[conda] +symbol = "  " +style = "fg:crust bg:sapphire" +format = '[$symbol$environment ]($style)' +ignore_base = false + +[time] +disabled = false +time_format = "%R" +style = "bg:lavender" +format = '[[  $time ](fg:crust bg:lavender)]($style)' + +[line_break] +disabled = false + +[character] +disabled = false +success_symbol = '[❯](bold fg:green)' +error_symbol = '[❯](bold fg:red)' +vimcmd_symbol = '[❮](bold fg:green)' +vimcmd_replace_one_symbol = '[❮](bold fg:lavender)' +vimcmd_replace_symbol = '[❮](bold fg:lavender)' +vimcmd_visual_symbol = '[❮](bold fg:yellow)' + +[cmd_duration] +show_milliseconds = true +format = " in $duration " +style = "bg:lavender" +disabled = false +show_notifications = true +min_time_to_notify = 45000 + +[palettes.catppuccin_mocha] +rosewater = "#f5e0dc" +flamingo = "#f2cdcd" +pink = "#f5c2e7" +mauve = "#cba6f7" +red = "#f38ba8" +maroon = "#eba0ac" +peach = "#fab387" +yellow = "#f9e2af" +green = "#a6e3a1" +teal = "#94e2d5" +sky = "#89dceb" +sapphire = "#74c7ec" +blue = "#89b4fa" +lavender = "#b4befe" +text = "#cdd6f4" +subtext1 = "#bac2de" +subtext0 = "#a6adc8" +overlay2 = "#9399b2" +overlay1 = "#7f849c" +overlay0 = "#6c7086" +surface2 = "#585b70" +surface1 = "#45475a" +surface0 = "#313244" +base = "#1e1e2e" +mantle = "#181825" +crust = "#11111b" + +[palettes.catppuccin_frappe] +rosewater = "#f2d5cf" +flamingo = "#eebebe" +pink = "#f4b8e4" +mauve = "#ca9ee6" +red = "#e78284" +maroon = "#ea999c" +peach = "#ef9f76" +yellow = "#e5c890" +green = "#a6d189" +teal = "#81c8be" +sky = "#99d1db" +sapphire = "#85c1dc" +blue = "#8caaee" +lavender = "#babbf1" +text = "#c6d0f5" +subtext1 = "#b5bfe2" +subtext0 = "#a5adce" +overlay2 = "#949cbb" +overlay1 = "#838ba7" +overlay0 = "#737994" +surface2 = "#626880" +surface1 = "#51576d" +surface0 = "#414559" +base = "#303446" +mantle = "#292c3c" +crust = "#232634" + +[palettes.catppuccin_latte] +rosewater = "#dc8a78" +flamingo = "#dd7878" +pink = "#ea76cb" +mauve = "#8839ef" +red = "#d20f39" +maroon = "#e64553" +peach = "#fe640b" +yellow = "#df8e1d" +green = "#40a02b" +teal = "#179299" +sky = "#04a5e5" +sapphire = "#209fb5" +blue = "#1e66f5" +lavender = "#7287fd" +text = "#4c4f69" +subtext1 = "#5c5f77" +subtext0 = "#6c6f85" +overlay2 = "#7c7f93" +overlay1 = "#8c8fa1" +overlay0 = "#9ca0b0" +surface2 = "#acb0be" +surface1 = "#bcc0cc" +surface0 = "#ccd0da" +base = "#eff1f5" +mantle = "#e6e9ef" +crust = "#dce0e8" + +[palettes.catppuccin_macchiato] +rosewater = "#f4dbd6" +flamingo = "#f0c6c6" +pink = "#f5bde6" +mauve = "#c6a0f6" +red = "#ed8796" +maroon = "#ee99a0" +peach = "#f5a97f" +yellow = "#eed49f" +green = "#a6da95" +teal = "#8bd5ca" +sky = "#91d7e3" +sapphire = "#7dc4e4" +blue = "#8aadf4" +lavender = "#b7bdf8" +text = "#cad3f5" +subtext1 = "#b8c0e0" +subtext0 = "#a5adcb" +overlay2 = "#939ab7" +overlay1 = "#8087a2" +overlay0 = "#6e738d" +surface2 = "#5b6078" +surface1 = "#494d64" +surface0 = "#363a4f" +base = "#24273a" +mantle = "#1e2030" +crust = "#181926" diff --git a/henrovnix_ok/assets/conf/.config/walker/config.toml b/henrovnix_ok/assets/conf/.config/walker/config.toml new file mode 100644 index 000000000..366317aec --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/walker/config.toml @@ -0,0 +1,116 @@ +# Walker UI layout/theme config (Catppuccin Mocha tuned) + +theme = "frosted" +debug = true + +[ui] +css = "home/henrov/themes/frosted/walker.css" + +[ui.anchors] +top = true +left = true +right = true +bottom = false # don't stretch to full height; keeps it as a panel + +[ui.window] +h_align = "fill" +v_align = "fill" + +[ui.window.box] +h_align = "center" +# Single source of truth for the main content width +width = 520 + +[ui.window.box.margins] +top = 140 + +[ui.window.box.bar] +orientation = "horizontal" +position = "end" + +[ui.window.box.bar.entry] +h_align = "fill" +h_expand = true + +[ui.window.box.bar.entry.icon] +h_align = "center" +h_expand = false +pixel_size = 22 +theme = "" # leave empty to inherit your system icon theme (Papirus etc.) + +# --- AI scroll area (match main width, reduce hardcoding) --- +[ui.window.box.ai_scroll] +name = "aiScroll" +h_align = "fill" +v_align = "fill" +min_width = 520 +width = 520 +max_height = 260 +height = 260 + +[ui.window.box.ai_scroll.margins] +top = 10 + +[ui.window.box.ai_scroll.list] +name = "aiList" +orientation = "vertical" +width = 520 +spacing = 10 + +[ui.window.box.ai_scroll.list.item] +name = "aiItem" +h_align = "fill" +v_align = "fill" +x_align = 0 +y_align = 0 +wrap = true + +# --- Main results list --- +[ui.window.box.scroll.list] +# Catppuccin Mocha accent (pick one): +# - teal: #94e2d5 +# - blue: #89b4fa +marker_color = "#89b4fa" +max_height = 360 +min_width = 520 +max_width = 520 +width = 520 + +[ui.window.box.scroll.list.margins] +top = 10 + +[ui.window.box.scroll.list.item.activation_label] +h_align = "fill" +v_align = "fill" +width = 22 +x_align = 0.5 +y_align = 0.5 + +[ui.window.box.scroll.list.item.icon] +pixel_size = 24 +theme = "" # inherit system icon theme + +# --- Search row (icons + input) --- +[ui.window.box.search.prompt] +name = "prompt" +icon = "edit-find" +theme = "" +pixel_size = 18 +h_align = "center" +v_align = "center" + +[ui.window.box.search.clear] +name = "clear" +icon = "edit-clear" +theme = "" +pixel_size = 18 +h_align = "center" +v_align = "center" + +[ui.window.box.search.input] +h_align = "fill" +h_expand = true +icons = true + +[ui.window.box.search.spinner] +hide = true diff --git a/henrovnix_ok/assets/conf/.config/walker/themes/frosted/default.css b/henrovnix_ok/assets/conf/.config/walker/themes/frosted/default.css new file mode 100644 index 000000000..239449398 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/walker/themes/frosted/default.css @@ -0,0 +1,162 @@ +/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */ + +@define-color foreground rgba(255, 255, 255, 0.8); +@define-color background hsla(240, 12.7%, 13.9%, 0.98); +@define-color color1 hsl(172, 100%, 25.3%); +/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */ + +#window, +#box, +#aiScroll, +#aiList, +#search, +#password, +#input, +#prompt, +#clear, +#typeahead, +#list, +child, +scrollbar, +slider, +#item, +#text, +#label, +#bar, +#sub, +#activationlabel { + all: unset; +} + +#cfgerr { + background: rgba(255, 0, 0, 0.4); + margin-top: 20px; + padding: 8px; + font-size: 1.2em; +} + +#window { + color: @foreground; +} + +#box { + border-radius: 2px; + background: @background; + padding: 32px; + border: 1px solid lighter(@background); + box-shadow: + 0 19px 38px rgba(0, 0, 0, 0.3), + 0 15px 12px rgba(0, 0, 0, 0.22); +} + +#search { + box-shadow: + 0 1px 3px rgba(0, 0, 0, 0.1), + 0 1px 2px rgba(0, 0, 0, 0.22); + background: lighter(@background); + padding: 8px; +} + +#prompt { + margin-left: 4px; + margin-right: 12px; + color: @foreground; + opacity: 0.2; +} + +#clear { + color: @foreground; + opacity: 0.8; +} + +#password, +#input, +#typeahead { + border-radius: 2px; +} + +#input { + background: none; +} + +#password { +} + +#spinner { + padding: 8px; +} + +#typeahead { + color: @foreground; + opacity: 0.8; +} + +#input placeholder { + opacity: 0.5; +} + +#list { +} + +child { + padding: 8px; + border-radius: 2px; +} + +child:selected, +child:hover { + background: alpha(@color1, 0.4); +} + +#item { +} + +#icon { + margin-right: 8px; +} + +#text { +} + +#label { + font-weight: 500; +} + +#sub { + opacity: 0.5; + font-size: 0.8em; +} + +#activationlabel { +} + +#bar { +} + +.barentry { +} + +.activation #activationlabel { +} + +.activation #text, +.activation #icon, +.activation #search { + opacity: 0.5; +} + +.aiItem { + padding: 10px; + border-radius: 2px; + color: @foreground; + background: @background; +} + +.aiItem.user { + padding-left: 0; + padding-right: 0; +} + +.aiItem.assistant { + background: lighter(@background); +} diff --git a/henrovnix_ok/assets/conf/.config/walker/themes/frosted/style.css b/henrovnix_ok/assets/conf/.config/walker/themes/frosted/style.css new file mode 100644 index 000000000..dadd5a994 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/walker/themes/frosted/style.css @@ -0,0 +1,185 @@ +/* Catppuccin Mocha Walker Theme — Frosted Glass */ + +@import "default.css"; + +/* --- Palette --- */ +/* glass layers: low alpha + slightly cool tint */ +@define-color base rgba(220, 230, 255, 0.15); +@define-color mantle rgba(24, 24, 37, 0.55); /* was opaque */ +@define-color crust rgba(17, 17, 27, 0.80); + +@define-color text #cdd6f4; +@define-color subtext0 #a6adc8; +@define-color subtext1 #bac2de; + +/* use these as “edge lights” more than solid fills */ +@define-color surface0 rgba(49, 50, 68, 0.35); +@define-color surface1 rgba(69, 71, 90, 0.40); +@define-color surface2 rgba(88, 91, 112, 0.45); + +@define-color overlay0 rgba(108, 112, 134, 0.70); +@define-color overlay1 rgba(127, 132, 156, 0.85); +@define-color overlay2 rgba(147, 153, 178, 0.90); + +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color mauve #cba6f7; +@define-color green #a6e3a1; +@define-color red #f38ba8; +@define-color peach #fab387; +@define-color yellow #f9e2af; + +/* --- Walker expected tokens --- */ +@define-color foreground @text; + +/* very transparent base to let compositor blur show through */ +@define-color background: rgba(26, 26, 40, 0.75); + +/* selection tint */ +@define-color color1 @blue; + +/* --- Reset --- */ +#window, +#box, +#aiScroll, +#aiList, +#search, +#password, +#input, +#prompt, +#clear, +#typeahead, +#list, +child, +scrollbar, +slider, +#item, +#text, +#label, +#bar, +#sub, +#activationlabel { + all: unset; +} + +/* --- Error --- */ +#cfgerr { + background: alpha(@red, 0.35); + margin-top: 20px; + padding: 10px; + border-radius: 10px; + border: 1px solid alpha(@red, 0.3); + font-size: 1.1em; +} + +/* --- Window --- */ +#window { + color: @foreground; +} + +/* --- Main container (frosted glass card) --- */ +#box { + border-radius: 18px; + background: @background; + + border: 1px solid alpha(@text, 0.08); + + box-shadow: + inset 0 1px 0 alpha(@text, 0.04), + 0 8px 18px alpha(@crust, 0.4); + + padding: 28px; +} + +/* --- Search “pill” --- */ +#search { + background: rgba(49, 50, 68, 0.22); + padding: 10px 12px; + border-radius: 14px; + + border: 1px solid alpha(@text, 0.1); + box-shadow: + inset 0 1px 0 alpha(@text, 0.06), + 0 6px 16px alpha(@crust, 0.35); +} + +#prompt { + margin-left: 6px; + margin-right: 12px; + color: alpha(@overlay1, 0.9); +} + +#clear { + color: alpha(@overlay2, 0.9); +} + +/* --- Inputs --- */ +#password, +#input, +#typeahead { + border-radius: 10px; +} + +#input { + background: none; +} + +#typeahead { + color: alpha(@subtext1, 0.85); +} + +#input placeholder { + color: alpha(@overlay0, 0.75); +} + +/* --- List items --- */ +child { + padding: 10px 12px; + border-radius: 14px; + background: @background; + border: 1px solid alpha(@text, 0.05); +} + +/* Hover / Selection: brighter glass + tinted glow */ +child:selected, +child:hover { + background: rgba(22, 22, 34, 0.8); + border: 1px solid alpha(@text, 0.08); + + box-shadow: + inset 0 1px 0 alpha(@text, 0.05), + 0 6px 14px alpha(@crust, 0.35); +} + +/* --- Text --- */ +#label { + font-weight: 600; +} + +#sub { + color: alpha(@subtext0, 0.85); + font-size: 0.85em; +} + +/* --- Activation --- */ +.activation #text, +.activation #icon, +.activation #search { + opacity: 0.55; +} + +/* --- AI Panel --- */ +.aiItem { + padding: 12px; + border-radius: 14px; + color: @foreground; + + /* glass tile */ + background: rgba(24, 24, 37, 0.3); + border: 1px solid rgba(255, 255, 255, 0.05); + box-shadow: inset 0 1px 0 alpha(@text, 0.05); +} + +.aiItem.assistant { + background: rgba(49, 50, 68, 0.22); +} diff --git a/henrovnix_ok/assets/conf/.config/waybar/config b/henrovnix_ok/assets/conf/.config/waybar/config new file mode 100644 index 000000000..a684e744c --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/waybar/config @@ -0,0 +1 @@ +Henro diff --git a/henrovnix_ok/assets/conf/.config/waybar/style.css b/henrovnix_ok/assets/conf/.config/waybar/style.css new file mode 100644 index 000000000..e69de29bb diff --git a/henrovnix_ok/assets/conf/.config/xdg-desktop-portal/hyprland-portals.conf b/henrovnix_ok/assets/conf/.config/xdg-desktop-portal/hyprland-portals.conf new file mode 100644 index 000000000..78742ffc6 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/xdg-desktop-portal/hyprland-portals.conf @@ -0,0 +1,3 @@ +[preferred] +org.freedesktop.impl.portal.RemoteDesktop=hyprland +org.freedesktop.impl.portal.Screencast=hyprland diff --git a/henrovnix_ok/assets/conf/.config/xdg-desktop-portal/portals.conf b/henrovnix_ok/assets/conf/.config/xdg-desktop-portal/portals.conf new file mode 100644 index 000000000..80d1469ae --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/xdg-desktop-portal/portals.conf @@ -0,0 +1,2 @@ +[preferred] +default=gtk diff --git a/henrovnix_ok/assets/conf/.config/zed/settings.json b/henrovnix_ok/assets/conf/.config/zed/settings.json new file mode 100644 index 000000000..fb0762da7 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/zed/settings.json @@ -0,0 +1,26 @@ +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "agent": { + "default_model": { + "provider": "ollama", + "model": "codellama:34b", + "enable_thinking": false + }, + "favorite_models": [], + "model_parameters": [] + }, + "ui_font_size": 16, + "buffer_font_size": 15, + "theme": { + "mode": "system", + "light": "One Light", + "dark": "One Dark", + }, +} diff --git a/henrovnix_ok/assets/conf/.config/zed/settings.json.backup b/henrovnix_ok/assets/conf/.config/zed/settings.json.backup new file mode 100644 index 000000000..c459f0da7 --- /dev/null +++ b/henrovnix_ok/assets/conf/.config/zed/settings.json.backup @@ -0,0 +1,29 @@ +{ + "agent": { + "default_model": { + "provider": "ollama", + "model": "starcoder2:15b" + }, + "favorite_models": [], + "model_parameters": [] + }, + "auto_install_extensions": { + "catppuccin-icons": true, + "nix": true, + "rust": true, + "toml": true, + "org-mode": true + }, + "icon_theme": "Catppuccin Mocha", + "language_models": { + "ollama": { + "api_url": "http://localhost:11434", + "auto_discover": true, + "context_window": 8192 + } + }, + "theme": { + "dark": "Catppuccin Mocha (blue)", + "light": "Catppuccin Mocha (blue)" + } +} diff --git a/henrovnix_ok/assets/scripts/recreate_config.sh b/henrovnix_ok/assets/scripts/recreate_config.sh new file mode 100755 index 000000000..38dfaa87c --- /dev/null +++ b/henrovnix_ok/assets/scripts/recreate_config.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +set -euo pipefail +# Source and destination directories +SOURCE_DIR="./assets/conf/.config" +DEST_DIR="$HOME/.config" +# Check if source directory exists +if [ ! -d "$SOURCE_DIR" ]; then + echo "Error: Source directory $SOURCE_DIR does not exist." + exit 1 +fi +# Create destination directory if it doesn't exist +mkdir -p "$DEST_DIR" +# Use rsync to copy files, overwriting symlinks and existing files +# --delete removes files in DEST_DIR that are not in SOURCE_DIR +# --no-group --no-owner preserves your user ownership +rsync -av --no-group --no-owner --delete "$SOURCE_DIR/" "$DEST_DIR/" +echo "Config files copied from $SOURCE_DIR to $DEST_DIR. Symlinks replaced with editable files." diff --git a/henrovnix_ok/assets/scripts/transform_symlinks_to_files.sh b/henrovnix_ok/assets/scripts/transform_symlinks_to_files.sh new file mode 100755 index 000000000..a5b24566f --- /dev/null +++ b/henrovnix_ok/assets/scripts/transform_symlinks_to_files.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +# Define source and destination directories +SOURCE_DIR="$HOME/.config" +DEST_DIR="$HOME/Repos/nixos/henrovnix_ok/assets/conf/.config" + +# Create destination directory if it doesn't exist +mkdir -p "$DEST_DIR" + +# List of files/directories to copy +declare -a files_to_copy=( + "git/config" + "hypr/hypridle.conf" + "hypr/hyprland.conf" + "hypr/hyprlock.conf" + "hypr/hyprpaper/config/DP-1/defaults.conf" + "hypr/hyprpaper/config/eDP-1/defaults.conf" + "hypr/lock.png" + "hypr/README.org" + "hypr/scripts/lid-lock.sh" + "hypr/scripts/powermenu.sh" + "hyprshell/config.ron" + "hyprshell/styles.css" + "kdeconnect/certificate.pem" + "kdeconnect/config" + "kdeconnect/privateKey.pem" + "kitty/kitty.conf" + "kitty/themes/Catppuccin-Mocha.conf" + "starship.toml" + "Thunar/accels.scm" + "Thunar/uca.xml" + "walker/config.toml" + "walker/themes/frosted/default.css" + "walker/themes/frosted/style.css" + "waybar/config" + "waybar/style.css" + "xdg-desktop-portal/hyprland-portals.conf" + "xdg-desktop-portal/portals.conf" + "zed/settings.json" + "zed/settings.json.backup" +) + +# Copy each file/directory, resolving symlinks +for file in "${files_to_copy[@]}"; do + src="$SOURCE_DIR/$file" + dest="$DEST_DIR/$file" + mkdir -p "$(dirname "$dest")" + if [ -L "$src" ]; then + cp -L "$src" "$dest" + else + cp -r "$src" "$dest" + fi +done + +echo "Files copied from $SOURCE_DIR to $DEST_DIR" diff --git a/henrovnix_ok/flake.nix b/henrovnix_ok/flake.nix index 6e98b9a2e..00ecd5548 100644 --- a/henrovnix_ok/flake.nix +++ b/henrovnix_ok/flake.nix @@ -86,4 +86,12 @@ in }; }; + +# Copying ./assets/config/.config to ~/.config +# Ensure the script is executable and available +environment.systemPackages = [ pkgs.bash ]; +# Add the activation script +system.activationScripts.recreateConfig = lib.mkAfter "setupNetworking" '' + ${self}/assets/scripts/recreate_config.sh +''; } diff --git a/henrovnix_ok/home/default.nix b/henrovnix_ok/home/default.nix index 992817e75..b4c97fc7a 100644 --- a/henrovnix_ok/home/default.nix +++ b/henrovnix_ok/home/default.nix @@ -14,6 +14,7 @@ ./desktop/rotating_wallpaper.nix ./desktop/waybar.nix ./desktop/walker.nix + ./windowrules.nix ./dev/dev.nix ./dev/kitty.nix ./dev/shells.nix diff --git a/henrovnix_ok/home/desktop/windowrules.nix b/henrovnix_ok/home/desktop/windowrules.nix new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/henrovnix_ok/home/desktop/windowrules.nix @@ -0,0 +1 @@ +