diff --git a/henrovnix_ok/README.html b/henrovnix_ok/README.html index a63d5d625..23f2f804f 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">
- +flake.lock for pinning input versions.assets/* for non-Nix-managed artifacts such as images and wallpapers.
+flake.lock for pinning input versions.assets/* for non-Nix-managed artifacts such as images and wallpapers.

@@ -399,8 +398,8 @@ Customization is designed to occur primarily through modular .conf files, allowi Before proceeding with installation, it is strongly recommended to read this documentation carefully. Understanding the structure and design philosophy will help ensure a smooth setup and provide the necessary context for extending the system effectively.
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. @@ -409,8 +408,8 @@ Core packages are installed as part of the base configuration. Additional softwa
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. @@ -422,8 +421,8 @@ In short, this repository provides a coherent and extensible base, not a finishe
A literate system combines documentation and implementation into a single, coherent source. @@ -457,8 +456,8 @@ The README is not describing the system. The README is the system.
This literate system uses two different kinds of source blocks. @@ -470,7 +469,7 @@ These blocks exist purely for documentation purposes. They generate visible code blocks in the exported documentation, but they do not create files. Example:
-+#+begin_src bash :tangle no <tekst> #+end_src @@ -486,7 +485,7 @@ They are never tangled into the filesystem. These blocks generate real.nixfiles 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 @@ -514,8 +513,8 @@ This means:
There are exactly two commands that matter. @@ -563,8 +562,8 @@ Both come from the same source.
The directories: @@ -590,8 +589,8 @@ Generated directories are output, not source.
This workflow allows safe experimentation while preserving literate structure. @@ -632,15 +631,15 @@ If you are confident about your changes, you may skip steps 1–3 and edit READM
The repository separates generated system code from non-generated supporting files.
Contains non-generated assisting files such as: @@ -655,8 +654,8 @@ These files are safe to edit directly.
Contains non-generated assisting configuration files that influence several aspects of builds. @@ -664,8 +663,8 @@ Users are expected to modify these when needed.
Fully (re)generated by README.org. @@ -684,8 +683,8 @@ This directory is output.
Contains non-generated hardware.nix files detailing hardware-specific details. @@ -693,8 +692,8 @@ This directory will likely be deprecated in the future.
Fully (re)generated by README.org. @@ -710,8 +709,8 @@ Contains:
Contains one folder per machine you want to configure. @@ -729,8 +728,8 @@ These determine how shared modules apply to each system.
A literate NixOS system guarantees: @@ -749,8 +748,8 @@ You are maintaining a structured narrative that builds an operating system.
The baseline package set is defined explicitly within the repository to ensure reproducibility: @@ -824,8 +823,8 @@ The baseline package set is defined explicitly within the repository to ensure r
Additional software can be installed by extending the dedicated configuration files that define system and Flatpak packages: @@ -866,12 +865,12 @@ This separation maintains clarity between system-level packages and user-facing
- a NIXOS system installed with a user with sudo rights. @@ -881,8 +880,8 @@ This separation maintains clarity between system-level packages and user-facing
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. @@ -1015,46 +1014,46 @@ Other important files:
flake.lock for pinning input versions.flake.lock for pinning input versions.assets/* for non-Nix-managed artifacts such as images and wallpapers.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.
<<code-id>> are noweb placeholders that are expanded from other blocks during tangling.<p> @@ -1067,8 +1066,8 @@ Generated outputs should not be edited directly. A CI workflow can tangle and co
<ul> @@ -1082,8 +1081,8 @@ Generated outputs should not be edited directly. A CI workflow can tangle and co
The tree below shows the full repository layout, with the standardized internal structure applied only inside @@ -1217,8 +1216,8 @@ The tree below shows the full repository layout, with the standardized internal
<ul> @@ -1251,8 +1250,8 @@ This prevents unwanted and surprise updates when rebuilding without changing the
I have a bunch of constant strings that I would rather put in a file. Thats what user.nix is.
@@ -1344,8 +1343,8 @@ The values are imported at the beginning and are available to almost all the fun
The inputs for my system's configuration are very simple @@ -1386,8 +1385,8 @@ zen-browser = {
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.
@@ -1395,7 +1394,7 @@ We also add a devshell that makes editing this repository easier in emacs.
outputs = inputs@{
+outputs = inputs@{
nixpkgs,
home-manager,
emacs-overlay,
@@ -1456,7 +1455,7 @@ Overlays are a special nix way to override existing packages within a repository
-({ ... }: {
+({ ... }: {
nixpkgs.overlays = [ emacs-overlay.overlays.default ];
})
@@ -1466,7 +1465,7 @@ nixpkgs.overlays = [ emacs-overlay.overlays.default ];
Then the machine specific configuration, in this case, just "traveldroid".
-./machines/${machine}/configuration.nix
+./machines/${machine}/configuration.nix
@@ -1476,7 +1475,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;
@@ -1519,8 +1518,8 @@ imports = [
-
-15.1. Envrc + Direnv
+
+15.1. Envrc + Direnv
Editing this file will be much nicer if we have the dev environment configured.
@@ -1541,14 +1540,14 @@ fi
-
-16. Machines
+
+16. Machines
The individual machines subdirectory is configured as follows :-
-+--machine
++--machine
| +--configuration.nix
| +--home.nix
| +--hardware-configuration.nix
@@ -1569,12 +1568,12 @@ This imported object (or function result) is just trivially merged into a common
We can take a look at that the common hardware options I have for all my machines.
-
-16.0.1. Other Utils
+
+16.0.1. Other Utils
-
-17. Hardware
+
+17. Hardware
I'll let the code comments explain the file here.
@@ -1623,8 +1622,8 @@ hardware.enableAllFirmware = true; # enable all firmware regardless of license
-
-18. Configuration
+
+18. Configuration
This section describes the main system configuration for the computers that I have. Nix will look for a default.nix file if you give it a path to a folder to import. And default.nix looks as follows :-
@@ -1667,16 +1666,16 @@ This section describes the main system configuration for the computers that I ha
-
-18.1. Apps section
+
+18.1. Apps section
This section describes a way of installing packages, either through nixpkgs orr flatpak. What apps to instal is decided in the files ./assets/conf/apps/packages.conf and flatpaks.conf
-
-18.2. installpackages.nix
+
+18.2. installpackages.nix
{ config, lib, pkgs, flakeRoot, inputs, ... }:
@@ -1726,8 +1725,8 @@ in
-
-18.3. installflatpaks.nix
+
+18.3. installflatpaks.nix
{ config, pkgs, lib, flakeRoot, ... }:
@@ -1839,8 +1838,8 @@ in
-
-18.4. Nix Settings
+
+18.4. Nix Settings
These are global nix settings that configure the settings for the actual tool.
@@ -1889,8 +1888,8 @@ nh = {
-
-18.5. Boot
+
+18.5. Boot
This file has most of the settings the control how the computer boots up.
@@ -1928,16 +1927,16 @@ This file has most of the settings the control how the computer boots up.
-
-18.6. Login
+
+18.6. Login
Here we control what the login screen would look like. In configuration/default.nix you can choose whether to use tuigreet (very minimalistic) or LightDM (nicer, themeable)
-
-18.7. Tuigreet
+
+18.7. Tuigreet
Doesn't match the rest of the aesthetic of the system (with hyprland), but I like its simplicity.
@@ -1962,8 +1961,8 @@ settings = {
-
-18.8. LightDM
+
+18.8. LightDM
{ config, pkgs, lib, ... }:
@@ -2110,8 +2109,8 @@ in
-
-18.9. Terminal (default system)
+
+18.9. Terminal (default system)
This is the initial system level configuration for the terminal that I use on this machine. Its just zsh.
@@ -2130,8 +2129,8 @@ This is the initial system level configuration for the terminal that I use on th
-
-18.10. Files
+
+18.10. Files
I use Thunar as the file explorer. Also setup a few plugins for Thunar in this config.
@@ -2172,8 +2171,8 @@ Along with that, a few other utilities like zip and enabling services to automou
-
-18.11. Locale
+
+18.11. Locale
I live in Netherlands and would like all my locale and timezone settings to match. Except my default locale.
@@ -2207,8 +2206,8 @@ LC_TIME = defaultLocale;
-
-18.12. Networking
+
+18.12. Networking
Not much to see here. I want networking to be enabled. I want firewall as well.
@@ -2239,8 +2238,8 @@ Not much to see here. I want networking to be enabled. I want firewall as well.
-
-18.13. Hyprland
+
+18.13. Hyprland
This is a big one because the DE needs so much configuration. This section mostly installs Hyprland.
@@ -2311,8 +2310,8 @@ The configuration is done in the home manager section.
-
-18.14. Services
+
+18.14. Services
These are some of the services that I enable at the system level. Explanation in the comments.
@@ -2345,8 +2344,8 @@ users.users.${user.username}.extraGroups = [ "docker" ]; # add self to docker us
-
-18.15. Audio
+
+18.15. Audio
{ config, pkgs, lib, ... }:
@@ -2423,14 +2422,14 @@ users.users.${user.username}.extraGroups = [ "docker" ]; # add self to docker us
-
-18.16. Fonts
+
+18.16. Fonts
Nothing much to see here. I love Aporetic, and I use it everywhere.
-fonts.packages = with pkgs; [
+fonts.packages = with pkgs; [
aporetic
nerd-fonts.iosevka
];
@@ -2438,14 +2437,14 @@ nerd-fonts.iosevka
-
-18.17. User Config
+
+18.17. User Config
This creates the user profile that I login with. Initially created during install.
-users.users.${user.username} = {
+users.users.${user.username} = {
isNormalUser = true;
description = "henrov";
extraGroups = [
@@ -2460,8 +2459,8 @@ extraGroups = [
-
-19. Home
+
+19. Home
I use home-manager to manage my user level dotfiles and configurations.
@@ -2469,8 +2468,8 @@ Most of the "theme" of the system is decided here.
I also use it to install programs that are okay with being installed at the user level instead of the system.
-
-19.1. default.nix
+
+19.1. default.nix
This module will import all necessities.
@@ -2481,7 +2480,6 @@ This module will import all necessities.
{
imports = [
./apps/ollama.nix
- #./apps/default-apps.nix
./apps/theme.nix
./desktop/hypridle.nix
./desktop/hyprland.nix
@@ -2513,8 +2511,8 @@ This module will import all necessities.
-
-19.2. Ollama
+
+19.2. Ollama
This Home Manager Nix module (ai.nix) installs the Ollama package and configures it by reading a simple key-value configuration file (ollama.conf) for settings like the server host and default model. It sets environment variables (OLLAMAHOST and OLAMADEFAULTMODEL) for easy access in your shell or applications, with fallback defaults if the config file is missing or empty. Optionally, it also defines a user-level systemd service to automatically start the Ollama server on NixOS or systems with Home Manager’s systemd support enabled.
@@ -2537,8 +2535,8 @@ in
-
-19.3. Powermenu
+
+19.3. Powermenu
Creates a script for a powermenu
@@ -2561,8 +2559,8 @@ in
-
-19.4. Animated Wallpaper
+
+19.4. Animated Wallpaper
userRelRoot = "nixosconf/wallpaperstuff";
@@ -2612,8 +2610,8 @@ in
-
-19.5. Rotating Wallpaper
+
+19.5. Rotating Wallpaper
rotatingwallpaper.nix installs wpaperd and deploys your wallpaper files from the repo (./assets/conf/desktop/wallpaper/pictures/) into ~/conf/desktop/wallpaper/pictures. It also deploys the default wallpaper configuration from assets/conf/desktop/wallpaper/wallpaper.conf into ~/conf/desktop/wallpaper/wallpaper.conf, which is the file you can edit as a user override.
@@ -2667,11 +2665,11 @@ in
-
-19.6. Waybar
+
+19.6. Waybar
-
+
@@ -2701,8 +2699,8 @@ in
-
-19.7. Lock Screen
+
+19.7. Lock Screen
The lock screen configured using hyprlock.
@@ -2729,8 +2727,8 @@ in
-
-19.8. Idle Screen
+
+19.8. Idle Screen
{ config, lib, pkgs, flakeRoot, ... }:
@@ -2747,8 +2745,8 @@ in
-
-19.9. hyprscrolling
+
+19.9. hyprscrolling
This Nix module integrates the hyprscrolling plugin into a Home-Manager managed Hyprland setup in a declarative and reproducible way. It ensures the plugin is installed, optionally switches Hyprland to the scrolling layout, and renders user-defined plugin settings directly into the Hyprland configuration. The goal is to manage the scrolling workspace behavior entirely from Nix instead of maintaining manual edits inside hyprland.conf.
@@ -2799,8 +2797,8 @@ in
-
-19.10. Hyprshell
+
+19.10. Hyprshell
For nice task-starting and -switching
@@ -2844,8 +2842,8 @@ in
-
-19.11. Hyprland
+
+19.11. Hyprland
This configures the desktop environment along with the peripherals. The comments should explain whats happening.
@@ -2896,8 +2894,8 @@ in
-
-19.12. Walker
+
+19.12. Walker
This is how I launch applications. It is bound to Win+Space in the ./asstes/conf/desktop/hypr/bindings.conf.
@@ -2933,8 +2931,8 @@ in
-
-19.13. Theme
+
+19.13. Theme
I use the Catppuccin almost everywhere. The nix module integrates almost automatically everywhere (except gtk).
@@ -2967,30 +2965,10 @@ catppuccin.cursors.enable = true;
-
-19.14. Default-apps
+
+19.14. Hyperexpo
-This is where you can set defaults
-
-
-{ config, pkgs, lib, ... }:
-{
- xdg.mimeApps.enable = true;
- xdg.mimeApps.defaultApplications = {
- "x-scheme-handler/http" = [ "app.zen_browser.zen.desktop" ];
- "x-scheme-handler/https" = [ "app.zen_browser.zen.desktop" ];
- "text/html" = [ "app.zen_browser.zen.desktop" ];
- };
-}
-
-
-
-
-
-19.15. Hyperexpo
-
-
hyprexpo gets installed and configured
@@ -3027,9 +3005,9 @@ hyprexpo gets installed and configured
-
-19.16. Alacritty
-
+
+19.15. Alacritty
+
Alacritty gets installed and configured
@@ -3050,9 +3028,9 @@ in
-
-19.17. Dev Tools
-
+
+19.16. Dev Tools
+
All the miscellaneous dev tools on this computer.
@@ -3103,9 +3081,9 @@ All the miscellaneous dev tools on this computer.
-
-19.18. Kitty
-
+
+19.17. Kitty
+
Kitty gets installed and configured
@@ -3143,9 +3121,9 @@ in
-
-19.19. Shells
-
+
+19.18. Shells
+
The aliases mentioned in ./assets/conf/dev/terminal/shells.conf will be added to enabled shells
@@ -3360,9 +3338,9 @@ EOF
-
-19.20. Zsh
-
+
+19.19. Zsh
+
Zsh gets installed and configured
@@ -3397,9 +3375,9 @@ Zsh gets installed and configured
-
-19.21. Starship
-
+
+19.20. Starship
+
The configuration mentioned in ./assets/conf/dev/terminal/starship.toml will be added to enabled shells
@@ -3430,18 +3408,18 @@ in
-
-19.22. Other Settings
-
+
+19.21. Other Settings
+
Some repeated info from the configuration.
-
-19.22.1. Home User
-
+
+19.21.1. Home User
+
-home.username = "${user.username}";
+home.username = "${user.username}";
home.homeDirectory = pkgs.lib.mkDefault "/home/${user.username}";
home.stateVersion = user.stateVersion;
@@ -3450,8 +3428,8 @@ home.stateVersion = user.stateVersion;
-
-20. Emacs
+
+20. Emacs
I practically live inside emacs. The configuration for it is a mix between init.el and the nix configuration.
@@ -3530,8 +3508,8 @@ enable = true;
-
-20.1. Early Initialization
+
+20.1. Early Initialization
There are some emacs settings that can be configured before the gui shows up.
@@ -3636,8 +3614,8 @@ package-archive-priorities '(("gnu" . 99)
-
-20.2. Initialization
+
+20.2. Initialization
Now starts the main emacs configuration.
@@ -4049,22 +4027,22 @@ the top of the file."
-
-21. Machines
+
+21. Machines
Only a few more things left. Specifically the machine level extra settings.
-
-21.1. Traveldroid
+
+21.1. Traveldroid
The configuration for the laptop does not change much. Most changes are because the hardware is different.
-
-21.1.1. System Level
+
+21.1.1. System Level
Nothing specific for the laptop.
@@ -4082,8 +4060,8 @@ Nothing specific for the laptop.
-
-21.1.2. Hardware
+
+21.1.2. Hardware
This is the most different. Mostly taken from hardware-configuration.nix setup at first install.
@@ -4133,8 +4111,8 @@ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistr
-
-21.1.3. Home
+
+21.1.3. Home
This is mostly about configuring the monitor. And laptop specific utilities.
@@ -4161,18 +4139,18 @@ This is mostly about configuring the monitor. And laptop specific utilities.
-
-22. README Utils
+
+22. README Utils
-
-22.0.1. Headers
+
+22.0.1. Headers
This script adds a DO NOT MODIFY header to all the generated nix files.
-(progn
+(progn
(defun add-tangle-headers ()
(message "running in %s" (buffer-file-name))
(when (string= (file-name-extension (buffer-file-name)) "nix")
@@ -4189,7 +4167,7 @@ This script adds a DO NOT MODIFY header to all the generated nix fi
diff --git a/henrovnix_ok/README.org b/henrovnix_ok/README.org
index c1e50c9f2..0fd067519 100755
--- a/henrovnix_ok/README.org
+++ b/henrovnix_ok/README.org
@@ -1605,7 +1605,6 @@ This module will import all necessities.
{
imports = [
./apps/ollama.nix
- #./apps/default-apps.nix
./apps/theme.nix
./desktop/hypridle.nix
./desktop/hyprland.nix
@@ -1665,7 +1664,7 @@ in
{
# Ensure script exists in ~/.config/hypr/scripts/
home.file."${targetRel}" = {
- source = repoScript;
+ source = lib.mkForce repoScript;
executable = true;
};
}
@@ -1689,7 +1688,7 @@ in
];
# Sync repo wallpapers (including videos/) into ~/nixos_conf/wallpaperstuff
home.file."${userRelRoot}" = {
- source = repoWallpaperDir;
+ source = lib.mkForce repoWallpaperDir;
recursive = true;
};
systemd.user.services.mpvpaper-wallpaper = {
@@ -1738,7 +1737,7 @@ in
home.packages = [ pkgs.wpaperd ];
# Sync everything *except* wallpaper.conf into ~/nixos_conf/wallpaperstuff
home.file."${userRelRoot}" = {
- source = repoWallpapersOnly;
+ source = lib.mkForce repoWallpapersOnly;
recursive = true;
};
# Now safely overwrite the config every activation (no HM collision)
@@ -1778,7 +1777,7 @@ in
programs.waybar.enable = true;
programs.waybar.style = lib.mkForce ""; # Schakel standaardstijl uit
home.file.".config/waybar/config" = {
- source = "${repoWaybarDir}/config.jsonc";
+ source = lib.mkForce "${repoWaybarDir}/config.jsonc";
};
# Overschrijf style.css handmatig na alle andere stappen
home.activation.waybarStyle = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
@@ -1803,10 +1802,10 @@ in
home.packages = [ pkgs.hyprlock ];
# Gebruik home.file voor echte bestanden (geen symlinks)
home.file.".config/hypr/lock.png" = {
- source = lockPngSrc;
+ source = lib.mkForce lockPngSrc;
};
home.file.".config/hypr/hyprlock.conf" = {
- source = hyprlockConf;
+ source = lib.mkForce hyprlockConf;
};
}
#+end_src
@@ -1821,7 +1820,7 @@ in
{
home.packages = [ pkgs.hypridle ];
home.file.".config/hypr/hypridle.conf" = {
- source = hypridleConf;
+ source = lib.mkForce hypridleConf;
};
}
#+end_src
@@ -1855,18 +1854,18 @@ in
};
# Copy repo configs/scripts into ~/.config (als echte bestanden)
home.file."${targetRel}" = {
- source = repoConf;
+ source = lib.mkForce repoConf;
};
home.file."${targetOverflowRel}" = {
- source = repoOverflowScript;
+ source = lib.mkForce repoOverflowScript;
executable = true;
};
home.file."${targetPerMonitor}" = {
- source = repoPerMonitorScript;
+ source = lib.mkForce repoPerMonitorScript;
executable = true;
};
home.file."${targetSwitchScript}" = {
- source = repoSwitchScript;
+ source = lib.mkForce repoSwitchScript;
executable = true;
};
}
@@ -1887,10 +1886,10 @@ in
home.packages = [ pkgs.hyprshell ];
# Gebruik home.file voor echte bestanden (geen symlinks)
home.file.".config/hyprshell/config.ron" = {
- source = cfgRon;
+ source = lib.mkForce cfgRon;
};
home.file.".config/hyprshell/styles.css" = {
- source = cssFile;
+ source = lib.mkForce cssFile;
};
# Autostart (systemd user service)
systemd.user.services.hyprshell = {
@@ -1908,7 +1907,6 @@ in
WantedBy = [ "graphical-session.target" ];
};
};
-}
#+end_src
@@ -1938,7 +1936,7 @@ in
};
# Gebruik home.file voor echte bestanden (geen symlinks)
home.file.".config/hypr/scripts/lid-lock.sh" = {
- source = lidLockScript;
+ source = lib.mkForce lidLockScript;
executable = true;
};
xdg.portal = {
@@ -2017,20 +2015,6 @@ You'll notice the color values in multiple places outside this as well.
}
#+end_src
-** Default-apps
-This is where you can set defaults
-#+begin_src nix :tangle home/apps/defaults-apps.nix :noweb tangle :mkdirp yes.
-{ config, pkgs, lib, ... }:
-{
- xdg.mimeApps.enable = true;
- xdg.mimeApps.defaultApplications = {
- "x-scheme-handler/http" = [ "app.zen_browser.zen.desktop" ];
- "x-scheme-handler/https" = [ "app.zen_browser.zen.desktop" ];
- "text/html" = [ "app.zen_browser.zen.desktop" ];
- };
-}
-#+end_src
-
** Hyperexpo
hyprexpo gets installed and configured
#+begin_src nix :tangle home/desktop/hyprexpo.nix :noweb tangle :mkdirp yes.
@@ -2062,7 +2046,6 @@ hyprexpo gets installed and configured
'';
};
}
-
#+end_src
** Alacritty
@@ -2409,27 +2392,22 @@ Zsh gets installed and configured
The configuration mentioned in ./assets/conf/dev/terminal/starship.toml will be added to enabled shells
#+begin_src nix :tangle home/dev/starship.nix :noweb tangle :mkdirp yes
{ config, pkgs, lib, flakeRoot, ... }:
-
let
repoStarshipToml = flakeRoot.outPath + "/assets/conf/dev/terminal/starship.toml";
-
# The exact key that appears in the error:
targetKey = "${config.home.homeDirectory}/.config/starship.toml";
in
{
xdg.enable = true;
-
programs.starship = {
enable = true;
enableZshIntegration = true;
enableBashIntegration = true;
enableFishIntegration = true;
};
-
# Force the *actual conflicting option* (home.file."".source)
home.file."${targetKey}".source = lib.mkForce repoStarshipToml;
}
-
#+end_src
** Other Settings
@@ -2619,7 +2597,6 @@ These are listed here.
** Initialization
Now starts the main emacs configuration.
-
#+begin_src emacs-lisp :tangle home/dev/emacs/init.el :mkdirp yes
;;; package --- Summary - My minimal Emacs init file -*- lexical-binding: t -*-
@@ -3028,8 +3005,7 @@ Only a few more things left. Specifically the machine level extra settings.
** Traveldroid
The configuration for the laptop does not change much. Most changes are because the hardware is different.
*** System Level
-Nothing specific for the laptop.
-
+Anything specific for the laptop.
#+begin_src nix :tangle machines/traveldroid/configuration.nix :noweb tangle :mkdirp yes
{ user, ... } : {
imports =
diff --git a/henrovnix_ok/home/apps/ai.nix b/henrovnix_ok/home/apps/ai.nix
deleted file mode 100644
index 4f423fd77..000000000
--- a/henrovnix_ok/home/apps/ai.nix
+++ /dev/null
@@ -1,98 +0,0 @@
-{ config, pkgs, lib, flakeRoot, ... }:
-
-let
- # Path to environment file
- AiRepoEnv = flakeRoot + "/assets/conf/apps/ai/ai.env";
-
- # Environment file parser
- parseEnv = lines:
- lib.foldl' (acc: line:
- let
- trimmed = builtins.trim line;
- in
- if trimmed == "" || (builtins.stringLength trimmed) > 0 && (builtins.substr 0 1 trimmed) == "#"
- then acc
- else
- let parts = builtins.split "=" trimmed;
- in
- if builtins.length parts >= 2
- then builtins.add (builtins.elemAt parts 0) (builtins.elemAt parts 1) acc
- else acc
- ) { } (builtins.split "\n" (builtins.readFile (toString AiRepoEnv)));
-
- envVars = parseEnv;
-in
-{
- # Install required packages
- home.packages = [
- pkgs.ollama-vulkan
- pkgs.zed-editor
- ];
-
- # Set environment variables
- home.sessionVariables = {
- OLLAMA_HOST = envVars.OLLAMA_HOST or "http://127.0.0.1:11434";
- MISTRAL_API_KEY = envVars.MISTRAL_API_KEY or "";
- };
-
- # Configure Ollama service using the correct Home Manager syntax
- systemd.user.services.ollama = {
- Unit = {
- Description = "Ollama service for local AI models";
- After = [ "network.target" ];
- Wants = [ "network.target" ];
- };
-
- Service = {
- Type = "forking";
- ExecStart = "${pkgs.ollama-vulkan}/bin/ollama serve";
- ExecStartPost = ''
- sleep 5
- ${pkgs.ollama-vulkan}/bin/ollama pull codellama:70b
- ${pkgs.ollama-vulkan}/bin/ollama pull mixtral:8x7b
- '';
- Restart = "on-failure";
- };
-
- Install = {
- WantedBy = [ "default.target" ];
- };
- };
-
- # ZED configuration
- home.file.".config/zed/settings.json".text = lib.mkForce (
- builtins.toJSON {
- mistral = {
- apiKey = envVars.MISTRAL_API_KEY or "";
- defaultModel = "mistral-pro";
- };
- ollama = {
- endpoint = envVars.OLLAMA_HOST or "http://127.0.0.1:11434";
- defaultModel = "codellama:70b";
- };
- }
- );
-
- # --- Usage Notes ---
- # 1. Pulling Additional Models:
- # To add more models later, run:
- # ollama pull
- # Example: ollama pull llama3:8b
- #
- # 2. Switching GPU Backends:
- # - For NVIDIA: Replace all `ollama-vulkan` with `ollama` (uses CUDA)
- # - For AMD: Use `ollama-rocm` and ensure ROCm is installed
- #
- # 3. ZED Plugin Setup:
- # - Install the Ollama and Mistral plugins in ZED via the plugin marketplace
- # - The Ollama plugin will use the local models pulled above
- # - The Mistral plugin will use the MISTRAL_API_KEY for cloud access
- #
- # 4. Security:
- # - Never commit ./assets/conf/apps/ai.env to version control
- # - For extra security, encrypt ai.env using sops-nix or age
- #
- # 5. Persistent Service:
- # To keep Ollama running after logout, enable lingering:
- # loginctl enable-linger $(whoami)
-}
diff --git a/henrovnix_ok/home/apps/defaults-apps.nix b/henrovnix_ok/home/apps/defaults-apps.nix
deleted file mode 100644
index 987d4afe3..000000000
--- a/henrovnix_ok/home/apps/defaults-apps.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ config, pkgs, lib, ... }:
-{
- xdg.mimeApps.enable = true;
- xdg.mimeApps.defaultApplications = {
- "x-scheme-handler/http" = [ "app.zen_browser.zen.desktop" ];
- "x-scheme-handler/https" = [ "app.zen_browser.zen.desktop" ];
- "text/html" = [ "app.zen_browser.zen.desktop" ];
- };
-}
diff --git a/henrovnix_ok/home/default.nix b/henrovnix_ok/home/default.nix
index 712d1f16e..51762cb1d 100644
--- a/henrovnix_ok/home/default.nix
+++ b/henrovnix_ok/home/default.nix
@@ -2,7 +2,6 @@
{
imports = [
./apps/ollama.nix
- #./apps/default-apps.nix
./apps/theme.nix
./desktop/hypridle.nix
./desktop/hyprland.nix
diff --git a/henrovnix_ok/home/desktop/ncsway.nix b/henrovnix_ok/home/desktop/ncsway.nix
deleted file mode 100644
index 0d6d8f2cf..000000000
--- a/henrovnix_ok/home/desktop/ncsway.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ config, pkgs, lib, flakeRoot, ... }:
-let
- repoConf = flakeRoot + "/assets/conf/desktop/notifications/swaync/config.json";
- repoStyle = flakeRoot + "/assets/conf/desktop/notifications/swaync/style.css";
-in
-{
- home.packages = [
- pkgs.swaynotificationcenter
- pkgs.libnotify
- ];
- # Ensure config directory exists in ~/.config
- xdg.configFile."swaync/config.json".source = repoConf;
- xdg.configFile."swaync/style.css".source = repoStyle;
- # Start swaync automatically (systemd user service)
- systemd.user.services.swaync = {
- Unit = {
- Description = "Sway Notification Center";
- PartOf = [ "graphical-session.target" ];
- };
- Service = {
- ExecStart = "${pkgs.swaynotificationcenter}/bin/swaync";
- Restart = "always";
- };
- Install = {
- WantedBy = [ "graphical-session.target" ];
- };
- };
-}
diff --git a/henrovnix_ok/home/desktop/workspace_wallpaper.nix b/henrovnix_ok/home/desktop/workspace_wallpaper.nix
deleted file mode 100644
index c5fc81853..000000000
--- a/henrovnix_ok/home/desktop/workspace_wallpaper.nix
+++ /dev/null
@@ -1,201 +0,0 @@
-{ config, lib, pkgs, flakeRoot, ... }:
-
-let
- userRelRoot = "nixos_conf/wallpaperstuff";
- userAbsRoot = "${config.home.homeDirectory}/${userRelRoot}";
- picturesDir = "${userAbsRoot}/pictures";
- repoWallpaperDir = flakeRoot.outPath + "/assets/conf/desktop/wallpaper";
- repoWallpapersOnly = lib.cleanSourceWith {
- src = repoWallpaperDir;
- filter = path: type: true;
- };
- daemonRel = ".config/hypr/scripts/hyprpaper-ws-daemon.sh";
- setRel = ".config/hypr/scripts/set-wallpaper.sh";
-in
-{
- home.packages = [
- pkgs.hyprpaper
- pkgs.socat
- pkgs.jq
- pkgs.findutils
- pkgs.coreutils
- pkgs.gnused
- pkgs.gawk
- ];
-
- # Sync wallpapers into a writable directory
- home.file."${userRelRoot}" = {
- source = repoWallpapersOnly;
- recursive = true;
- };
-
- # Hyprpaper config
- home.file.".config/hypr/hyprpaper.conf" = {
- text = ''
- ipc = true
- splash = false
- '';
- };
-
- # Workspace wallpaper daemon
- home.file."${daemonRel}" = {
- executable = true;
- text = ''
- #!/usr/bin/env bash
- set -euo pipefail
- : "${XDG_RUNTIME_DIR?"XDG_RUNTIME_DIR not set"}"
- : "${HYPRLAND_INSTANCE_SIGNATURE?"HYPRLAND_INSTANCE_SIGNATURE not set"}"
-
- SOCK="${XDG_RUNTIME_DIR}/hypr/${HYPRLAND_INSTANCE_SIGNATURE}/.socket2.sock"
- [[ -S "$SOCK" ]] || { echo "Hyprland socket not found: $SOCK" >&2; exit 1; }
-
- PICTURES_DIR="${1:-${picturesDir}}" # $1 = eerste argument, ${picturesDir} = default (Bash-variabele)
- FIT_MODE="fill"
- HYPR_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr" # Gebruik $HOME als fallback
- MAP_ROOT="${HYPR_DIR}/hyprpaper/config"
-
- focused_monitor() {
- hyprctl -j monitors | jq -r '.[] | select(.focused==true) | .name' | head -n 1
- }
-
- map_file_for_monitor() {
- local mon="$1"
- echo "${MAP_ROOT}/${mon}/defaults.conf"
- }
-
- ensure_map_file() {
- local mon="$1"
- local f
- f="$(map_file_for_monitor "$mon")"
- mkdir -p "$(dirname "$f")"
- if [[ ! -f "$f" ]]; then
- {
- for i in 1 2 3 4 5 6 7 8 9; do
- seed="$(ls -1 "${PICTURES_DIR}/${i}."* 2>/dev/null | head -n 1 || true)"
- echo "w-${i}=${seed}"
- done
- } > "$f"
- fi
- echo "$f"
- }
-
- get_wall_for_ws() {
- local mon="$1"
- local wsid="$2"
- local f key val
- f="$(ensure_map_file "$mon")"
- key="w-${wsid}"
- val="$(awk -F= -v k="$key" '$1==k {sub(/^[[:space:]]+/, "", $2); print $2; exit}' "$f" || true)"
- echo "$val"
- }
-
- apply_wallpaper() {
- local mon="$1"
- local wsid="$2"
- local file
- file="$(get_wall_for_ws "$mon" "$wsid")"
- [[ -n "$file" ]] || return 0
- [[ -f "$file" ]] || return 0
- hyprctl hyprpaper wallpaper "$mon, $file, $FIT_MODE" >/dev/null
- }
-
- mon="$(focused_monitor || true)"
- wsid="$(hyprctl -j activeworkspace | jq -r '.id' | head -n 1 || true)"
- [[ -n "$mon" && -n "$wsid" ]] && apply_wallpaper "$mon" "$wsid"
-
- handle() {
- local line="$1"
- case "$line" in
- workspacev2* )
- payload="${line#*>>}"
- wsid="${payload%%,*}"
- mon="$(focused_monitor || true)"
- [[ -n "$mon" && -n "$wsid" ]] && apply_wallpaper "$mon" "$wsid"
- ;;
- focusedmon* )
- mon="$(focused_monitor || true)"
- wsid="$(hyprctl -j activeworkspace | jq -r '.id' | head -n 1 || true)"
- [[ -n "$mon" && -n "$wsid" ]] && apply_wallpaper "$mon" "$wsid"
- ;;
- esac
- }
-
- socat -U - UNIX-CONNECT:"$SOCK" | while read -r line; do
- handle "$line" || true
- done
- '';
- };
-
- # CLI setter
- home.file."${setRel}" = {
- executable = true;
- text = ''
- #!/usr/bin/env bash
- set -euo pipefail
-
- HYPR_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
- MAP_ROOT="${HYPR_DIR}/hyprpaper/config"
-
- usage() {
- echo "Usage: $0 [wallpaper_path]"
- }
-
- wsid="${1:-}"
- mon="${2:-}"
- wp="${3:-}"
-
- [[ -n "$wsid" ]] || { usage; exit 1; }
- [[ -n "$mon" ]] || { usage; exit 1; }
-
- cfg="${MAP_ROOT}/${mon}/defaults.conf"
- mkdir -p "$(dirname "$cfg")"
- [[ -f "$cfg" ]] || touch "$cfg"
-
- if [[ -z "$wp" ]]; then
- wp="$(find "${XDG_CONFIG_HOME:-$HOME/.config}/wallpapers/defaults" -type f 2>/dev/null | shuf -n 1 || true)"
- [[ -n "$wp" ]] || { echo "No wallpaper found (random). Provide a path as arg 3."; exit 1; }
- fi
-
- key="w-${wsid}"
- if ! grep -q "^${key}=" "$cfg"; then
- echo "${key}=" >> "$cfg"
- fi
-
- sed -i "s|^${key}=.*|${key}= ${wp}|g" "$cfg"
-
- curws="$(hyprctl -j monitors | jq -r --arg m "$mon" '.[] | select(.name==$m) | .activeWorkspace.id' | head -n 1 || true)"
- if [[ "$curws" == "$wsid" ]]; then
- hyprctl hyprpaper wallpaper "$mon, $wp, fill" >/dev/null
- fi
- '';
- };
-
- # Services
- systemd.user.services.hyprpaper = {
- Unit = {
- Description = "hyprpaper wallpaper daemon";
- PartOf = [ "graphical-session.target" ];
- After = [ "graphical-session.target" ];
- };
- Service = {
- ExecStart = "${pkgs.hyprpaper}/bin/hyprpaper";
- Restart = "on-failure";
- RestartSec = 1;
- };
- Install = { WantedBy = [ "graphical-session.target" ]; };
- };
-
- systemd.user.services.hyprpaper-ws-daemon = {
- Unit = {
- Description = "Workspace->wallpaper mapping daemon (hyprpaper + socket2)";
- PartOf = [ "graphical-session.target" ];
- After = [ "graphical-session.target" "hyprpaper.service" ];
- };
- Service = {
- ExecStart = "${pkgs.bash}/bin/bash ${config.home.homeDirectory}/${daemonRel} ${picturesDir}";
- Restart = "on-failure";
- RestartSec = 1;
- };
- Install = { WantedBy = [ "graphical-session.target" ]; };
- };
-}