diff --git a/henrovnix_ok/README.html b/henrovnix_ok/README.html index b9e399c1b..01a4d8253 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"> - + @@ -193,6 +193,7 @@ { background-color: #ffff00; color: #000000; font-weight: bold; } .org-svg { } +
@@ -200,119 +201,152 @@

Table of Contents

-
-

1. Introduction

+
+

1. Introduction

Screenshot
-

-This repository contains a literate NixOS configuration built using Emacs Org mode. The primary source of truth is this document itself, which embeds configuration blocks that are tangled into individual files. These generated files are evaluated as a NixOS flake, resulting in an immutable, reproducible system configuration. +This repository contains a literate NixOS configuration built using Emacs Org mode. The primary source of truth is this document itself, which embeds configuration blocks that are tangled into individual files. These generated files are evaluated as a NixOS flake, resulting in an immutable, reproducible system configuration.

This work is based on the foundational efforts of Sandeep Nambiar (https://github.com/gamedolphin). All credit for the original structure, methodology, and guidance belongs to him. His work provided the architectural basis and practical direction upon which this repository is built. This project would not have been possible without his prior contributions, and much of the instructional approach preserved here originates from his documentation. -

- -

The purpose of this repository is to offer a structured, minimal starting point for deploying a functional NixOS system. It is intentionally not a complete desktop environment, nor is it a “batteries-included” distribution. Instead, it provides a clean and extensible foundation that can be adapted and expanded after installation. -

- -

Customization is designed to occur primarily through modular .conf files, allowing the system to evolve incrementally while maintaining clarity and separation of concerns. The goal is to enable users to build their own tailored NixOS setup on top of a coherent and reproducible base. -

- -

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?

+
+

+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. +The system provides a predefined baseline configuration that installs and enables the essential components required for a functional and extensible environment. Rather than prescribing a complete desktop experience, it establishes the structural framework upon which such an environment can be composed. +Core packages are installed as part of the base configuration. Additional software can be incorporated in a controlled and modular manner by extending configuration files. +

-
-

2. Pre-requisites to edit this setup

+
+
+

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. +You should not expect graphical configuration tools, wizard-driven setup screens, or extensive GUI-based system management. Configuration is performed declaratively through Nix modules and supporting configuration files. Familiarity with reading logs, adjusting modules, and rebuilding the system is assumed. +Certain subsystems may require manual tuning depending on hardware, desktop environment, or portal backend selection. For example, XDG desktop portals can exhibit inconsistent behavior across compositors and applications, particularly in Wayland-based environments. File chooser dialogs, screen sharing, or drag-and-drop functionality may require additional configuration or troubleshooting. +This project favors clarity, reproducibility, and modular structure over convenience abstractions. As a result, some integration details are intentionally left explicit rather than hidden behind automated defaults. +In short, this repository provides a coherent and extensible base, not a finished consumer product. It is a work in progress. +

+
+
+
+
+

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

+

+A literate system combines documentation and implementation into a single, coherent source. +In this repository, that source is: +

+
+
README.org
+
+
+ +

+Everything originates from this file: +

    -
  • a NIXOS system installed (can be bare-bones)
  • -
  • an internet connection
  • +
  • Architectural explanations
  • +
  • Design decisions
  • +
  • NixOS modules
  • +
  • Home-Manager modules
  • +
  • Generated documentation

-To set up a connection from cli: +There is no separation between “docs” and “code”. +The documentation explains the intent. +The source blocks define the system. +Org-mode turns that narrative into both executable configuration and readable documentation. +

+ +

+The README is not describing the system. +The README is the system. +

+
+
+

2.1. Two Types of Code Blocks

+
+

+This literate system uses two different kinds of source blocks. +

+ +

+1. Documentation Blocks +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
+
+ +

+These are used to show commands, examples, or explanatory snippets in the generated documentation. +They are never tangled into the filesystem. +

+ +

+2. File-Generating Blocks +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
+<nixos code>
+#+end_src
+
+ +

+Explanation: +

+
    +
  • The headline install_packages.nix becomes a documentation chapter.
  • +
  • The paragraph <tekst> explains what the module does.
  • +
  • <nixos code> is exactly what will be written into the .nix module configuration/apps/install_packages.nix
  • +
  • The same source block is rendered as a code block in the documentation.
  • +
+ +

+This means: +

+
    +
  • The explanation and the implementation live side-by-side.
  • +
  • The documentation cannot drift away from the code.
  • +
  • The generated .nix file is always derived from the canonical explanation.
  • +
+
+
+
+

2.2. The Two Core Commands

+
+

+There are exactly two commands that matter. +

+ +

+1. Generate all .nix files +

+
+
emacs README.org --batch -f org-babel-tangle
+
+
+ +

+This command: +

+
    +
  • Regenerates ./configuration
  • +
  • Regenerates ./home
  • +
  • Overwrites previously generated modules
  • +
  • Ensures the system matches the README
  • +
+ +

+2. Generate documentation +

+
+
emacs --batch -l org -l ox-html README.org -f org-html-export-to-html --kill
+
+
+ +

+This command exports the same README into HTML documentation. +In practice you usually combine them: +

+
+
emacs README.org --batch -f org-babel-tangle && emacs --batch -l org -l ox-html README.org -f org-html-export-to-html --kill
+
+
+ +

+First the system is generated. +Then the documentation is generated. +Both come from the same source. +

+
+
+
+

2.3. Editing Generated Files

+
+

+The directories: +

+
    +
  • ./configuration
  • +
  • ./home
  • +
+ +

+are fully generated by: +

+
+
emacs README.org --batch -f org-babel-tangle
+
+
+ +

+Editing these files directly is allowed only temporarily, for experimentation or testing. +Structural or permanent changes must always be implemented in the corresponding section inside README.org. +If you change a file in ./configuration or ./home without updating the README, your changes will disappear on the next tangle. +Generated directories are output, not source. +

+
+
+
+

2.4. Recommended Workflow

+
+

+This workflow allows safe experimentation while preserving literate structure. +

+
    +
  1. Change any existing file in ./assets, ./home or ./configuration
  2. +
  3. Commit your experimental change
  4. +
  5. Test the configuration
  6. +
  7. If satisfied, migrate the change into README.org
  8. +
  9. Regenerate system and documentation
  10. +
  11. Commit again
  12. +
  13. Test again
  14. +
+ +

+Commands: +

+
+
git add .
+git commit -m "experiment: local change"
+sudo nixos-rebuild test --flake .#your_hostname
+
+
+ +

+After confirming the change: +

+
+
emacs README.org --batch -f org-babel-tangle && emacs --batch -l org -l ox-html README.org -f org-html-export-to-html --kill
+git add .
+git commit -m "literate: structural update"
+sudo nixos-rebuild test --flake .#your_hostname
+
+
+ +

+If you are confident about your changes, you may skip steps 1–3 and edit README.org directly. +

+
+
+
+

2.5. Folder Structure Explained

+
+

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

+
+
+

2.5.1. ./assets

+
+

+Contains non-generated assisting files such as: +

+
    +
  • Icons
  • +
  • Themes
  • +
  • Static configuration files
  • +
+

+These files are safe to edit directly. +

+
+
+
+

2.5.2. ./assets/conf

+
+

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

+
+
+
+

2.5.3. ./configuration

+
+

+Fully (re)generated by README.org. +

+ +

+Contains: +

+
    +
  • All NixOS modules
  • +
  • Service definitions
  • +
  • System-level configuration
  • +
+

+This directory is output. +

+
+
+
+

2.5.4. ./hardware

+
+

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

+
+
+
+

2.5.5. ./home

+
+

+Fully (re)generated by README.org. +

+ +

+Contains: +

+
    +
  • All Home-Manager modules
  • +
  • User-level configuration
  • +
  • Shell and desktop configuration
  • +
+
+
+
+

2.5.6. ./machines

+
+

+Contains one folder per machine you want to configure. +Each machine folder contains non-generated files detailing specifics for that machine: +

+
    +
  • Host-specific overrides
  • +
  • Hardware references
  • +
  • Host definitions
  • +
+ +

+These determine how shared modules apply to each system. +

+
+
+
+
+

2.6. Final Principle

+
+

+A literate NixOS system guarantees: +

+
    +
  • Single source of truth
  • +
  • No divergence between documentation and configuration
  • +
  • Reproducible system builds
  • +
  • Clear architectural reasoning
  • +
  • Controlled experimentation
  • +
+ +

+You are not maintaining configuration files. +You are maintaining a structured narrative that builds an operating system. +

+
+
+
+

2.7. Base packages

+
+

+The baseline package set is defined explicitly within the repository to ensure reproducibility: +

+ +
+
- alsa-utils
+- avy
+- bibata-cursors
+- brightnessctl
+- cape
+- catppuccin-gtk
+- catppuccin-theme
+- consult
+- coreutils
+- corfu
+- crux
+- dash
+- diminish
+- doom-modeline
+- eat
+- eldoc
+- eldoc-box
+- elephant
+- emacs-pgtk
+- envrc
+- exec-path-from-shell
+- expreg
+- flatpak
+- gnugrep
+- gnused
+- gptel
+- hcl-mode
+- hypridle
+- hyprlandPlugins
+- hyprlock
+- hyprshell
+- librsvg
+- linuxPackages_latest
+- magit
+- magnetic-catppuccin-gtk
+- marginalia
+- nerd-icons
+- nerd-icons-corfu
+- nix-mode
+- nixpkgs-fmt
+- nushell
+- ollama-vulkan
+- orderless
+- papirus-icon-theme
+- pulsar
+- puni
+- rg
+- rust-mode
+- rustic
+- shell-pop
+- sideline
+- sideline-eglot
+- sideline-flymake
+- tuigreet
+- vertico
+- vundo
+- walker
+- which-key
+- wpaperd
+- xdg-desktop-portal-gtk
+- yasnippet
+- yasnippet-snippets
+- zsh
+
+
+
+
+
+

2.8. Additional packages

+
+

+Additional software can be installed by extending the dedicated configuration files that define system and Flatpak packages: +

+ +
+
├── assets
+│   ├── conf
+│   │   ├── apps
+│   │   │   ├── flatpaks.conf
+│   │   │   └── packages.conf
+
+
+ +

+System packages are declared in packages.conf using their attribute names from Nixpkgs. The correct package names can be located through the official NixOS package search at https://search.nixos.org/packages. +

+ +

+Available Flatpak identifiers can be discovered using: +

+
+
flatpak search <application-name>
+
+
+ +

+or by browsing: https://flathub.org/. +

+ +

+The behavior and integration of Flatpak installation within the system are defined in install_flatpaks.nix, which reads the corresponding configuration files and ensures declarative installation. +

+ +

+This separation maintains clarity between system-level packages and user-facing Flatpak applications while preserving reproducibility and modular structure. +

+
+
+
+
+

3. Setting up your system manually

+
+
+
+

3.1. Pre-requisites to build this setup

+
+
+
- a NIXOS system installed with a user with sudo rights.
+- an internet connection
+- the folder henrovnix as you find it here
+
+
+
+
+
+

3.2. Setup when Emacs not (yet) available

+
+
    +
  1. Copy the folder henrovnix to your machine
  2. +
  3. +First setup an internet connection

    # Check if NetworkManager service is running
    @@ -402,12 +904,71 @@ nmcli connection show --active
     # Optional: show device status
     nmcli device status
     
    +
  4. +
  5. +Replace <defaultUser> in all files with your_user +

    +
    +
    find ~/Repos/nixos/henrovnix \
    +  -type d -name ".*" -prune -o \
    +  -type f -print0 \
    +| xargs -0 sed -i 's/=<defaultUser>=/your_user/g'
    +
    +
  6. +
  7. +Replace machine1 in all files with your_hostname +

    +
    +
    find ~/Repos/nixos/henrovnix \
    +  -type d -name ".*" -prune -o \
    +  -type f -print0 \
    +| xargs -0 sed -i 's/machine1/your_hostname/g'
    +
    +
  8. +
  9. +Rename the folder ./machines/machine1 to your hostname +

    +
    +
    mv ./machines/machine1 ./machines/your_hostname
    +
    +
  10. +
  11. +Create a hardware-configuration.nix and copy it into the folder ./machines/your_hostname overwriting any existing file +

    +
    +
    nixos-generate-config
    +
    +
  12. +
  13. +Run the build command to set up the system for the first time +

    +
    +
    sudo nixos-rebuild switch --flake .#your_hostname
    +
    +
  14. +
-
-

3. machine1 — template machine

-
+
+

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. +

+ +

+From this point onward, development becomes iterative: modify configuration, rebuild the system, verify behavior, and refine. Because the system is declarative, every change remains explicit, reviewable, and reversible. +

+ +

+The following sections provide practical guidance for editing and rebuilding, along with an explanation of the repository structure. They describe how the various files relate to one another, how the modular layers are composed, and how the configuration evolved into its current form. Understanding this structure will make future modifications more predictable and easier to maintain. +

+ +

+Below are several useful commands for testing configurations, generating builds, and managing system generations. These commands support safe experimentation by allowing you to evaluate changes before switching to them permanently, and to roll back if necessary. +

+

To generate the Nix files:

@@ -416,6 +977,14 @@ To generate the Nix files:
+

+To generate this documentation: +

+
+
emacs --batch -l org -l ox-html README.org -f org-html-export-to-html --kill
+
+
+

Test the build while being able to reboot to previous version

@@ -434,128 +1003,116 @@ Build and switch to this version on the next reboot Build and run in a virtual machine (qemu must be installed)

-
sudo nixos-rebuild build-vm --flake ~/nixos-henrov#machine1
+
sudo nixos-rebuild build-vm --flake .#machine1
 # running the vm:
 ./result/bin/run-nixos-vm
 
-

-un this VM with result/ -

- - -
-
emacs README.org --batch -f org-babel-tangle
-
-

-Once the Nix files are generated, deploy using: -

- -
-
nixos-rebuild switch --flake .#<machine>
-
-
- -

-Other files in this repo include: +Other important files:

-
-

4. flake.lock for pinning input versions.

+
+

5. flake.lock for pinning input versions.

-
-

5. 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.

-
-

5.1. Emacs + Org + Tangle

+
+

6.1. Emacs + Org + Tangle

-
-

6. [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.

-
-

7. [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.

-
-

8. 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.
-
-

8.1. Nix & NixOS

+
+

9.1. Nix & NixOS

-
-

9. [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.

-
-

10. [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.

+
-
-

10.1. Repository layout and folder conventions

-
+
+

11.1. Repository layout and folder conventions

+

-This repository contains system modules, user modules, and configuration fragments. The following directories are treated as separate layers: -./configuration (NixOS modules), ./home (Home Manager modules), and ./assets/conf (configuration fragments referenced or deployed by the modules). -

-

-To keep navigation consistent, the same internal substructure is used in all three locations. Each layer keeps its role; only the internal grouping is standardized. +<p> + This repository contains system modules, user modules, and configuration fragments. The following directories are treated as separate layers: + <code>./configuration</code> (NixOS modules), <code>./home</code> (Home Manager modules), and <code>./assets/conf</code> (configuration fragments referenced or deployed by the modules). +</p> +<p> + To keep navigation consistent, the same internal substructure is used in all three locations. Each layer keeps its role; only the internal grouping is standardized. +</p>

-
-

10.2. Shared domain folders

-
-
    -
  • core/ – base settings and common infrastructure
  • -
  • desktop/ – graphical session, compositor, UI components, and integration
  • -
  • apps/ – application enablement and application-level configuration
  • -
  • services/ – background services and daemons
  • -
  • security/ – secrets handling and security-related configuration
  • -
  • dev/ – developer tooling and editor configuration
  • -
+
+

11.2. Shared domain folders

+
+

+<ul> + <li><code>core/</code> – base settings and common infrastructure</li> + <li><code>desktop/</code> – graphical session, compositor, UI components, and integration</li> + <li><code>apps/</code> – application enablement and application-level configuration</li> + <li><code>services/</code> – background services and daemons</li> + <li><code>security/</code> – secrets handling and security-related configuration</li> + <li><code>dev/</code> – developer tooling and editor configuration</li> +</ul> +

-
-

10.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 -configuration/, home/, and assets/conf/.

- -
.
-├── assets
-│   ├── background.png
+
+
├── assets
 │   ├── conf
 │   │   ├── apps
 │   │   │   ├── flatpaks.conf
 │   │   │   └── packages.conf
 │   │   ├── core
-│   │   │   └── lightdm.conf
+│   │   │   ├── lightdm.conf
+│   │   │   └── lightdm-gtk-greeter.conf
 │   │   ├── desktop
 │   │   │   ├── hypr
 │   │   │   │   ├── bindings.conf
-│   │   │   │   └── hyprland.conf
+│   │   │   │   ├── hypridle.conf
+│   │   │   │   ├── hyprland.conf
+│   │   │   │   ├── hyprlock.conf
+│   │   │   │   ├── hyprshell
+│   │   │   │   └── scripts
 │   │   │   ├── wallpaper
+│   │   │   │   ├── gif
+│   │   │   │   ├── pictures
+│   │   │   │   ├── videos
 │   │   │   │   └── wallpaper.conf
 │   │   │   └── waybar
 │   │   │       ├── config.jsonc
 │   │   │       └── style.css
 │   │   ├── dev
-│   │   │   ├── hyprshell
-│   │   │   │   ├── config.ron.bak
-│   │   │   │   └── styles.css.bak
 │   │   │   └── terminal
 │   │   │       ├── alacritty.toml
 │   │   │       ├── aliases.conf
@@ -567,38 +1124,33 @@ The tree below shows the full repository layout, with the standardized internal
 │   │   │   └── ssh
 │   │   │       └── ssh-client.conf
 │   │   └── services
+│   ├── cursors
+│   │   └── Bibata_Cursor-main
+│   ├── icons
+│   │   └── papirus-icon-theme-master
 │   ├── lock.png
 │   ├── scripts
-│   └── wallpapers
-│       ├── gif
-│       ├── pictures
-│       │   ├── background.png
-│       │   ├── background1.png
-│       │   ├── background2.png
-│       │   ├── background3.png
-│       │   ├── background4.png
-│       │   └── background5.png
-│       └── videos
-│           ├── dark_water_large.mp4
-│           └── white_blobs_small.mp4
+│   └── themes
+│       └── Catppuccin-Mocha-Standard-Blue-Dark
 ├── configuration
 │   ├── apps
+│   │   ├── ai.nix
 │   │   ├── install_flatpaks.nix
 │   │   └── install_packages.nix
 │   ├── core
 │   │   ├── boot.nix
 │   │   ├── files.nix
 │   │   ├── locale.nix
+│   │   ├── login-lightdm.nix
+│   │   ├── login-tuigreeter.nix
 │   │   ├── networking.nix
 │   │   └── nix-settings.nix
 │   ├── default.nix
 │   ├── desktop
 │   │   ├── audio.nix
-│   │   ├── hyprland.nix
-│   │   └── login-tuigreeter.nix
+│   │   └── hyprland.nix
 │   ├── dev
 │   │   └── terminal.nix
-│   ├── security
 │   └── services
 │       └── services.nix
 ├── flake.lock
@@ -607,49 +1159,57 @@ The tree below shows the full repository layout, with the standardized internal
 │   └── hardware.nix
 ├── home
 │   ├── apps
+│   │   ├── ai.nix
 │   │   ├── defaults-apps.nix
 │   │   └── theme.nix
 │   ├── default.nix
 │   ├── desktop
 │   │   ├── hyprexpo.nix
+│   │   ├── hypridle.nix
 │   │   ├── hyprland.nix
 │   │   ├── hyprlock.nix
-│   │   ├── hypridle.nix
+│   │   ├── hyprscrolling.nix
 │   │   ├── hyprshell.nix
 │   │   ├── walker.nix
 │   │   ├── wallpaper.nix
 │   │   └── waybar.nix
-│   ├── dev
-│   │   ├── alacritty.nix
-│   │   ├── dev.nix
-│   │   ├── emacs
-│   │   │   ├── default.nix
-│   │   │   ├── early-init.el
-│   │   │   └── init.el
-│   │   ├── kitty.nix
-│   │   ├── shells.nix
-│   │   └── starship.nix
-│   └── zsh.nix
+│   └── dev
+│       ├── alacritty.nix
+│       ├── dev.nix
+│       ├── emacs
+│       │   ├── default.nix
+│       │   ├── early-init.el
+│       │   └── init.el
+│       ├── kitty.nix
+│       ├── shells.nix
+│       ├── starship.nix
+│       └── zsh.nix
 ├── LICENSE
 ├── machines
+│   ├── machine1
+│   │   ├── configuration.nix
+│   │   ├── hardware-configuration.nix
+│   │   └── home.nix
 │   └── traveldroid
 │       ├── configuration.nix
 │       ├── hardware-configuration.nix
 │       └── home.nix
+├── README.html
 ├── README.org
-├── secrets
-│   └── secrets.yaml
 └── user.nix
-
+
-
-

10.4. Notes

-
-
    -
  • Only the internal layout of configuration/, home/, and assets/conf/ is standardized; all other paths remain as currently organized.
  • -
  • The services/ and security/ folders are included for completeness even if initially empty in some layers.
  • -
+
+
+

11.4. Notes

+
+

+<ul> + <li>Only the internal layout of <code>configuration/</code>, <code>home/</code>, and <code>assets/conf/</code> is standardized; all other paths remain as currently organized.</li> + <li>The <code>services/</code> and <code>security/</code> folders are included for completeness even if initially empty in some layers.</li> +</ul> +

YourNixCode(Input) -> System Configuration @@ -675,9 +1235,9 @@ This prevents unwanted and surprise updates when rebuilding without changing the

-
-

11. TLDR App List

-
+
+

12. TLDR App List

+
@@ -755,9 +1315,9 @@ This prevents unwanted and surprise updates when rebuilding without changing the
-
-

12. 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. The values are imported at the beginning and are available to almost all the functions being called to configure the system. @@ -773,9 +1333,9 @@ The values are imported at the beginning and are available to almost all the fun

-
-

13. Flake Inputs

-
+
+

14. Flake Inputs

+

The inputs for my system's configuration are very simple

@@ -815,16 +1375,16 @@ Sometimes pinned to a specific commit because unstable broke something and the f
-
-

14. 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. We also add a devshell that makes editing this repository easier in emacs.

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

-
({ ... }: {
+
({ ... }: {
   nixpkgs.overlays = [ emacs-overlay.overlays.default ];
 })
 
@@ -895,7 +1455,7 @@ Overlays are a special nix way to override existing packages within a repository Then the machine specific configuration, in this case, just "traveldroid".

-
./machines/${machine}/configuration.nix
+
./machines/${machine}/configuration.nix
 
@@ -905,7 +1465,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;
@@ -948,9 +1508,9 @@ Finally I pull in the machine specific home configuration. Along with the overri
 
-
-

14.1. Envrc + Direnv

-
+
+

15.1. Envrc + Direnv

+

Editing this file will be much nicer if we have the dev environment configured. That is done in the devshells section. But to auto load this dev shell, we need a .envrc file. @@ -970,14 +1530,14 @@ fi

-
-

15. Machines

-
+
+

16. Machines

+

The individual machines subdirectory is configured as follows :-

-
+--machine
+
+--machine
 |  +--configuration.nix
 |  +--home.nix
 |  +--hardware-configuration.nix
@@ -998,13 +1558,13 @@ 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.
 

-
-

15.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 :-

    @@ -1017,9 +1577,9 @@ To update the computer, I just need to update the flake.lock file t
-
-

16. Hardware

-
+
+

17. Hardware

+

I'll let the code comments explain the file here.

@@ -1052,9 +1612,9 @@ I'll let the code comments explain the file here.
-
-

17. 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 :-

@@ -1063,6 +1623,7 @@ This section describes the main system configuration for the computers that I ha
  { pkgs, user, ... } :
 {
   imports = [
+      ./apps/ai.nix
       ./apps/install_flatpaks.nix
       ./apps/install_packages.nix
       ./core/files.nix
@@ -1096,17 +1657,46 @@ This section describes the main system configuration for the computers that I ha
 
-
-

17.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

-
-

17.2. installpackages.nix

-
+
+

18.2. ai.nix

+
+

+This module enables and configures the Ollama system service on NixOS, including optional GPU acceleration (CUDA or ROCm). +It ensures the Ollama CLI is available system-wide for interacting with local models. +It automatically pulls and prepares selected coding models (e.g., Qwen2.5-Coder and StarCoder2) at system activation. +

+ +
+
{ config, lib, pkgs, ... }:
+{
+  services.ollama = {
+    enable = true;
+    package = pkgs.ollama-vulkan;
+    loadModels = [
+      "qwen2.5-coder:7b"
+      "qwen2.5-coder:32b"
+      "starcoder2:15b"
+    ];
+  };
+  environment.systemPackages = [
+    pkgs.ollama-vulkan
+  ];
+}
+
+
+
+
+
+

18.3. installpackages.nix

+
{ config, lib, pkgs, flakeRoot, inputs, ... }:
 
@@ -1165,9 +1755,9 @@ in
 
-
-

17.3. installflatpaks.nix

-
+
+

18.4. installflatpaks.nix

+
{ config, pkgs, lib, flakeRoot, ... }:
 
@@ -1277,9 +1867,9 @@ in
 
-
-

17.4. Nix Settings

-
+
+

18.5. Nix Settings

+

These are global nix settings that configure the settings for the actual tool.

@@ -1327,9 +1917,9 @@ These are global nix settings that configure the settings for the actual tool.
-
-

17.5. Boot

-
+
+

18.6. Boot

+

This file has most of the settings the control how the computer boots up.

@@ -1366,17 +1956,17 @@ This file has most of the settings the control how the computer boots up.
-
-

17.6. Login

-
+
+

18.7. 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)

-
-

17.7. Tuigreet

-
+
+

18.8. Tuigreet

+

Doesn't match the rest of the aesthetic of the system (with hyprland), but I like its simplicity.

@@ -1400,9 +1990,9 @@ Doesn't match the rest of the aesthetic of the system (with hyprland), but I lik
-
-

17.8. LightDM

-
+
+

18.9. LightDM

+
{ config, pkgs, lib, ... }:
 
@@ -1548,9 +2138,9 @@ in
 
-
-

17.9. Terminal (default system)

-
+
+

18.10. Terminal (default system)

+

This is the initial system level configuration for the terminal that I use on this machine. Its just zsh.

@@ -1568,9 +2158,9 @@ This is the initial system level configuration for the terminal that I use on th
-
-

17.10. Files

-
+
+

18.11. Files

+

I use Thunar as the file explorer. Also setup a few plugins for Thunar in this config. Along with that, a few other utilities like zip and enabling services to automount usb drives. @@ -1610,9 +2200,9 @@ Along with that, a few other utilities like zip and enabling services to automou

-
-

17.11. Locale

-
+
+

18.12. Locale

+

I live in Netherlands and would like all my locale and timezone settings to match. Except my default locale.

@@ -1645,9 +2235,9 @@ in
-
-

17.12. Networking

-
+
+

18.13. Networking

+

Not much to see here. I want networking to be enabled. I want firewall as well.

@@ -1677,9 +2267,9 @@ Not much to see here. I want networking to be enabled. I want firewall as well.
-
-

17.13. Hyprland

-
+
+

18.14. Hyprland

+

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

-
-

17.14. Services

-
+
+

18.15. Services

+

These are some of the services that I enable at the system level. Explanation in the comments.

@@ -1783,9 +2373,9 @@ These are some of the services that I enable at the system level. Explanation in
-
-

17.15. Audio

-
+
+

18.16. Audio

+
{ config, pkgs, lib, ... }:
 
@@ -1857,67 +2447,18 @@ These are some of the services that I enable at the system level. Explanation in
     };
   };
 }
-
 
-
-

17.16. Miscellaneous Packages and Programs

-
-
-
environment.systemPackages = with pkgs; [
-  wget       # fetch utility
-  curl       # more fetch utility
-  binutils   # executable utilities, like ld
-  dmidecode  # tool for dumping system info
-  libnotify  # notification daemon
-  python3    # nice to have this ready for quick things
-  cacert     # certificate authority
-  remmina    # remote desktop app
-  #rg         # ripgrep
-  wev        # for finding keypresses
-  tree       # list foldetrtree's
-  file       # filinfo
-  htop       # sysmonitor
-  solaar     # logitech controller
-  git        # source control
- # jetbrains.pycharm # Dev and course environment
-
-
-];
-
-# to enable icons with wlogout
-# https://github.com/catppuccin/nix/issues/584
-programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
-
-
- -
-
programs = {
-  nix-ld.enable = true;   # helps with linking troubles with dynamic libraries
-  appimage.enable = true; # allow appimage installations
-  dconf.enable = true;    # to save user settings
-  gnupg.agent = {
-    # pgp client
-    enable = true;
-    enableSSHSupport = true;
-  };
-  firefox.enable = true;   # browser
-  wireshark.enable = true; # vpn
-};
-
-
-
-
-
-

17.17. Fonts

-
+
+

18.17. 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
 ];
@@ -1925,14 +2466,14 @@ Nothing much to see here. I love 
-

17.18. User Config

-
+
+

18.18. 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 = [
@@ -1947,18 +2488,18 @@ This creates the user profile that I login with. Initially created during instal
 
-
-

18. Home

-
+
+

19. Home

+

I use home-manager to manage my user level dotfiles and configurations. 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.

-
-

18.1. default.nix

-
+
+

19.1. default.nix

+

This module will import all necessities.

@@ -1967,19 +2508,23 @@ This module will import all necessities.
{ pkgs, user, ... } :
   {
     imports = [
+      ./apps/ai.nix
       #./apps/default-apps.nix
       ./apps/theme.nix
       ./desktop/hypridle.nix
       ./desktop/hyprland.nix
       ./desktop/hyprexpo.nix
       ./desktop/hyprlock.nix
+      ./desktop/hyprscrolling.nix
       ./desktop/hyprshell.nix
       ./desktop/wallpaper.nix
       ./desktop/waybar.nix
       ./desktop/walker.nix
       ./dev/dev.nix
+      ./dev/kitty.nix
       ./dev/shells.nix
       ./dev/starship.nix
+      ./dev/zsh.nix
       ./dev/emacs
     ];
 
@@ -1993,9 +2538,9 @@ This module will import all necessities.
 
-
-

18.2. Wallpaper

-
+
+

19.2. Wallpaper

+

wallpaper.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. Finally, it creates a systemd user service (wpaperd.service) that automatically starts wpaperd at login and keeps it running, using your override config so wallpapers rotate according to your settings. @@ -2048,11 +2593,11 @@ in

-
-

18.3. Waybar

-
+
+

19.3. Waybar

+
-
+

waybar.png

@@ -2089,9 +2634,9 @@ in
-
-

18.4. Lock Screen

-
+
+

19.4. Lock Screen

+

The lock screen configured using hyprlock. I use hypridle to detect idle time and use wlogout to show a logout menu. @@ -2112,9 +2657,9 @@ in

-
-

18.5. Idle Screen

-
+
+

19.5. Idle Screen

+

<henro: needs instruction>

@@ -2131,9 +2676,47 @@ in
-
-

18.6. Hyprshell

-
+
+

19.6. 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. +

+
+
{ config, lib, pkgs, flakeRoot, ... }:
+
+let
+  repoConf =
+    flakeRoot + "/assets/conf/desktop/hypr/hyprscrolling.conf";
+
+  targetRel = "hypr/conf.d/90-hyprscrolling.conf";
+in
+{
+  # Make sure Hyprland is managed by Home-Manager
+  wayland.windowManager.hyprland = {
+    enable = true;
+
+    # Load the plugin
+    plugins = [
+      pkgs.hyprlandPlugins.hyprscrolling
+    ];
+
+    # Source the drop-in config
+    extraConfig = ''
+      source = ~/.config/${targetRel}
+    '';
+  };
+
+  # Copy your repo config into ~/.config
+  xdg.configFile."${targetRel}".source = repoConf;
+}
+
+
+
+
+
+

19.7. Hyprshell

+

For nice task-starting and -switching

@@ -2172,9 +2755,9 @@ in
-
-

18.7. Hyprland

-
+
+

19.8. Hyprland

+

This configures the desktop environment along with the peripherals. The comments should explain whats happening.

@@ -2185,8 +2768,6 @@ let bindingsConf = flakeRoot + "/assets/conf/desktop/hypr/bindings.conf"; in { - programs.kitty.enable = true; - wayland.windowManager.hyprland = { enable = true; # Load base config + bindings from repo files @@ -2196,22 +2777,18 @@ in + (builtins.readFile bindingsConf) + "\n"; }; - xdg.configFile."hypr/scripts/lid-lock.sh" = { source = flakeRoot + "/assets/conf/desktop/hypr/scripts/lid-lock.sh"; executable = true; }; xdg.portal = { enable = true; - extraPortals = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-hyprland ]; - # GTK als algemene backend (OpenURI is daar betrouwbaar) config.common.default = [ "gtk" ]; - # Hyprland alleen voor screensharing / remote desktop config.hyprland = { "org.freedesktop.impl.portal.Screencast" = [ "hyprland" ]; @@ -2223,9 +2800,9 @@ in
-
-

18.8. Walker

-
+
+

19.9. Walker

+

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

@@ -2325,9 +2902,9 @@ in
-
-

18.9. Theme

-
+
+

19.10. 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. @@ -2359,9 +2936,85 @@ You'll notice the color values in multiple places outside this as well.

-
-

18.10. Default-apps

-
+
+

19.11. ai.nix

+
+

+This Home-Manager module installs and configures the Zed editor in a user environment. +It integrates Ollama as a local LLM provider within Zed’s AI settings for code assistance. +It also generates a Continue configuration file pointing to the local Ollama instance for compatible editors. +

+
+
{ config, lib, pkgs, ... }:
+let
+  # Continue gebruikt tegenwoordig bij voorkeur config.yaml; config.json bestaat nog
+  # maar is “deprecated” in de docs. We schrijven hier bewust config.json omdat jij dat vroeg.
+  continueConfigJson = builtins.toJSON {
+    models = [
+      {
+        title = "Qwen2.5-Coder 7B";
+        provider = "ollama";
+        model = "qwen2.5-coder:7b";
+        apiBase = "http://localhost:11434";
+      }
+      {
+        title = "Qwen2.5-Coder 32B";
+        provider = "ollama";
+        model = "qwen2.5-coder:32b";
+        apiBase = "http://localhost:11434";
+      }
+      {
+        title = "StarCoder2 15B";
+        provider = "ollama";
+        model = "starcoder2:15b";
+        apiBase = "http://localhost:11434";
+      }
+    ];
+    # Tab-autocomplete model (pas aan naar smaak/VRAM)
+    tabAutocompleteModel = {
+      title = "Qwen2.5-Coder 7B";
+      provider = "ollama";
+      model = "qwen2.5-coder:7b";
+      apiBase = "http://localhost:11434";
+    };
+  };
+in
+{
+  programs.zed-editor = {
+    enable = true;
+   # Zed-extensies (taal/LS/etc). "Continue" bestaat (nog) niet als Zed-extensie.
+   # Dit is de officiële HM interface voor Zed extensions.
+    extensions = [
+      "nix"
+      "toml"
+      "rust"
+      "org-mode"
+    ];
+    # Zed AI: Ollama als provider
+    # Zed kan modellen auto-discoveren die jij met Ollama gepulld hebt.
+    userSettings = {
+      language_models = {
+        ollama = {
+          api_url = "http://localhost:11434";
+          auto_discover = true;
+          # Optioneel: zet een grotere context voor alle Ollama modellen
+          # (Zed stuurt dit als `num_ctx` naar Ollama)
+          context_window = 8192;
+        };
+      };
+    };
+  };
+  # Continue config.json neerzetten (voor Continue in VS Code / JetBrains)
+  # Pad: ~/.config/continue/config.json
+  xdg.configFile."continue/config.json".text = continueConfigJson;
+}
+
+
+
+
+
+

19.12. Default-apps

+

This is where you can set defaults

@@ -2379,15 +3032,14 @@ This is where you can set defaults
-
-

18.11. Hyperexpo

-
+
+

19.13. Hyperexpo

+

hyprexpo gets installed and configured

{ config, lib, pkgs, ... }:
-
 {
   wayland.windowManager.hyprland = {
     # Load the Hyprexpo plugin (from nixpkgs)
@@ -2420,9 +3072,9 @@ hyprexpo gets installed and configured
 
-
-

18.12. Alacritty

-
+
+

19.14. Alacritty

+

Alacritty gets installed and configured

@@ -2443,9 +3095,9 @@ in
-
-

18.13. Dev Tools

-
+
+

19.15. Dev Tools

+

All the miscellaneous dev tools on this computer.

@@ -2457,32 +3109,27 @@ All the miscellaneous dev tools on this computer. vim.enable = true; ripgrep.enable = true; btop.enable = true; - fzf = { enable = true; enableZshIntegration = true; enableBashIntegration = true; }; - zoxide = { enable = true; enableZshIntegration = true; enableBashIntegration = true; }; - eza = { enable = true; enableZshIntegration = true; enableBashIntegration = true; }; - direnv = { enable = true; enableZshIntegration = true; enableBashIntegration = true; nix-direnv.enable = true; }; - # Zsh-specific config belongs here zsh = { # for emacs-eat package @@ -2491,46 +3138,59 @@ All the miscellaneous dev tools on this computer. source "$EAT_SHELL_INTEGRATION_DIR/zsh" ''; }; - git = { enable = true; lfs.enable = true; }; }; } -
-
-

18.14. Kitty

-
+
+

19.16. Kitty

+

Kitty gets installed and configured

{ config, pkgs, lib, flakeRoot, ... }:
 let
-  repoKittyConf = flakeRoot + "/assets/conf/dev/kitty.conf";
+  catppuccinMochaConf =
+    builtins.readFile (flakeRoot + "/assets/conf/dev/terminal/Catppuccin-Mocha.conf");
+  # Your own keymaps / other settings (but we will NOT rely on it for opacity)
+  repoKittyConfText =
+    builtins.readFile (flakeRoot + "/assets/conf/dev/terminal/kitty.conf");
 in
 {
   xdg.enable = true;
-  programs.kitty.enable = true;
-  catppuccin.alacritty.enable = true;
-  catppuccin.alacritty.flavor = "mocha";
-  syntaxHighlighting.enable = true;
-  autosuggestion.enable = true;
-  enableCompletion = true;
-  xdg.configFile."kitty/kitty.conf".source = repoKittyConf;
+  # Stable theme file so kitty.conf can include it without /nix/store paths
+  xdg.configFile."kitty/themes/Catppuccin-Mocha.conf".text = catppuccinMochaConf;
+  programs.kitty = {
+    enable = true;
+    # Home Manager generates ~/.config/kitty/kitty.conf; we append in-order:
+    # 1) include theme
+    # 2) your repo config (keymaps etc.)
+    # 3) force opacity LAST so it always wins
+    extraConfig = ''
+      # 1) Theme first (stable path)
+      include themes/Catppuccin-Mocha.conf
+      # 2) Your repo config (may also include theme; harmless if duplicated)
+      ${repoKittyConfText}
+      # 3) Force transparency last (wins)
+      #background_opacity 0.60
+      #dynamic_background_opacity yes
+    '';
+  };
 }
 
-
-

18.15. Shells

-
+
+

19.17. Shells

+

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

@@ -2538,7 +3198,7 @@ The aliases mentioned in ./assets/conf/dev/terminal/shells.conf will be added to
# shells.nix — Home-Manager module
 #
 # Reads:
-#   ${flakeRoot}/assets/conf/dev/terminal/enabled_shells.conf
+#   ${flakeRoot}/assets/conf/shells.nixdev/terminal/enabled_shells.conf
 #   ${flakeRoot}/assets/conf/dev/terminal/aliases.conf
 #
 # For each enabled shell in [enabled_shells]:
@@ -2584,7 +3244,6 @@ let
           lines;
     in
       folded.sections;
-
   enabledSections = parseSections (readMaybe enabledFile);
   aliasSections   = parseSections (readMaybe aliasesFile);
   # [enabled_shells] lines: key = yes/no
@@ -2627,7 +3286,6 @@ let
   zshSeed = ''
     # Created once from: ${toString aliasesFile}
     # Edit freely; Home Manager will not overwrite this file.
-    #
     ${secText "bash_zsh"}
     ${secText "zsh_specific"}
     '';
@@ -2663,10 +3321,8 @@ let
     # Created once from: ${toString aliasesFile}
     # Edit freely; Home Manager will not overwrite this file.
     status is-interactive; or exit
-
     # Translated from [bash_zsh]:
     ${fishTranslated}
-
     # From [fish_specific]:
     ${secText "fish_specific"}
       '';
@@ -2707,7 +3363,6 @@ in
 # Create/remove alias files based on enabled shells
 home.activation.shellAliasesFiles = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
   set -euo pipefail
-
   # bash -------------------------------------------------------
   if ${if shellEnabled "bash" then "true" else "false"}; then
     cat > "${bashAliasesPath}" <<'EOF'
@@ -2716,16 +3371,14 @@ EOF
   else
     rm -f "${bashAliasesPath}"
   fi
-
   # zsh -------------------------------------------------------
-  if ${if shellEnabled "zsh" then "true" else "false"}; then
+ if ${if shellEnabled "zsh" then "true" else "false"}; then
     cat > "${zshAliasesPath}" <<'EOF'
 ${zshSeed}
 EOF
   else
     rm -f "${zshAliasesPath}"
   fi
-
   # fish -------------------------------------------------------
   if ${if shellEnabled "fish" then "true" else "false"}; then
     mkdir -p "$(dirname "${fishAliasesPath}")"
@@ -2752,26 +3405,21 @@ EOF
 
-
-

18.16. Zsh

-
+
+

19.18. Zsh

+

Zsh gets installed and configured

-
{ config, pkgs, lib, flakeRoot, ... }:
-let
-  repoZshConf = flakeRoot + "/assets/conf/dev/terminal/zsh.conf";
-in
+
{  config,  pkgs,  lib, flakeRoot,  ... }:
 {
   programs.zsh = {
     enable = true;
-    syntaxHighlighting.enable = true;
-    autosuggestions.enable = true;
     enableCompletion = true;
     autocd = true;
-    dotDir = config.home.homeDirectory;
-    # ---- Oh My Zsh ----
+    # Optional but recommended: keep zsh config in one dir (relative to $HOME)
+    dotDir = ".config/zsh";
     oh-my-zsh = {
       enable = true;
       theme = "";
@@ -2784,21 +3432,19 @@ in
         "history"
         "docker"
         "kubectl"
-        # IMPORTANT: these should be last
-        "zsh-autosuggestions"
-        "zsh-syntax-highlighting"
       ];
     };
-    '';
+    autosuggestion.enable = true;
+    syntaxHighlighting.enable = true;
   };
 }
 
-
-

18.17. Starship

-
+
+

19.19. Starship

+

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

@@ -2829,18 +3475,18 @@ in
-
-

18.18. Other Settings

-
+
+

19.20. Other Settings

+

Some repeated info from the configuration.

-
-

18.18.1. Home User

-
+
+

19.20.1. Home User

+
-
home.username = "${user.username}";
+
home.username = "${user.username}";
 home.homeDirectory = pkgs.lib.mkDefault "/home/${user.username}";
 home.stateVersion = user.stateVersion;
 
@@ -2849,9 +3495,9 @@ home.stateVersion = user.stateVersion;
-
-

19. Emacs

-
+
+

20. Emacs

+

I practically live inside emacs. The configuration for it is a mix between init.el and the nix configuration. Nix allows me to install emacs packages as part of the configuration which is most of the following file. @@ -2929,9 +3575,9 @@ Comments describe the emacs package and what it does.

-
-

19.1. Early Initialization

-
+
+

20.1. Early Initialization

+

There are some emacs settings that can be configured before the gui shows up. And some of them help increase performance and let the gui show up that much faster. @@ -3035,9 +3681,9 @@ These are listed here.

-
-

19.2. Initialization

-
+
+

20.2. Initialization

+

Now starts the main emacs configuration.

@@ -3169,7 +3815,7 @@ Now starts the main emacs configuration. (use-package nerd-icons :custom ;; disable bright icon colors - (nerd-icons-color-icons nil)) + (nerd-icons-color-icons nil))hells.nix (use-package doom-modeline :custom @@ -3448,23 +4094,23 @@ ting a file within such a
-
-

20. Machines

-
+
+

21. Machines

+

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

-
-

20.1. Traveldroid

-
+
+

21.1. Traveldroid

+

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

-
-

20.1.1. System Level

-
+
+

21.1.1. System Level

+

Nothing specific for the laptop.

@@ -3481,9 +4127,9 @@ Nothing specific for the laptop.
-
-

20.1.2. Hardware

-
+
+

21.1.2. Hardware

+

This is the most different. Mostly taken from hardware-configuration.nix setup at first install.

@@ -3531,9 +4177,9 @@ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistr
-
-

20.1.3. Home

-
+
+

21.1.3. Home

+

This is mostly about configuring the monitor. And laptop specific utilities.

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

21. README Utils

-
+
+

22. README Utils

+
-
-

21.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")
@@ -3587,7 +4233,7 @@ This script adds a DO NOT MODIFY header to all the generated nix fi
 

Author: henrov

-

Created: 2026-02-22 zo 23:09

+

Created: 2026-02-26 do 10:43

Validate

diff --git a/henrovnix_ok/README.org b/henrovnix_ok/README.org index 1a3d1858d..aae3cb42e 100755 --- a/henrovnix_ok/README.org +++ b/henrovnix_ok/README.org @@ -2203,8 +2203,8 @@ in # 2) Your repo config (may also include theme; harmless if duplicated) ${repoKittyConfText} # 3) Force transparency last (wins) - background_opacity 0.60 - dynamic_background_opacity yes + #background_opacity 0.60 + #dynamic_background_opacity yes ''; }; } diff --git a/henrovnix_ok/assets/conf/dev/terminal/kitty.conf b/henrovnix_ok/assets/conf/dev/terminal/kitty.conf index 3d52b31ca..a5138dd6d 100644 --- a/henrovnix_ok/assets/conf/dev/terminal/kitty.conf +++ b/henrovnix_ok/assets/conf/dev/terminal/kitty.conf @@ -17,10 +17,10 @@ # are written as ONE single line. ############################################### -include Catppuccin-Mocha.conf +include themes/Catppuccin-Mocha.conf # Force transparency (comes from the conf file, as you want) -background_opacity 0.60 +background_opacity 0.80 dynamic_background_opacity yes # the rest… diff --git a/henrovnix_ok/home/dev/kitty.nix b/henrovnix_ok/home/dev/kitty.nix index 3d0d99c15..3f2779907 100644 --- a/henrovnix_ok/home/dev/kitty.nix +++ b/henrovnix_ok/home/dev/kitty.nix @@ -22,8 +22,8 @@ in # 2) Your repo config (may also include theme; harmless if duplicated) ${repoKittyConfText} # 3) Force transparency last (wins) - background_opacity 0.60 - dynamic_background_opacity yes + #background_opacity 0.60 + #dynamic_background_opacity yes ''; }; }