From 99b2f7ae8982a7e7d1cb35497b59404c969b61cb Mon Sep 17 00:00:00 2001 From: Henro Veijer Date: Mon, 23 Feb 2026 19:52:10 +0100 Subject: [PATCH] STarting creating documentation, chapters 1-3 are do --- henrovnix/README.html | 883 +++++++++++------- henrovnix/README.org | 499 ++++++---- henrovnix/assets/conf/apps/flatpaks.conf | 8 +- henrovnix/assets/conf/apps/packages.conf | 8 +- henrovnix/assets/conf/core/lightdm.conf | 8 +- .../assets/conf/desktop/hypr/bindings.conf | 8 +- .../assets/conf/desktop/hypr/hyprland.conf | 8 +- .../conf/desktop/wallpaper/wallpaper.conf | 2 +- .../assets/conf/dev/terminal/alacritty.toml | 8 +- .../assets/conf/dev/terminal/aliases.conf | 10 +- henrovnix/assets/conf/dev/terminal/kitty.conf | 8 +- henrovnix/assets/conf/dev/terminal/zsh.conf | 8 +- .../assets/conf/security/ssh/ssh-client.conf | 8 +- henrovnix/configuration/default.nix | 2 +- henrovnix/flake.nix | 2 +- henrovnix/home/dev/emacs/early-init.el | 2 +- henrovnix/machines/machine1/configuration.nix | 7 + .../machine1/hardware-configuration.nix | 38 + henrovnix/machines/machine1/home.nix | 15 + henrovnix/no block | 12 + henrovnix/user.nix | 2 +- 21 files changed, 1000 insertions(+), 546 deletions(-) create mode 100755 henrovnix/machines/machine1/configuration.nix create mode 100755 henrovnix/machines/machine1/hardware-configuration.nix create mode 100644 henrovnix/machines/machine1/home.nix diff --git a/henrovnix/README.html b/henrovnix/README.html index b9e399c1b..48af7c3c0 100644 --- a/henrovnix/README.html +++ b/henrovnix/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,131 @@

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.

@@ -374,17 +387,184 @@ 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.

-
-
-

2. Pre-requisites to edit this setup

-
-
    -
  • a NIXOS system installed (can be bare-bones)
  • -
  • an internet connection
  • -
+
+

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

-To set up a connection from cli: +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. +

+
+
+
+

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

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

+
+
+
+

1.4. 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. Setting up your system manually

+
+
+
+

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

2.2. First-time setup (manually)

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

    # Check if NetworkManager service is running
    @@ -402,12 +582,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

+
+

3. 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 +655,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 +681,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.

+
+

4. flake.lock for pinning input versions.

-
-

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

+
+

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

+
+

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

+
+

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

+
+

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

+
+

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

+
+

8.1. Nix & NixOS

-
-

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

+
+

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

+
+

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

+
+

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

+
+

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

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

+
+

10.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,20 +802,14 @@ 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
 │   │   ├── install_flatpaks.nix
@@ -589,16 +818,16 @@ The tree below shows the full repository layout, with the standardized internal
 │   │   ├── 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
@@ -612,44 +841,50 @@ The tree below shows the full repository layout, with the standardized internal
 │   ├── default.nix
 │   ├── desktop
 │   │   ├── hyprexpo.nix
+│   │   ├── hypridle.nix
 │   │   ├── hyprland.nix
 │   │   ├── hyprlock.nix
-│   │   ├── hypridle.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

+
+
+

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

+<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,8 +910,8 @@ This prevents unwanted and surprise updates when rebuilding without changing the

-
-

11. TLDR App List

+
+

11. TLDR App List

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

12. Configuration Variables

+
+

12. Configuration Variables

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

{
   system = "x86_64-linux";
-  username = "henrov";
+  username = "<defaultUser>";
   stateVersion = "25.11";
   locale = "nl_NL.UTF-8";
 }
@@ -773,8 +1008,8 @@ The values are imported at the beginning and are available to almost all the fun
 
-
-

13. Flake Inputs

+
+

13. Flake Inputs

The inputs for my system's configuration are very simple @@ -815,8 +1050,8 @@ Sometimes pinned to a specific commit because unstable broke something and the f

-
-

14. Flake Output

+
+

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

-
outputs = inputs@{
+
outputs = inputs@{
   nixpkgs,
   home-manager,
   emacs-overlay,
@@ -835,7 +1070,7 @@ We also add a devshell that makes editing this repository easier in emacs.
     user = import ./user.nix;
     lib = nixpkgs.lib;
     machines = [
-      "traveldroid"
+      "machine1"
     ];
     pkgs = import nixpkgs {
       inherit (user) system;
@@ -885,17 +1120,17 @@ Overlays are a special nix way to override existing packages within a repository
 

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

    -
    ./machines/${machine}/configuration.nix
    +
    ./machines/${machine}/configuration.nix
     
  • @@ -905,7 +1140,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,8 +1183,8 @@ Finally I pull in the machine specific home configuration. Along with the overri
     
    -
    -

    14.1. Envrc + Direnv

    +
    +

    14.1. Envrc + Direnv

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

    -
    -

    15. Machines

    +
    +

    15. Machines

    The individual machines subdirectory is configured as follows :-

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

    -
    -

    15.0.1. Other Utils

    +
    +

    15.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,8 +1252,8 @@ To update the computer, I just need to update the flake.lock file t

    -
    -

    16. Hardware

    +
    +

    16. Hardware

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

    -
    -

    17. Configuration

    +
    +

    17. 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 :- @@ -1096,16 +1331,16 @@ This section describes the main system configuration for the computers that I ha

    -
    -

    17.1. Apps section

    +
    +

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

    +
    +

    17.2. install_packages.nix

    { config, lib, pkgs, flakeRoot, inputs, ... }:
    @@ -1165,8 +1400,8 @@ in
     
    -
    -

    17.3. installflatpaks.nix

    +
    +

    17.3. install_flatpaks.nix

    { config, pkgs, lib, flakeRoot, ... }:
    @@ -1277,8 +1512,8 @@ in
     
    -
    -

    17.4. Nix Settings

    +
    +

    17.4. Nix Settings

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

    -
    -

    17.5. Boot

    +
    +

    17.5. Boot

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

    -
    -

    17.6. Login

    +
    +

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

    -
    -

    17.7. Tuigreet

    +
    +

    17.7. Tuigreet

    Doesn't match the rest of the aesthetic of the system (with hyprland), but I like its simplicity. @@ -1400,8 +1635,8 @@ Doesn't match the rest of the aesthetic of the system (with hyprland), but I lik

    -
    -

    17.8. LightDM

    +
    +

    17.8. LightDM

    { config, pkgs, lib, ... }:
    @@ -1548,8 +1783,8 @@ in
     
    -
    -

    17.9. Terminal (default system)

    +
    +

    17.9. Terminal (default system)

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

    -
    -

    17.10. Files

    +
    +

    17.10. Files

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

    -
    -

    17.11. Locale

    +
    +

    17.11. Locale

    I live in Netherlands and would like all my locale and timezone settings to match. Except my default locale. @@ -1645,8 +1880,8 @@ in

    -
    -

    17.12. Networking

    +
    +

    17.12. Networking

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

    -
    -

    17.13. Hyprland

    +
    +

    17.13. Hyprland

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

    -
    -

    17.14. Services

    +
    +

    17.14. Services

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

    -
    -

    17.15. Audio

    +
    +

    17.15. Audio

    { config, pkgs, lib, ... }:
    @@ -1862,11 +2097,11 @@ These are some of the services that I enable at the system level. Explanation in
     
    -
    -

    17.16. Miscellaneous Packages and Programs

    +
    +

    17.16. Miscellaneous Packages and Programs

    -
    environment.systemPackages = with pkgs; [
    +
    environment.systemPackages = with pkgs; [
       wget       # fetch utility
       curl       # more fetch utility
       binutils   # executable utilities, like ld
    @@ -1894,7 +2129,7 @@ programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
     
    -
    programs = {
    +
    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
    @@ -1910,14 +2145,14 @@ programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
     
    -
    -

    17.17. Fonts

    +
    +

    17.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,16 +2160,16 @@ Nothing much to see here. I love 
    -

    17.18. User Config

    +
    +

    17.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";
    +  description = "<defaultUser>";
       extraGroups = [
         "networkmanager" # allow editing network connections
         "wheel"          # can do sudo
    @@ -1947,8 +2182,8 @@ This creates the user profile that I login with. Initially created during instal
     
    -
    -

    18. Home

    +
    +

    18. Home

    I use home-manager to manage my user level dotfiles and configurations. @@ -1956,8 +2191,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.

    -
    -

    18.1. default.nix

    +
    +

    18.1. default.nix

    This module will import all necessities. @@ -1993,8 +2228,8 @@ This module will import all necessities.

    -
    -

    18.2. Wallpaper

    +
    +

    18.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. @@ -2048,11 +2283,11 @@ in

    -
    -

    18.3. Waybar

    +
    +

    18.3. Waybar

    -
    +

    waybar.png

    @@ -2089,8 +2324,8 @@ in
    -
    -
    -

    18.5. Idle Screen

    +
    +

    18.5. Idle Screen

    <henro: needs instruction> @@ -2131,8 +2366,8 @@ in

    -
    -

    18.6. Hyprshell

    +
    +

    18.6. Hyprshell

    For nice task-starting and -switching @@ -2172,8 +2407,8 @@ in

    -
    -

    18.7. Hyprland

    +
    +

    18.7. Hyprland

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

    -
    -

    18.8. Walker

    +
    +

    18.8. Walker

    This is how I launch applications. It is bound to Win+Space in the ./asstes/conf/desktop/hypr/bindings.conf. @@ -2325,8 +2560,8 @@ in

    -
    -

    18.9. Theme

    +
    +

    18.9. Theme

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

    -
    -

    18.10. Default-apps

    +
    +

    18.10. Default-apps

    This is where you can set defaults @@ -2379,8 +2614,8 @@ This is where you can set defaults

    -
    -

    18.11. Hyperexpo

    +
    +

    18.11. Hyperexpo

    hyprexpo gets installed and configured @@ -2420,8 +2655,8 @@ hyprexpo gets installed and configured

    -
    -

    18.12. Alacritty

    +
    +

    18.12. Alacritty

    Alacritty gets installed and configured @@ -2443,8 +2678,8 @@ in

    -
    -

    18.13. Dev Tools

    +
    +

    18.13. Dev Tools

    All the miscellaneous dev tools on this computer. @@ -2503,8 +2738,8 @@ All the miscellaneous dev tools on this computer.

    -
    -

    18.14. Kitty

    +
    +

    18.14. Kitty

    Kitty gets installed and configured @@ -2528,8 +2763,8 @@ in

    -
    -

    18.15. Shells

    +
    +

    18.15. Shells

    The aliases mentioned in ./assets/conf/dev/terminal/shells.conf will be added to enabled shells @@ -2752,8 +2987,8 @@ EOF

    -
    -

    18.16. Zsh

    +
    +

    18.16. Zsh

    Zsh gets installed and configured @@ -2796,8 +3031,8 @@ in

    -
    -

    18.17. Starship

    +
    +

    18.17. Starship

    The configuration mentioned in ./assets/conf/dev/terminal/starship.toml will be added to enabled shells @@ -2829,18 +3064,18 @@ in

    -
    -

    18.18. Other Settings

    +
    +

    18.18. Other Settings

    Some repeated info from the configuration.

    -
    -

    18.18.1. Home User

    +
    +

    18.18.1. Home User

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

    19. Emacs

    +
    +

    19. Emacs

    I practically live inside emacs. The configuration for it is a mix between init.el and the nix configuration. @@ -2929,8 +3164,8 @@ Comments describe the emacs package and what it does.

    -
    -

    19.1. Early Initialization

    +
    +

    19.1. Early Initialization

    There are some emacs settings that can be configured before the gui shows up. @@ -2958,7 +3193,7 @@ These are listed here. (tool-bar-lines . 0) ; No tool bar (undecorated . t) ; Remove extraneous X decorations (vertical-scroll-bars . nil)) ; No vertical scroll-bars - user-full-name "Henrov henrov" ; ME! + user-full-name "Henrov <defaultUser>" ; ME! ;; memory configuration ;; Higher garbage collection threshold, prevents frequent gc locks, reset later gc-cons-threshold most-positive-fixnum @@ -3035,8 +3270,8 @@ These are listed here.

    -
    -

    19.2. Initialization

    +
    +

    19.2. Initialization

    Now starts the main emacs configuration. @@ -3448,22 +3683,22 @@ ting a file within such a

    -
    -

    20. Machines

    +
    +

    20. Machines

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

    -
    -

    20.1. Traveldroid

    +
    +

    20.1. Traveldroid

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

    -
    -

    20.1.1. System Level

    +
    +

    20.1.1. System Level

    Nothing specific for the laptop. @@ -3481,8 +3716,8 @@ Nothing specific for the laptop.

    -
    -

    20.1.2. Hardware

    +
    +

    20.1.2. Hardware

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

    -
    -

    20.1.3. Home

    +
    +

    20.1.3. Home

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

    -
    -

    21. README Utils

    +
    +

    21. README Utils

    -
    -

    21.0.1. Headers

    +
    +

    21.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 +3822,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-23 ma 19:51

    Validate

    diff --git a/henrovnix/README.org b/henrovnix/README.org index 4af0de8c5..7f28a1fb7 100755 --- a/henrovnix/README.org +++ b/henrovnix/README.org @@ -1,6 +1,5 @@ gf#+OPTIONS: toc:nil broken-links:t #+PROPERTY: header-args :noweb yes :results silent :mkdirp yes - #+HTML:
    #+HTML:
    #+HTML: NixOS @@ -30,7 +29,10 @@ gf#+OPTIONS: toc:nil broken-links:t * Introduction #+HTML:
    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. +#+HTML_HEAD: + + +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. @@ -41,36 +43,194 @@ 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. +** What do you get? -* Pre-requisites to edit this setup -- a NIXOS system installed (can be bare-bones) -- an internet connection +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. -To set up a connection from cli: -#+begin_src bash :tangle no block -# Check if NetworkManager service is running -systemctl status NetworkManager -# If not running, start it temporarily -sudo systemctl start NetworkManager -# Enable Wi-Fi radio (in case it is disabled) -nmcli radio wifi on -# List available Wi-Fi networks -nmcli device wifi list -# Connect to a Wi-Fi network (replace SSID and PASSWORD) -nmcli device wifi connect "SSID_NAME" password "YOUR_PASSWORD" -# Verify that the connection is active -nmcli connection show --active -# Optional: show device status -nmcli device status +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. + +** Base packages +The baseline package set is defined explicitly within the repository to ensure reproducibility: + +#+begin_src bash :tangle no +- 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 +- 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 #+end_src -* machine1 — template machine +** Additional packages +Additional software can be installed by extending the dedicated configuration files that define system and Flatpak packages: + +#+begin_src bash :tangle no +├── assets +│   ├── conf +│   │   ├── apps +│   │   │   ├── flatpaks.conf +│   │   │   └── packages.conf +#+end_src + +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: +#+begin_src bash :tangle no +flatpak search +#+end_src + +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. + +** 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. + + +* Setting up your system manually +** Pre-requisites to build this setup +#+begin_src bash :tangle no block +- a NIXOS system installed with a user with sudo rights. +- an internet connection +- the folder henrovnix as you find it here +#+end_src + +** First-time setup (manually) + +1. Copy the folder *henrovnix* to your machine +2. First setup an internet connection + #+begin_src bash :tangle no block + # Check if NetworkManager service is running + systemctl status NetworkManager + # If not running, start it temporarily + sudo systemctl start NetworkManager + # Enable Wi-Fi radio (in case it is disabled) + nmcli radio wifi on + # List available Wi-Fi networks + nmcli device wifi list + # Connect to a Wi-Fi network (replace SSID and PASSWORD) + nmcli device wifi connect "SSID_NAME" password "YOUR_PASSWORD" + # Verify that the connection is active + nmcli connection show --active + # Optional: show device status + nmcli device status + #+end_src +3. Replace ** in all files with =your_user= + #+begin_src bash :tangle no block + find ~/Repos/nixos/henrovnix \ + -type d -name ".*" -prune -o \ + -type f -print0 \ + | xargs -0 sed -i 's/==/your_user/g' + #+end_src +4. Replace *machine1* in all files with =your_hostname= + #+begin_src bash :tangle no block + find ~/Repos/nixos/henrovnix \ + -type d -name ".*" -prune -o \ + -type f -print0 \ + | xargs -0 sed -i 's/machine1/your_hostname/g' + #+end_src +5. Rename the folder ./machines/machine1 to your hostname + #+begin_src bash :tangle no block + mv ./machines/machine1 ./machines/your_hostname + #+end_src +6. Create a hardware-configuration.nix and copy it into the folder =./machines/your_hostname= overwriting any existing file + #+begin_src bash :tangle no block + nixos-generate-config + #+end_src +7. Run the build command to set up the system for the first time + #+begin_src bash :tangle no block + sudo nixos-rebuild switch --flake .#=your_hostname= + #+end_src + +* 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: #+begin_src bash :tangle no emacs README.org --batch -f org-babel-tangle #+end_src +To generate this documentation: +#+begin_src bash :tangle no +emacs --batch -l org -l ox-html README.org -f org-html-export-to-html --kill +#+end_src + Test the build while being able to reboot to previous version #+begin_src bash :tangle no sudo nixos-rebuild test --flake .#machine1 @@ -81,24 +241,12 @@ sudo nixos-rebuild switch --flake .#machine1 #+end_src Build and run in a virtual machine (qemu must be installed) #+begin_src bash :tangle no -sudo nixos-rebuild build-vm --flake ~/nixos-henrov#machine1 +sudo nixos-rebuild build-vm --flake .#machine1 # running the vm: ./result/bin/run-nixos-vm #+end_src -un this VM with result/ - -#+begin_src bash :tangle no -emacs README.org --batch -f org-babel-tangle -#+end_src - -Once the Nix files are generated, deploy using: - -#+begin_src bash :tangle no -nixos-rebuild switch --flake .# -#+end_src - -Other files in this repo include: +Other important files: * ~flake.lock~ for pinning input versions. * ~assets/*~ for non-Nix-managed artifacts such as images and wallpapers. @@ -119,143 +267,142 @@ Generated outputs should not be edited directly. A CI workflow can tangle and co * [[[https://nixos.org/][NixOS](https://nixos.org/][NixOS)]] evaluates Nix expressions into a complete system configuration that can be applied by rebuild operations. ** Repository layout and folder conventions -#+HTML:

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

    -#+HTML:

    -#+HTML: 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. -#+HTML:

    +

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

    ** Shared domain folders -#+HTML:
      -#+HTML:
    • core/ – base settings and common infrastructure
    • -#+HTML:
    • desktop/ – graphical session, compositor, UI components, and integration
    • -#+HTML:
    • apps/ – application enablement and application-level configuration
    • -#+HTML:
    • services/ – background services and daemons
    • -#+HTML:
    • security/ – secrets handling and security-related configuration
    • -#+HTML:
    • dev/ – developer tooling and editor configuration
    • -#+HTML:
    +
      +
    • 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
    • +
    ** Full tree (including unchanged parts) -#+HTML:

    -#+HTML: The tree below shows the full repository layout, with the standardized internal structure applied only inside -#+HTML: configuration/, home/, and assets/conf/. -#+HTML:

    -#+HTML:
    .
    -#+HTML: ├── assets
    -#+HTML: │   ├── background.png
    -#+HTML: │   ├── conf
    -#+HTML: │   │   ├── apps
    -#+HTML: │   │   │   ├── flatpaks.conf
    -#+HTML: │   │   │   └── packages.conf
    -#+HTML: │   │   ├── core
    -#+HTML: │   │   │   └── lightdm.conf
    -#+HTML: │   │   ├── desktop
    -#+HTML: │   │   │   ├── hypr
    -#+HTML: │   │   │   │   ├── bindings.conf
    -#+HTML: │   │   │   │   └── hyprland.conf
    -#+HTML: │   │   │   ├── wallpaper
    -#+HTML: │   │   │   │   └── wallpaper.conf
    -#+HTML: │   │   │   └── waybar
    -#+HTML: │   │   │       ├── config.jsonc
    -#+HTML: │   │   │       └── style.css
    -#+HTML: │   │   ├── dev
    -#+HTML: │   │   │   ├── hyprshell
    -#+HTML: │   │   │   │   ├── config.ron.bak
    -#+HTML: │   │   │   │   └── styles.css.bak
    -#+HTML: │   │   │   └── terminal
    -#+HTML: │   │   │       ├── alacritty.toml
    -#+HTML: │   │   │       ├── aliases.conf
    -#+HTML: │   │   │       ├── enabled_shells.conf
    -#+HTML: │   │   │       ├── kitty.conf
    -#+HTML: │   │   │       ├── starship.toml
    -#+HTML: │   │   │       └── zsh.conf
    -#+HTML: │   │   ├── security
    -#+HTML: │   │   │   └── ssh
    -#+HTML: │   │   │       └── ssh-client.conf
    -#+HTML: │   │   └── services
    -#+HTML: │   ├── lock.png
    -#+HTML: │   ├── scripts
    -#+HTML: │   └── wallpapers
    -#+HTML: │       ├── gif
    -#+HTML: │       ├── pictures
    -#+HTML: │       │   ├── background.png
    -#+HTML: │       │   ├── background1.png
    -#+HTML: │       │   ├── background2.png
    -#+HTML: │       │   ├── background3.png
    -#+HTML: │       │   ├── background4.png
    -#+HTML: │       │   └── background5.png
    -#+HTML: │       └── videos
    -#+HTML: │           ├── dark_water_large.mp4
    -#+HTML: │           └── white_blobs_small.mp4
    -#+HTML: ├── configuration
    -#+HTML: │   ├── apps
    -#+HTML: │   │   ├── install_flatpaks.nix
    -#+HTML: │   │   └── install_packages.nix
    -#+HTML: │   ├── core
    -#+HTML: │   │   ├── boot.nix
    -#+HTML: │   │   ├── files.nix
    -#+HTML: │   │   ├── locale.nix
    -#+HTML: │   │   ├── networking.nix
    -#+HTML: │   │   └── nix-settings.nix
    -#+HTML: │   ├── default.nix
    -#+HTML: │   ├── desktop
    -#+HTML: │   │   ├── audio.nix
    -#+HTML: │   │   ├── hyprland.nix
    -#+HTML: │   │   └── login-tuigreeter.nix
    -#+HTML: │   ├── dev
    -#+HTML: │   │   └── terminal.nix
    -#+HTML: │   ├── security
    -#+HTML: │   └── services
    -#+HTML: │       └── services.nix
    -#+HTML: ├── flake.lock
    -#+HTML: ├── flake.nix
    -#+HTML: ├── hardware
    -#+HTML: │   └── hardware.nix
    -#+HTML: ├── home
    -#+HTML: │   ├── apps
    -#+HTML: │   │   ├── defaults-apps.nix
    -#+HTML: │   │   └── theme.nix
    -#+HTML: │   ├── default.nix
    -#+HTML: │   ├── desktop
    -#+HTML: │   │   ├── hyprexpo.nix
    -#+HTML: │   │   ├── hyprland.nix
    -#+HTML: │   │   ├── hyprlock.nix
    -#+HTML: │   │   ├── hypridle.nix
    -#+HTML: │   │   ├── hyprshell.nix
    -#+HTML: │   │   ├── walker.nix
    -#+HTML: │   │   ├── wallpaper.nix
    -#+HTML: │   │   └── waybar.nix
    -#+HTML: │   ├── dev
    -#+HTML: │   │   ├── alacritty.nix
    -#+HTML: │   │   ├── dev.nix
    -#+HTML: │   │   ├── emacs
    -#+HTML: │   │   │   ├── default.nix
    -#+HTML: │   │   │   ├── early-init.el
    -#+HTML: │   │   │   └── init.el
    -#+HTML: │   │   ├── kitty.nix
    -#+HTML: │   │   ├── shells.nix
    -#+HTML: │   │   └── starship.nix
    -#+HTML: │   └── zsh.nix
    -#+HTML: ├── LICENSE
    -#+HTML: ├── machines
    -#+HTML: │   └── traveldroid
    -#+HTML: │       ├── configuration.nix
    -#+HTML: │       ├── hardware-configuration.nix
    -#+HTML: │       └── home.nix
    -#+HTML: ├── README.org
    -#+HTML: ├── secrets
    -#+HTML: │   └── secrets.yaml
    -#+HTML: └── user.nix
    -#+HTML: 
    + +The tree below shows the full repository layout, with the standardized internal structure applied only inside +#+begin_src bash :tangle no +├── assets +│   ├── conf +│   │   ├── apps +│   │   │   ├── flatpaks.conf +│   │   │   └── packages.conf +│   │   ├── core +│   │   │   ├── lightdm.conf +│   │   │   └── lightdm-gtk-greeter.conf +│   │   ├── desktop +│   │   │   ├── hypr +│   │   │   │   ├── bindings.conf +│   │   │   │   ├── hypridle.conf +│   │   │   │   ├── hyprland.conf +│   │   │   │   ├── hyprlock.conf +│   │   │   │   ├── hyprshell +│   │   │   │   └── scripts +│   │   │   ├── wallpaper +│   │   │   │   ├── gif +│   │   │   │   ├── pictures +│   │   │   │   ├── videos +│   │   │   │   └── wallpaper.conf +│   │   │   └── waybar +│   │   │   ├── config.jsonc +│   │   │   └── style.css +│   │   ├── dev +│   │   │   └── terminal +│   │   │   ├── alacritty.toml +│   │   │   ├── aliases.conf +│   │   │   ├── enabled_shells.conf +│   │   │   ├── kitty.conf +│   │   │   ├── starship.toml +│   │   │   └── zsh.conf +│   │   ├── security +│   │   │   └── ssh +│   │   │   └── ssh-client.conf +│   │   └── services +│   ├── cursors +│   │   └── Bibata_Cursor-main +│   ├── icons +│   │   └── papirus-icon-theme-master +│   ├── lock.png +│   ├── scripts +│   └── themes +│   └── Catppuccin-Mocha-Standard-Blue-Dark +├── configuration +│   ├── apps +│   │   ├── 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 +│   ├── dev +│   │   └── terminal.nix +│   └── services +│   └── services.nix +├── flake.lock +├── flake.nix +├── hardware +│   └── hardware.nix +├── home +│   ├── apps +│   │   ├── defaults-apps.nix +│   │   └── theme.nix +│   ├── default.nix +│   ├── desktop +│   │   ├── hyprexpo.nix +│   │   ├── hypridle.nix +│   │   ├── hyprland.nix +│   │   ├── hyprlock.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 +├── LICENSE +├── machines +│   ├── machine1 +│   │   ├── configuration.nix +│   │   ├── hardware-configuration.nix +│   │   └── home.nix +│   └── traveldroid +│   ├── configuration.nix +│   ├── hardware-configuration.nix +│   └── home.nix +├── README.html +├── README.org +└── user.nix +#+end_src ** Notes -#+HTML:
      -#+HTML:
    • Only the internal layout of configuration/, home/, and assets/conf/ is standardized; all other paths remain as currently organized.
    • -#+HTML:
    • The services/ and security/ folders are included for completeness even if initially empty in some layers.
    • -#+HTML:
    +
      +
    • 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.
    • +
    ~YourNixCode(Input) -> System Configuration~ @@ -294,7 +441,7 @@ The values are imported at the beginning and are available to almost all the fun #+begin_src nix :tangle user.nix { system = "x86_64-linux"; - username = "henrov"; + username = ""; stateVersion = "25.11"; locale = "nl_NL.UTF-8"; } @@ -351,7 +498,7 @@ We also add a devshell that makes editing this repository easier in emacs. user = import ./user.nix; lib = nixpkgs.lib; machines = [ - "traveldroid" + "machine1" ]; pkgs = import nixpkgs { inherit (user) system; @@ -401,7 +548,7 @@ Lets look at the individual modules }) #+end_src -2. Then the machine specific configuration, in this case, just "traveldroid". +2. Then the machine specific configuration, in this case, just "machine1". #+name: flake-config-module #+begin_src nix ./machines/${machine}/configuration.nix @@ -557,7 +704,7 @@ This section describes the main system configuration for the computers that I ha ** 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 -** install_packages.nix +** =install_packages.nix= #+begin_src nix :tangle configuration/apps/install_packages.nix :noweb tangle :mkdirp yes { config, lib, pkgs, flakeRoot, inputs, ... }: @@ -614,7 +761,7 @@ in } #+end_src -** install_flatpaks.nix +** =install_flatpaks.nix= #+begin_src nix :tangle configuration/apps/install_flatpaks.nix :noweb tangle :mkdirp yes { config, pkgs, lib, flakeRoot, ... }: @@ -1302,7 +1449,7 @@ This creates the user profile that I login with. Initially created during instal #+begin_src nix users.users.${user.username} = { isNormalUser = true; - description = "henrov"; + description = ""; extraGroups = [ "networkmanager" # allow editing network connections "wheel" # can do sudo @@ -2196,7 +2343,7 @@ These are listed here. (tool-bar-lines . 0) ; No tool bar (undecorated . t) ; Remove extraneous X decorations (vertical-scroll-bars . nil)) ; No vertical scroll-bars - user-full-name "Henrov henrov" ; ME! + user-full-name "Henrov " ; ME! ;; memory configuration ;; Higher garbage collection threshold, prevents frequent gc locks, reset later gc-cons-threshold most-positive-fixnum @@ -2684,7 +2831,7 @@ The configuration for the laptop does not change much. Most changes are because *** System Level Nothing specific for the laptop. -#+begin_src nix :tangle machines/traveldroid/configuration.nix :noweb tangle :mkdirp yes +#+begin_src nix :tangle machines/machine1/configuration.nix :noweb tangle :mkdirp yes { user, ... } : { imports = [ @@ -2697,7 +2844,7 @@ Nothing specific for the laptop. *** Hardware This is the most different. Mostly taken from hardware-configuration.nix setup at first install. -#+begin_src nix :tangle machines/traveldroid/hardware-configuration.nix :noweb tangle :mkdirp yes +#+begin_src nix :tangle machines/machine1/hardware-configuration.nix :noweb tangle :mkdirp yes { hostname, pkgs, @@ -2740,7 +2887,7 @@ This is the most different. Mostly taken from hardware-configuration.nix setup a *** Home This is mostly about configuring the monitor. And laptop specific utilities. -#+begin_src nix :tangle machines/traveldroid/home.nix :noweb tangle :mkdirp yes +#+begin_src nix :tangle machines/machine1/home.nix :noweb tangle :mkdirp yes { pkgs, ... }: { imports = [ diff --git a/henrovnix/assets/conf/apps/flatpaks.conf b/henrovnix/assets/conf/apps/flatpaks.conf index 627a8daf5..570c02697 100644 --- a/henrovnix/assets/conf/apps/flatpaks.conf +++ b/henrovnix/assets/conf/apps/flatpaks.conf @@ -1,19 +1,19 @@ ############################################## # These files are just for reference. # If you want to change anything, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # # NOTE: -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. ############################################## #app.zen_browser.zen diff --git a/henrovnix/assets/conf/apps/packages.conf b/henrovnix/assets/conf/apps/packages.conf index 73f758766..65b7743d5 100644 --- a/henrovnix/assets/conf/apps/packages.conf +++ b/henrovnix/assets/conf/apps/packages.conf @@ -1,18 +1,18 @@ ############################################## # These files are just for reference. # If you want to change anything, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. # #IMPORTANT: diff --git a/henrovnix/assets/conf/core/lightdm.conf b/henrovnix/assets/conf/core/lightdm.conf index 159ccc4cc..fa284c01b 100644 --- a/henrovnix/assets/conf/core/lightdm.conf +++ b/henrovnix/assets/conf/core/lightdm.conf @@ -1,19 +1,19 @@ ############################################## # These files are just for reference. # If you want to change anything, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # # NOTE: -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. ############################################## # Minimal Hyprland config for greetd diff --git a/henrovnix/assets/conf/desktop/hypr/bindings.conf b/henrovnix/assets/conf/desktop/hypr/bindings.conf index baf18394e..e13931a3e 100644 --- a/henrovnix/assets/conf/desktop/hypr/bindings.conf +++ b/henrovnix/assets/conf/desktop/hypr/bindings.conf @@ -1,19 +1,19 @@ ############################################## # These files are just for reference. # If you want to change anything, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. ############################################### diff --git a/henrovnix/assets/conf/desktop/hypr/hyprland.conf b/henrovnix/assets/conf/desktop/hypr/hyprland.conf index bce0cfb61..ebdfff954 100644 --- a/henrovnix/assets/conf/desktop/hypr/hyprland.conf +++ b/henrovnix/assets/conf/desktop/hypr/hyprland.conf @@ -1,20 +1,20 @@ ############################################## # These files are just for reference. # If you want to change anything definitive, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # # NOTE: -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. ############################################### diff --git a/henrovnix/assets/conf/desktop/wallpaper/wallpaper.conf b/henrovnix/assets/conf/desktop/wallpaper/wallpaper.conf index e99224254..ca9095119 100644 --- a/henrovnix/assets/conf/desktop/wallpaper/wallpaper.conf +++ b/henrovnix/assets/conf/desktop/wallpaper/wallpaper.conf @@ -2,7 +2,7 @@ # Wallpaper config (wpaperd, TOML) # # Source-of-truth in repo: -# ~/henrovnix/assets/conf/desktop/wallpaper/wallpaper.conf +# ~/nix/assets/conf/desktop/wallpaper/wallpaper.conf # # Runtime override (user edits this): # ~/conf/desktop/wallpaper/wallpaper.conf diff --git a/henrovnix/assets/conf/dev/terminal/alacritty.toml b/henrovnix/assets/conf/dev/terminal/alacritty.toml index 24c4aafed..6ef480d31 100644 --- a/henrovnix/assets/conf/dev/terminal/alacritty.toml +++ b/henrovnix/assets/conf/dev/terminal/alacritty.toml @@ -1,19 +1,19 @@ ############################################## # These files are just for reference. # If you want to change anything, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # # NOTE: -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. ############################################## diff --git a/henrovnix/assets/conf/dev/terminal/aliases.conf b/henrovnix/assets/conf/dev/terminal/aliases.conf index 4ba74cd2f..7bac52906 100644 --- a/henrovnix/assets/conf/dev/terminal/aliases.conf +++ b/henrovnix/assets/conf/dev/terminal/aliases.conf @@ -21,11 +21,11 @@ alias gcp='git add . && git commit && git push' alias cd='z' alias nps='xdg-open https://search.nixos.org' -alias hvnx='cd ~/Repos/nixos/henrovnix' +alias hvnx='cd ~/Repos/nixos/nix' alias emt='hvnx && emacs README.org --batch -f org-babel-tangle && emacs -Q --batch README.org -f org-html-export-to-html' -alias nxs='hvnx && sudo nixos-rebuild switch --flake .#traveldroid' -alias nxt='hvnx && sudo nixos-rebuild test --flake .#traveldroid' -alias nxv='hvnx && sudo nixos-rebuild build-vm --flake .#traveldroid && "$(ls -1 ./result/bin/run-*-vm | head -n 1)"' +alias nxs='hvnx && sudo nixos-rebuild switch --flake .#machine1' +alias nxt='hvnx && sudo nixos-rebuild test --flake .#machine1' +alias nxv='hvnx && sudo nixos-rebuild build-vm --flake .#machine1 && "$(ls -1 ./result/bin/run-*-vm | head -n 1)"' alias rb='systemctl reboot' alias po='systemctl poweroff' @@ -35,7 +35,7 @@ alias fps='flatpak search' alias fpi='flatpak install' alias fpr='flatpak run' -alias nxc='ssh henrov@nextcloud.data-pro.nu' +alias nxc='ssh @nextcloud.data-pro.nu' alias vs='code' diff --git a/henrovnix/assets/conf/dev/terminal/kitty.conf b/henrovnix/assets/conf/dev/terminal/kitty.conf index dea7aa612..853b3fa14 100644 --- a/henrovnix/assets/conf/dev/terminal/kitty.conf +++ b/henrovnix/assets/conf/dev/terminal/kitty.conf @@ -1,19 +1,19 @@ ############################################## # These files are just for reference. # If you want to change anything, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # # NOTE: -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. ############################################### #~/nixos/files/conf/terminal/kitty.conf diff --git a/henrovnix/assets/conf/dev/terminal/zsh.conf b/henrovnix/assets/conf/dev/terminal/zsh.conf index 1b066fa71..093f3e0f1 100644 --- a/henrovnix/assets/conf/dev/terminal/zsh.conf +++ b/henrovnix/assets/conf/dev/terminal/zsh.conf @@ -1,19 +1,19 @@ ############################################## # These files are just for reference. # If you want to change anything, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # # NOTE: -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. ############################################### #~/nixos/files/conf/terminal/zsh.conf diff --git a/henrovnix/assets/conf/security/ssh/ssh-client.conf b/henrovnix/assets/conf/security/ssh/ssh-client.conf index 88659aa85..0f2e12221 100644 --- a/henrovnix/assets/conf/security/ssh/ssh-client.conf +++ b/henrovnix/assets/conf/security/ssh/ssh-client.conf @@ -1,19 +1,19 @@ ############################################## # These files are just for reference. # If you want to change anything, edit the source files in: -# ~/henrovnix/assets/conf +# ~/nix/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 .# +# cd ~/nix && 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 +# cd ~/nix && sudo nixos-rebuild switch --flake .# && systemctl reboot # # NOTE: -# Make sure the lines starting with: cd ~/henrovnix +# Make sure the lines starting with: cd ~/nix # are written as ONE single line. ############################################## Host * diff --git a/henrovnix/configuration/default.nix b/henrovnix/configuration/default.nix index 73bf6a9d1..e3e7d811b 100644 --- a/henrovnix/configuration/default.nix +++ b/henrovnix/configuration/default.nix @@ -43,7 +43,7 @@ users.users.${user.username} = { isNormalUser = true; - description = "henrov"; + description = ""; extraGroups = [ "networkmanager" # allow editing network connections "wheel" # can do sudo diff --git a/henrovnix/flake.nix b/henrovnix/flake.nix index 008ae4878..f924a2b15 100644 --- a/henrovnix/flake.nix +++ b/henrovnix/flake.nix @@ -30,7 +30,7 @@ user = import ./user.nix; lib = nixpkgs.lib; machines = [ - "traveldroid" + "machine1" ]; pkgs = import nixpkgs { inherit (user) system; diff --git a/henrovnix/home/dev/emacs/early-init.el b/henrovnix/home/dev/emacs/early-init.el index 348162dc6..74a1ddc83 100644 --- a/henrovnix/home/dev/emacs/early-init.el +++ b/henrovnix/home/dev/emacs/early-init.el @@ -17,7 +17,7 @@ (tool-bar-lines . 0) ; No tool bar (undecorated . t) ; Remove extraneous X decorations (vertical-scroll-bars . nil)) ; No vertical scroll-bars - user-full-name "Henrov henrov" ; ME! + user-full-name "Henrov " ; ME! ;; memory configuration ;; Higher garbage collection threshold, prevents frequent gc locks, reset later gc-cons-threshold most-positive-fixnum diff --git a/henrovnix/machines/machine1/configuration.nix b/henrovnix/machines/machine1/configuration.nix new file mode 100755 index 000000000..8d6f17709 --- /dev/null +++ b/henrovnix/machines/machine1/configuration.nix @@ -0,0 +1,7 @@ +{ user, ... } : { + imports = + [ + ./hardware-configuration.nix + ../../configuration + ]; +} diff --git a/henrovnix/machines/machine1/hardware-configuration.nix b/henrovnix/machines/machine1/hardware-configuration.nix new file mode 100755 index 000000000..da705c016 --- /dev/null +++ b/henrovnix/machines/machine1/hardware-configuration.nix @@ -0,0 +1,38 @@ +{ + hostname, + pkgs, + lib, + modulesPath, + user, + config, + ... +}: +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ../../hardware/hardware.nix + ]; + +boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_usb_sdmmc" ]; +boot.initrd.kernelModules = [ ]; +boot.kernelModules = [ "kvm-intel" ]; +boot.extraModulePackages = [ ]; + +fileSystems."/" = + { device = "/dev/disk/by-uuid/69433a14-fbaf-401b-af85-cd1bbf02b4e2"; + fsType = "ext4"; + }; + +fileSystems."/boot" = + { device = "/dev/disk/by-uuid/811D-0676"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + +swapDevices = + [ { device = "/dev/disk/by-uuid/b6c557c2-7682-460b-a5e7-8f6f2f429a3a"; } + ]; + +nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/henrovnix/machines/machine1/home.nix b/henrovnix/machines/machine1/home.nix new file mode 100644 index 000000000..b76d5b345 --- /dev/null +++ b/henrovnix/machines/machine1/home.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: +{ + imports = [ + ../../home + ]; + home.packages = with pkgs; [ + brightnessctl + ]; + wayland.windowManager.hyprland = { + extraConfig = '' + # Default portable monitor rule + monitor=DP-1,3840x1080@144,1920x0,1 + ''; + }; +} diff --git a/henrovnix/no block b/henrovnix/no block index a74739580..51f8b03d1 100644 --- a/henrovnix/no block +++ b/henrovnix/no block @@ -1,3 +1,15 @@ +find ~/Repos/nixos/henrovnix \ + -type d -name ".*" -prune -o \ + -type f -print0 \ +| xargs -0 sed -i 's//youruser/g' + +find ~/Repos/nixos/henrovnix \ + -type d -name ".*" -prune -o \ + -type f -print0 \ +| xargs -0 sed -i 's/machine1/yourhostname/g' + +nixos-generate-config + # Check if NetworkManager service is running systemctl status NetworkManager # If not running, start it temporarily diff --git a/henrovnix/user.nix b/henrovnix/user.nix index f1d9b95a9..e7c9d2b98 100644 --- a/henrovnix/user.nix +++ b/henrovnix/user.nix @@ -1,6 +1,6 @@ { system = "x86_64-linux"; - username = "henrov"; + username = ""; stateVersion = "25.11"; locale = "nl_NL.UTF-8"; }