|
|
@@ -897,7 +897,8 @@ This section describes the main system configuration for the computers that I ha
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Apps section
|
|
|
|
** 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
|
|
|
|
This section describes a way of installing packages, either through nixpkgs or flatpak.
|
|
|
|
|
|
|
|
What extra apps to install is decided in the files ./assets/conf/apps/packages.conf and flatpaks.conf.
|
|
|
|
|
|
|
|
|
|
|
|
** packages.nix
|
|
|
|
** packages.nix
|
|
|
|
#+begin_src nix :tangle configuration/apps/packages.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle configuration/apps/packages.nix :noweb tangle :mkdirp yes
|
|
|
@@ -1616,7 +1617,6 @@ This module will import all necessities.
|
|
|
|
./desktop/hyprlock.nix
|
|
|
|
./desktop/hyprlock.nix
|
|
|
|
./desktop/hyprscrolling.nix
|
|
|
|
./desktop/hyprscrolling.nix
|
|
|
|
./desktop/hyprshell.nix
|
|
|
|
./desktop/hyprshell.nix
|
|
|
|
./desktop/powermenu.nix
|
|
|
|
|
|
|
|
#./desktop/animated_wallpaper.nix
|
|
|
|
#./desktop/animated_wallpaper.nix
|
|
|
|
./desktop/rotating_wallpaper.nix
|
|
|
|
./desktop/rotating_wallpaper.nix
|
|
|
|
./desktop/waybar.nix
|
|
|
|
./desktop/waybar.nix
|
|
|
@@ -1643,58 +1643,29 @@ This Home Manager Nix module (ai.nix) installs the Ollama package and configures
|
|
|
|
|
|
|
|
|
|
|
|
#+begin_src nix :tangle home/apps/ollama.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/apps/ollama.nix :noweb tangle :mkdirp yes
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
|
|
|
|
ollamaConfPath = flakeRoot.outPath + "/assets/conf/apps/ai/ollama/ollama.conf";
|
|
|
|
|
|
|
|
envVars = builtins.fromJSON (builtins.readFile ollamaConfPath);
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
services.ollama = {
|
|
|
|
services.ollama = {
|
|
|
|
enable = true;
|
|
|
|
enable = true;
|
|
|
|
package = pkgs.ollama;
|
|
|
|
package = pkgs.ollama;
|
|
|
|
environmentVariables = envVars;
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Powermenu
|
|
|
|
** Powermenu
|
|
|
|
Creates a script for a powermenu
|
|
|
|
This is a script copied from the copy_stuff folder
|
|
|
|
#+begin_src nix :tangle home/desktop/powermenu.nix :noweb tangle :mkdirp yes
|
|
|
|
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
|
|
|
|
let
|
|
|
|
|
|
|
|
repoScript =
|
|
|
|
|
|
|
|
flakeRoot.outPath + "/assets/conf/desktop/hypr/scripts/powermenu.sh";
|
|
|
|
|
|
|
|
targetRel = ".config/hypr/scripts/powermenu.sh";
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
# Ensure script exists in ~/.config/hypr/scripts/
|
|
|
|
|
|
|
|
home.file."${targetRel}" = {
|
|
|
|
|
|
|
|
source = lib.mkForce repoScript;
|
|
|
|
|
|
|
|
executable = true;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
** Animated Wallpaper
|
|
|
|
** Animated Wallpaper
|
|
|
|
userRelRoot = "nixos_conf/wallpaperstuff";
|
|
|
|
Sets animated wallpaper ~/nixos_conf/wallpaperstuff/videos/myWallpaper.mp4
|
|
|
|
animated_wallpaper.nix installs mpvpaper and deploys your wallpaper files from the repo (./assets/conf/desktop/wallpaper) into ~/conf/desktop/wallpaper/pictures.
|
|
|
|
|
|
|
|
#+begin_src nix :tangle home/desktop/animated_wallpaper.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/desktop/animated_wallpaper.nix :noweb tangle :mkdirp yes
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
let
|
|
|
|
repoWallpaperDir = flakeRoot.outPath + "/assets/conf/desktop/wallpaper";
|
|
|
|
userVideoPath = ".config/nixos_conf/wallpaperstuff/videos/myWallpaper.mp4";
|
|
|
|
userRelRoot = ".config/nixos_conf/wallpaperstuff";
|
|
|
|
|
|
|
|
userAbsRoot = "${config.home.homeDirectory}/${userRelRoot}";
|
|
|
|
|
|
|
|
userVideoPath = "${userAbsRoot}/videos/myWallpaper.mp4";
|
|
|
|
|
|
|
|
in
|
|
|
|
in
|
|
|
|
{
|
|
|
|
{
|
|
|
|
home.packages = [
|
|
|
|
home.packages = [
|
|
|
|
pkgs.mpvpaper
|
|
|
|
pkgs.mpvpaper
|
|
|
|
pkgs.mpv
|
|
|
|
pkgs.mpv
|
|
|
|
];
|
|
|
|
];
|
|
|
|
# Sync repo wallpapers (including videos/) into ~/nixos_conf/wallpaperstuff
|
|
|
|
|
|
|
|
home.file."${userRelRoot}" = {
|
|
|
|
|
|
|
|
source = lib.mkForce repoWallpaperDir;
|
|
|
|
|
|
|
|
recursive = true;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
systemd.user.services.mpvpaper-wallpaper = {
|
|
|
|
systemd.user.services.mpvpaper-wallpaper = {
|
|
|
|
Unit = {
|
|
|
|
Unit = {
|
|
|
|
Description = "Video wallpaper (mpvpaper)";
|
|
|
|
Description = "Video wallpaper (mpvpaper)";
|
|
|
@@ -1723,33 +1694,12 @@ in
|
|
|
|
rotating_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.
|
|
|
|
rotating_wallpaper.nix installs wpaperd and deploys your wallpaper files from the repo (./assets/conf/desktop/wallpaper/pictures/) into ~/conf/desktop/wallpaper/pictures. It also deploys the default wallpaper configuration from assets/conf/desktop/wallpaper/wallpaper.conf into ~/conf/desktop/wallpaper/wallpaper.conf, which is the file you can edit as a user override.
|
|
|
|
Finally, it creates a systemd user service (wpaperd.service) that automatically starts wpaperd at login and keeps it running, using your override config so wallpapers rotate according to your settings.
|
|
|
|
Finally, it creates a systemd user service (wpaperd.service) that automatically starts wpaperd at login and keeps it running, using your override config so wallpapers rotate according to your settings.
|
|
|
|
#+begin_src nix :tangle home/desktop/rotating_wallpaper.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/desktop/rotating_wallpaper.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/desktop/wallpaper.nix :noweb tangle :mkdirp yes
|
|
|
|
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
let
|
|
|
|
repoWallpaperDir = flakeRoot.outPath + "/assets/conf/desktop/wallpaper";
|
|
|
|
userConfPath = "${config.home.homeDirectory}/nixos_conf/wallpaperstuff/wallpaper.conf";
|
|
|
|
repoWallpaperConf = flakeRoot.outPath + "/assets/conf/desktop/wallpaper/wallpaper.conf";
|
|
|
|
|
|
|
|
userRelRoot = "nixos_conf/wallpaperstuff";
|
|
|
|
|
|
|
|
userAbsRoot = "${config.home.homeDirectory}/${userRelRoot}";
|
|
|
|
|
|
|
|
userConfPath = "${userAbsRoot}/wallpaper.conf";
|
|
|
|
|
|
|
|
# Exclude wallpaper.conf so HM does NOT manage it (avoids backup collisions)
|
|
|
|
|
|
|
|
repoWallpapersOnly = lib.cleanSourceWith {
|
|
|
|
|
|
|
|
src = repoWallpaperDir;
|
|
|
|
|
|
|
|
filter = path: type: (builtins.baseNameOf path) != "wallpaper.conf";
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
in
|
|
|
|
in
|
|
|
|
{
|
|
|
|
{
|
|
|
|
home.packages = [ pkgs.wpaperd ];
|
|
|
|
home.packages = [ pkgs.wpaperd ];
|
|
|
|
# Sync everything *except* wallpaper.conf into ~/nixos_conf/wallpaperstuff
|
|
|
|
|
|
|
|
home.file."${userRelRoot}" = {
|
|
|
|
|
|
|
|
source = lib.mkForce repoWallpapersOnly;
|
|
|
|
|
|
|
|
recursive = true;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
# Now safely overwrite the config every activation (no HM collision)
|
|
|
|
|
|
|
|
home.activation.wallpaperConfForce = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
mkdir -p "${userAbsRoot}"
|
|
|
|
|
|
|
|
install -m 0644 "${repoWallpaperConf}" "${userConfPath}"
|
|
|
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
systemd.user.services.wpaperd = {
|
|
|
|
systemd.user.services.wpaperd = {
|
|
|
|
Unit = {
|
|
|
|
Unit = {
|
|
|
|
Description = "wpaperd wallpaper daemon";
|
|
|
|
Description = "wpaperd wallpaper daemon";
|
|
|
@@ -1769,26 +1719,11 @@ in
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Waybar
|
|
|
|
** Waybar
|
|
|
|
[[./.github/images/waybar.png]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mostly styling and enabling modules in the [[https://github.com/Alexays/Waybar][top bar]].
|
|
|
|
Mostly styling and enabling modules in the [[https://github.com/Alexays/Waybar][top bar]].
|
|
|
|
#+begin_src nix :tangle home/desktop/waybar.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/desktop/waybar.nix :noweb tangle :mkdirp yes
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
|
|
|
|
repoWaybarDir = flakeRoot.outPath + "/assets/conf/desktop/waybar";
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
programs.waybar.enable = true;
|
|
|
|
programs.waybar.enable = true;
|
|
|
|
programs.waybar.style = lib.mkForce ""; # Schakel standaardstijl uit
|
|
|
|
|
|
|
|
home.file.".config/waybar/config" = {
|
|
|
|
|
|
|
|
source = lib.mkForce "${repoWaybarDir}/config.jsonc";
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
# Overschrijf style.css handmatig na alle andere stappen
|
|
|
|
|
|
|
|
home.activation.waybarStyle = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
|
|
|
|
|
|
mkdir -p "${config.xdg.configHome}/waybar"
|
|
|
|
|
|
|
|
cp "${repoWaybarDir}/style.css" "${config.xdg.configHome}/waybar/style.css"
|
|
|
|
|
|
|
|
chmod 644 "${config.xdg.configHome}/waybar/style.css"
|
|
|
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
@@ -1798,34 +1733,16 @@ I use [[https://wiki.hyprland.org/Hypr-Ecosystem/hypridle/][hypridle]] to detect
|
|
|
|
They are configured below.
|
|
|
|
They are configured below.
|
|
|
|
#+begin_src nix :tangle home/desktop/hyprlock.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/desktop/hyprlock.nix :noweb tangle :mkdirp yes
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
|
|
|
|
lockPngSrc = flakeRoot.outPath + "/assets/lockscreen.png";
|
|
|
|
|
|
|
|
hyprlockConf = flakeRoot.outPath + "/assets/conf/desktop/hypr/hyprlock.conf";
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
home.packages = [ pkgs.hyprlock ];
|
|
|
|
home.packages = [ pkgs.hyprlock ];
|
|
|
|
# Gebruik home.file voor echte bestanden (geen symlinks)
|
|
|
|
|
|
|
|
home.file.".config/hypr/lockscreen.png" = {
|
|
|
|
|
|
|
|
source = lib.mkForce lockPngSrc;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
home.file.".config/hypr/hyprlock.conf" = {
|
|
|
|
|
|
|
|
source = lib.mkForce hyprlockConf;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Idle Screen
|
|
|
|
** Idle Screen
|
|
|
|
|
|
|
|
|
|
|
|
#+begin_src nix :tangle home/desktop/hypridle.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/desktop/hypridle.nix :noweb tangle :mkdirp yes
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
|
|
|
|
hypridleConf = flakeRoot.outPath + "/assets/conf/desktop/hypr/hypridle.conf";
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
home.packages = [ pkgs.hypridle ];
|
|
|
|
home.packages = [ pkgs.hypridle ];
|
|
|
|
home.file.".config/hypr/hypridle.conf" = {
|
|
|
|
|
|
|
|
source = lib.mkForce hypridleConf;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
@@ -1833,44 +1750,16 @@ in
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
#+begin_src nix :tangle home/desktop/hyprscrolling.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/desktop/hyprscrolling.nix :noweb tangle :mkdirp yes
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
|
|
|
|
# Hyprscrolling drop-in config (repo -> ~/.config)
|
|
|
|
|
|
|
|
repoConf = flakeRoot.outPath + "/assets/conf/desktop/hypr/hyprscrolling.conf";
|
|
|
|
|
|
|
|
targetRel = "hypr/conf.d/90-hyprscrolling.conf";
|
|
|
|
|
|
|
|
# Overflow indicator script
|
|
|
|
|
|
|
|
repoOverflowScript = flakeRoot.outPath + "/assets/conf/desktop/hypr/scripts/hyprscroll-overflow.sh";
|
|
|
|
|
|
|
|
targetOverflowRel = "hypr/scripts/hyprscroll-overflow.sh";
|
|
|
|
|
|
|
|
# Adapt columnsize to monitor
|
|
|
|
|
|
|
|
repoPerMonitorScript = flakeRoot.outPath + "/assets/conf/desktop/hypr/scripts/hyprscrolling-per-monitor.sh";
|
|
|
|
|
|
|
|
targetPerMonitor = "hypr/scripts/hyprscrolling-per-monitor.sh";
|
|
|
|
|
|
|
|
# Switch between scrolling/dwindle
|
|
|
|
|
|
|
|
repoSwitchScript = flakeRoot.outPath + "/assets/conf/desktop/hypr/scripts/toggle-layout-scrolling-dwindle.sh";
|
|
|
|
|
|
|
|
targetSwitchScript = "hypr/scripts/toggle-layout-scrolling-dwindle.sh";
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
home.packages = with pkgs; [ jq ];
|
|
|
|
home.packages = with pkgs; [ jq ];
|
|
|
|
wayland.windowManager.hyprland = {
|
|
|
|
wayland.windowManager.hyprland = {
|
|
|
|
enable = true;
|
|
|
|
enable = true;
|
|
|
|
plugins = [ pkgs.hyprlandPlugins.hyprscrolling ];
|
|
|
|
plugins = [ pkgs.hyprlandPlugins.hyprscrolling
|
|
|
|
extraConfig = ''
|
|
|
|
pkgs.hyprlandPlugins.hyprspace
|
|
|
|
source = ${config.xdg.configHome}/${targetRel}
|
|
|
|
pkgs.hyprlandPlugins.hyprsunset
|
|
|
|
'';
|
|
|
|
pkgs.hyprlandPlugins.HyprEasymotion
|
|
|
|
};
|
|
|
|
|
|
|
|
# Copy repo configs/scripts into ~/.config (als echte bestanden)
|
|
|
|
];
|
|
|
|
home.file."${targetRel}" = {
|
|
|
|
|
|
|
|
source = lib.mkForce repoConf;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
home.file."${targetOverflowRel}" = {
|
|
|
|
|
|
|
|
source = lib.mkForce repoOverflowScript;
|
|
|
|
|
|
|
|
executable = true;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
home.file."${targetPerMonitor}" = {
|
|
|
|
|
|
|
|
source = lib.mkForce repoPerMonitorScript;
|
|
|
|
|
|
|
|
executable = true;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
home.file."${targetSwitchScript}" = {
|
|
|
|
|
|
|
|
source = lib.mkForce repoSwitchScript;
|
|
|
|
|
|
|
|
executable = true;
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
@@ -1880,20 +1769,9 @@ For nice task-starting and -switching
|
|
|
|
#+begin_src nix :tangle home/desktop/hyprshell.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/desktop/hyprshell.nix :noweb tangle :mkdirp yes
|
|
|
|
# home/desktop/hyprshell.nix (Home-Manager module)
|
|
|
|
# home/desktop/hyprshell.nix (Home-Manager module)
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
|
|
|
|
repoDir = flakeRoot.outPath + "/assets/conf/desktop/hypr/hyprshell";
|
|
|
|
|
|
|
|
cfgRon = repoDir + "/config.ron";
|
|
|
|
|
|
|
|
cssFile = repoDir + "/styles.css";
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
xdg.enable = true;
|
|
|
|
xdg.enable = true;
|
|
|
|
home.packages = [ pkgs.hyprshell ];
|
|
|
|
home.packages = [ pkgs.hyprshell ];
|
|
|
|
# Gebruik home.file voor echte bestanden (geen symlinks)
|
|
|
|
|
|
|
|
home.file.".config/hyprshell/config.ron" = {
|
|
|
|
|
|
|
|
source = lib.mkForce cfgRon;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
home.file.".config/hyprshell/styles.css" = {
|
|
|
|
|
|
|
|
source = lib.mkForce cssFile;
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
# Autostart (systemd user service)
|
|
|
|
# Autostart (systemd user service)
|
|
|
|
systemd.user.services.hyprshell = {
|
|
|
|
systemd.user.services.hyprshell = {
|
|
|
@@ -1914,22 +1792,18 @@ in
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
** Hyprland
|
|
|
|
** Hyprland
|
|
|
|
This configures the desktop environment along with the peripherals. The comments should explain whats happening.
|
|
|
|
This configures the desktop environment along with the peripherals. The comments should explain whats happening.
|
|
|
|
#+begin_src nix :tangle home/desktop/hyprland.nix :noweb tangle :mkdirp yes.
|
|
|
|
#+begin_src nix :tangle home/desktop/hyprland.nix :noweb tangle :mkdirp yes.
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
{ config, lib, pkgs, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
let
|
|
|
|
hyprConf = flakeRoot.outPath + "/assets/conf/desktop/hypr/hyprland.conf";
|
|
|
|
|
|
|
|
bindingsConf = flakeRoot.outPath + "/assets/conf/desktop/hypr/bindings.conf";
|
|
|
|
bindingsConf = flakeRoot.outPath + "/assets/conf/desktop/hypr/bindings.conf";
|
|
|
|
lidLockScript = flakeRoot.outPath + "/assets/conf/desktop/hypr/scripts/lid-lock.sh";
|
|
|
|
lidLockScript = flakeRoot.outPath + "/assets/conf/desktop/hypr/scripts/lid-lock.sh";
|
|
|
|
in
|
|
|
|
in
|
|
|
|
{
|
|
|
|
{
|
|
|
|
wayland.windowManager.hyprland = {
|
|
|
|
wayland.windowManager.hyprland = {
|
|
|
|
enable = true;
|
|
|
|
enable = true;
|
|
|
|
# Load base config + bindings from repo files
|
|
|
|
# Load bindings from repo files
|
|
|
|
extraConfig = ''
|
|
|
|
|
|
|
|
${builtins.readFile hyprConf}
|
|
|
|
|
|
|
|
# --- Repo keybindings ---
|
|
|
|
# --- Repo keybindings ---
|
|
|
|
${builtins.readFile bindingsConf}
|
|
|
|
${builtins.readFile bindingsConf}
|
|
|
|
'';
|
|
|
|
'';
|
|
|
@@ -1939,11 +1813,6 @@ in
|
|
|
|
];
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
# Gebruik home.file voor echte bestanden (geen symlinks)
|
|
|
|
|
|
|
|
home.file.".config/hypr/scripts/lid-lock.sh" = {
|
|
|
|
|
|
|
|
source = lib.mkForce lidLockScript;
|
|
|
|
|
|
|
|
executable = true;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
xdg.portal = {
|
|
|
|
xdg.portal = {
|
|
|
|
enable = true;
|
|
|
|
enable = true;
|
|
|
|
extraPortals = with pkgs; [
|
|
|
|
extraPortals = with pkgs; [
|
|
|
@@ -1974,17 +1843,11 @@ let
|
|
|
|
if inputs != null && inputs ? elephant
|
|
|
|
if inputs != null && inputs ? elephant
|
|
|
|
then inputs.elephant.packages.${pkgs.system}.default
|
|
|
|
then inputs.elephant.packages.${pkgs.system}.default
|
|
|
|
else pkgs.elephant;
|
|
|
|
else pkgs.elephant;
|
|
|
|
sessionTarget = "graphical-session.target";
|
|
|
|
sessionTarget = "graphical-session.target";;
|
|
|
|
# All theme files now live here
|
|
|
|
|
|
|
|
repoThemesDir = flakeRoot.outPath + "/assets/conf/desktop/walker";
|
|
|
|
|
|
|
|
in
|
|
|
|
in
|
|
|
|
{
|
|
|
|
{
|
|
|
|
xdg.enable = true;
|
|
|
|
xdg.enable = true;
|
|
|
|
home.packages = [ walkerPkg elephantPkg ];
|
|
|
|
home.packages = [ walkerPkg elephantPkg ];
|
|
|
|
# ~/.config/walker/themes/*
|
|
|
|
|
|
|
|
xdg.configFile."walker/themes/frosted/default.css".source = lib.mkForce (repoThemesDir + "/themes/frosted/default.css");
|
|
|
|
|
|
|
|
xdg.configFile."walker/themes/frosted/style.css".source = lib.mkForce (repoThemesDir + "/themes/frosted/style.css");
|
|
|
|
|
|
|
|
xdg.configFile."walker/config.toml".source = lib.mkForce (repoThemesDir + "/config.toml");
|
|
|
|
|
|
|
|
# xdg.configFile."walker/themes/default.html".source = lib.mkForce repoThemesDir + "/default.html";
|
|
|
|
# xdg.configFile."walker/themes/default.html".source = lib.mkForce repoThemesDir + "/default.html";
|
|
|
|
# (services unchanged)
|
|
|
|
# (services unchanged)
|
|
|
|
systemd.user.services.elephant = { /* ... your existing service ... */ };
|
|
|
|
systemd.user.services.elephant = { /* ... your existing service ... */ };
|
|
|
@@ -1992,11 +1855,6 @@ in
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Walker
|
|
|
|
|
|
|
|
[[https://github.com/abenz1267/walker][This]] is how I launch applications. It is bound to Win+Space in the ./asstes/conf/desktop/hypr/bindings.conf.
|
|
|
|
|
|
|
|
#+begin_src nix :tangle home/desktop/windowrules.nix :noweb tangle :mkdirp yes.
|
|
|
|
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
** Theme
|
|
|
|
** Theme
|
|
|
|
I use the [[https://catppuccin.com/][Catppuccin]] almost everywhere. The nix module integrates almost automatically everywhere (except gtk).
|
|
|
|
I use the [[https://catppuccin.com/][Catppuccin]] almost everywhere. The nix module integrates almost automatically everywhere (except gtk).
|
|
|
|
You'll notice the color values in multiple places outside this as well.
|
|
|
|
You'll notice the color values in multiple places outside this as well.
|
|
|
@@ -2049,8 +1907,8 @@ hyprexpo gets installed and configured
|
|
|
|
gaps_in = 5
|
|
|
|
gaps_in = 5
|
|
|
|
gaps_out = 20
|
|
|
|
gaps_out = 20
|
|
|
|
|
|
|
|
|
|
|
|
# Optional; comment out if you don't want it
|
|
|
|
# Comment out if you don't want it
|
|
|
|
# workspace_method = center current
|
|
|
|
workspace_method = center current
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
'';
|
|
|
@@ -2062,15 +1920,9 @@ hyprexpo gets installed and configured
|
|
|
|
Alacritty gets installed and configured
|
|
|
|
Alacritty gets installed and configured
|
|
|
|
#+begin_src nix :tangle home/dev/alacritty.nix :noweb tangle :mkdirp yes.
|
|
|
|
#+begin_src nix :tangle home/dev/alacritty.nix :noweb tangle :mkdirp yes.
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
|
|
|
|
repoAlacrittyConf = flakeRoot.outPath + "/assets/conf/dev/alacritty.toml";
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
xdg.enable = true;
|
|
|
|
xdg.enable = true;
|
|
|
|
programs.alacritty.enable = true;
|
|
|
|
programs.alacritty.enable = true;
|
|
|
|
# Override the config generated by programs.alacritty
|
|
|
|
|
|
|
|
xdg.configFile."alacritty/alacritty.toml".source = lib.mkForce repoAlacrittyConf;
|
|
|
|
|
|
|
|
catppuccin.alacritty.enable = true;
|
|
|
|
|
|
|
|
catppuccin.alacritty.flavor = "mocha";
|
|
|
|
catppuccin.alacritty.flavor = "mocha";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
@@ -2126,29 +1978,14 @@ All the miscellaneous dev tools on this computer.
|
|
|
|
Kitty gets installed and configured
|
|
|
|
Kitty gets installed and configured
|
|
|
|
#+begin_src nix :tangle home/dev/kitty.nix :noweb tangle :mkdirp yes.
|
|
|
|
#+begin_src nix :tangle home/dev/kitty.nix :noweb tangle :mkdirp yes.
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
let
|
|
|
|
|
|
|
|
catppuccinMochaConf =
|
|
|
|
|
|
|
|
builtins.readFile (flakeRoot.outPath + "/assets/conf/dev/terminal/Catppuccin-Mocha.conf");
|
|
|
|
|
|
|
|
# Your own keymaps / other settings (but we will NOT rely on it for opacity)
|
|
|
|
|
|
|
|
repoKittyConfText =
|
|
|
|
|
|
|
|
builtins.readFile (flakeRoot.outPath + "/assets/conf/dev/terminal/kitty.conf");
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
xdg.enable = true;
|
|
|
|
xdg.enable = true;
|
|
|
|
# Stable theme file so kitty.conf can include it without /nix/store paths
|
|
|
|
|
|
|
|
xdg.configFile."kitty/themes/Catppuccin-Mocha.conf".text = lib.mkForce catppuccinMochaConf;
|
|
|
|
|
|
|
|
programs.kitty = {
|
|
|
|
programs.kitty = {
|
|
|
|
enable = true;
|
|
|
|
enable = true;
|
|
|
|
# Home Manager generates ~/.config/kitty/kitty.conf; we append in-order:
|
|
|
|
|
|
|
|
# 1) include theme
|
|
|
|
|
|
|
|
# 2) your repo config (keymaps etc.)
|
|
|
|
|
|
|
|
# 3) force opacity LAST so it always wins
|
|
|
|
|
|
|
|
extraConfig = ''
|
|
|
|
extraConfig = ''
|
|
|
|
# 1) Theme first (stable path)
|
|
|
|
# 1) Theme first (stable path)
|
|
|
|
include themes/Catppuccin-Mocha.conf
|
|
|
|
include themes/Catppuccin-Mocha.conf
|
|
|
|
# 2) Your repo config (may also include theme; harmless if duplicated)
|
|
|
|
# 2) Force transparency last (wins)
|
|
|
|
${repoKittyConfText}
|
|
|
|
|
|
|
|
# 3) Force transparency last (wins)
|
|
|
|
|
|
|
|
#background_opacity 0.60
|
|
|
|
#background_opacity 0.60
|
|
|
|
#dynamic_background_opacity yes
|
|
|
|
#dynamic_background_opacity yes
|
|
|
|
'';
|
|
|
|
'';
|
|
|
@@ -2157,7 +1994,7 @@ in
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|
** Shells
|
|
|
|
** Shells
|
|
|
|
The aliases mentioned in ./assets/conf/dev/terminal/shells.conf will be added to enabled shells
|
|
|
|
The aliases mentioned in ./assets/conf/dev/terminal/aliases.conf will be added to enabled shells
|
|
|
|
#+begin_src nix :tangle home/dev/shells.nix :noweb tangle :mkdirp yes
|
|
|
|
#+begin_src nix :tangle home/dev/shells.nix :noweb tangle :mkdirp yes
|
|
|
|
# shells.nix — Home-Manager module
|
|
|
|
# shells.nix — Home-Manager module
|
|
|
|
#
|
|
|
|
#
|
|
|
@@ -2182,7 +2019,7 @@ let
|
|
|
|
trim = lib.strings.trim;
|
|
|
|
trim = lib.strings.trim;
|
|
|
|
# ---------- minimal INI-ish parser (sections + raw lines) ----------
|
|
|
|
# ---------- minimal INI-ish parser (sections + raw lines) ----------
|
|
|
|
readMaybe = p: if builtins.pathExists p then builtins.readFile p else "";
|
|
|
|
readMaybe = p: if builtins.pathExists p then builtins.readFile p else "";
|
|
|
|
normalizeLine = l: trim (lib.replaceStrings [ "\r" ] [ "" ] l);
|
|
|
|
normalizeLine = l: trim (l`ib.replaceStrings [ "\r" ] [ "" ] l);
|
|
|
|
parseSections = text:
|
|
|
|
parseSections = text:
|
|
|
|
let
|
|
|
|
let
|
|
|
|
lines = map normalizeLine (lib.splitString "\n" text);
|
|
|
|
lines = map normalizeLine (lib.splitString "\n" text);
|
|
|
@@ -2402,11 +2239,6 @@ Zsh gets installed and configured
|
|
|
|
The configuration mentioned in ./assets/conf/dev/terminal/starship.toml will be added to enabled shells
|
|
|
|
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
|
|
|
|
#+begin_src nix :tangle home/dev/starship.nix :noweb tangle :mkdirp yes
|
|
|
|
{ config, pkgs, lib, flakeRoot, ... }:
|
|
|
|
{ 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;
|
|
|
|
xdg.enable = true;
|
|
|
|
programs.starship = {
|
|
|
|
programs.starship = {
|
|
|
@@ -2415,8 +2247,6 @@ in
|
|
|
|
enableBashIntegration = true;
|
|
|
|
enableBashIntegration = true;
|
|
|
|
enableFishIntegration = true;
|
|
|
|
enableFishIntegration = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
# Force the *actual conflicting option* (home.file."<abs path>".source)
|
|
|
|
|
|
|
|
home.file."${targetKey}".source = lib.mkForce repoStarshipToml;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#+end_src
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
|
|
|
|