Added lib.mkForce + backup = false

This commit is contained in:
2026-03-01 17:23:50 +01:00
parent 9e8c030646
commit 72006f36ea
47 changed files with 5121 additions and 5058 deletions
+1 -1
View File
@@ -2,5 +2,5 @@ use flake
watch_file .envrc.private watch_file .envrc.private
if [[ -f .envrc.private ]]; then if [[ -f .envrc.private ]]; then
source_env .envrc.private source_env .envrc.private
fi fi
+862 -841
View File
File diff suppressed because it is too large Load Diff
+42 -21
View File
@@ -1,4 +1,4 @@
gf#+OPTIONS: toc:nil broken-links:t f#+OPTIONS: toc:nil broken-links:t
#+PROPERTY: header-args :noweb yes :results silent :mkdirp yes #+PROPERTY: header-args :noweb yes :results silent :mkdirp yes
#+HTML: <div align="center"> #+HTML: <div align="center">
#+HTML: <div> #+HTML: <div>
@@ -1030,7 +1030,7 @@ in
}; };
# Deploy the config file for runtime visibility/debugging # Deploy the config file for runtime visibility/debugging
environment.etc."flatpak/flatpaks.conf".source = flatpakConfPath; environment.etc."flatpak/flatpaks.conf".source = lib.mkForce flatpakConfPath;
systemd.services.flatpak-sync = { systemd.services.flatpak-sync = {
description = "Install Flatpak apps listed in flatpaks.conf"; description = "Install Flatpak apps listed in flatpaks.conf";
@@ -1671,7 +1671,8 @@ in
{ {
# Ensure script exists in ~/.config/hypr/scripts/ # Ensure script exists in ~/.config/hypr/scripts/
xdg.configFile."${targetRel}" = { xdg.configFile."${targetRel}" = {
source = repoScript; source = lib.mkForce repoScript;
backup = lib.mkForce false;
executable = true; executable = true;
}; };
} }
@@ -1816,15 +1817,16 @@ in
}; };
# Hyprpaper config (hyprpaper reads this; it does NOT need to write it) # Hyprpaper config (hyprpaper reads this; it does NOT need to write it)
# `ipc = true` enables `hyprctl hyprpaper ...` commands. :contentReference[oaicite:0]{index=0} # `ipc = true` enables `hyprctl hyprpaper ...` commands. :contentReference[oaicite:0]{index=0}
xdg.configFile."hypr/hyprpaper.conf".text = '' xdg.configFile."hypr/hyprpaper.conf".text = lib.mkForce ''
ipc = true ipc = true
splash = false splash = false
''; '';
xdg.configFile."hypr/hyprpaper.conf".backup = lib.mkForce false;
# Workspace wallpaper daemon: listens to socket2, applies w-<id>=... mapping # Workspace wallpaper daemon: listens to socket2, applies w-<id>=... mapping
# Uses workspacev2 to get numeric workspace id. :contentReference[oaicite:1]{index=1} # Uses workspacev2 to get numeric workspace id. :contentReference[oaicite:1]{index=1}
xdg.configFile."${daemonRel}" = { xdg.configFile."${daemonRel}" = {
executable = true; executable = true;
text = '' text = lib.mkForce ''
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
: "''${XDG_RUNTIME_DIR:?XDG_RUNTIME_DIR not set}" : "''${XDG_RUNTIME_DIR:?XDG_RUNTIME_DIR not set}"
@@ -1907,13 +1909,14 @@ in
handle "''${line}" || true handle "''${line}" || true
done done
''; '';
backup = lib.mkForce false;
}; };
# CLI setter in the style of your inspiration script. # CLI setter in the style of your inspiration script.
# Usage: set-wallpaper.sh <workspace_id> <monitor> [wallpaper] # Usage: set-wallpaper.sh <workspace_id> <monitor> [wallpaper]
xdg.configFile."${setRel}" = { xdg.configFile."${setRel}" = {
executable = true; executable = true;
text = '' text = lib.mkForce ''
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
@@ -1956,6 +1959,7 @@ in
hyprctl hyprpaper wallpaper "''${mon}, ''${wp}, fill" >/dev/null hyprctl hyprpaper wallpaper "''${mon}, ''${wp}, fill" >/dev/null
fi fi
''; '';
backup = lib.mkForce false;
}; };
# Services # Services
@@ -2002,13 +2006,15 @@ in
programs.waybar.enable = true; programs.waybar.enable = true;
# Ensure config matches repo (HM-managed symlink, not user-editable) # Ensure config matches repo (HM-managed symlink, not user-editable)
xdg.configFile."waybar/config" = { xdg.configFile."waybar/config" = {
source = repoWaybarDir + "/config.jsonc"; source = lib.mkForce repoWaybarDir + "/config.jsonc";
backup = lib.mkForce false;
force = true; force = true;
}; };
# Override HM's internally-generated waybar-style.css derivation # Override HM's internally-generated waybar-style.css derivation
# and use your repo file instead. # and use your repo file instead.
xdg.configFile."waybar/style.css" = { xdg.configFile."waybar/style.css" = {
source = lib.mkForce (repoWaybarDir + "/style.css"); source = lib.mkForce (repoWaybarDir + "/style.css");
backup = lib.mkForce false;
force = true; force = true;
}; };
# Prevent HM from also trying to generate style content via programs.waybar.style # Prevent HM from also trying to generate style content via programs.waybar.style
@@ -2029,8 +2035,10 @@ let
in in
{ {
home.packages = [ pkgs.hyprlock ]; home.packages = [ pkgs.hyprlock ];
xdg.configFile."hypr/lock.png".source = lockPngSrc; xdg.configFile."hypr/lock.png".source = lib.mkForce lockPngSrc;
xdg.configFile."hypr/hyprlock.conf".source = hyprlockConf; xdg.configFile."hypr/lock.png".backup = lib.mkForce false;
xdg.configFile."hypr/hyprlock.conf".source = lib.mkForce hyprlockConf;
xdg.configFile."hypr/hyprlock.conf".backup = lib.mkForce false;
} }
#+end_src #+end_src
@@ -2043,7 +2051,8 @@ let
in in
{ {
home.packages = [ pkgs.hypridle ]; home.packages = [ pkgs.hypridle ];
xdg.configFile."hypr/hypridle.conf".source = hypridleConf; xdg.configFile."hypr/hypridle.conf".source = lib.mkForce hypridleConf;
xdg.configFile."hypr/hypridle.conf".backup = lib.mkForce false ;
} }
#+end_src #+end_src
@@ -2082,18 +2091,21 @@ in
''; '';
}; };
# Copy repo configs/scripts into ~/.config # Copy repo configs/scripts into ~/.config
xdg.configFile."${targetRel}".source = repoConf; xdg.configFile."${targetRel}".source = lib.mkForce repoConf;
xdg.configFile."${targetRel}".backup = lib.mkForce false;
xdg.configFile."${targetOverflowRel}" = { xdg.configFile."${targetOverflowRel}" = {
source = repoOverflowScript; source = lib.mkForce repoOverflowScript;
backup = lib.mkForce false;
executable = true; # makes it chmod +x executable = true; # makes it chmod +x
}; };
xdg.configFile."${targetPerMonitor}" = { xdg.configFile."${targetPerMonitor}" = {
source = repoPerMonitorScript; source = lib.mkForce repoPerMonitorScript;
backup = lib.mkForce false;
executable = true; # makes it chmod +x executable = true; # makes it chmod +x
}; };
xdg.configFile."${targetSwitchScript}" = { xdg.configFile."${targetSwitchScript}" = {
source = repoSwitchScript; source = lib.mkForce repoSwitchScript;
backup = lib.mkForce false;
executable = true; # makes it chmod +x executable = true; # makes it chmod +x
}; };
} }
@@ -2113,8 +2125,10 @@ in
xdg.enable = true; xdg.enable = true;
home.packages = [ pkgs.hyprshell ]; home.packages = [ pkgs.hyprshell ];
# Link repo -> ~/.config/hyprshell/... # Link repo -> ~/.config/hyprshell/...
xdg.configFile."hyprshell/config.ron".source = cfgRon; xdg.configFile."hyprshell/config.ron".source = lib.mkForce cfgRon;
xdg.configFile."hyprshell/styles.css".source = cssFile; xdg.configFile."hyprshell/config.ron".backup = lib.mkForce false;
xdg.configFile."hyprshell/styles.css".source = lib.mkForce cssFile;
xdg.configFile."hyprshell/styles.css".backup = lib.mkForce false;
# Autostart (systemd user service) # Autostart (systemd user service)
systemd.user.services.hyprshell = { systemd.user.services.hyprshell = {
Unit = { Unit = {
@@ -2160,7 +2174,8 @@ in
}; };
xdg.configFile."hypr/scripts/lid-lock.sh" = { xdg.configFile."hypr/scripts/lid-lock.sh" = {
source = flakeRoot + "/assets/conf/desktop/hypr/scripts/lid-lock.sh"; source = lib.mkForce flakeRoot + "/assets/conf/desktop/hypr/scripts/lid-lock.sh";
backup = lib.mkForce false;
executable = true; executable = true;
}; };
xdg.portal = { xdg.portal = {
@@ -2201,10 +2216,14 @@ in
xdg.enable = true; xdg.enable = true;
home.packages = [ walkerPkg elephantPkg ]; home.packages = [ walkerPkg elephantPkg ];
# ~/.config/walker/themes/* # ~/.config/walker/themes/*
xdg.configFile."walker/themes/frosted/default.css".source = repoThemesDir + "/themes/frosted/default.css"; xdg.configFile."walker/themes/frosted/default.css".source = lib.mkForce repoThemesDir + "/themes/frosted/default.css";
xdg.configFile."walker/themes/frosted/default.css".backup = lib.mkForce false;
xdg.configFile."walker/themes/frosted/style.css".source = repoThemesDir + "/themes/frosted/style.css"; xdg.configFile."walker/themes/frosted/style.css".source = repoThemesDir + "/themes/frosted/style.css";
xdg.configFile."walker/themes/frosted/style.css".backup = lib.mkForce false;
xdg.configFile."walker/config.toml".source = repoThemesDir + "/config.toml"; xdg.configFile."walker/config.toml".source = repoThemesDir + "/config.toml";
# xdg.configFile."walker/themes/default.html".source = repoThemesDir + "/default.html"; xdg.configFile."walker/config.toml".backup = lib.mkForce false;
# xdg.configFile."walker/themes/default.html".source = lib.mkForce repoThemesDir + "/default.html";
# xdg.configFile."walker/themes/default.html".backup = lib.mkForce false;
# (services unchanged) # (services unchanged)
systemd.user.services.elephant = { /* ... your existing service ... */ }; systemd.user.services.elephant = { /* ... your existing service ... */ };
systemd.user.services.walker = { /* ... your existing service ... */ }; systemd.user.services.walker = { /* ... your existing service ... */ };
@@ -2299,6 +2318,7 @@ in
programs.alacritty.enable = true; programs.alacritty.enable = true;
# Override the config generated by programs.alacritty # Override the config generated by programs.alacritty
xdg.configFile."alacritty/alacritty.toml".source = lib.mkForce repoAlacrittyConf; xdg.configFile."alacritty/alacritty.toml".source = lib.mkForce repoAlacrittyConf;
xdg.configFile."alacritty/alacritty.toml".backup = lib.mkForce false
catppuccin.alacritty.enable = true; catppuccin.alacritty.enable = true;
catppuccin.alacritty.flavor = "mocha"; catppuccin.alacritty.flavor = "mocha";
} }
@@ -2365,7 +2385,8 @@ in
{ {
xdg.enable = true; xdg.enable = true;
# Stable theme file so kitty.conf can include it without /nix/store paths # Stable theme file so kitty.conf can include it without /nix/store paths
xdg.configFile."kitty/themes/Catppuccin-Mocha.conf".text = catppuccinMochaConf; xdg.configFile."kitty/themes/Catppuccin-Mocha.conf".text = lib.mkForce catppuccinMochaConf;
xdg.configFile."kitty/themes/Catppuccin-Mocha.conf".backup = lib.mkForce false;
programs.kitty = { programs.kitty = {
enable = true; enable = true;
# Home Manager generates ~/.config/kitty/kitty.conf; we append in-order: # Home Manager generates ~/.config/kitty/kitty.conf; we append in-order:
@@ -86,7 +86,7 @@ in
}; };
# Deploy the config file for runtime visibility/debugging # Deploy the config file for runtime visibility/debugging
environment.etc."flatpak/flatpaks.conf".source = flatpakConfPath; environment.etc."flatpak/flatpaks.conf".source = lib.mkForce flatpakConfPath;
systemd.services.flatpak-sync = { systemd.services.flatpak-sync = {
description = "Install Flatpak apps listed in flatpaks.conf"; description = "Install Flatpak apps listed in flatpaks.conf";
+17 -17
View File
@@ -1,24 +1,24 @@
{ user, ... } : { user, ... } :
let let
locale = user.locale; locale = user.locale;
defaultLocale = "nl_NL.UTF-8"; defaultLocale = "nl_NL.UTF-8";
in in
{ {
# Set your time zone. # Set your time zone.
time.timeZone = "Europe/Amsterdam"; time.timeZone = "Europe/Amsterdam";
# Select internationalisation properties. # Select internationalisation properties.
i18n.defaultLocale = defaultLocale; i18n.defaultLocale = defaultLocale;
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
LC_ADDRESS = locale; LC_ADDRESS = locale;
LC_IDENTIFICATION = locale; LC_IDENTIFICATION = locale;
LC_MEASUREMENT = locale; LC_MEASUREMENT = locale;
LC_MONETARY = locale; LC_MONETARY = locale;
LC_NAME = locale; LC_NAME = locale;
LC_NUMERIC = locale; LC_NUMERIC = locale;
LC_PAPER = locale; LC_PAPER = locale;
LC_TELEPHONE = locale; LC_TELEPHONE = locale;
LC_TIME = defaultLocale; LC_TIME = defaultLocale;
}; };
} }
@@ -1,14 +1,14 @@
{ pkgs, user, ... } : { pkgs, user, ... } :
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
tuigreet tuigreet
]; ];
services.greetd = { services.greetd = {
enable = true; enable = true;
settings = { settings = {
default_session = { default_session = {
command = pkgs.lib.mkForce "${pkgs.tuigreet}/bin/tuigreet --remember --time --time-format '%I:%M %p | %a %h | %F'"; command = pkgs.lib.mkForce "${pkgs.tuigreet}/bin/tuigreet --remember --time --time-format '%I:%M %p | %a %h | %F'";
}; };
}; };
}; };
} }
@@ -1,38 +1,38 @@
{ pkgs, user, ... } : { pkgs, user, ... } :
{ {
nix.settings = { nix.settings = {
# enable flakes # enable flakes
experimental-features = ["nix-command" "flakes"]; experimental-features = ["nix-command" "flakes"];
# add a cache that speed up new applications by downloading binaries # add a cache that speed up new applications by downloading binaries
# from the trusted cache instead of compiling from sourcer # from the trusted cache instead of compiling from sourcer
substituters = [ substituters = [
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
]; ];
# trust the cache public key # trust the cache public key
trusted-public-keys = [ trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
]; ];
}; };
# allow proprietary software on this machine. I'm not a purist. # allow proprietary software on this machine. I'm not a purist.
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
# unityhub depends on this... for now # unityhub depends on this... for now
nixpkgs.config.permittedInsecurePackages = [ "libxml2-2.13.8" ]; nixpkgs.config.permittedInsecurePackages = [ "libxml2-2.13.8" ];
# this declares how often old configurations are cleared up. # this declares how often old configurations are cleared up.
# i cleanup anything older than a week, every week. # i cleanup anything older than a week, every week.
nix.gc = { nix.gc = {
automatic = true; automatic = true;
options = "--delete-older-than 7d"; options = "--delete-older-than 7d";
dates = "weekly"; dates = "weekly";
}; };
programs = { programs = {
# command line utility that makes applying changes easy and pretty # command line utility that makes applying changes easy and pretty
nh = { nh = {
enable = true; enable = true;
flake = "/home/${user.username}/system"; flake = "/home/${user.username}/system";
}; };
}; };
} }
@@ -1,23 +1,23 @@
{ user, ...} : { user, ...} :
{ {
services = { services = {
blueman.enable = true; # bluetooth manager blueman.enable = true; # bluetooth manager
fwupd.enable = true; # firmware updating service fwupd.enable = true; # firmware updating service
fstrim.enable = true; # ssd maintenance service fstrim.enable = true; # ssd maintenance service
thermald.enable = true; # thermal regulation service thermald.enable = true; # thermal regulation service
printing.enable = true; # printing services, cups printing.enable = true; # printing services, cups
gnome.gnome-keyring.enable = true; # keyring gnome.gnome-keyring.enable = true; # keyring
flatpak.enable = true; # allow installing things from flatpaks flatpak.enable = true; # allow installing things from flatpaks
#flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo #flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# printer discovery # printer discovery
avahi = { avahi = {
enable = true; enable = true;
nssmdns4 = true; nssmdns4 = true;
openFirewall = true; openFirewall = true;
}; };
}; };
virtualisation.docker.enable = true; # enable docker virtualisation.docker.enable = true; # enable docker
users.users.${user.username}.extraGroups = [ "docker" ]; # add self to docker user group users.users.${user.username}.extraGroups = [ "docker" ]; # add self to docker user group
} }
+28 -28
View File
@@ -1,42 +1,42 @@
{ {
description = "Henrov's nixos configuration"; description = "Henrov's nixos configuration";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
emacs-overlay = { emacs-overlay = {
url = "github:nix-community/emacs-overlay"; url = "github:nix-community/emacs-overlay";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
catppuccin = { catppuccin = {
url = "github:catppuccin/nix"; url = "github:catppuccin/nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
zen-browser = { zen-browser = {
url = "github:youwen5/zen-browser-flake"; url = "github:youwen5/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = inputs@{ outputs = inputs@{
nixpkgs, nixpkgs,
home-manager, home-manager,
emacs-overlay, emacs-overlay,
catppuccin, catppuccin,
... ...
}: }:
let let
user = import ./user.nix; user = import ./user.nix;
lib = nixpkgs.lib; lib = nixpkgs.lib;
machines = [ machines = [
"traveldroid" "traveldroid"
]; ];
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit (user) system; inherit (user) system;
}; };
in in
{ {
nixosConfigurations = builtins.listToAttrs ( nixosConfigurations = builtins.listToAttrs (
builtins.map (machine: { builtins.map (machine: {
name = machine; name = machine;
@@ -84,6 +84,6 @@
nixfmt-rfc-style nixfmt-rfc-style
]; ];
}; };
}; };
} }
+12 -12
View File
@@ -1,23 +1,23 @@
{ pkgs, lib, user, config, ...} : { pkgs, lib, user, config, ...} :
{ {
nixpkgs.hostPlatform = lib.mkDefault user.system; # x86_64-linux nixpkgs.hostPlatform = lib.mkDefault user.system; # x86_64-linux
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; # enable power saving on the cpu powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; # enable power saving on the cpu
# update cpu microcode with firmware that allows redistribution # update cpu microcode with firmware that allows redistribution
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware = { hardware = {
# always enable bluetooth # always enable bluetooth
bluetooth.enable = true; bluetooth.enable = true;
# always enable graphics drivers and enable a bunch of layers for it (including vulkan validation) # always enable graphics drivers and enable a bunch of layers for it (including vulkan validation)
graphics = { graphics = {
enable = true; enable = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
vulkan-validation-layers # helps catch and debug vulkan crashes vulkan-validation-layers # helps catch and debug vulkan crashes
]; ];
}; };
}; };
hardware.enableAllFirmware = true; # enable all firmware regardless of license hardware.enableAllFirmware = true; # enable all firmware regardless of license
} }
+12 -12
View File
@@ -1,9 +1,9 @@
{ pkgs, ...}: { pkgs, ...}:
{ {
gtk = { gtk = {
enable = true; enable = true;
colorScheme = "dark"; colorScheme = "dark";
theme = { theme = {
name = "Catppuccin-GTK-Grey-Dark-Compact"; name = "Catppuccin-GTK-Grey-Dark-Compact";
package = (pkgs.magnetic-catppuccin-gtk.override { package = (pkgs.magnetic-catppuccin-gtk.override {
accent = [ "grey" ]; accent = [ "grey" ];
@@ -11,12 +11,12 @@
tweaks = [ "black" ]; tweaks = [ "black" ];
size = "compact"; size = "compact";
}); });
}; };
iconTheme.name = "Papirus-Dark"; iconTheme.name = "Papirus-Dark";
}; };
catppuccin.enable = true; catppuccin.enable = true;
catppuccin.flavor = "mocha"; catppuccin.flavor = "mocha";
catppuccin.accent = "blue"; catppuccin.accent = "blue";
catppuccin.gtk.icon.enable = true; catppuccin.gtk.icon.enable = true;
catppuccin.cursors.enable = true; catppuccin.cursors.enable = true;
} }
+2 -1
View File
@@ -4,5 +4,6 @@ let
in in
{ {
home.packages = [ pkgs.hypridle ]; home.packages = [ pkgs.hypridle ];
xdg.configFile."hypr/hypridle.conf".source = hypridleConf; xdg.configFile."hypr/hypridle.conf".source = lib.mkForce hypridleConf;
xdg.configFile."hypr/hypridle.conf".backup = lib.mkForce false ;
} }
+2 -1
View File
@@ -20,7 +20,8 @@ in
}; };
xdg.configFile."hypr/scripts/lid-lock.sh" = { xdg.configFile."hypr/scripts/lid-lock.sh" = {
source = flakeRoot + "/assets/conf/desktop/hypr/scripts/lid-lock.sh"; source = lib.mkForce flakeRoot + "/assets/conf/desktop/hypr/scripts/lid-lock.sh";
backup = lib.mkForce false;
executable = true; executable = true;
}; };
xdg.portal = { xdg.portal = {
+4 -2
View File
@@ -5,6 +5,8 @@ let
in in
{ {
home.packages = [ pkgs.hyprlock ]; home.packages = [ pkgs.hyprlock ];
xdg.configFile."hypr/lock.png".source = lockPngSrc; xdg.configFile."hypr/lock.png".source = lib.mkForce lockPngSrc;
xdg.configFile."hypr/hyprlock.conf".source = hyprlockConf; xdg.configFile."hypr/lock.png".backup = lib.mkForce false;
xdg.configFile."hypr/hyprlock.conf".source = lib.mkForce hyprlockConf;
xdg.configFile."hypr/hyprlock.conf".backup = lib.mkForce false;
} }
+8 -5
View File
@@ -30,18 +30,21 @@ in
''; '';
}; };
# Copy repo configs/scripts into ~/.config # Copy repo configs/scripts into ~/.config
xdg.configFile."${targetRel}".source = repoConf; xdg.configFile."${targetRel}".source = lib.mkForce repoConf;
xdg.configFile."${targetRel}".backup = lib.mkForce false;
xdg.configFile."${targetOverflowRel}" = { xdg.configFile."${targetOverflowRel}" = {
source = repoOverflowScript; source = lib.mkForce repoOverflowScript;
backup = lib.mkForce false;
executable = true; # makes it chmod +x executable = true; # makes it chmod +x
}; };
xdg.configFile."${targetPerMonitor}" = { xdg.configFile."${targetPerMonitor}" = {
source = repoPerMonitorScript; source = lib.mkForce repoPerMonitorScript;
backup = lib.mkForce false;
executable = true; # makes it chmod +x executable = true; # makes it chmod +x
}; };
xdg.configFile."${targetSwitchScript}" = { xdg.configFile."${targetSwitchScript}" = {
source = repoSwitchScript; source = lib.mkForce repoSwitchScript;
backup = lib.mkForce false;
executable = true; # makes it chmod +x executable = true; # makes it chmod +x
}; };
} }
+4 -2
View File
@@ -9,8 +9,10 @@ in
xdg.enable = true; xdg.enable = true;
home.packages = [ pkgs.hyprshell ]; home.packages = [ pkgs.hyprshell ];
# Link repo -> ~/.config/hyprshell/... # Link repo -> ~/.config/hyprshell/...
xdg.configFile."hyprshell/config.ron".source = cfgRon; xdg.configFile."hyprshell/config.ron".source = lib.mkForce cfgRon;
xdg.configFile."hyprshell/styles.css".source = cssFile; xdg.configFile."hyprshell/config.ron".backup = lib.mkForce false;
xdg.configFile."hyprshell/styles.css".source = lib.mkForce cssFile;
xdg.configFile."hyprshell/styles.css".backup = lib.mkForce false;
# Autostart (systemd user service) # Autostart (systemd user service)
systemd.user.services.hyprshell = { systemd.user.services.hyprshell = {
Unit = { Unit = {
+2 -1
View File
@@ -7,7 +7,8 @@ in
{ {
# Ensure script exists in ~/.config/hypr/scripts/ # Ensure script exists in ~/.config/hypr/scripts/
xdg.configFile."${targetRel}" = { xdg.configFile."${targetRel}" = {
source = repoScript; source = lib.mkForce repoScript;
backup = lib.mkForce false;
executable = true; executable = true;
}; };
} }
+6 -2
View File
@@ -16,10 +16,14 @@ in
xdg.enable = true; xdg.enable = true;
home.packages = [ walkerPkg elephantPkg ]; home.packages = [ walkerPkg elephantPkg ];
# ~/.config/walker/themes/* # ~/.config/walker/themes/*
xdg.configFile."walker/themes/frosted/default.css".source = repoThemesDir + "/themes/frosted/default.css"; xdg.configFile."walker/themes/frosted/default.css".source = lib.mkForce repoThemesDir + "/themes/frosted/default.css";
xdg.configFile."walker/themes/frosted/default.css".backup = lib.mkForce false;
xdg.configFile."walker/themes/frosted/style.css".source = repoThemesDir + "/themes/frosted/style.css"; xdg.configFile."walker/themes/frosted/style.css".source = repoThemesDir + "/themes/frosted/style.css";
xdg.configFile."walker/themes/frosted/style.css".backup = lib.mkForce false;
xdg.configFile."walker/config.toml".source = repoThemesDir + "/config.toml"; xdg.configFile."walker/config.toml".source = repoThemesDir + "/config.toml";
# xdg.configFile."walker/themes/default.html".source = repoThemesDir + "/default.html"; xdg.configFile."walker/config.toml".backup = lib.mkForce false;
# xdg.configFile."walker/themes/default.html".source = lib.mkForce repoThemesDir + "/default.html";
# xdg.configFile."walker/themes/default.html".backup = lib.mkForce false;
# (services unchanged) # (services unchanged)
systemd.user.services.elephant = { /* ... your existing service ... */ }; systemd.user.services.elephant = { /* ... your existing service ... */ };
systemd.user.services.walker = { /* ... your existing service ... */ }; systemd.user.services.walker = { /* ... your existing service ... */ };
+3 -1
View File
@@ -6,13 +6,15 @@ in
programs.waybar.enable = true; programs.waybar.enable = true;
# Ensure config matches repo (HM-managed symlink, not user-editable) # Ensure config matches repo (HM-managed symlink, not user-editable)
xdg.configFile."waybar/config" = { xdg.configFile."waybar/config" = {
source = repoWaybarDir + "/config.jsonc"; source = lib.mkForce repoWaybarDir + "/config.jsonc";
backup = lib.mkForce false;
force = true; force = true;
}; };
# Override HM's internally-generated waybar-style.css derivation # Override HM's internally-generated waybar-style.css derivation
# and use your repo file instead. # and use your repo file instead.
xdg.configFile."waybar/style.css" = { xdg.configFile."waybar/style.css" = {
source = lib.mkForce (repoWaybarDir + "/style.css"); source = lib.mkForce (repoWaybarDir + "/style.css");
backup = lib.mkForce false;
force = true; force = true;
}; };
# Prevent HM from also trying to generate style content via programs.waybar.style # Prevent HM from also trying to generate style content via programs.waybar.style
@@ -30,15 +30,16 @@ in
}; };
# Hyprpaper config (hyprpaper reads this; it does NOT need to write it) # Hyprpaper config (hyprpaper reads this; it does NOT need to write it)
# `ipc = true` enables `hyprctl hyprpaper ...` commands. :contentReference[oaicite:0]{index=0} # `ipc = true` enables `hyprctl hyprpaper ...` commands. :contentReference[oaicite:0]{index=0}
xdg.configFile."hypr/hyprpaper.conf".text = '' xdg.configFile."hypr/hyprpaper.conf".text = lib.mkForce ''
ipc = true ipc = true
splash = false splash = false
''; '';
xdg.configFile."hypr/hyprpaper.conf".backup = lib.mkForce false;
# Workspace wallpaper daemon: listens to socket2, applies w-<id>=... mapping # Workspace wallpaper daemon: listens to socket2, applies w-<id>=... mapping
# Uses workspacev2 to get numeric workspace id. :contentReference[oaicite:1]{index=1} # Uses workspacev2 to get numeric workspace id. :contentReference[oaicite:1]{index=1}
xdg.configFile."${daemonRel}" = { xdg.configFile."${daemonRel}" = {
executable = true; executable = true;
text = '' text = lib.mkForce ''
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
: "''${XDG_RUNTIME_DIR:?XDG_RUNTIME_DIR not set}" : "''${XDG_RUNTIME_DIR:?XDG_RUNTIME_DIR not set}"
@@ -121,13 +122,14 @@ in
handle "''${line}" || true handle "''${line}" || true
done done
''; '';
backup = lib.mkForce false;
}; };
# CLI setter in the style of your inspiration script. # CLI setter in the style of your inspiration script.
# Usage: set-wallpaper.sh <workspace_id> <monitor> [wallpaper] # Usage: set-wallpaper.sh <workspace_id> <monitor> [wallpaper]
xdg.configFile."${setRel}" = { xdg.configFile."${setRel}" = {
executable = true; executable = true;
text = '' text = lib.mkForce ''
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
@@ -170,6 +172,7 @@ in
hyprctl hyprpaper wallpaper "''${mon}, ''${wp}, fill" >/dev/null hyprctl hyprpaper wallpaper "''${mon}, ''${wp}, fill" >/dev/null
fi fi
''; '';
backup = lib.mkForce false;
}; };
# Services # Services
+1
View File
@@ -7,6 +7,7 @@ in
programs.alacritty.enable = true; programs.alacritty.enable = true;
# Override the config generated by programs.alacritty # Override the config generated by programs.alacritty
xdg.configFile."alacritty/alacritty.toml".source = lib.mkForce repoAlacrittyConf; xdg.configFile."alacritty/alacritty.toml".source = lib.mkForce repoAlacrittyConf;
xdg.configFile."alacritty/alacritty.toml".backup = lib.mkForce false
catppuccin.alacritty.enable = true; catppuccin.alacritty.enable = true;
catppuccin.alacritty.flavor = "mocha"; catppuccin.alacritty.flavor = "mocha";
} }
+20 -20
View File
@@ -1,10 +1,10 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
# install with tree sitter enabled # install with tree sitter enabled
package = (pkgs.emacs-pgtk.override { withTreeSitter = true; }); package = (pkgs.emacs-pgtk.override { withTreeSitter = true; });
extraPackages = epkgs: [ extraPackages = epkgs: [
# also install all tree sitter grammars # also install all tree sitter grammars
epkgs.manualPackages.treesit-grammars.with-all-grammars epkgs.manualPackages.treesit-grammars.with-all-grammars
epkgs.nerd-icons # nerd fonts support epkgs.nerd-icons # nerd fonts support
@@ -45,23 +45,23 @@
epkgs.sideline # mainly for flymake errors on the side epkgs.sideline # mainly for flymake errors on the side
epkgs.sideline-flymake # mainly for flymake errors on the side epkgs.sideline-flymake # mainly for flymake errors on the side
epkgs.sideline-eglot # mainly for flymake errors on the side epkgs.sideline-eglot # mainly for flymake errors on the side
]; ];
}; };
home.sessionVariables = { home.sessionVariables = {
EDITOR = "emacs"; EDITOR = "emacs";
XDG_SCREENSHOTS_DIR = "~/screenshots"; XDG_SCREENSHOTS_DIR = "~/screenshots";
}; };
home.file = { home.file = {
emacs-init = { emacs-init = {
source = ./early-init.el; source = ./early-init.el;
target = ".emacs.d/early-init.el"; target = ".emacs.d/early-init.el";
}; };
emacs = { emacs = {
source = ./init.el; source = ./init.el;
target = ".emacs.d/init.el"; target = ".emacs.d/init.el";
}; };
}; };
services.nextcloud-client = { services.nextcloud-client = {
enable = true; enable = true;
}; };
} }
+74 -74
View File
@@ -1,11 +1,11 @@
;;; package --- early init -*- lexical-binding: t -*- ;;; package --- early init -*- lexical-binding: t -*-
;;; Commentary: ;;; Commentary:
;;; Prevents white flash and better Emacs defaults ;;; Prevents white flash and better Emacs defaults
;;; Code: ;;; Code:
(set-language-environment "UTF-8") (set-language-environment "UTF-8")
(setq-default (setq-default
default-frame-alist default-frame-alist
'((background-color . "#1e1e2e") '((background-color . "#1e1e2e")
(bottom-divider-width . 1) ; Thin horizontal window divider (bottom-divider-width . 1) ; Thin horizontal window divider
(foreground-color . "#bac2de") ; Default foreground color (foreground-color . "#bac2de") ; Default foreground color
(fullscreen . maximized) ; Maximize the window by default (fullscreen . maximized) ; Maximize the window by default
@@ -17,76 +17,76 @@
(tool-bar-lines . 0) ; No tool bar (tool-bar-lines . 0) ; No tool bar
(undecorated . t) ; Remove extraneous X decorations (undecorated . t) ; Remove extraneous X decorations
(vertical-scroll-bars . nil)) ; No vertical scroll-bars (vertical-scroll-bars . nil)) ; No vertical scroll-bars
user-full-name "Henrov henrov" ; ME! user-full-name "Henrov henrov" ; ME!
;; memory configuration ;; memory configuration
;; Higher garbage collection threshold, prevents frequent gc locks, reset later ;; Higher garbage collection threshold, prevents frequent gc locks, reset later
gc-cons-threshold most-positive-fixnum gc-cons-threshold most-positive-fixnum
;; Ignore warnings for (obsolete) elisp compilations ;; Ignore warnings for (obsolete) elisp compilations
byte-compile-warnings '(not obsolete) byte-compile-warnings '(not obsolete)
;; And other log types completely ;; And other log types completely
warning-suppress-log-types '((comp) (bytecomp)) warning-suppress-log-types '((comp) (bytecomp))
;; Large files are okay in the new millenium. ;; Large files are okay in the new millenium.
large-file-warning-threshold 100000000 large-file-warning-threshold 100000000
;; dont show garbage collection messages at startup, will reset later ;; dont show garbage collection messages at startup, will reset later
garbage-collection-messages nil garbage-collection-messages nil
;; native compilation ;; native compilation
package-native-compile t package-native-compile t
native-comp-warning-on-missing-source nil native-comp-warning-on-missing-source nil
native-comp-async-report-warnings-errors 'silent native-comp-async-report-warnings-errors 'silent
;; Read more based on system pipe capacity ;; Read more based on system pipe capacity
read-process-output-max (max (* 10240 10240) read-process-output-max) read-process-output-max (max (* 10240 10240) read-process-output-max)
;; scroll configuration ;; scroll configuration
scroll-margin 0 ; Lets scroll to the end of the margin scroll-margin 0 ; Lets scroll to the end of the margin
scroll-conservatively 100000 ; Never recenter the window scroll-conservatively 100000 ; Never recenter the window
scroll-preserve-screen-position 1 ; Scrolling back and forth scroll-preserve-screen-position 1 ; Scrolling back and forth
;; frame config ;; frame config
;; Improve emacs startup time by not resizing to adjust for custom settings ;; Improve emacs startup time by not resizing to adjust for custom settings
frame-inhibit-implied-resize t frame-inhibit-implied-resize t
;; Dont resize based on character height / width but to exact pixels ;; Dont resize based on character height / width but to exact pixels
frame-resize-pixelwise t frame-resize-pixelwise t
;; backups & files ;; backups & files
backup-directory-alist '(("." . "~/.backups/")) ; Don't clutter backup-directory-alist '(("." . "~/.backups/")) ; Don't clutter
backup-by-copying t ; Don't clobber symlinks backup-by-copying t ; Don't clobber symlinks
create-lockfiles nil ; Don't have temp files create-lockfiles nil ; Don't have temp files
delete-old-versions t ; Cleanup automatically delete-old-versions t ; Cleanup automatically
kept-new-versions 6 ; Update every few times kept-new-versions 6 ; Update every few times
kept-old-versions 2 ; And cleanup even more kept-old-versions 2 ; And cleanup even more
version-control t ; Version them backups version-control t ; Version them backups
delete-by-moving-to-trash t ; Dont delete, send to trash instead delete-by-moving-to-trash t ; Dont delete, send to trash instead
;; startup ;; startup
inhibit-startup-screen t ; I have already done the tutorial. Twice inhibit-startup-screen t ; I have already done the tutorial. Twice
inhibit-startup-message t ; I know I am ready inhibit-startup-message t ; I know I am ready
inhibit-startup-echo-area-message t ; Yep, still know it inhibit-startup-echo-area-message t ; Yep, still know it
initial-scratch-message nil ; I know it is the scratch buffer! initial-scratch-message nil ; I know it is the scratch buffer!
initial-buffer-choice nil initial-buffer-choice nil
inhibit-startup-buffer-menu t inhibit-startup-buffer-menu t
inhibit-x-resources t inhibit-x-resources t
initial-major-mode 'fundamental-mode initial-major-mode 'fundamental-mode
pgtk-wait-for-event-timeout 0.001 ; faster child frames pgtk-wait-for-event-timeout 0.001 ; faster child frames
ad-redefinition-action 'accept ; dont care about legacy things being redefined ad-redefinition-action 'accept ; dont care about legacy things being redefined
inhibit-compacting-font-caches t inhibit-compacting-font-caches t
;; tabs ;; tabs
tab-width 4 ; Always tab 4 spaces. tab-width 4 ; Always tab 4 spaces.
indent-tabs-mode nil ; Never use actual tabs. indent-tabs-mode nil ; Never use actual tabs.
;; rendering ;; rendering
cursor-in-non-selected-windows nil ; dont render cursors other windows cursor-in-non-selected-windows nil ; dont render cursors other windows
;; packages ;; packages
use-package-always-defer t use-package-always-defer t
load-prefer-newer t load-prefer-newer t
default-input-method nil default-input-method nil
use-dialog-box nil use-dialog-box nil
use-file-dialog nil use-file-dialog nil
use-package-expand-minimally t use-package-expand-minimally t
package-enable-at-startup nil package-enable-at-startup nil
use-package-enable-imenu-support t use-package-enable-imenu-support t
auto-mode-case-fold nil ; No second pass of case-insensitive search over auto-mode-alist. auto-mode-case-fold nil ; No second pass of case-insensitive search over auto-mode-alist.
package-archives '(("melpa" . "https://melpa.org/packages/") package-archives '(("melpa" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/") ("gnu" . "https://elpa.gnu.org/packages/")
("nongnu" . "https://elpa.nongnu.org/nongnu/") ("nongnu" . "https://elpa.nongnu.org/nongnu/")
("melpa-stable" . "https://stable.melpa.org/packages/")) ("melpa-stable" . "https://stable.melpa.org/packages/"))
package-archive-priorities '(("gnu" . 99) package-archive-priorities '(("gnu" . 99)
("nongnu" . 80) ("nongnu" . 80)
("melpa" . 70) ("melpa" . 70)
("melpa-stable" . 50)) ("melpa-stable" . 50))
) )
;;; early-init.el ends here ;;; early-init.el ends here
+252 -252
View File
@@ -1,9 +1,9 @@
;;; package --- Summary - My minimal Emacs init file -*- lexical-binding: t -*- ;;; package --- Summary - My minimal Emacs init file -*- lexical-binding: t -*-
;;; Commentary: ;;; Commentary:
;;; Simple Emacs setup I carry everywhere ;;; Simple Emacs setup I carry everywhere
;;; Code: ;;; Code:
(setq custom-file (locate-user-emacs-file "custom.el")) (setq custom-file (locate-user-emacs-file "custom.el"))
(load custom-file 'noerror) ;; no error on missing custom file (load custom-file 'noerror) ;; no error on missing custom file
@@ -11,73 +11,73 @@
(package-initialize) (package-initialize)
(defun reset-custom-vars () (defun reset-custom-vars ()
"Resets the custom variables that were set to crazy numbers" "Resets the custom variables that were set to crazy numbers"
(setopt gc-cons-threshold (* 1024 1024 100)) (setopt gc-cons-threshold (* 1024 1024 100))
(setopt garbage-collection-messages t)) (setopt garbage-collection-messages t))
(use-package emacs (use-package emacs
:custom :custom
(native-comp-async-query-on-exit t) (native-comp-async-query-on-exit t)
(read-answer-short t) (read-answer-short t)
(use-short-answers t) (use-short-answers t)
(enable-recursive-minibuffers t) (enable-recursive-minibuffers t)
(which-func-update-delay 1.0) (which-func-update-delay 1.0)
(visible-bell nil) (visible-bell nil)
(custom-buffer-done-kill t) (custom-buffer-done-kill t)
(whitespace-line-column nil) (whitespace-line-column nil)
(x-underline-at-descent-line t) (x-underline-at-descent-line t)
(imenu-auto-rescan t) (imenu-auto-rescan t)
(uniquify-buffer-name-style 'forward) (uniquify-buffer-name-style 'forward)
(confirm-nonexistent-file-or-buffer nil) (confirm-nonexistent-file-or-buffer nil)
(create-lockfiles nil) (create-lockfiles nil)
(make-backup-files nil) (make-backup-files nil)
(kill-do-not-save-duplicates t) (kill-do-not-save-duplicates t)
(sentence-end-double-space nil) (sentence-end-double-space nil)
(treesit-enabled-modes t) (treesit-enabled-modes t)
:init :init
;; base visual ;; base visual
(menu-bar-mode -1) ;; no menu bar (menu-bar-mode -1) ;; no menu bar
(toggle-scroll-bar -1) ;; no scroll bar (toggle-scroll-bar -1) ;; no scroll bar
(tool-bar-mode -1) ;; no tool bar either (tool-bar-mode -1) ;; no tool bar either
(blink-cursor-mode -1) ;; stop blinking (blink-cursor-mode -1) ;; stop blinking
;; font of the century ;; font of the century
(set-frame-font "Aporetic Sans Mono 12" nil t) (set-frame-font "Aporetic Sans Mono 12" nil t)
:bind :bind
(("C-<wheel-up>" . pixel-scroll-precision) ; dont zoom in please, just scroll (("C-<wheel-up>" . pixel-scroll-precision) ; dont zoom in please, just scroll
("C-<wheel-down>" . pixel-scroll-precision) ; dont zoom in either, just scroll ("C-<wheel-down>" . pixel-scroll-precision) ; dont zoom in either, just scroll
("C-x k" . kill-current-buffer)) ; kill the buffer, dont ask ("C-x k" . kill-current-buffer)) ; kill the buffer, dont ask
:hook :hook
(text-mode . delete-trailing-whitespace-mode) (text-mode . delete-trailing-whitespace-mode)
(prog-mode . delete-trailing-whitespace-mode) (prog-mode . delete-trailing-whitespace-mode)
(after-init . global-display-line-numbers-mode) ;; always show line numbers (after-init . global-display-line-numbers-mode) ;; always show line numbers
(after-init . column-number-mode) ;; column number in the mode line (after-init . column-number-mode) ;; column number in the mode line
(after-init . size-indication-mode) ;; file size in the mode line (after-init . size-indication-mode) ;; file size in the mode line
(after-init . pixel-scroll-precision-mode) ;; smooth mouse scroll (after-init . pixel-scroll-precision-mode) ;; smooth mouse scroll
(after-init . electric-pair-mode) ;; i mean ... parens should auto create (after-init . electric-pair-mode) ;; i mean ... parens should auto create
(after-init . reset-custom-vars) (after-init . reset-custom-vars)
) )
(use-package autorevert (use-package autorevert
:ensure nil :ensure nil
:custom :custom
(auto-revert-interval 3) (auto-revert-interval 3)
(auto-revert-remote-files nil) (auto-revert-remote-files nil)
(auto-revert-use-notify t) (auto-revert-use-notify t)
(auto-revert-avoid-polling nil) (auto-revert-avoid-polling nil)
(auto-revert-verbose t) (auto-revert-verbose t)
:hook :hook
(after-init . global-auto-revert-mode)) (after-init . global-auto-revert-mode))
(use-package recentf (use-package recentf
:ensure nil :ensure nil
:commands (recentf-mode recentf-cleanup) :commands (recentf-mode recentf-cleanup)
:hook :hook
(after-init . recentf-mode) (after-init . recentf-mode)
:custom :custom
(recentf-auto-cleanup 'never) (recentf-auto-cleanup 'never)
(recentf-exclude (recentf-exclude
(list "\\.tar$" "\\.tbz2$" "\\.tbz$" "\\.tgz$" "\\.bz2$" (list "\\.tar$" "\\.tbz2$" "\\.tbz$" "\\.tgz$" "\\.bz2$"
"\\.bz$" "\\.gz$" "\\.gzip$" "\\.xz$" "\\.zip$" "\\.bz$" "\\.gz$" "\\.gzip$" "\\.xz$" "\\.zip$"
"\\.7z$" "\\.rar$" "\\.7z$" "\\.rar$"
@@ -85,231 +85,231 @@
"\\.\\(?:gz\\|gif\\|svg\\|png\\|jpe?g\\|bmp\\|xpm\\)$" "\\.\\(?:gz\\|gif\\|svg\\|png\\|jpe?g\\|bmp\\|xpm\\)$"
"-autoloads\\.el$" "autoload\\.el$")) "-autoloads\\.el$" "autoload\\.el$"))
:config :config
;; A cleanup depth of -90 ensures that `recentf-cleanup' runs before ;; A cleanup depth of -90 ensures that `recentf-cleanup' runs before
;; `recentf-save-list', allowing stale entries to be removed before the list ;; `recentf-save-list', allowing stale entries to be removed before the list
;; is saved by `recentf-save-list', which is automatically added to ;; is saved by `recentf-save-list', which is automatically added to
;; `kill-emacs-hook' by `recentf-mode'. ;; `kill-emacs-hook' by `recentf-mode'.
(add-hook 'kill-emacs-hook #'recentf-cleanup -90)) (add-hook 'kill-emacs-hook #'recentf-cleanup -90))
(use-package savehist (use-package savehist
:ensure nil :ensure nil
:commands (savehist-mode savehist-save) :commands (savehist-mode savehist-save)
:hook :hook
(after-init . savehist-mode) (after-init . savehist-mode)
:custom :custom
(savehist-autosave-interval 600) (savehist-autosave-interval 600)
(savehist-additional-variables (savehist-additional-variables
'(kill-ring ; clipboard '(kill-ring ; clipboard
register-alist ; macros register-alist ; macros
mark-ring global-mark-ring ; marks mark-ring global-mark-ring ; marks
search-ring regexp-search-ring))) search-ring regexp-search-ring)))
(use-package hl-line (use-package hl-line
:ensure nil :ensure nil
:custom :custom
(hl-line-sticky-flag nil) (hl-line-sticky-flag nil)
(global-hl-line-sticky-flag nil) (global-hl-line-sticky-flag nil)
:hook :hook
(after-init . global-hl-line-mode)) (after-init . global-hl-line-mode))
(use-package saveplace (use-package saveplace
:ensure nil :ensure nil
:commands (save-place-mode save-place-local-mode) :commands (save-place-mode save-place-local-mode)
:hook :hook
(after-init . save-place-mode) (after-init . save-place-mode)
:custom :custom
(save-place-limit 400)) (save-place-limit 400))
(use-package nerd-icons (use-package nerd-icons
:custom :custom
;; disable bright icon colors ;; disable bright icon colors
(nerd-icons-color-icons nil))hells.nix (nerd-icons-color-icons nil))hells.nix
(use-package doom-modeline (use-package doom-modeline
:custom :custom
(inhibit-compacting-font-caches t) ;; speed (inhibit-compacting-font-caches t) ;; speed
(doom-modeline-buffer-file-name-style 'relative-from-project) (doom-modeline-buffer-file-name-style 'relative-from-project)
(doom-modeline-major-mode-icon nil) ;; distracting icons, no thank you (doom-modeline-major-mode-icon nil) ;; distracting icons, no thank you
(doom-modeline-buffer-encoding nil) ;; everything is utf-8 anyway (doom-modeline-buffer-encoding nil) ;; everything is utf-8 anyway
(doom-modeline-buffer-state-icon nil) ;; the filename already shows me (doom-modeline-buffer-state-icon nil) ;; the filename already shows me
(doom-modeline-lsp nil) ;; lsp state is too distracting, too often (doom-modeline-lsp nil) ;; lsp state is too distracting, too often
:hook (after-init . doom-modeline-mode)) :hook (after-init . doom-modeline-mode))
(load-theme 'catppuccin :no-confirm) (load-theme 'catppuccin :no-confirm)
(use-package diminish :demand t) ;; declutter the modeline (use-package diminish :demand t) ;; declutter the modeline
(use-package eldoc (use-package eldoc
:diminish eldoc-mode :diminish eldoc-mode
:custom :custom
(eldoc-echo-area-use-multiline-p nil)) ;; docs for everything (eldoc-echo-area-use-multiline-p nil)) ;; docs for everything
(use-package eldoc-box (use-package eldoc-box
:defer t :defer t
:config :config
(set-face-background 'eldoc-box-border (catppuccin-color 'green)) (set-face-background 'eldoc-box-border (catppuccin-color 'green))
(set-face-background 'eldoc-box-body (catppuccin-color 'base)) (set-face-background 'eldoc-box-body (catppuccin-color 'base))
:bind :bind
(("M-h" . eldoc-box-help-at-point))) (("M-h" . eldoc-box-help-at-point)))
(use-package pulsar (use-package pulsar
:commands pulsar-global-mode pulsar-recenter-top pulsar-reveal-entry :commands pulsar-global-mode pulsar-recenter-top pulsar-reveal-entry
:init :init
(defface pulsar-catppuccin (defface pulsar-catppuccin
`((default :extend t) `((default :extend t)
(((class color) (min-colors 88) (background light)) (((class color) (min-colors 88) (background light))
:background ,(catppuccin-color 'sapphire)) :background ,(catppuccin-color 'sapphire))
(((class color) (min-colors 88) (background dark)) (((class color) (min-colors 88) (background dark))
:background ,(catppuccin-color 'sapphire)) :background ,(catppuccin-color 'sapphire))
(t :inverse-video t)) (t :inverse-video t))
"Alternative nord face for `pulsar-face'." "Alternative nord face for `pulsar-face'."
:group 'pulsar-faces) :group 'pulsar-faces)
:custom :custom
(pulsar-face 'pulsar-catppuccin) (pulsar-face 'pulsar-catppuccin)
:hook :hook
(after-init . pulsar-global-mode)) (after-init . pulsar-global-mode))
(use-package which-key (use-package which-key
:commands which-key-mode :commands which-key-mode
:diminish which-key-mode :diminish which-key-mode
:hook :hook
(after-init . which-key-mode)) (after-init . which-key-mode))
(use-package expreg (use-package expreg
:bind ("M-m" . expreg-expand)) :bind ("M-m" . expreg-expand))
(use-package vundo) ;; undo tree (use-package vundo) ;; undo tree
;; better structured editing ;; better structured editing
(use-package puni (use-package puni
:commands puni-global-mode :commands puni-global-mode
:hook :hook
(after-init . puni-global-mode)) (after-init . puni-global-mode))
(use-package avy (use-package avy
:bind :bind
("M-i" . avy-goto-char-2) ("M-i" . avy-goto-char-2)
:custom :custom
(avy-background t)) (avy-background t))
(use-package consult (use-package consult
:bind :bind
("C-x b" . consult-buffer) ;; orig. switch-to-buffer ("C-x b" . consult-buffer) ;; orig. switch-to-buffer
("M-y" . consult-yank-pop) ;; orig. yank-pop ("M-y" . consult-yank-pop) ;; orig. yank-pop
("M-g M-g" . consult-goto-line) ;; orig. goto-line ("M-g M-g" . consult-goto-line) ;; orig. goto-line
("M-g i" . consult-imenu) ;; consult version is interactive ("M-g i" . consult-imenu) ;; consult version is interactive
("M-g r" . consult-ripgrep) ;; find in project also works ("M-g r" . consult-ripgrep) ;; find in project also works
:custom :custom
(consult-narrow-key "<")) (consult-narrow-key "<"))
(use-package vertico (use-package vertico
:commands vertico-mode :commands vertico-mode
:custom :custom
(read-file-name-completion-ignore-case t) (read-file-name-completion-ignore-case t)
(read-buffer-completion-ignore-case t) (read-buffer-completion-ignore-case t)
(completion-ignore-case t) (completion-ignore-case t)
(enable-recursive-minibuffers t) (enable-recursive-minibuffers t)
(minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt)) (minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt))
:init :init
(vertico-mode) (vertico-mode)
:hook :hook
(minibuffer-setup-hook . cursor-intangible-mode)) (minibuffer-setup-hook . cursor-intangible-mode))
(use-package marginalia (use-package marginalia
:commands marginalia-mode :commands marginalia-mode
:hook (after-init . marginalia-mode)) :hook (after-init . marginalia-mode))
(use-package crux (use-package crux
:bind :bind
("C-c M-e" . crux-find-user-init-file) ("C-c M-e" . crux-find-user-init-file)
("C-c C-w" . crux-transpose-windows) ("C-c C-w" . crux-transpose-windows)
("C-c M-d" . crux-find-current-directory-dir-locals-file) ("C-c M-d" . crux-find-current-directory-dir-locals-file)
("C-a" . crux-move-beginning-of-line)) ("C-a" . crux-move-beginning-of-line))
(use-package magit (use-package magit
:bind (("C-M-g" . magit-status))) :bind (("C-M-g" . magit-status)))
(use-package nerd-icons-corfu (use-package nerd-icons-corfu
:commands nerd-icons-corfu-formatter :commands nerd-icons-corfu-formatter
:defines corfu-margin-formatters) :defines corfu-margin-formatters)
(use-package corfu (use-package corfu
:commands global-corfu-mode :commands global-corfu-mode
:custom :custom
(corfu-cycle t) (corfu-cycle t)
(corfu-auto t) (corfu-auto t)
(corfu-auto-delay 1) (corfu-auto-delay 1)
(corfu-auto-prefix 3) (corfu-auto-prefix 3)
(corfu-separator ?_) (corfu-separator ?_)
:hook :hook
(after-init . global-corfu-mode) (after-init . global-corfu-mode)
:config :config
(add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter)) (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))
(use-package cape) (use-package cape)
(use-package orderless (use-package orderless
:custom :custom
(completion-styles '(orderless partial-completion basic)) (completion-styles '(orderless partial-completion basic))
(completion-category-defaults nil) (completion-category-defaults nil)
(completion-category-overrides nil)) (completion-category-overrides nil))
(use-package yasnippet (use-package yasnippet
:commands yas-global-mode :commands yas-global-mode
:diminish yas-minor-mode :diminish yas-minor-mode
:hook :hook
(after-init . yas-global-mode)) (after-init . yas-global-mode))
(use-package yasnippet-snippets :after yasnippet) (use-package yasnippet-snippets :after yasnippet)
(use-package exec-path-from-shell (use-package exec-path-from-shell
:commands exec-path-from-shell-initialize :commands exec-path-from-shell-initialize
:custom :custom
(exec-path-from-shell-arguments nil) (exec-path-from-shell-arguments nil)
:hook :hook
(after-init . exec-path-from-shell-initialize)) (after-init . exec-path-from-shell-initialize))
(use-package nixpkgs-fmt (use-package nixpkgs-fmt
:custom :custom
(nixpkgs-fmt-command "nixfmt")) (nixpkgs-fmt-command "nixfmt"))
(use-package eat (use-package eat
:bind :bind
(("C-c e p" . eat-project) (("C-c e p" . eat-project)
("C-c e t" . eat))) ("C-c e t" . eat)))
(use-package f :demand t) (use-package f :demand t)
(use-package envrc (use-package envrc
:commands envrc-global-mode :commands envrc-global-mode
:hook :hook
(after-init . envrc-global-mode)) (after-init . envrc-global-mode))
(use-package gptel (use-package gptel
:commands gptel-make-anthropic f-read-text :commands gptel-make-anthropic f-read-text
:config :config
(gptel-make-anthropic "Claude" (gptel-make-anthropic "Claude"
:stream t :key (f-read-text "/run/secrets/claude_key"))) :stream t :key (f-read-text "/run/secrets/claude_key")))
(use-package sideline-flymake) (use-package sideline-flymake)
(use-package sideline-eglot) (use-package sideline-eglot)
(use-package sideline (use-package sideline
:custom :custom
(sideline-backends-right '(sideline-flymake sideline-eglot)) (sideline-backends-right '(sideline-flymake sideline-eglot))
:hook :hook
(eglot-managed-mode . sideline-mode) (eglot-managed-mode . sideline-mode)
(flymake-mode . sideline-mode)) (flymake-mode . sideline-mode))
(use-package eglot (use-package eglot
:custom :custom
(eglot-extend-to-xref t) (eglot-extend-to-xref t)
(eglot-ignored-server-capabilities '(:inlayHintProvider)) (eglot-ignored-server-capabilities '(:inlayHintProvider))
(jsonrpc-event-hook nil) (jsonrpc-event-hook nil)
:hook :hook
(eglot-managed-mode . eldoc-box-hover-mode) (eglot-managed-mode . eldoc-box-hover-mode)
(before-save . eldoc-format-buffer) (before-save . eldoc-format-buffer)
:bind :bind
(:map eglot-mode-map (:map eglot-mode-map
("C-c l a" . eglot-code-actions) ("C-c l a" . eglot-code-actions)
("C-c l r" . eglot-rename) ("C-c l r" . eglot-rename)
("C-c l h" . eldoc) ("C-c l h" . eldoc)
@@ -317,58 +317,58 @@
("C-c l w" . eglot-reconnect))) ("C-c l w" . eglot-reconnect)))
(use-package proced (use-package proced
:custom :custom
(proced-auto-update-flag t) (proced-auto-update-flag t)
(proced-auto-update-interval 3) (proced-auto-update-interval 3)
(proced-enable-color-flag t) (proced-enable-color-flag t)
(proced-show-remote-processes t)) (proced-show-remote-processes t))
(use-package org (use-package org
:ensure t :ensure t
:defer t :defer t
:commands (org-mode org-capture org-agenda) :commands (org-mode org-capture org-agenda)
:init :init
(defvar org-journal-file "~/nextcloud/org/journal.org") (defvar org-journal-file "~/nextcloud/org/journal.org")
(defvar org-archive-file "~/nextcloud/org/archive.org") (defvar org-archive-file "~/nextcloud/org/archive.org")
(defvar org-notes-file "~/nextcloud/org/notes.org") (defvar org-notes-file "~/nextcloud/org/notes.org")
(defvar org-inbox-file "~/nextcloud/org/inbox.org") (defvar org-inbox-file "~/nextcloud/org/inbox.org")
(defvar org-work-file "~/nextcloud/org/work.org") (defvar org-work-file "~/nextcloud/org/work.org")
(defun my/org-capture-project-target-heading () (defun my/org-capture-project-target-heading ()
"Determine Org target headings from the current file's project path. "Determine Org target headings from the current file's project path.
This function assumes a directory structure like '~/projects/COMPANY/PROJECT/'. This function assumes a directory structure like '~/projects/COMPANY/PROJECT/'.
It extracts 'COMPANY' and 'PROJECT' to use as nested headlines It extracts 'COMPANY' and 'PROJECT' to use as nested headlines
for an Org capture template. for an Org capture template.
If the current buffer is not visi If the current buffer is not visi
ting a file within such a ting a file within such a
project structure, it returns nil, causing capture to default to project structure, it returns nil, causing capture to default to
the top of the file." the top of the file."
(when-let* ((path (buffer-file-name))) ; Ensure we are in a file-visiting buffer (when-let* ((path (buffer-file-name))) ; Ensure we are in a file-visiting buffer
(let ((path-parts (split-string path "/" t " "))) (let ((path-parts (split-string path "/" t " ")))
(when-let* ((projects-pos (cl-position "projects" path-parts :test #'string=)) (when-let* ((projects-pos (cl-position "projects" path-parts :test #'string=))
(company (nth (+ 1 projects-pos) path-parts)) (company (nth (+ 1 projects-pos) path-parts))
(project (nth (+ 2 projects-pos) path-parts))) (project (nth (+ 2 projects-pos) path-parts)))
;; Return a list of headlines for Org to find or create. ;; Return a list of headlines for Org to find or create.
(list company project))))) (list company project)))))
:bind :bind
(("C-c c" . org-capture) (("C-c c" . org-capture)
("C-c i" . org-store-link) ("C-c i" . org-store-link)
("C-c a" . org-agenda) ("C-c a" . org-agenda)
:map org-mode-map :map org-mode-map
("C-c t" . org-toggle-inline-images) ("C-c t" . org-toggle-inline-images)
("C-c l" . org-toggle-link-display)) ("C-c l" . org-toggle-link-display))
:custom :custom
(org-agenda-files (list org-inbox-file org-journal-file)) (org-agenda-files (list org-inbox-file org-journal-file))
(org-directory "~/nextcloud/org") (org-directory "~/nextcloud/org")
(org-default-notes-file org-inbox-file) (org-default-notes-file org-inbox-file)
(org-archive-location (concat org-archive-file "::* From %s")) (org-archive-location (concat org-archive-file "::* From %s"))
(org-log-done 'time) (org-log-done 'time)
(org-log-into-drawer t) (org-log-into-drawer t)
(org-hide-emphasis-markers t) (org-hide-emphasis-markers t)
(org-src-fontify-natively t) (org-src-fontify-natively t)
(org-src-tab-acts-natively t) (org-src-tab-acts-natively t)
(org-capture-templates '(("t" "Todo" entry (file org-inbox-file) (org-capture-templates '(("t" "Todo" entry (file org-inbox-file)
"* TODO %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n%a\n\n)") "* TODO %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n%a\n\n)")
("j" "Journal" entry (file+olp+datetree org-journal-file) ("j" "Journal" entry (file+olp+datetree org-journal-file)
"* %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n%a\n\n") "* %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n%a\n\n")
@@ -379,22 +379,22 @@ ting a file within such a
"* TODO %? \n CLOCK: %U" "* TODO %? \n CLOCK: %U"
)) ))
) )
:config :config
;; Enable syntax highlighting in code blocks ;; Enable syntax highlighting in code blocks
(add-hook 'org-mode-hook 'turn-on-font-lock) (add-hook 'org-mode-hook 'turn-on-font-lock)
(add-hook 'org-mode-hook 'org-indent-mode)) (add-hook 'org-mode-hook 'org-indent-mode))
;; extras ;; extras
(use-package comp-run (use-package comp-run
:ensure nil :ensure nil
:config :config
(push "tramp-loaddefs.el.gz" native-comp-jit-compilation-deny-list) (push "tramp-loaddefs.el.gz" native-comp-jit-compilation-deny-list)
(push "cl-loaddefs.el.gz" native-comp-jit-compilation-deny-list)) (push "cl-loaddefs.el.gz" native-comp-jit-compilation-deny-list))
(use-package rustic (use-package rustic
:custom :custom
(rustic-lsp-client 'eglot)) (rustic-lsp-client 'eglot))
(provide 'init) (provide 'init)
;;; init.el ends here ;;; init.el ends here
+2 -1
View File
@@ -9,7 +9,8 @@ in
{ {
xdg.enable = true; xdg.enable = true;
# Stable theme file so kitty.conf can include it without /nix/store paths # Stable theme file so kitty.conf can include it without /nix/store paths
xdg.configFile."kitty/themes/Catppuccin-Mocha.conf".text = catppuccinMochaConf; xdg.configFile."kitty/themes/Catppuccin-Mocha.conf".text = lib.mkForce catppuccinMochaConf;
xdg.configFile."kitty/themes/Catppuccin-Mocha.conf".backup = lib.mkForce false;
programs.kitty = { programs.kitty = {
enable = true; enable = true;
# Home Manager generates ~/.config/kitty/kitty.conf; we append in-order: # Home Manager generates ~/.config/kitty/kitty.conf; we append in-order:
@@ -1,17 +1,17 @@
{ {
hostname, hostname,
pkgs, pkgs,
lib, lib,
modulesPath, modulesPath,
user, user,
config, config,
... ...
}: }:
{ {
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
../../hardware/hardware.nix ../../hardware/hardware.nix
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_usb_sdmmc" ]; boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_usb_sdmmc" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
@@ -19,19 +19,19 @@ boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/69433a14-fbaf-401b-af85-cd1bbf02b4e2"; { device = "/dev/disk/by-uuid/69433a14-fbaf-401b-af85-cd1bbf02b4e2";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/811D-0676"; { device = "/dev/disk/by-uuid/811D-0676";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = [ "fmask=0077" "dmask=0077" ];
}; };
swapDevices = swapDevices =
[ { device = "/dev/disk/by-uuid/b6c557c2-7682-460b-a5e7-8f6f2f429a3a"; } [ { device = "/dev/disk/by-uuid/b6c557c2-7682-460b-a5e7-8f6f2f429a3a"; }
]; ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+4 -4
View File
@@ -37,13 +37,13 @@ nmcli connection show --active
nmcli device status nmcli device status
find ~/Repos/nixos/henrovnix_ok \ find ~/Repos/nixos/henrovnix_ok \
-type d -name ".*" -prune -o \ -type d -name ".*" -prune -o \
-type f -print0 \ -type f -print0 \
| xargs -0 sed -i 's/=<defaultUser>=/YOUR_USER/g' | xargs -0 sed -i 's/=<defaultUser>=/YOUR_USER/g'
find ~/Repos/nixos/henrovnix_ok \ find ~/Repos/nixos/henrovnix_ok \
-type d -name ".*" -prune -o \ -type d -name ".*" -prune -o \
-type f -print0 \ -type f -print0 \
| xargs -0 sed -i 's/machine1/YOUR_HOSTNAME/g' | xargs -0 sed -i 's/machine1/YOUR_HOSTNAME/g'
mv ./machines/machine1 ./machines/YOUR_HOSTNAME mv ./machines/machine1 ./machines/YOUR_HOSTNAME