Compare commits

...

69 commits

Author SHA1 Message Date
f9113b3146
flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/b4e98224ad1336751a2ac7493967a4c9f6d9cb3f?narHash=sha256-t7dFCDl4vIOOUMhEZnJF15aAzkpaup9x4ZRGToDFYWI%3D' (2025-04-08)
  → 'github:nix-community/home-manager/c61bfe3ae692f42ce688b5865fac9e0de58e1387?narHash=sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg%3D' (2025-04-15)
• Updated input 'nixpak':
    'github:nixpak/nixpak/1974dfbf1027f0b239355fb3d9fa589dc4f7c390?narHash=sha256-tvpWXDKHdeXMqFjwi5Ot8o5PoV18zdbOEnZ/037Z7CE%3D' (2025-04-10)
  → 'github:nixpak/nixpak/c99853b3e1973b95b86882e3f49763f9be168596?narHash=sha256-TgEsizZRX53LkX8qWIqoRd/d4mgGlCqh3OBEhMbXxvU%3D' (2025-04-17)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/524637ef84c177661690b924bf64a1ce18072a2c?narHash=sha256-I6fG1zrfdLFcp/imGZElig0BJO3YU0QEXLgvwWoOpJ8%3D' (2025-03-15)
  → 'github:hercules-ci/hercules-ci-effects/5b6cec51c9ec095a0d3fd4c8eeb53eb5c59ae33e?narHash=sha256-1Z4WPGVky4w3lrhrgs89OKsLzPdtkbi1bPLNFWsoLfY%3D' (2025-04-15)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/2631b0b7abcea6e640ce31cd78ea58910d31e650?narHash=sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR%2BXhw3kr/3Xd0GPTM%3D' (2025-04-12)
  → 'github:nixos/nixpkgs/b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef?narHash=sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU%3D' (2025-04-17)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/7e147a1ae90f0d4a374938cdc3df3cdaecb9d388?narHash=sha256-lv52pnfiRGp5%2BxkZEgWr56DWiRgkMFXpiGba3eJ3krE%3D' (2025-04-13)
  → 'github:Mic92/sops-nix/61154300d945f0b147b30d24ddcafa159148026a?narHash=sha256-pXyanHLUzLNd3MX9vsWG%2B6Z2hTU8niyphWstYEP3/GU%3D' (2025-04-14)
2025-04-19 11:55:47 +02:00
c4be9f8a8f
flake.lock: Update
Flake lock file updates:

• Updated input 'aagl':
    'github:ezKEa/aagl-gtk-on-nix/78713c67dceea68cd2ef0ed9b140759395e7461d?narHash=sha256-SIACIiVBsGGUw1t4ph6QH87clrC6JMlWQQW6zeM1Q7g%3D' (2025-03-02)
  → 'github:ezKEa/aagl-gtk-on-nix/a1a00f83d74988e98af8757e9b86ddf04d2ecdfc?narHash=sha256-f395cE%2BMIvKcRfRZubYXc7TJfJJ7edwpt7tYIFDgYQo%3D' (2025-04-09)
• Updated input 'aagl/flake-compat':
    'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33?narHash=sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U%3D' (2023-10-04)
  → 'github:edolstra/flake-compat/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec?narHash=sha256-NeCCThCEP3eCl2l/%2B27kNNK7QrwZB1IJCrXfrbv5oqU%3D' (2024-12-04)
• Updated input 'home-manager':
    'github:nix-community/home-manager/a9f8b3db211b4609ddd83683f9db89796c7f6ac6?narHash=sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT%2BPpMao6FbLJSr0%3D' (2025-04-04)
  → 'github:nix-community/home-manager/b4e98224ad1336751a2ac7493967a4c9f6d9cb3f?narHash=sha256-t7dFCDl4vIOOUMhEZnJF15aAzkpaup9x4ZRGToDFYWI%3D' (2025-04-08)
• Updated input 'nixpak':
    'github:nixpak/nixpak/5a52d95fdf6db80c94f93e704d89867d23c6ee54?narHash=sha256-H46pbXHuJOVXG5XXXBog2iABvdFHzMRP%2BluPrzo632g%3D' (2025-04-03)
  → 'github:nixpak/nixpak/1974dfbf1027f0b239355fb3d9fa589dc4f7c390?narHash=sha256-tvpWXDKHdeXMqFjwi5Ot8o5PoV18zdbOEnZ/037Z7CE%3D' (2025-04-10)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/bdb91860de2f719b57eef819b5617762f7120c70?narHash=sha256-s1KLDALEeqy%2BttrvqV3jx9mBZEvmthQErTVOAzbjHZs%3D' (2025-04-03)
  → 'github:nixos/nixpkgs/26d499fc9f1d567283d5d56fcf367edd815dba1d?narHash=sha256-FHlSkNqFmPxPJvy%2B6fNLaNeWnF1lZSgqVCl/eWaJRc4%3D' (2025-04-12)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/2c8d3f48d33929642c1c12cd243df4cc7d2ce434?narHash=sha256-F7n4%2BKOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE%3D' (2025-04-02)
  → 'github:nixos/nixpkgs/2631b0b7abcea6e640ce31cd78ea58910d31e650?narHash=sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR%2BXhw3kr/3Xd0GPTM%3D' (2025-04-12)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/cff8437c5fe8c68fc3a840a21bf1f4dc801da40d?narHash=sha256-2b11EYa08oqDmF3zEBLkG1AoNn9rB1k39ew/T/mSvbU%3D' (2025-04-04)
  → 'github:Mic92/sops-nix/7e147a1ae90f0d4a374938cdc3df3cdaecb9d388?narHash=sha256-lv52pnfiRGp5%2BxkZEgWr56DWiRgkMFXpiGba3eJ3krE%3D' (2025-04-13)
2025-04-14 18:27:34 +02:00
b6d4ad3682
x220: Set console keyboard layout 2025-04-09 01:17:07 +02:00
e1b05e6fa8 syncthing: remove
shit doesn't work
2025-04-09 00:57:06 +02:00
ac80b527dd x220: Done for now 2025-04-09 00:37:05 +02:00
6b9319bad0
install.sh: Remove extra lsblk call
It never produces anything useful and it causes an error.
2025-04-08 22:08:58 +02:00
e7b880127d
x220: Remove extra mount flags for boot partition 2025-04-08 22:07:00 +02:00
3d95b61b43
install.sh: Fix sudo overwrite when running as root
How did I ever think the original would work.
2025-04-08 21:52:51 +02:00
a5a2c3396d
x220: Add host
Probably broken right now.
2025-04-08 21:30:40 +02:00
29155bd10f
zsh: I might be retarded
Actually removd tmux instead of quitting the fucking shell.
2025-04-06 14:59:02 +02:00
4973eeb922
emacs: Only install packages when not using nix 2025-04-05 23:47:48 +02:00
156c6504a2
flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/15c5f9d04fabd176f30286c8f52bbdb2c853a146?narHash=sha256-24N3NAuZZbYqZ39NgToZgHUw6M7xHrtrAm18kv0%2B2Wo%3D' (2025-03-31)
  → 'github:nix-community/home-manager/a9f8b3db211b4609ddd83683f9db89796c7f6ac6?narHash=sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT%2BPpMao6FbLJSr0%3D' (2025-04-04)
• Updated input 'nixpak':
    'github:nixpak/nixpak/efeb4c1891508710843d2a05a4251a3dba6ec5ac?narHash=sha256-juvRHlk64KABNn6qWvm%2BKiGt53N0UEOi85WFohWXXjM%3D' (2025-03-27)
  → 'github:nixpak/nixpak/5a52d95fdf6db80c94f93e704d89867d23c6ee54?narHash=sha256-H46pbXHuJOVXG5XXXBog2iABvdFHzMRP%2BluPrzo632g%3D' (2025-04-03)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/f4330d22f1c5d2ba72d3d22df5597d123fdb60a9?narHash=sha256-%2Bu2UunDA4Cl5Fci3m7S643HzKmIDAe%2BfiXrLqYsR2fs%3D' (2025-03-07)
  → 'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5?narHash=sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY%3D' (2025-04-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/02f2af8c8a8c3b2c05028936a1e84daefa1171d4?narHash=sha256-7PCBQ4aGVF8OrzMkzqtYSKyoQuU2jtpPi4lmABpe5X4%3D' (2025-04-01)
  → 'github:nixos/nixpkgs/bdb91860de2f719b57eef819b5617762f7120c70?narHash=sha256-s1KLDALEeqy%2BttrvqV3jx9mBZEvmthQErTVOAzbjHZs%3D' (2025-04-03)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/77b584d61ff80b4cef9245829a6f1dfad5afdfa3?narHash=sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm%2BseVaGhs%3D' (2025-03-31)
  → 'github:nixos/nixpkgs/2c8d3f48d33929642c1c12cd243df4cc7d2ce434?narHash=sha256-F7n4%2BKOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE%3D' (2025-04-02)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/4521de68fba1a36fae8caebce3d6e047179661f7?narHash=sha256-Hf5aYGP3hP%2BuNbcd4NrEMUAR%2B1o518uGzoeVyMzzJwo%3D' (2025-04-02)
  → 'github:Mic92/sops-nix/cff8437c5fe8c68fc3a840a21bf1f4dc801da40d?narHash=sha256-2b11EYa08oqDmF3zEBLkG1AoNn9rB1k39ew/T/mSvbU%3D' (2025-04-04)
2025-04-05 22:55:01 +02:00
2643aaf6d2
zsh: No longer automatically enter tmux on new session 2025-04-05 22:52:23 +02:00
af1d3f7592
emacs: Install plugins from nix repositories
Maybe I should also look in to removing melpa and ensure? I could maybe
also remove elpa itself potentially? This way I could make sure that
no extra packages are ever installed that are not directly managed
through Nix. But then it would be quite annyoing to use my config
for someone not using nix. For that purpose I could maybe look in
to supporting nix on non-nixos again maybe?
2025-04-05 22:44:21 +02:00
c1c2fc5cc0
emacs: Add vterm plugin 2025-04-02 17:55:13 +02:00
b93e633f4e
flake.lock: Update
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/f4330d22f1c5d2ba72d3d22df5597d123fdb60a9?narHash=sha256-%2Bu2UunDA4Cl5Fci3m7S643HzKmIDAe%2BfiXrLqYsR2fs%3D' (2025-03-07)
  → 'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5?narHash=sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY%3D' (2025-04-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/147dee35aab2193b174e4c0868bd80ead5ce755c?narHash=sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk%3D' (2025-03-02)
  → 'github:nix-community/nixpkgs.lib/e4822aea2a6d1cdd36653c134cacfd64c97ff4fa?narHash=sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc%3D' (2025-03-30)
• Updated input 'home-manager':
    'github:nix-community/home-manager/0948aeedc296f964140d9429223c7e4a0702a1ff?narHash=sha256-jbqlw4sPArFtNtA1s3kLg7/A4fzP4GLk9bGbtUJg0JQ%3D' (2025-03-22)
  → 'github:nix-community/home-manager/15c5f9d04fabd176f30286c8f52bbdb2c853a146?narHash=sha256-24N3NAuZZbYqZ39NgToZgHUw6M7xHrtrAm18kv0%2B2Wo%3D' (2025-03-31)
• Updated input 'nixpak':
    'github:nixpak/nixpak/cf93d6657c5e60ed5501d4b3c7c5bc1a36b59415?narHash=sha256-ZAm52axXpm4oM3/Xr0BZBPWDCzW2cHHgc4ZYjxvVNdk%3D' (2025-03-20)
  → 'github:nixpak/nixpak/efeb4c1891508710843d2a05a4251a3dba6ec5ac?narHash=sha256-juvRHlk64KABNn6qWvm%2BKiGt53N0UEOi85WFohWXXjM%3D' (2025-03-27)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f0946fa5f1fb876a9dc2e1850d9d3a4e3f914092?narHash=sha256-rBfc%2BH1dDBUQ2mgVITMGBPI1PGuCznf9rcWX/XIULyE%3D' (2025-03-23)
  → 'github:nixos/nixpkgs/02f2af8c8a8c3b2c05028936a1e84daefa1171d4?narHash=sha256-7PCBQ4aGVF8OrzMkzqtYSKyoQuU2jtpPi4lmABpe5X4%3D' (2025-04-01)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/698214a32beb4f4c8e3942372c694f40848b360d?narHash=sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw%3D' (2025-03-25)
  → 'github:nixos/nixpkgs/77b584d61ff80b4cef9245829a6f1dfad5afdfa3?narHash=sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm%2BseVaGhs%3D' (2025-03-31)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/67566fe68a8bed2a7b1175fdfb0697ed22ae8852?narHash=sha256-ZGlpUDsuBdeZeTNgoMv%2Baw0ByXT2J3wkYw9kJwkAS4M%3D' (2025-03-23)
  → 'github:Mic92/sops-nix/4521de68fba1a36fae8caebce3d6e047179661f7?narHash=sha256-Hf5aYGP3hP%2BuNbcd4NrEMUAR%2B1o518uGzoeVyMzzJwo%3D' (2025-04-02)
2025-04-02 17:19:20 +02:00
df08325dde
flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/f6af7280a3390e65c2ad8fd059cdc303426cbd59?narHash=sha256-zFL6zsf/5OztR1NSNQF33dvS1fL/BzVUjabZq4qrtY4%3D' (2025-03-17)
  → 'github:nix-community/home-manager/0948aeedc296f964140d9429223c7e4a0702a1ff?narHash=sha256-jbqlw4sPArFtNtA1s3kLg7/A4fzP4GLk9bGbtUJg0JQ%3D' (2025-03-22)
• Updated input 'nixpak':
    'github:nixpak/nixpak/f63297c5bfddcb7b02cad0765677a658888700b3?narHash=sha256-PQ8NqYK7qEzGmtFrU965wD13s/2N%2B6QVwlcwVnz%2B7%2BE%3D' (2025-03-13)
  → 'github:nixpak/nixpak/cf93d6657c5e60ed5501d4b3c7c5bc1a36b59415?narHash=sha256-ZAm52axXpm4oM3/Xr0BZBPWDCzW2cHHgc4ZYjxvVNdk%3D' (2025-03-20)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/06519cec8fb32d219006da6eacd255504a9996af?narHash=sha256-0CjCfbq0yHWexOrpO06e2WU1r5JAqR6ffy1zgM3NksI%3D' (2025-02-15)
  → 'github:hercules-ci/hercules-ci-effects/524637ef84c177661690b924bf64a1ce18072a2c?narHash=sha256-I6fG1zrfdLFcp/imGZElig0BJO3YU0QEXLgvwWoOpJ8%3D' (2025-03-15)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/da044451c6a70518db5b730fe277b70f494188f1?narHash=sha256-IhnK4LhkBlf14/F8THvUy3xi/TxSQkp9hikfDZRD4Ic%3D' (2025-03-18)
  → 'github:nixos/nixpkgs/f0946fa5f1fb876a9dc2e1850d9d3a4e3f914092?narHash=sha256-rBfc%2BH1dDBUQ2mgVITMGBPI1PGuCznf9rcWX/XIULyE%3D' (2025-03-23)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5?narHash=sha256-C7jVfohcGzdZRF6DO%2BybyG/sqpo1h6bZi9T56sxLy%2Bk%3D' (2025-03-15)
  → 'github:nixos/nixpkgs/698214a32beb4f4c8e3942372c694f40848b360d?narHash=sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw%3D' (2025-03-25)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/787afce414bcce803b605c510b60bf43c11f4b55?narHash=sha256-ptn8dR4Uat3UUadGYNnB7CIH9SQm8mK69D2A/twBUXQ%3D' (2025-03-17)
  → 'github:Mic92/sops-nix/67566fe68a8bed2a7b1175fdfb0697ed22ae8852?narHash=sha256-ZGlpUDsuBdeZeTNgoMv%2Baw0ByXT2J3wkYw9kJwkAS4M%3D' (2025-03-23)
2025-03-26 18:56:21 +01:00
cd849064e6
emacs: Add meson mode 2025-03-26 18:34:48 +01:00
e466132923
emacs: Use paredit with all languages
It's also useful outside of just lisp
2025-03-26 18:12:10 +01:00
d506d713ca
emacs: Clean up modes 2025-03-18 23:47:38 +01:00
db0ede75e1
flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/9d3d080aec2a35e05a15cedd281c2384767c2cfe?narHash=sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA%3D' (2025-02-17)
  → 'github:nix-community/home-manager/f6af7280a3390e65c2ad8fd059cdc303426cbd59?narHash=sha256-zFL6zsf/5OztR1NSNQF33dvS1fL/BzVUjabZq4qrtY4%3D' (2025-03-17)
• Updated input 'nixpak':
    'github:nixpak/nixpak/35a7a6e6847d55e1ad0fca35b296fada4a821998?narHash=sha256-Vbwa4cM9XwqR3rdpDWq3/XfU1rm5%2BESaBvjC4kd4ZAE%3D' (2025-03-06)
  → 'github:nixpak/nixpak/f63297c5bfddcb7b02cad0765677a658888700b3?narHash=sha256-PQ8NqYK7qEzGmtFrU965wD13s/2N%2B6QVwlcwVnz%2B7%2BE%3D' (2025-03-13)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/3876f6b87db82f33775b1ef5ea343986105db764?narHash=sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo%3D' (2025-03-01)
  → 'github:hercules-ci/flake-parts/f4330d22f1c5d2ba72d3d22df5597d123fdb60a9?narHash=sha256-%2Bu2UunDA4Cl5Fci3m7S643HzKmIDAe%2BfiXrLqYsR2fs%3D' (2025-03-07)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/ebe2788eafd539477f83775ef93c3c7e244421d3?narHash=sha256-yfDy6chHcM7pXpMF4wycuuV%2BILSTG486Z/vLx/Bdi6Y%3D' (2025-03-10)
  → 'github:nixos/nixpkgs/da044451c6a70518db5b730fe277b70f494188f1?narHash=sha256-IhnK4LhkBlf14/F8THvUy3xi/TxSQkp9hikfDZRD4Ic%3D' (2025-03-18)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/e3e32b642a31e6714ec1b712de8c91a3352ce7e1?narHash=sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk%3D' (2025-03-09)
  → 'github:nixos/nixpkgs/c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5?narHash=sha256-C7jVfohcGzdZRF6DO%2BybyG/sqpo1h6bZi9T56sxLy%2Bk%3D' (2025-03-15)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/e653d71e82575a43fe9d228def8eddb73887b866?narHash=sha256-E0RrMykMtEv15V3QhpsFutgoSKhL1JBhidn%2BiZajOyg%3D' (2025-03-10)
  → 'github:Mic92/sops-nix/787afce414bcce803b605c510b60bf43c11f4b55?narHash=sha256-ptn8dR4Uat3UUadGYNnB7CIH9SQm8mK69D2A/twBUXQ%3D' (2025-03-17)
2025-03-18 22:11:43 +01:00
a57c34bdd7
I may be retareded 2025-03-13 13:01:58 +01:00
3f9695aeac
emacs: Scheme mode 2025-03-12 22:02:47 +01:00
2b2f17688b
i forgot 2025-03-12 21:00:51 +01:00
bb2d4d44b2
flake.lock: Update
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/3876f6b87db82f33775b1ef5ea343986105db764?narHash=sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo%3D' (2025-03-01)
  → 'github:hercules-ci/flake-parts/f4330d22f1c5d2ba72d3d22df5597d123fdb60a9?narHash=sha256-%2Bu2UunDA4Cl5Fci3m7S643HzKmIDAe%2BfiXrLqYsR2fs%3D' (2025-03-07)
• Updated input 'flake-parts/nixpkgs-lib':
    '6d37022434.tar.gz?narHash=sha256-3wHafybyRfpUCLoE8M%2BuPVZinImg3xX%2BNm6gEfN3G8I%3D' (2025-03-01)
  → 'github:nix-community/nixpkgs.lib/147dee35aab2193b174e4c0868bd80ead5ce755c?narHash=sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk%3D' (2025-03-02)
• Updated input 'nixpak':
    'github:nixpak/nixpak/94deaa9e812a0e206f01bff124c2df4d8efcda7d?narHash=sha256-gzy5AT6SWUlJm5N/l03/QZ9dyV3TIQ23m0Oqi/KEiy8%3D' (2025-02-27)
  → 'github:nixpak/nixpak/35a7a6e6847d55e1ad0fca35b296fada4a821998?narHash=sha256-Vbwa4cM9XwqR3rdpDWq3/XfU1rm5%2BESaBvjC4kd4ZAE%3D' (2025-03-06)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/32ea77a06711b758da0ad9bd6a844c5740a87abd?narHash=sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm%2BzmZ7vxbJdo%3D' (2025-02-01)
  → 'github:hercules-ci/flake-parts/3876f6b87db82f33775b1ef5ea343986105db764?narHash=sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo%3D' (2025-03-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/6af28b834daca767a7ef99f8a7defa957d0ade6f?narHash=sha256-W4YZ3fvWZiFYYyd900kh8P8wU6DHSiwaH0j4%2Bfai1Sk%3D' (2025-03-04)
  → 'github:nixos/nixpkgs/ebe2788eafd539477f83775ef93c3c7e244421d3?narHash=sha256-yfDy6chHcM7pXpMF4wycuuV%2BILSTG486Z/vLx/Bdi6Y%3D' (2025-03-10)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/ba487dbc9d04e0634c64e3b1f0d25839a0a68246?narHash=sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM%3D' (2025-03-03)
  → 'github:nixos/nixpkgs/e3e32b642a31e6714ec1b712de8c91a3352ce7e1?narHash=sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk%3D' (2025-03-09)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/3f2412536eeece783f0d0ad3861417f347219f4d?narHash=sha256-9lfmSZLz6eq9Ygr6cCmvQiiBEaPb54pUBcjvbEMPORc%3D' (2025-03-03)
  → 'github:Mic92/sops-nix/e653d71e82575a43fe9d228def8eddb73887b866?narHash=sha256-E0RrMykMtEv15V3QhpsFutgoSKhL1JBhidn%2BiZajOyg%3D' (2025-03-10)
2025-03-11 23:25:49 +01:00
97cc6a09e7
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/1546c45c538633ae40b93e2d14e0bb6fd8f13347?narHash=sha256-F0qDu2egq18M3edJwEOAE%2BD%2BVQ%2ByESK6YWPRQBfOqq8%3D' (2025-03-02)
  → 'github:nixos/nixpkgs/6af28b834daca767a7ef99f8a7defa957d0ade6f?narHash=sha256-W4YZ3fvWZiFYYyd900kh8P8wU6DHSiwaH0j4%2Bfai1Sk%3D' (2025-03-04)
2025-03-05 16:38:29 +01:00
0028dff5da
flake.lock: Update
Flake lock file updates:

• Updated input 'aagl':
    'github:ezKEa/aagl-gtk-on-nix/a01850259d3516ec6ff772dc0dc15cec224d396d?narHash=sha256-MnUAUYzPjqZnD48OOB/uAg2kQPpwnV%2BrCK39qwbPDoc%3D' (2025-01-14)
  → 'github:ezKEa/aagl-gtk-on-nix/78713c67dceea68cd2ef0ed9b140759395e7461d?narHash=sha256-SIACIiVBsGGUw1t4ph6QH87clrC6JMlWQQW6zeM1Q7g%3D' (2025-03-02)
• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/32ea77a06711b758da0ad9bd6a844c5740a87abd?narHash=sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm%2BzmZ7vxbJdo%3D' (2025-02-01)
  → 'github:hercules-ci/flake-parts/3876f6b87db82f33775b1ef5ea343986105db764?narHash=sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo%3D' (2025-03-01)
• Updated input 'flake-parts/nixpkgs-lib':
    '072a6db25e.tar.gz?narHash=sha256-vJzFZGaCpnmo7I6i416HaBLpC%2BhvcURh/BQwROcGIp8%3D' (2025-02-01)
  → '6d37022434.tar.gz?narHash=sha256-3wHafybyRfpUCLoE8M%2BuPVZinImg3xX%2BNm6gEfN3G8I%3D' (2025-03-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f44bd8ca21e026135061a0a57dcf3d0775b67a49?narHash=sha256-t%2BVaahjQAWyA%2BCtn2idyo1yxRIYpaDxMgHkgCNiMJa4%3D' (2025-02-26)
  → 'github:nixos/nixpkgs/1546c45c538633ae40b93e2d14e0bb6fd8f13347?narHash=sha256-F0qDu2egq18M3edJwEOAE%2BD%2BVQ%2ByESK6YWPRQBfOqq8%3D' (2025-03-02)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/6313551cd05425cd5b3e63fe47dbc324eabb15e4?narHash=sha256-D%2BR%2BkFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs%3D' (2025-02-27)
  → 'github:nixos/nixpkgs/ba487dbc9d04e0634c64e3b1f0d25839a0a68246?narHash=sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM%3D' (2025-03-03)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/07af005bb7d60c7f118d9d9f5530485da5d1e975?narHash=sha256-7JAGezJ0Dn5qIyA2%2BT4Dt/xQgAbhCglh6lzCekTVMeU%3D' (2025-02-11)
  → 'github:Mic92/sops-nix/3f2412536eeece783f0d0ad3861417f347219f4d?narHash=sha256-9lfmSZLz6eq9Ygr6cCmvQiiBEaPb54pUBcjvbEMPORc%3D' (2025-03-03)
2025-03-04 18:46:34 +01:00
8db14d0fa5
firefox: Improve overlay 2025-03-02 22:13:55 +01:00
b30401044e
games: some fixes 2025-03-02 20:19:15 +01:00
dd7f79a874
games: Optimize configuration 2025-03-02 14:57:48 +01:00
a1d79de285
firefox: Enable autoscrolling 2025-03-01 13:47:35 +01:00
0bf1aa59cd
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/5135c59491985879812717f4c9fea69604e7f26f?narHash=sha256-Vr3Qi346M%2B8CjedtbyUevIGDZW8LcA1fTG0ugPY/Hic%3D' (2025-02-26)
  → 'github:nixos/nixpkgs/6313551cd05425cd5b3e63fe47dbc324eabb15e4?narHash=sha256-D%2BR%2BkFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs%3D' (2025-02-27)
2025-03-01 03:36:45 +01:00
ecbdf7d2cb
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpak':
    'github:nixpak/nixpak/5361f1c6f64a298cb215e9fa2f4fa40d83a24c43?narHash=sha256-Rr64JM1RqKqVeAEU0nXc3Gid%2B6fwpW3T1xQS/xzvhSE%3D' (2025-02-20)
  → 'github:nixpak/nixpak/94deaa9e812a0e206f01bff124c2df4d8efcda7d?narHash=sha256-gzy5AT6SWUlJm5N/l03/QZ9dyV3TIQ23m0Oqi/KEiy8%3D' (2025-02-27)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/5d7db4668d7a0c6cc5fc8cf6ef33b008b2b1ed8b?narHash=sha256-4Xhu/3aUdCKeLfdteEHMegx5ooKQvwPHNkOgNCXQrvc%3D' (2025-02-25)
  → 'github:nixos/nixpkgs/f44bd8ca21e026135061a0a57dcf3d0775b67a49?narHash=sha256-t%2BVaahjQAWyA%2BCtn2idyo1yxRIYpaDxMgHkgCNiMJa4%3D' (2025-02-26)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/0196c0175e9191c474c26ab5548db27ef5d34b05?narHash=sha256-WGaHVAjcrv%2BCun7zPlI41SerRtfknGQap281%2BAakSAw%3D' (2025-02-24)
  → 'github:nixos/nixpkgs/5135c59491985879812717f4c9fea69604e7f26f?narHash=sha256-Vr3Qi346M%2B8CjedtbyUevIGDZW8LcA1fTG0ugPY/Hic%3D' (2025-02-26)
2025-02-28 02:23:57 +01:00
b381ae52df
sloppy top 2025-02-27 22:41:11 +01:00
88a13c80cf
flake.lock: Update
Flake lock file updates:

• Updated input 'aagl/flake-compat':
    'github:edolstra/flake-compat/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec?narHash=sha256-NeCCThCEP3eCl2l/%2B27kNNK7QrwZB1IJCrXfrbv5oqU%3D' (2024-12-04)
  → 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33?narHash=sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U%3D' (2023-10-04)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/04ef94c4c1582fd485bbfdb8c4a8ba250e359195?narHash=sha256-cbrw7EgQhcdFnu6iS3vane53bEagZQy/xyIkDWpCgVE%3D' (2025-02-23)
  → 'github:nixos/nixpkgs/5d7db4668d7a0c6cc5fc8cf6ef33b008b2b1ed8b?narHash=sha256-4Xhu/3aUdCKeLfdteEHMegx5ooKQvwPHNkOgNCXQrvc%3D' (2025-02-25)
2025-02-27 01:38:23 +01:00
915734f46e
emacs: Add guile mode 2025-02-27 01:37:09 +01:00
e065c5475c
games: Add anime game 2025-02-27 01:36:50 +01:00
f6adc424e3
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/36864ed72f234b9540da4cf7a0c49e351d30d3f1?narHash=sha256-BqUY8tz0AQ4to2Z4%2BuaKczh81zsGZSYxjgvtw%2BfvIfM%3D' (2025-02-19)
  → 'github:nixos/nixpkgs/04ef94c4c1582fd485bbfdb8c4a8ba250e359195?narHash=sha256-cbrw7EgQhcdFnu6iS3vane53bEagZQy/xyIkDWpCgVE%3D' (2025-02-23)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/73cf49b8ad837ade2de76f87eb53fc85ed5d4680?narHash=sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64%3D' (2025-02-18)
  → 'github:nixos/nixpkgs/0196c0175e9191c474c26ab5548db27ef5d34b05?narHash=sha256-WGaHVAjcrv%2BCun7zPlI41SerRtfknGQap281%2BAakSAw%3D' (2025-02-24)
2025-02-25 01:12:11 +01:00
0abac2afd1
emacs: Rework configuration 2025-02-21 17:28:19 +01:00
79bb2f7c9c
zsh: Add tmux stuff 2025-02-20 23:26:59 +01:00
357f2f48af
some stuff 2025-02-20 22:25:37 +01:00
0ff2e127ca
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpak':
    'github:nixpak/nixpak/02cc1b2b9f4771f8441a4cf551adff2d311fa148?narHash=sha256-4gqrRYn4bVtsgjykqW9zYNbor59qo4uIBPuDH3dd3vE%3D' (2025-02-13)
  → 'github:nixpak/nixpak/5361f1c6f64a298cb215e9fa2f4fa40d83a24c43?narHash=sha256-Rr64JM1RqKqVeAEU0nXc3Gid%2B6fwpW3T1xQS/xzvhSE%3D' (2025-02-20)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/6d1b6d5d59758b4f5f05745f774fc13cdc59da43?narHash=sha256-oJN/yvRL7G0WlR/hTkQIjFbPkzCV%2BsFnNB/38Tb9RL4%3D' (2025-01-30)
  → 'github:hercules-ci/hercules-ci-effects/06519cec8fb32d219006da6eacd255504a9996af?narHash=sha256-0CjCfbq0yHWexOrpO06e2WU1r5JAqR6ffy1zgM3NksI%3D' (2025-02-15)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/c618e28f70257593de75a7044438efc1c1fc0791?narHash=sha256-uq6A2L7o1/tR6VfmYhZWoVAwb3gTy7j4Jx30MIrH0rE%3D' (2025-02-17)
  → 'github:nixos/nixpkgs/36864ed72f234b9540da4cf7a0c49e351d30d3f1?narHash=sha256-BqUY8tz0AQ4to2Z4%2BuaKczh81zsGZSYxjgvtw%2BfvIfM%3D' (2025-02-19)
2025-02-20 21:42:47 +01:00
17520db0e4
filesharing: Add localsend 2025-02-20 12:33:17 +01:00
cced15a507
tmux: Fix configuration 2025-02-20 00:23:21 +01:00
3893f229b7
tmux: Add configuration 2025-02-19 22:21:56 +01:00
533b6a4720
flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/254d47082e23dbf72fdeca1da6fe1da420f478d8?narHash=sha256-eCc0/Q4bPpe4/AS%2BuzIrHLJcR6BxPQ69q2kD0/Qe6rU%3D' (2025-02-14)
  → 'github:nix-community/home-manager/9d3d080aec2a35e05a15cedd281c2384767c2cfe?narHash=sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA%3D' (2025-02-17)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0ff09db9d034a04acd4e8908820ba0b410d7a33a?narHash=sha256-9xim3nJJUFbVbJCz48UP4fGRStVW5nv4VdbimbKxJ3I%3D' (2025-02-12)
  → 'github:nixos/nixpkgs/c618e28f70257593de75a7044438efc1c1fc0791?narHash=sha256-uq6A2L7o1/tR6VfmYhZWoVAwb3gTy7j4Jx30MIrH0rE%3D' (2025-02-17)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/2ff53fe64443980e139eaa286017f53f88336dd0?narHash=sha256-%2B/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc%3D' (2025-02-13)
  → 'github:nixos/nixpkgs/73cf49b8ad837ade2de76f87eb53fc85ed5d4680?narHash=sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64%3D' (2025-02-18)
2025-02-19 22:03:13 +01:00
3bb0d6f884
gnome: Disable forge extension
It doesn't really work that well honestly. I can't be bothered to
find something else that works better. For now I think I can just
manage with manually placing my windows as I don't really need that
many open at any one time anyways. In adition, as we lose the tabs,
which I've been using to quickly switch between chat applications
that are placed full screen in the same workspace, alt-tab now only
shows the windows on the current workspace and some other tweaks to
improve the experience.
2025-02-19 22:01:06 +01:00
1796e48cac
emacs: Add rust configuration 2025-02-17 20:17:03 +01:00
ae00aa55e6
edv: Add libreoffice 2025-02-16 17:22:32 +01:00
fedbcead2b
flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/bd65bc3cde04c16755955630b344bc9e35272c56?narHash=sha256-dinzAqCjenWDxuy%2BMqUQq0I4zUSfaCvN9rzuCmgMZJY%3D' (2025-01-08)
  → 'github:nix-community/home-manager/254d47082e23dbf72fdeca1da6fe1da420f478d8?narHash=sha256-eCc0/Q4bPpe4/AS%2BuzIrHLJcR6BxPQ69q2kD0/Qe6rU%3D' (2025-02-14)
• Updated input 'nixpak':
    'github:nixpak/nixpak/8766590d404bb6864fa26f86c1fbb36901b982cb?narHash=sha256-/Y0RSTyDOA7m3p9hXz4oFzHE34eaJ5Ffbwuq0qA2YZI%3D' (2025-02-06)
  → 'github:nixpak/nixpak/02cc1b2b9f4771f8441a4cf551adff2d311fa148?narHash=sha256-4gqrRYn4bVtsgjykqW9zYNbor59qo4uIBPuDH3dd3vE%3D' (2025-02-13)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/a45fa362d887f4d4a7157d95c28ca9ce2899b70e?narHash=sha256-2MhC2Bgd06uI1A0vkdNUyDYsMD0SLNGKtD8600mZ69A%3D' (2025-02-08)
  → 'github:nixos/nixpkgs/0ff09db9d034a04acd4e8908820ba0b410d7a33a?narHash=sha256-9xim3nJJUFbVbJCz48UP4fGRStVW5nv4VdbimbKxJ3I%3D' (2025-02-12)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/a79cfe0ebd24952b580b1cf08cd906354996d547?narHash=sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y%3D' (2025-02-08)
  → 'github:nixos/nixpkgs/2ff53fe64443980e139eaa286017f53f88336dd0?narHash=sha256-%2B/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc%3D' (2025-02-13)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/4c1251904d8a08c86ac6bc0d72cc09975e89aef7?narHash=sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320%3D' (2025-01-31)
  → 'github:Mic92/sops-nix/07af005bb7d60c7f118d9d9f5530485da5d1e975?narHash=sha256-7JAGezJ0Dn5qIyA2%2BT4Dt/xQgAbhCglh6lzCekTVMeU%3D' (2025-02-11)
2025-02-15 10:43:40 +01:00
87ff16bc40
nvidia: Enable power management
And I was wondering why my system wouldn't suspend properly....
2025-02-14 18:49:49 +01:00
cd6522f40f
gnome: Remove stupid br*tish layout 2025-02-14 18:29:11 +01:00
b9dd8ef7df
gnome: Set tuta as the default mail application
I pressed the email application button on my new keyboard and it
literally pulled up motherfucking emacs man. Like actually what
the fuck. Why would it do this. I will never send or recieve email
in emacs. There are whole ass applications made for this.
2025-02-14 18:20:02 +01:00
6604acdc9c
emacs: Add soystemd mode 2025-02-14 15:00:07 +01:00
654fa8ce89
emacs: Add yaml mode and move eln-cache dir 2025-02-14 14:51:10 +01:00
7bf8d8924c
flake.lock: Update
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/b905f6fc23a9051a6e1b741e1438dbfc0634c6de?narHash=sha256-%2Bhu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU%3D' (2025-01-06)
  → 'github:hercules-ci/flake-parts/32ea77a06711b758da0ad9bd6a844c5740a87abd?narHash=sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm%2BzmZ7vxbJdo%3D' (2025-02-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'e9b5173191.tar.gz?narHash=sha256-CewEm1o2eVAnoqb6Ml%2BQi9Gg/EfNAxbRx1lANGVyoLI%3D' (2025-01-01)
  → '072a6db25e.tar.gz?narHash=sha256-vJzFZGaCpnmo7I6i416HaBLpC%2BhvcURh/BQwROcGIp8%3D' (2025-02-01)
• Updated input 'nixpak':
    'github:nixpak/nixpak/a49ec21ca2d6e8ed63cd621d8d50cffb6e7802e4?narHash=sha256-aOnvPxUSpZGcLiYedY5IqHWDe9RtS0G55lZ1ITvkVvo%3D' (2025-01-30)
  → 'github:nixpak/nixpak/8766590d404bb6864fa26f86c1fbb36901b982cb?narHash=sha256-/Y0RSTyDOA7m3p9hXz4oFzHE34eaJ5Ffbwuq0qA2YZI%3D' (2025-02-06)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/b905f6fc23a9051a6e1b741e1438dbfc0634c6de?narHash=sha256-%2Bhu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU%3D' (2025-01-06)
  → 'github:hercules-ci/flake-parts/32ea77a06711b758da0ad9bd6a844c5740a87abd?narHash=sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm%2BzmZ7vxbJdo%3D' (2025-02-01)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/afd0a42e8c61ebb56899315ee4084a8b2e4ff425?narHash=sha256-JTBWmyGf8K1Rwb%2BgviHIUzRJk/sITtT%2B72HXFkTZUjo%3D' (2025-01-15)
  → 'github:hercules-ci/hercules-ci-effects/6d1b6d5d59758b4f5f05745f774fc13cdc59da43?narHash=sha256-oJN/yvRL7G0WlR/hTkQIjFbPkzCV%2BsFnNB/38Tb9RL4%3D' (2025-01-30)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/666e1b3f09c267afd66addebe80fb05a5ef2b554?narHash=sha256-6L%2BWXKCw5mqnUIExvqkD99pJQ41xgyCk6z/H9snClwk%3D' (2025-01-30)
  → 'github:nixos/nixpkgs/a45fa362d887f4d4a7157d95c28ca9ce2899b70e?narHash=sha256-2MhC2Bgd06uI1A0vkdNUyDYsMD0SLNGKtD8600mZ69A%3D' (2025-02-08)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/9d3ae807ebd2981d593cddd0080856873139aa40?narHash=sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9%2BWC4%3D' (2025-01-29)
  → 'github:nixos/nixpkgs/a79cfe0ebd24952b580b1cf08cd906354996d547?narHash=sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y%3D' (2025-02-08)
2025-02-10 01:33:57 +01:00
b5e00af8ec
emacs: add treesitter support 2025-02-10 01:32:07 +01:00
abca633fc6
gnome: Update mimetype to use mpv for all videos 2025-02-02 21:56:50 +01:00
491addc8f9
firefox: Give firefox access to system fonts 2025-02-02 21:38:15 +01:00
8cfc0fa491
tor-browser: Fix tor browser being unable to download any files 2025-02-02 19:20:41 +01:00
0b1c74693c
steam: Fix the steam library being inaccesible to steam 2025-02-02 19:11:59 +01:00
a936937ccf
emacs: Add configuration for cc mode 2025-02-02 16:42:11 +01:00
c4accfc1d5
multimedia: Add video related applications 2025-02-02 00:14:38 +01:00
34b4cf62c2
gnome: Add some QoL applications 2025-02-02 00:14:15 +01:00
e7c92133d1
gnome: Set up correct handling of mimetypes 2025-02-02 00:13:26 +01:00
697fe32d80
gnome: Use single workspace for secondary monitor 2025-02-01 21:09:50 +01:00
e935441b80
art: Add opentabletdriver 2025-02-01 20:59:52 +01:00
310be182e4
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpak':
    'github:nixpak/nixpak/68beced51b937d506187431bec4847e78fd34911?narHash=sha256-sFzfMxH7c9UWyrFsC2wsPRJqTCHchz7q2zd04%2B9/yvw%3D' (2025-01-23)
  → 'github:nixpak/nixpak/a49ec21ca2d6e8ed63cd621d8d50cffb6e7802e4?narHash=sha256-aOnvPxUSpZGcLiYedY5IqHWDe9RtS0G55lZ1ITvkVvo%3D' (2025-01-30)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/4e96537f163fad24ed9eb317798a79afc85b51b7?narHash=sha256-GFzPxJzTd1rPIVD4IW%2BGwJlyGwBDV1Tj5FLYwDQQ9sM%3D' (2025-01-26)
  → 'github:nixos/nixpkgs/666e1b3f09c267afd66addebe80fb05a5ef2b554?narHash=sha256-6L%2BWXKCw5mqnUIExvqkD99pJQ41xgyCk6z/H9snClwk%3D' (2025-01-30)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/852ff1d9e153d8875a83602e03fdef8a63f0ecf8?narHash=sha256-Zf0hSrtzaM1DEz8//%2BXs51k/wdSajticVrATqDrfQjg%3D' (2025-01-26)
  → 'github:nixos/nixpkgs/9d3ae807ebd2981d593cddd0080856873139aa40?narHash=sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9%2BWC4%3D' (2025-01-29)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/015d461c16678fc02a2f405eb453abb509d4e1d4?narHash=sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw%3D' (2025-01-20)
  → 'github:Mic92/sops-nix/4c1251904d8a08c86ac6bc0d72cc09975e89aef7?narHash=sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320%3D' (2025-01-31)
2025-02-01 14:12:24 +01:00
6cb66d86d2 Refactor the whole configuration
Reviewed-on: #1
2025-02-01 14:05:15 +01:00
175 changed files with 2491 additions and 3055 deletions

3
.gitignore vendored
View file

@ -1,3 +1,4 @@
secrets/
dotfiles/zsh/.zcompdump dotfiles/zsh/.zcompdump
dotfiles/nvim/lazy-lock.json dotfiles/nvim/lazy-lock.json
result
keys.txt

270
README.md
View file

@ -1,83 +1,213 @@
# nixos-system-config # caenix
My modular NixOS configuration.
## About <table>
This is the NixOS configuration that I daily drive on my system. Feel free to use, <tr>
modify and share this configuration to your heart's content, no attribution required. <td>
About
## Screenshots </td>
|KDE Plasma|Hyprland| <td>
|---|---| Screenshot
|![plasma screenshot](assets/screenshots/kde.png)|![hyprland screenshot](assets/screenshots/hyprland.png)| </td>
</tr>
<tr>
<td>
This repository contains my personal NixOS configuration.
Feel free to do whatever with it.
</td>
<td>
<img src="assets/screenshot.png" alt="Screenshot of my desktop">
</td>
</tr>
</table>
## Layout ## Layout
``` ```
├── assets ; Binary assets tracked in git .
│   ├── screenshot.png ├── .gitattributes
│   └── wallpaper.jpg ├── .gitignore
├── dotfiles ; Distro agnostic dotfiles
│   └── ... ; Stores configurations that do not depend on Nix
├── flake.lock
├── flake.nix ; Entry point
├── home ; home-manager configuration
│   ├── default.nix ; User and home-manager options
│   ├── packages ; Per-package home-manager configuration
│   │   └── ...
│   └── persist.nix ; Home opt-in state directories and files
├── hosts ; Host configurations
│   └── workstation
│   ├── default.nix ; Host configuration.nix equivalent
│   ├── hardware-configuration.nix ; Host hardware specific configuration
│   └── persist.nix ; System wide opt-in state directories and files
├── lib ; Custom helper functions
│   ├── default.nix
│   └── ...
├── modules ; System modules and sets of packages
│   ├── desktop
│   │   ├── apps
│   │   │   └── ...
│   │   └── environments
│   │   └── ...
│   └── system
│   └── ...
├── README.md ├── README.md
└── secrets ; Location of secrets not tracked in the git tree ├── assets ; Binary assets such as screenshots and wallpapers
└── pass │ └── ...
├── flake.lock
├── flake.nix
├── hosts ; Host configurations
│ ├── puter
│ │ ├── default.nix ; Host specific configuration options
│ │ ├── disko.nix ; Host specific partitioning layout
│ │ └── packages.nix ; Host specific package set
│ └── ...
├── install.sh
├── lib ; Custom helper functions
│ └── ...
├── modules ; Configuration modules
│ ├── home ; Home-manager modules
│ │ └── caem ; User home-manager modules
│ │ ├── default.nix ; User specific configuration options
│ │ ├── packages.nix ; User specific package set
│ │ └── ...
│ └── nixos ; NixOS modules
│ ├── user ; User definition
│ │ └── caem.nix
│ └── ...
└── overlays ; Overlays
└── ...
``` ```
## Installing ## Installation
This configuration uses impermanence with btrfs snapshots so you'll have to partition
your system in a certain way.
First you'll need this partition layout, assuming you're installing on `nvme0n1`. ### Setting up your secrets repository
```
DEVICE FILESYSTEM PURPOSE
/dev/nvme0n1
├─/dev/nvme0n1p1 vfat EFI partition
└─/dev/nvme0n1p2 btrfs Partition to house all the subvolumes
```
Inside of the btrfs root volume we're going to need 2 subvolumes. This step is required to install the system as it is built around nix-sops
``` with encrypted files in a private repository in order to not expose even the
SUBVOLUME MOUNT PURPOSE encrypted secrets to the public. You don't need to be in a NixOS livecd or
root / Impermanent data system in order to complete this step as long as you can install all
nix /nix Permanent data requirements from step 1.
```
You'll also need to create a read-only snapshot of the `root` subvolume #### 1. Ensure all required dependencies are present
and call it `root-blank`.
After you've mounted all the subvolumes and EFI partition (`/boot`) in `/mnt`
clone this repository in to `/mnt/nix/config`. Adjust all the block ids of the partitions
in `hardware-configuration.nix` and create a hashed password using `mkpasswd` and store it
in the `secrets` directory as `pass`.
Finally, in the config directory run `nixos-install --flake '.#'`, reboot and you're done.
## Updating
This configuration sets up [nh](https://github.com/viperML/nh) for a prettier and more convenient
way of keeping the system up to date. To update you can simply run:
```sh ```sh
nix flake update /nix/config nix-shell -p sops age git wl-clipboard
nh os switch
``` ```
#### 2. Initialize your secrets repo
```sh
mkdir secrets
cd secrets
git init
```
#### 3. Create your gitignore
You want this to make sure that you do not accidentally push your private key.
```sh
echo "keys.txt" > .gitignore
```
#### 4. Generate your private key
```sh
age-keygen -o ./keys.txt
```
#### 5. Create your sops configuration file
```sh
cat <<EOF > .sops.yaml
keys:
- &master $(age-keygen -y ./keys.txt)
creation_rules:
- path_regex: .*\.(yaml|json|env|ini)$
key_groups:
- age:
- *master
EOF
```
#### 6. Create your secrets file
```sh
mkpasswd | wl-copy
sops upasswd.yaml
```
Then edit the file to look like this
```yaml
upasswd: [The pasted password from mkpasswd]
```
#### 7. Create the flake to expose the secrets
```sh
cat <<EOF > flake.nix
{
outputs = { self, ... }: {
paths = {
upasswd = self + "/upasswd.yaml";
};
};
}
EOF
```
#### 8. Commit and push your changes
If your git forge supports creating the repository on push you can
simply run the commands below, if it does not, like GitHub, create a private
repository named "secrets" first before running the below commands.
```sh
git remote add origin git@git.example.net:username/secrets
git add .
git commit -m "batman"
git push --set-upstream origin master
```
#### 9. Back up your keys.txt
**THIS STEP IS VERY IMPORTANT**
Back up your keys.txt in a safe location where you can later transfer it on to the livecd.
Keep it safe afterwards as it is required to decrypt your secrets. Do not share this with
anyone else as it'd allow them to decrypt all your secrets.
You also need to have a copy of your ssh private key or (preferably) deployment key to the repository
ready to later clone your secrets repository.
### Installing the system
#### 0. Boot in to a livcd image
Any of the official NixOS livecds will work as long as you're able securely transfer files on to
it. Non-nixos livecds might work if you install the required tools manually but is out of scope
of this document.
#### 1. Clone this repository
```sh
git clone https://github.com/c4em/caenix.git
cd caenix
```
#### 2. Fetch your keys.txt and ssh key
Fetch your keys.txt from wherever you've stored them and **place them at the root of the configuration directory**.
If you place them anywhere else the installation will fail. Do not move them later either.
For your ssh key, place it in `~/.ssh` and create a symlink for the root user.
```sh
sudo ln -sf /home/nixos/.ssh /root/.ssh
```
And start a instance of ssh-agent.
```sh
eval $(ssh-agent -s)
ssh-add ~/.ssh/[your key]
```
#### 3. Update the flake input for your secret
In `flake.nix`, replace
```nix
inputs = {
secrets.url = "git+ssh://git@git.caem.dev/caem/secrets";
```
with your url.
```nix
inputs = {
secrets.url = "git+ssh://git@git.example.com/username/secrets";
```
#### 4. Update flake.lock (optional)
This is very useful and will also tell you if cloning your secrets work,
rather than only telling you after already having partitioned the drive.
```sh
nix --extra-experimental-features 'nix-command flakes' flake update
```
#### 5. Run the installation script
```sh
./install.sh --host [your host] --device [the device to install NixOS on]
```

5
assets/README.md vendored Normal file
View file

@ -0,0 +1,5 @@
# assets
The wallpaper used here is watermarked, the purchased version is stored in the secrets, inaccessible to the public.
If you too want the watermark-free version you can [purchase it from the artist](https://wboss.huotan.com/p/TEcHBI)
for mere ¥12. The artwork looks great, I'd highly recommend it.

BIN
assets/screenshot.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 KiB

BIN
assets/wallpaper.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

View file

@ -1,6 +0,0 @@
#!/bin/sh
for f in *; do
[ -d "$f" ] && ln -svf "$PWD/$f" "$HOME/.config"
done

View file

@ -1,3 +0,0 @@
vim.bo.tabstop = 2
vim.bo.softtabstop = 2
vim.bo.shiftwidth = 2

View file

@ -1,3 +0,0 @@
vim.bo.tabstop = 2
vim.bo.softtabstop = 2
vim.bo.shiftwidth = 2

View file

@ -1,3 +0,0 @@
require"settings"
require"plugins"

View file

@ -1,55 +0,0 @@
return {
"hrsh7th/nvim-cmp",
dependencies = {
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-nvim-lsp",
{
"tamago324/cmp-zsh",
config = function()
require"cmp_zsh".setup {
zshrc = true,
filetypes = { "bash", "zsh", "sh" },
}
end,
},
"ray-x/cmp-treesitter",
"hrsh7th/cmp-nvim-lua",
"andersevenrud/cmp-tmux",
},
config = function()
local cmp = require"cmp"
cmp.setup {
snippet = {
expand = function(args)
require"luasnip".lsp_expand(args.body)
end,
},
view = {
entries = "native",
},
mapping = cmp.mapping.preset.insert {
['<C-k>'] = cmp.mapping.select_prev_item(),
['<C-j>'] = cmp.mapping.select_next_item(),
['<A-j>'] = cmp.mapping.scroll_docs(4),
['<A-k>'] = cmp.mapping.scroll_docs(-4),
['<S-CR>'] = cmp.mapping.complete(),
['<C-Space>'] = cmp.mapping.confirm({ select = true }),
['<C-e>'] = cmp.mapping.abort(),
},
sources = {
{ name = "path" },
{ name = "luasnip" },
{ name = "zsh" },
{ name = "nvim_lsp" },
{ name = "buffer" },
{ name = "treesitter" },
{ name = "nvim-lua" },
{ name = "tmux" },
},
}
end
}

View file

@ -1,5 +0,0 @@
return {
"numToStr/Comment.nvim",
opts = {},
lazy = false
}

View file

@ -1,7 +0,0 @@
return {
"stevearc/dressing.nvim",
config = function()
require"dressing".setup {
}
end
}

View file

@ -1,11 +0,0 @@
return {
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
opts = {},
opts = {
indent = {
char = ""
}
}
}

View file

@ -1,22 +0,0 @@
if vim.fn.executable("git") ~= 1 then
vim.notify("git is not installed. Skipping plugins.", vim.log.levels.WARN)
return
end
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
plugins = require"util.require_dir"(vim.fn.stdpath("config").."/lua/plugins/", true)
require"lazy".setup(plugins)

View file

@ -1,49 +0,0 @@
return {
"rebelot/kanagawa.nvim",
config = function()
require"kanagawa".setup {
theme = "dragon",
background = {
dark = "dragon",
light = "lotus",
},
transparent = true,
colors = {
theme = {
all = {
ui = {
bg_gutter = "none",
},
},
},
},
overrides = function(colors)
local theme = colors.theme
return {
NormalFloat = { bg = "none" },
FloatBorder = { bg = "none" },
FloatTitle = { bg = "none" },
-- Save an hlgroup with dark background and dimmed foreground
-- so that you can use it where your still want darker windows.
-- E.g.: autocmd TermOpen * setlocal winhighlight=Normal:NormalDark
NormalDark = { fg = theme.ui.fg_dim, bg = theme.ui.bg_m3 },
-- Popular plugins that open floats will link to NormalFloat by default;
-- set their background accordingly if you wish to keep them dark and borderless
LazyNormal = { bg = theme.ui.bg_m3, fg = theme.ui.fg_dim },
MasonNormal = { bg = theme.ui.bg_m3, fg = theme.ui.fg_dim },
TelescopeTitle = { fg = theme.ui.special, bold = true },
TelescopePromptNormal = { bg = theme.ui.bg_p1 },
TelescopePromptBorder = { fg = theme.ui.bg_p1, bg = theme.ui.bg_p1 },
TelescopeResultsNormal = { fg = theme.ui.fg_dim, bg = theme.ui.bg_m1 },
TelescopeResultsBorder = { fg = theme.ui.bg_m1, bg = theme.ui.bg_m1 },
TelescopePreviewNormal = { bg = theme.ui.bg_dim },
TelescopePreviewBorder = { bg = theme.ui.bg_dim, fg = theme.ui.bg_dim },
}
end,
}
vim.cmd"colorscheme kanagawa"
end
}

View file

@ -1,8 +0,0 @@
return function ()
require"lspconfig".ccls.setup {
capabilities = require"cmp_nvim_lsp".default_capabilities(),
filetypes = {
"c"
}
}
end

View file

@ -1,8 +0,0 @@
return function ()
require"lspconfig".clangd.setup {
capabilities = require"cmp_nvim_lsp".default_capabilities(),
filetypes = {
"cpp", "objc", "objcpp", "cuda", "proto"
}
}
end

View file

@ -1,4 +0,0 @@
return function()
require"lspconfig".hls.setup {}
end

View file

@ -1,5 +0,0 @@
return function ()
require"lspconfig".ts_ls.setup {
capabilities = require"cmp_nvim_lsp".default_capabilities()
}
end

View file

@ -1,5 +0,0 @@
return function ()
require"lspconfig".texlab.setup {
capabilities = require"cmp_nvim_lsp".default_capabilities()
}
end

View file

@ -1,24 +0,0 @@
return function()
require'lspconfig'.lua_ls.setup {
capabilities = require"cmp_nvim_lsp".default_capabilities(),
on_init = function(client)
local path = client.workspace_folders[1].name
if vim.loop.fs_stat(path..'/.luarc.json') or vim.loop.fs_stat(path..'/.luarc.jsonc') then
return
end
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
version = 'LuaJIT'
},
workspace = {
checkThirdParty = false,
library = vim.api.nvim_get_runtime_file("", true)
}
})
end,
settings = {
Lua = {}
}
}
end

View file

@ -1,6 +0,0 @@
return function ()
require"lspconfig".nil_ls.setup {
capabilities = require"cmp_nvim_lsp".default_capabilities()
}
end

View file

@ -1,5 +0,0 @@
return function ()
require"lspconfig".intelephense. setup {
capabilities = require"cmp_nvim_lsp".default_capabilities(),
}
end

View file

@ -1,10 +0,0 @@
return function()
require"lspconfig".basedpyright.setup {
settings = {
python = {
pythonPath = vim.fn.exepath("python3"),
},
},
}
end

View file

@ -1,11 +0,0 @@
return function()
require"lspconfig".rust_analyzer.setup {
settings = {
["rust-analyzer"] = {
diagnostics = {
enable = false,
},
},
},
}
end

View file

@ -1,5 +0,0 @@
return function()
require"lspconfig".bashls.setup {
capabilities = require"cmp_nvim_lsp".default_capabilities(),
}
end

View file

@ -1,29 +0,0 @@
return {
"neovim/nvim-lspconfig",
config = function()
local require_dir = require"util.require_dir"
local lspees = require_dir(vim.fn.stdpath("config").."/lua/plugins/lsp/", "plugins.lsp")
for _, lspee in ipairs(lspees) do
lspee()
end
local map = require"util.map"
local vlb = vim.lsp.buf
local format = function()
vlb.format { async = true }
end
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function()
map("n", "<leader>lgD", vlb.declaration, "[l]sp [g]o to [D]eclaration")
map("n", "<leader>lgd", vlb.definition, "[l]sp [g]o to [d]definition")
map("n", "<leader>lgi", vlb.implementation, "[l]sp [g]o to [i]mplementation")
map("n", "<leader>lgr", vlb.references, "[l]sp [g]o to [r]eferences")
map("n", "<leader>lh", vlb.hover, "[l]sp [h]over over selection")
map("n", "<leader>lfm", format, "[l]sp [f]or[m]at file")
map("n", "<leader>lca", vlb.code_action, "[l]sp [C]ode [a]ction")
end,
})
end
}

View file

@ -1,139 +0,0 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
config = function()
-- Inspired by https://github.com/nvim-lualine/lualine.nvim/blob/master/examples/evil_lualine.lua
local rgb_to_hex = require"util.rgb_to_hex"
local hl = require"util.hl"
local config = {
options = {
component_separators = "",
section_separators = "",
theme = {
normal = {
c = {
fg = rgb_to_hex(hl("Normal").fg),
bg = "none",
},
},
inactive = {
c = {
fg = rgb_to_hex(hl("Normal").fg),
bg = "none",
},
},
},
},
sections = {
lualine_a = {}, lualine_b = {}, lualine_y = {}, lualine_z = {}, -- Remove defaults
lualine_c = {}, lualine_x = {}, -- Extend these later
},
inactive_sections = {
lualine_a = {}, lualine_b = {}, lualine_c = {}, lualine_x = {}, lualine_y = {}, lualine_z = {},
},
}
local function buffer_not_empty()
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
end
local function ins_l(component)
table.insert(config.sections.lualine_c, component)
end
local function ins_r(component)
table.insert(config.sections.lualine_x, component)
end
local distro = require"util.get_distro"()
ins_l {
function()
return ""
end,
padding = {
left = 0,
right = 0,
},
color = {
fg = rgb_to_hex(hl("Comment").fg),
},
}
ins_l {
function()
return distro.traits.icon
end,
color = {
fg = distro.traits.color,
},
}
ins_l {
"filename",
cond = buffer_not_empty,
color = {
fg = rgb_to_hex(hl("Operator").fg),
}
}
ins_l {
"filesize",
cond = buffer_not_empty,
}
ins_l {
"o:encoding",
cond = buffer_not_empty,
}
ins_l {
"fileformat",
icons_enabled = false,
cond = buffer_not_empty,
}
ins_r { "diagnostics" }
ins_r { "diff" }
ins_r {
"branch",
padding = {
right = 0,
},
color = {
fg = rgb_to_hex(hl("Constant").fg)
}
}
ins_r {
"location",
}
ins_r {
"mode",
fmt = string.lower,
color = {
fg = rgb_to_hex(hl("String").fg),
}
}
ins_r {
function()
return ""
end,
padding = {
left = 0,
right = 0,
},
color = {
fg = rgb_to_hex(hl("Comment").fg),
}
}
require"lualine".setup(config)
end
}

View file

@ -1,6 +0,0 @@
return {
"norcalli/nvim-colorizer.lua",
config = function()
require"colorizer".setup()
end,
}

View file

@ -1,24 +0,0 @@
return {
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
require"telescope".setup {}
local tb = require"telescope.builtin"
local map = require"util.map"
-- Default pickers
map("n", "<leader>tf", tb.find_files,"[T]elescope [f]iles")
map("n", "<leader>tg", tb.live_grep, "[T]elescope [g]rep")
map("n", "<leader>tb", tb.buffers, "[T]elescope [b]uffers")
map("n", "<leader>tm", function()
tb.man_pages({ "ALL" })
end, "[T]elescope [m]an pages")
map("n", "<leader>tk", tb.keymaps, "[T]elescope [k]eymaps")
map("n", "<leader>tk", tb.keymaps, "[T]elescope [k]eymaps")
-- LSP pickers
map("n", "<leader>tld", tb.diagnostics, "[T]elescope [l]sp [d]iagnostics")
map("n", "<leader>tlr", tb.lsp_references, "[T]elescope [l]sp [r]eferences")
end,
}

View file

@ -1,15 +0,0 @@
return {
"nvim-treesitter/nvim-treesitter",
config = function()
require"nvim-treesitter.configs".setup {
ensure_installed = "all", -- pipebomb
highlight = {
enable = true,
},
indent = {
enable = true,
},
}
end,
run = ":TSUpdate",
}

View file

@ -1,8 +0,0 @@
return {
"lervag/vimtex",
lazy = false,
init = function()
vim.g.vimtex_view_method = "zathura"
end
}

View file

@ -1,37 +0,0 @@
vim.api.nvim_create_autocmd("BufReadPost", {
pattern = "*.h",
callback = function()
-- Toggle .h files between being interpreted as C and C++
-- in case I have to work on a C++ header that was saved
-- (incorrectly) as a C header file.
vim.api.nvim_create_user_command("Fytwmmrt", function()
if not vim.b.fu then
vim.b.fu = true
vim.bo.filetype = "cpp"
vim.cmd([[
LspStop ccls
LspStart clangd
]])
else
vim.b.fu = false
vim.bo.filetype = "c"
vim.cmd([[
LspStop ccls
LspStart clangd
]])
end
end, { desc = "Fuck you to whoever made me run this."})
-- Set all .h files to be interpreted as C by default instead
-- of C++. If you use .h for your C++ headers instead of .hpp
-- you should be ashamed of yourself and change and grow as a
-- person as to not repeat such heretical offenses.
if not vim.b.fu then
vim.bo.filetype = "c"
vim.cmd([[
LspStop clangd
LspStart ccls
]])
end
end,
})

View file

@ -1,3 +0,0 @@
require"settings.options"
require"settings.autocmds"
require"settings.keymaps"

View file

@ -1,7 +0,0 @@
local map = require"util.map"
map("n", "<Space>", "<Nop>", "Mapleader")
vim.g.mapleader = " "
map("n", "<leader>df", vim.diagnostic.open_float, "[D]iagnostics [f]loat")

View file

@ -1,28 +0,0 @@
local options = {
tabstop = 4,
softtabstop = 4,
shiftwidth = 4,
expandtab = true,
number = true,
relativenumber = true,
fileencoding = "utf-8",
cursorline = true,
wrap = false,
signcolumn = "yes",
swapfile = false,
errorbells = false,
undofile = true,
incsearch = true,
hlsearch = false,
backup = false,
termguicolors = true,
scrolloff = 8,
sidescrolloff = 8,
}
for option, value in pairs(options) do
pcall(function()
vim.opt[option] = value
end)
end

View file

@ -1,73 +0,0 @@
local function distro_traits(name)
local icons = {
[ "unknown" ] = {
icon = "",
color = "#f3be25",
},
[ "debian" ] = {
icon = "",
color = "#d70a53",
},
[ "gentoo" ] = {
icon = "",
color = "#54487A",
},
[ "nixos" ] = {
icon = "",
color = "#5277C3",
},
[ "\"opensuse-tumbleweed\"" ] = {
icon = "",
color = "#73ba25",
},
}
if os.getenv("CONTAINER_ID") ~= nil then
icons["distrobox"] = {
icon = "[󰏗 " .. os.getenv("CONTAINER_ID") .. "]",
color = "#917d62",
}
end
local icon = icons[name]
if icon == nil then
icon = icons["unknown"]
end
return icon
end
return function()
if os.getenv("CONTAINER_ID") ~= nil then
return {
name = "distrobox",
traits = distro_traits("distrobox"),
}
end
local release_file = io.open("/etc/os-release", "rb")
if release_file == nil then
return {
name = "unknown",
traits = distro_traits("unknown"),
}
end
local content = vim.split(release_file:read("*a"), "\n")
local distro_id = nil
for _, line in ipairs(content) do
if string.sub(line, 0, 3) == "ID=" then
distro_id = string.sub(line, 4, -1)
goto distro_id_found
end
end
::distro_id_found::
release_file:close()
return {
name = distro_id,
traits = distro_traits(distro_id)
}
end

View file

@ -1,7 +0,0 @@
return function (name)
local hl = vim.api.nvim_get_hl(0, { name = name })
while hl.link ~= nil do
hl = vim.api.nvim_get_hl(0, { name = hl.link })
end
return hl
end

View file

@ -1,9 +0,0 @@
return function(mode, key, mapping, comment)
local opts = {
noremap = true,
silent = true,
desc = comment
}
vim.keymap.set(mode, key, mapping, opts)
end

View file

@ -1,27 +0,0 @@
return function(dir, skip_init)
local returns = {}
local lua_files = vim.split(vim.fn.glob(dir.."/*.lua"), "\n")
local namespace = string.gsub(dir, vim.fn.stdpath("config").."/lua/", "")
namespace = string.gsub(namespace, "%/", ".")
for _, file in ipairs(lua_files) do
file = string.gsub(file, "%.lua", "")
file = string.gsub(file, dir.."/", namespace)
if skip_init and file == namespace.."init" then
goto continue
end
local require_ok, require_return = pcall(require, file)
if require_ok then
table.insert(returns, require_return)
else
vim.notify("Could not require file: '"..file.."': "..require_return, vim.log.levels.WARNING)
end
::continue::
end
return returns
end

View file

@ -1,11 +0,0 @@
return function(rgb)
if rgb == nil then
return nil
end
local r = string.format("%02x", (rgb / 65536) % 256)
local g = string.format("%02x", (rgb / 256) % 256)
local b = string.format("%02x", rgb % 256)
return "#"..r..g..b
end

View file

@ -1,12 +0,0 @@
#!/usr/bin/env zsh
# Prefetch paths
source "$ZDOTDIR/conf.d/path.zsh"
for file in $ZDOTDIR/conf.d/*; do
if [[ "$file" == *"path.zsh" ]]; then
continue
fi
source "$file"
done

View file

@ -1,8 +0,0 @@
#!/usr/bin/env zsh
alias reload="exec zsh"
if [ -x "$(command -v nix)" ]; then
alias nix-develop="nix develop -c $SHELL"
fi

View file

@ -1,11 +0,0 @@
#!/usr/bin/env zsh
alias ls='ls --color=auto'
alias ll='ls -lah --color=auto'
alias grep='grep --color=auto'
term_name=$(ps -o comm= "$PPID")
if [ "$term_name" = "xterm" ] && [ -n "$(command -v "transset")" ]; then
transset -a 0.95 > /dev/null
fi

View file

@ -1,20 +0,0 @@
#!/usr/bin/env zsh
if [ -z "$FZF_TAB_PLUGIN" ]; then
if [ ! -d "$HOME/.cache/fzf-tab" ]; then
echo "Installing fzf-tab"
git clone "https://github.com/Aloxaf/fzf-tab" "$HOME/.cache/fzf-tab"
fi
FZF_TAB_PLUGIN="$HOME/.cache/fzf-tab/fzf-tab.plugin.zsh"
fi
autoload -Uz compinit
compinit
source "$FZF_TAB_PLUGIN"
zstyle ':completion:*:git-checkout:*' sort false
if [ -n "$TMUX" ]; then
zstyle ':fzf-tab:*' fzf-command ftb-tmux-popup
fi

View file

@ -1,3 +0,0 @@
#!/usr/bin/env zsh
# TODO: Script to prompt which environment the user wants to enter in to

View file

@ -1,6 +0,0 @@
#!/usr/bin/env zsh
if [ -n "$(command -v qt5ct)" ] && [ -z "$DESKTOP_SESSION" ]; then
export QT_QPA_PLATFORMTHEME=qt5ct
fi

View file

@ -1,9 +0,0 @@
#!/usr/bin/env zsh
if [ -n "$(command -v thefuck)" ]; then
fuck() {
eval $(thefuck --alias)
fuck
}
fi

View file

@ -1,5 +0,0 @@
#!/usr/bin/env zsh
GPG_TTY=$(tty)
export GPG_TTY

View file

@ -1,7 +0,0 @@
#!/usr/bin/env zsh
if [ -n "$(command -v "nvim")" ]; then
export MANPAGER='nvim +Man!'
export EDITOR="nvim"
fi

View file

@ -1,11 +0,0 @@
#!/usr/bin/env zsh
# Nix specific zsh configuration
if [ -x "$(command -v nix)" ]; then
source "$NIX_SHELL_PLUGIN"
if [ -f "$HOME/.config/user-dirs.dirs" ]; then
source "$HOME/.config/user-dirs.dirs"
fi
fi

View file

@ -1,50 +0,0 @@
#!/usr/bin/env zsh
add_to_path() {
if [ -d "$1" ] && [[ "$PATH" != *"$1"* ]]; then
PATH="$PATH:$1"
fi
}
add_to_path "$HOME/.local/bin"
if [ -f "/etc/profile.d/nix.sh" ]; then
source /etc/profile.d/nix.sh
fi
# Language package mangers
if [ -n "$(command -v go)" ]; then
export GOPATH="$HOME/.local/share/go"
add_to_path "$HOME/.local/share/go/bin"
fi
if [ -n "$(command -v npm)" ]; then
if [ -f "$HOME/.npmrc" ]; then
if [ -z "$(grep prefix "$HOME/.npmrc")" ]; then
npm config set prefix "$HOME/.local/share/npm"
fi
else
npm config set prefix "$HOME/.local/share/npm"
fi
add_to_path "$HOME/.local/share/npm/bin"
fi
if [ -n "$(command -v cargo)" ]; then
export CARGO_HOME="$HOME/.local/share/cargo"
add_to_path "$HOME/.local/share/cargo/bin"
fi
if [ -n "$(command -v pip3)" ] && [ -n "$(command -v virtualenv)" ]; then
if [ ! -d "$HOME/.local/share/python3-venv" ]; then
python3 -m venv "$HOME/.local/share/python3-venv"
fi
if [ "$(grep "executable" "$HOME/.local/share/python3-venv/pyvenv.cfg" | awk '{print $3}')" \
!= "$(realpath $(command -v python3))" ]; then
python3 -m venv --upgrade "$HOME/.local/share/python3-venv"
fi
export VIRTUAL_ENV_DISABLE_PROMPT=true
source "$HOME/.local/share/python3-venv/bin/activate"
fi

View file

@ -1,33 +0,0 @@
#!/usr/bin/env zsh
distro=$(cat /etc/os-release | grep -w 'ID=.*' | sed -e 's/ID=//g' | awk '{print $1}')
case "$distro" in
"debian") dicon="%F{red}%f" ;;
"gentoo") dicon="%F{magenta}%f" ;;
"\"opensuse-tumbleweed\"") dicon="%F{green} %f" ;;
"nixos") dicon="%F{cyan}%f" ;;
*) dicon="%F{yellow}[󰘧]%f" ;;
esac
if [ -n "$IN_NIX_SHELL" ]; then
if [ -z "$NIX_SHELL_PACKAGES" ]; then
nix_shell_ps1=" %F{red}nix-shell%f"
else
nix_shell_ps1=" %F{red}{ $NIX_SHELL_PACKAGES }%f"
fi
else
nix_shell_ps1=""
fi
if [ -n "$CONTAINER_ID" ]; then
dicon="%F{bg-yellow}[󰏗 $CONTAINER_ID]%f"
fi
setopt prompt_subst
autoload -Uz vcs_info
precmd () { vcs_info }
zstyle ':vcs_info:*' formats ' %F{yellow}(%b)%f'
NL=$'\n'
export PS1='[$dicon %F{green}%3~%f$vcs_info_msg_0_$nix_shell_ps1]# '

View file

@ -1,13 +0,0 @@
#!/usr/bin/env zsh
if [ -z "$DESKTOP_SESSION" ]; then
if [ -n "$(command -v gnome-keyring-daemon)" ]; then
if [ -z "$(pidof gnome-keyring-daemon)" ]; then
eval $(gnome-keyring-daemon --start)
export SSH_AUTH_SOCK
fi
else
{ eval $(ssh-agent -s); } > /dev/null 2>&1
fi
fi

View file

@ -1,29 +0,0 @@
#!/usr/bin/env zsh
export HISTFILE=~/.cache/zsh_history
export HISTSIZE=10000
export SAVEHIST=$HISTSIZE
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
setopt HIST_IGNORE_SPACE
setopt HIST_SAVE_NO_DUPS
if [ -z "$AUTOSUGGEST_PLUGIN" ]; then
import_file="/usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh"
else
import_file="$AUTOSUGGEST_PLUGIN"
fi
if [ ! -f "$import_file" ]; then
if [ ! -d "$HOME/.cache/zsh-autosuggestions" ]; then
echo "Installing zsh-autosuggestions..."
git clone "https://github.com/zsh-users/zsh-autosuggestions.git" "$HOME/.cache/zsh-autosuggestions"
fi
import_file="$HOME/.cache/zsh-autosuggestions/zsh-autosuggestions.zsh"
fi
source "$import_file"
ZSH_AUTOSUGGEST_STRATEGY=(history completion)

View file

@ -1,18 +0,0 @@
#!/usr/bin/env zsh
if [ -z "$SYNTAX_PLUGIN" ]; then
import_file="/usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
else
import_file="$SYNTAX_PLUGIN"
fi
if [ ! -f "$import_file" ]; then
if [ ! -d "$HOME/.cache/zsh-syntax-highlighting" ]; then
echo "Installing zsh-syntax-highlighting..."
git clone "https://github.com/zsh-users/zsh-syntax-highlighting.git" "$HOME/.cache/zsh-syntax-highlighting"
fi
import_file="$HOME/.cache/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
fi
source "$import_file"

211
flake.lock generated
View file

@ -8,19 +8,41 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1734540176, "lastModified": 1744237139,
"narHash": "sha256-msxbnOw/nh8GJ87YtBEDT1jhVldOBtxHRF2KgvYPeDA=", "narHash": "sha256-f395cE+MIvKcRfRZubYXc7TJfJJ7edwpt7tYIFDgYQo=",
"owner": "ezKEa", "owner": "ezKEa",
"repo": "aagl-gtk-on-nix", "repo": "aagl-gtk-on-nix",
"rev": "00df3ad02364a6fb8f1105dc72ae770b748c62eb", "rev": "a1a00f83d74988e98af8757e9b86ddf04d2ecdfc",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "ezKEa", "owner": "ezKEa",
"ref": "release-24.11",
"repo": "aagl-gtk-on-nix", "repo": "aagl-gtk-on-nix",
"type": "github" "type": "github"
} }
}, },
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1736864502,
"narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=",
"owner": "nix-community",
"repo": "disko",
"rev": "0141aabed359f063de7413f80d906e1d98c0c123",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "latest",
"repo": "disko",
"type": "github"
}
},
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -37,6 +59,70 @@
"type": "github" "type": "github"
} }
}, },
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1743550720,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nixpak",
"nixpkgs"
]
},
"locked": {
"lastModified": 1743550720,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"hercules-ci-effects": {
"inputs": {
"flake-parts": [
"nixpak",
"flake-parts"
],
"nixpkgs": [
"nixpak",
"nixpkgs"
]
},
"locked": {
"lastModified": 1744693102,
"narHash": "sha256-1Z4WPGVky4w3lrhrgs89OKsLzPdtkbi1bPLNFWsoLfY=",
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"rev": "5b6cec51c9ec095a0d3fd4c8eeb53eb5c59ae33e",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -44,26 +130,27 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1736204492, "lastModified": 1744743431,
"narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=", "narHash": "sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "20665c6efa83d71020c8730f26706258ba5c6b2a", "rev": "c61bfe3ae692f42ce688b5865fac9e0de58e1387",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
}, },
"impermanence": { "impermanence": {
"locked": { "locked": {
"lastModified": 1734945620, "lastModified": 1737831083,
"narHash": "sha256-olIfsfJK4/GFmPH8mXMmBDAkzVQ1TWJmeGT3wBGfQPY=", "narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "impermanence", "repo": "impermanence",
"rev": "d000479f4f41390ff7cf9204979660ad5dd16176", "rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -72,13 +159,35 @@
"type": "github" "type": "github"
} }
}, },
"nixpak": {
"inputs": {
"flake-parts": "flake-parts_2",
"hercules-ci-effects": "hercules-ci-effects",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1744856645,
"narHash": "sha256-TgEsizZRX53LkX8qWIqoRd/d4mgGlCqh3OBEhMbXxvU=",
"owner": "nixpak",
"repo": "nixpak",
"rev": "c99853b3e1973b95b86882e3f49763f9be168596",
"type": "github"
},
"original": {
"owner": "nixpak",
"repo": "nixpak",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1736061677, "lastModified": 1744440957,
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=", "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36", "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -88,36 +197,84 @@
"type": "github" "type": "github"
} }
}, },
"plasma-manager": { "nixpkgs-lib": {
"inputs": {
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1735049224, "lastModified": 1743296961,
"narHash": "sha256-fWUd9kyXdepphJ7cCzOsuSo7l0kbFCkUqfgKqZyFZzE=", "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "plasma-manager", "repo": "nixpkgs.lib",
"rev": "d16bbded0ae452bc088489e7dca3ef58d8d1830b", "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"repo": "plasma-manager", "repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1744932701,
"narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"root": { "root": {
"inputs": { "inputs": {
"aagl": "aagl", "aagl": "aagl",
"disko": "disko",
"flake-parts": "flake-parts",
"home-manager": "home-manager", "home-manager": "home-manager",
"impermanence": "impermanence", "impermanence": "impermanence",
"nixpak": "nixpak",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"plasma-manager": "plasma-manager" "nixpkgs-unstable": "nixpkgs-unstable",
"secrets": "secrets",
"sops-nix": "sops-nix"
}
},
"secrets": {
"locked": {
"lastModified": 1737589360,
"narHash": "sha256-s4tCUlvzXpQQ1wJ7ZcslfVuszmQlmnp7bnoZRdnBZuw=",
"ref": "refs/heads/master",
"rev": "2cfed436d84594b4d4a73843095c75c644628dfe",
"revCount": 4,
"type": "git",
"url": "ssh://git@git.caem.dev/caem/secrets.git"
},
"original": {
"type": "git",
"url": "ssh://git@git.caem.dev/caem/secrets.git"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1744669848,
"narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "61154300d945f0b147b30d24ddcafa159148026a",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
} }
} }
}, },

View file

@ -1,31 +1,52 @@
{ {
description = "My NixOS configuration files.";
inputs = { inputs = {
secrets.url = "git+ssh://git@git.caem.dev/caem/secrets.git";
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs";
};
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
home-manager = { disko = {
url = "github:nix-community/home-manager"; url = "github:nix-community/disko/latest";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
plasma-manager = { sops-nix = {
url = "github:nix-community/plasma-manager"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpak = {
url = "github:nixpak/nixpak";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
}; };
aagl = { aagl = {
url = "github:ezKEa/aagl-gtk-on-nix"; url = "github:ezKEa/aagl-gtk-on-nix/release-24.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = { outputs = {
nixpkgs, nixpkgs,
nixpkgs-unstable,
flake-parts,
impermanence, impermanence,
home-manager, home-manager,
plasma-manager, disko,
sops-nix,
secrets,
nixpak,
aagl, aagl,
... ...
} @ inputs: let } @ inputs: let
@ -34,16 +55,24 @@
); );
in { in {
nixosConfigurations = lib.mkHosts { nixosConfigurations = lib.mkHosts {
modules = [
home-manager.nixosModules.home-manager {
home-manager.sharedModules = [
plasma-manager.homeManagerModules.plasma-manager
];
}
impermanence.nixosModules.impermanence
];
nixpkgs = nixpkgs; nixpkgs = nixpkgs;
inputs = inputs; inputs = inputs;
user = "caem";
modules = [
impermanence.nixosModules.impermanence
disko.nixosModules.disko
sops-nix.nixosModules.sops
aagl.nixosModules.default
home-manager.nixosModules.home-manager {
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = {
inherit inputs;
};
};
}
];
}; };
}; };
} }

View file

@ -1,39 +0,0 @@
{ config, ... }:
{
users.users.hu = {
isNormalUser = true;
extraGroups = [ "wheel" ];
hashedPasswordFile = "/nix/config/secrets/pass";
};
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users.hu = {
home.username = "hu";
home.homeDirectory = "/home/hu";
home.stateVersion = config.system.stateVersion;
xdg = {
enable = true;
userDirs = {
documents = "/home/hu/documents";
download = "/home/hu/download";
music = "/home/hu/music";
pictures = "/home/hu/images";
videos = "/home/hu/videos";
# I will never need this so they're getting hidden
publicShare = "/home/hu/.local/share/xdg/public";
templates = "/home/hu/.local/share/xdg/templates";
};
};
};
};
imports = [
./persist.nix
];
}

View file

@ -1,24 +0,0 @@
{ ... }:
{
environment.persistence."/nix/persist".users.hu = {
directories = [
"archives"
"documents"
"programming"
"source"
"games"
"images"
"videos"
# Program files
{ directory = ".gnupg"; mode = "0700"; }
{ directory = ".ssh"; mode = "0700"; }
{ directory = ".nixops"; mode = "0700"; }
{ directory = ".local/share/keyrings"; mode = "0700"; }
{ directory = ".pki"; mode = "0700"; }
".local/share/direnv"
];
};
}

63
hosts/puter/default.nix Normal file
View file

@ -0,0 +1,63 @@
{ pkgs, lib, username, ... }:
{
imports = [
./disko.nix
./packages.nix
];
time.timeZone = "Europe/Berlin";
networking = {
hostName = "puter";
useDHCP = lib.mkDefault true;
};
boot = {
loader = {
efi.canTouchEfiVariables = true;
grub = {
enable = true;
# Keep "nodev" for efi systems
device = "nodev";
efiSupport = true;
gfxmodeEfi = "1920x1080";
};
};
tmp.useTmpfs = true;
kernelPackages = pkgs.unstable.linuxPackages_xanmod_latest;
supportedFilesystems = [ "btfs" "vfat" "xfs" ];
initrd = {
availableKernelModules = [ "nvme" "xhci_pci" "ahci"
"usbhid" "usb_storage" "sd_mod" ];
};
};
services = {
fstrim.enable = true;
btrfs.autoScrub.enable = true;
};
fileSystems = {
# These are system specific. If you have any additional drives that are not
# your root device you can add and mount them here. Added nofail so that you can
# install this configuration on a device without it exploding when you don't have
# these specific partitions.
"/home/${username}/mounts/vault" = {
device = "/dev/disk/by-uuid/048d175b-0e3e-4ec7-955b-3d9a45f9f237";
options = [ "nofail" ];
fsType = "xfs";
};
"/home/${username}/mounts/attic" = {
device = "/dev/disk/by-uuid/ec32ce36-9f53-4f44-ac8f-2c9163f0b3d7";
options = [ "nofail" ];
fsType = "xfs";
};
};
system.stateVersion = "24.11"; # [managed by install.sh] { state version }
}

58
hosts/puter/disko.nix Normal file
View file

@ -0,0 +1,58 @@
{ ... }:
{
disko.devices = {
disk = {
master = {
type = "disk";
device = "/dev/nvme0n1"; # [managed by install.sh]
content = {
type = "gpt";
partitions = {
efi = {
priority = 1;
name = "efi";
start = "1M";
end = "1024M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"umask=0077"
"noatime"
];
};
};
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" "-L nixos" ];
subvolumes = {
/* Do not rename the root partition as it'll break impermanence */
"/root" = {
mountpoint = "/";
mountOptions = [
"noatime"
"compress=zstd"
];
};
"/nix" = {
mountpoint = "/nix";
mountOptions = [
"noatime"
"compress=zstd"
];
};
};
};
};
};
};
};
};
};
}

18
hosts/puter/packages.nix Normal file
View file

@ -0,0 +1,18 @@
{ ... }:
{
imports = let
modules = ../../modules/nixos;
in [
"${modules}/core"
"${modules}/hardware/audio"
"${modules}/hardware/gpu/nvidia"
"${modules}/hardware/cpu/amd"
"${modules}/multimedia"
"${modules}/desktop/gnome"
"${modules}/communication"
"${modules}/development"
"${modules}/edv"
];
}

49
hosts/vm/default.nix Normal file
View file

@ -0,0 +1,49 @@
{ pkgs, lib, modulesPath, ... }:
{
imports = [
./disko.nix
./packages.nix
(modulesPath + "/profiles/qemu-guest.nix")
];
time.timeZone = "Europe/Berlin";
networking = {
hostName = "vm";
useDHCP = lib.mkDefault true;
};
boot = {
loader = {
grub = {
enable = true;
# device = "/dev/sda"; # [managed by install.sh]
gfxmodeEfi = "1920x1080";
};
};
tmp.useTmpfs = true;
kernelPackages = pkgs.linuxPackages_xanmod_latest;
supportedFilesystems = [ "btfs" "vfat" "xfs" ];
initrd = {
availableKernelModules = [ "nvme" "xhci_pci" "ahci"
"usbhid" "usb_storage" "sd_mod" ];
};
};
services = {
fstrim.enable = true;
btrfs.autoScrub.enable = true;
};
fileSystems = {
# These are system specific. If you have any additional drives that are not
# your root device you can add and mount them here. Added nofail so that you can
# install this configuration on a device without it exploding when you don't have
# these specific partitions.
};
system.stateVersion = "24.11"; # [managed by install.sh]
}

54
hosts/vm/disko.nix Normal file
View file

@ -0,0 +1,54 @@
{ ... }:
{
disko.devices = {
disk = {
master = {
type = "disk";
device = "/dev/vda"; # [managed by install.sh]
content = {
type = "gpt";
partitions = {
grub_mbr = {
size = "1M";
type = "EF02"; # for grub MBR
};
boot = {
size = "1G";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/boot";
};
};
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" "-L nixos" ];
subvolumes = {
/* Do not rename the root partition as it'll break impermanence */
"/root" = {
mountpoint = "/";
mountOptions = [
"noatime"
"compress=zstd"
];
};
"/nix" = {
mountpoint = "/nix";
mountOptions = [
"noatime"
"compress=zstd"
];
};
};
};
};
};
};
};
};
};
}

14
hosts/vm/packages.nix Normal file
View file

@ -0,0 +1,14 @@
{ ... }:
{
imports = let
modules = ../../modules/nixos;
in [
"${modules}/core"
"${modules}/hardware/audio"
"${modules}/hardware/gpu/graphics.nix"
"${modules}/multimedia"
"${modules}/desktop/gnome"
];
}

View file

@ -1,96 +0,0 @@
{ config, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./persist.nix
../../home/default.nix
../../modules/desktop/environments/kde.nix
../../modules/system/basic.nix
../../modules/system/security.nix
../../modules/desktop/apps/communication.nix
../../modules/desktop/apps/games.nix
../../modules/desktop/apps/multimedia.nix
../../modules/system/virtualisation.nix
../../modules/system/development.nix
../../modules/packages/firefox.nix
../../modules/packages/zsh.nix
../../modules/packages/fastfetch.nix
../../modules/packages/tmux.nix
];
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub = {
enable = true;
efiSupport = true;
device = "nodev";
gfxmodeEfi = "1920x1080";
};
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest;
boot.supportedFilesystems = [ "btrfs" "xfs" ];
networking = {
hostName = "workstation";
enableIPv6 = false;
};
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "uk";
# useXkbConfig = true;
};
nixpkgs.config.allowUnfree = true;
services.xserver.videoDrivers = [ "nvidia" ];
hardware = {
graphics = {
enable = true;
enable32Bit = true;
};
nvidia = {
modesetting.enable = true;
open = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
};
programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
jack.enable = true;
};
nix = {
settings = {
substituters = [
"https://cuda-maintainers.cachix.org"
];
trusted-public-keys = [
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
];
};
extraOptions = ''
experimental-features = nix-command flakes
'';
};
# nixpkgs.config.cudaSupport = true;
system.stateVersion = "23.11";
}

View file

@ -1,78 +0,0 @@
{ config, lib, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
fileSystems."/" = {
device = "/dev/disk/by-uuid/5cc0482e-ac92-41c7-b2fc-2d9b4a19eeec";
fsType = "btrfs";
options = [ "subvol=root" "compress=zstd" "noatime" ];
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/5cc0482e-ac92-41c7-b2fc-2d9b4a19eeec";
fsType = "btrfs";
options = [ "subvol=nix" "compress=zstd" "noatime" ];
neededForBoot = true;
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/3012-B13E";
fsType = "vfat";
};
fileSystems."/home/hu/mounts/vault" = {
device = "/dev/disk/by-uuid/048d175b-0e3e-4ec7-955b-3d9a45f9f237";
fsType = "xfs";
};
fileSystems."/home/hu/mounts/attic" = {
device = "/dev/disk/by-uuid/ec32ce36-9f53-4f44-ac8f-2c9163f0b3d7";
fsType = "xfs";
};
boot.initrd.availableKernelModules = [
"nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.extraModprobeConfig = "options kvm_amd nested=1";
boot.kernelParams = [
"nvidia_drm.fbdev=1"
"nvidia.NVreg_PreserveVideoMemoryAllocations=1"
];
boot.initrd.postDeviceCommands = lib.mkAfter ''
mkdir /btrfs_tmp
mount ${config.fileSystems."/".device} /btrfs_tmp
if [[ -e /btrfs_tmp/root ]]; then
mkdir -p /btrfs_tmp/old_roots
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -1,23 +0,0 @@
{ ... }:
{
environment.persistence."/nix/persist" = {
hideMounts = true;
directories = [
"/var/log"
"/var/lib/nixos"
"/var/lib/systemd/coredump"
{
directory = "/var/lib/colord";
user = "colord";
group = "colord";
mode = "u=rwx,g=rx,o=";
}
"/etc/NetworkManager/system-connections"
];
files = [
"/etc/machine-id"
];
};
}

View file

@ -1,78 +1,54 @@
{ pkgs, ... }: { pkgs, lib, username, ... }:
{ {
imports = [ imports = [
./hardware-configuration.nix ./disko.nix
./persist.nix ./packages.nix
../../home/default.nix
../../modules/desktop/environments/river.nix
../../modules/system/basic.nix
../../modules/system/security.nix
../../modules/desktop/apps/communication.nix
../../modules/desktop/apps/multimedia.nix
../../modules/system/development.nix
../../modules/packages/firefox.nix
../../modules/packages/zsh.nix
../../modules/packages/fastfetch.nix
../../modules/packages/tmux.nix
]; ];
hardware.bluetooth.enable = true; time.timeZone = "Europe/Berlin";
boot = { console = {
loader.grub = { earlySetup = true;
enable = true; keyMap = "de";
device = "/dev/sda";
gfxmodeEfi = "1366x768";
};
kernelPackages = pkgs.linuxPackages_xanmod_latest;
supportedFilesystems = [ "btrfs" ];
}; };
networking = { networking = {
hostName = "x220"; hostName = "x220";
networkmanager.enable = true; useDHCP = lib.mkDefault true;
}; };
users.users.hu.extraGroups = [ "networkmanager" ]; boot = {
loader = {
time.timeZone = "Europe/Berlin"; efi.canTouchEfiVariables = true;
grub = {
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "de";
# useXkbConfig = true;
};
nixpkgs.config.allowUnfree = true;
programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = true; # device = "/dev/sda"; # [managed by install.sh]
gfxmodeEfi = "1366x768";
};
}; };
security.rtkit.enable = true; tmp.useTmpfs = true;
services.pipewire = { kernelPackages = pkgs.unstable.linuxPackages_xanmod_latest;
enable = true; supportedFilesystems = [ "btfs" "vfat" "xfs" ];
alsa = { initrd = {
enable = true; availableKernelModules = [ "ehci_pci" "ahci" "xhci_pci"
support32Bit = true; "usb_storage" "sd_mod" "sdhci_pci" ];
}; };
pulse.enable = true;
jack.enable = true;
}; };
services.tlp.enable = true; services = {
fstrim.enable = true;
nix = { btrfs.autoScrub.enable = true;
extraOptions = ''
experimental-features = nix-command flakes
'';
}; };
system.stateVersion = "24.05"; fileSystems = {
# These are system specific. If you have any additional drives that are not
# your root device you can add and mount them here. Added nofail so that you can
# install this configuration on a device without it exploding when you don't have
# these specific partitions.
};
system.stateVersion = "24.11"; # [managed by install.sh] { state version }
} }

58
hosts/x220/disko.nix Normal file
View file

@ -0,0 +1,58 @@
{ ... }:
{
disko.devices = {
disk = {
master = {
type = "disk";
device = "/dev/sda"; # [managed by install.sh]
content = {
type = "gpt";
partitions = {
grub_mbr = {
size = "1M";
type = "EF02";
};
boot = {
size = "1G";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/boot";
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "crypted";
content = {
type = "btrfs";
extraArgs = [ "-f" "-L nixos" ];
subvolumes = {
/* Do not rename the root partition as it'll break impermanence */
"/root" = {
mountpoint = "/";
mountOptions = [
"noatime"
"compress=zstd"
];
};
"/nix" = {
mountpoint = "/nix";
mountOptions = [
"noatime"
"compress=zstd"
];
};
};
};
};
};
};
};
};
};
};
}

View file

@ -1,61 +0,0 @@
{ config, lib, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
fileSystems."/" = {
device = "/dev/disk/by-uuid/e0b531cf-b575-4579-b866-9b7265e01b0a";
fsType = "btrfs";
options = [ "subvol=root" "compress=zstd" "noatime" "ssd" ];
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/e0b531cf-b575-4579-b866-9b7265e01b0a";
fsType = "btrfs";
options = [ "subvol=nix" "compress=zstd" "noatime" "ssd" ];
neededForBoot = true;
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/bfe6e556-44e9-427f-9ae6-eddae6c62298";
fsType = "ext4";
};
boot.initrd.luks.devices."vg".device = "/dev/disk/by-uuid/92b4f484-2c00-47e7-baf6-9f396883e231";
boot.initrd.availableKernelModules = [
"ehci_pci" "ahci" "xhci_pci" "usb_storage" "sd_mod" "sdhci_pci"
];
boot.kernelModules = [ "kvm-intel" ];
boot.initrd.postDeviceCommands = lib.mkAfter ''
mkdir /btrfs_tmp
mount ${config.fileSystems."/".device} /btrfs_tmp
if [[ -e /btrfs_tmp/root ]]; then
mkdir -p /btrfs_tmp/old_roots
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

20
hosts/x220/packages.nix Normal file
View file

@ -0,0 +1,20 @@
{ ... }:
{
imports = let
modules = ../../modules/nixos;
in [
"${modules}/core"
"${modules}/hardware/audio"
"${modules}/hardware/cpu/intel"
"${modules}/multimedia/video"
"${modules}/multimedia/art"
"${modules}/multimedia/web"
"${modules}/multimedia/music"
"${modules}/desktop/gnome"
"${modules}/communication"
"${modules}/development"
"${modules}/edv"
];
}

View file

@ -1,23 +0,0 @@
{ ... }:
{
environment.persistence."/nix/persist" = {
hideMounts = true;
directories = [
"/var/log"
"/var/lib/nixos"
"/var/lib/systemd/coredump"
{
directory = "/var/lib/colord";
user = "colord";
group = "colord";
mode = "u=rwx,g=rx,o=";
}
"/etc/NetworkManager/system-connections"
];
files = [
"/etc/machine-id"
];
};
}

182
install.sh Executable file
View file

@ -0,0 +1,182 @@
#!/usr/bin/env sh
# Author: caem - https://caem.dev
# install.sh - Installation script for my NixOS configuration
#
# This script aims to automate the deployment of my configuration
# on a new machine.
args_ensure_extra_arg() {
if [ -z "$2" ] || [ "$(echo "$2" | cut -c 1-1)" = "-" ]; then
>&2 echo "Argument '$1' requires an extra argument. Run --help for more info."
exit 1
fi
}
args_ensure_is_set() {
if [ -z "$2" ]; then
>&2 echo "Argument '$1' is required to be set. Please consult the README or run again with --help."
exit 1
fi
}
args() {
while [ -n "$1" ]; do
case "$1" in
"-h" | "--help")
echo ""
echo "$0 - Installation script for my NixOS configuration"
echo ""
echo "arguments:"
echo " -h|--help Print this and exit"
echo " -d|--device [device] (required) The device you want to install NixOS on to"
echo " -o|--host [hostname] (required) The host from ./hosts you want to install"
echo " -b|--build Build the system without installing"
echo ""
echo "origin: https://github.com/c4em/caenix"
echo ""
exit 0
;;
"-d" | "--device")
args_ensure_extra_arg "$@"
if [ ! -b "$2" ]; then
>&2 echo "'$2' is not a valid block device. Make sure you selected the right drive"
exit 1
fi
CAENIX_INSTALL_DEVICE="$2"
shift 2
;;
"-o" | "--host")
args_ensure_extra_arg "$@"
if [ ! -d "./hosts/$2" ]; then
>&2 echo "Invalid hostname '$2'. Make sure it exists in ./hosts"
exit 1
fi
CAENIX_HOSTNAME="$2"
shift 2
;;
"-b" | "--build")
CAENIX_DO_ONLY_BUILD=1
shift 1
;;
*)
>&2 echo "Unrecognized argument '$1'. Run with --help to view accepted arguments."
exit 1
;;
esac
done
args_ensure_is_set "--host" "$CAENIX_HOSTNAME"
if [ -z "$CAENIX_DO_ONLY_BUILD" ]; then
args_ensure_is_set "--device" "$CAENIX_INSTALL_DEVICE"
fi
}
sed_safe () {
# I got this off of some random StackOverflow answer. Don't put too much trust in this.
printf "%s" "$1" | sed -r 's/([\$\.\*\/\[\\^])/\\\1/g' | sed 's/[]]/\[]]/g'
}
update_managed_values() {
sed -i 's/\( *device = \)".*"\(; # [managed by install\.sh].*\)/\1"'"$(sed_safe "$CAENIX_INSTALL_DEVICE")"'"\2/' "./hosts/$CAENIX_HOSTNAME/default.nix"
sed -i 's/\( *device = \)".*"\(; #.*\)/\1"'"$(sed_safe "$CAENIX_INSTALL_DEVICE")"'"\2/' "./hosts/$CAENIX_HOSTNAME/disko.nix"
sed -i 's/\( *system.stateVersion = \)".*"\(; #.*\)/\1"'"$(sed_safe "$(nixos-version | cut -f1,2 -d '.')")"'"\2/' "./hosts/$CAENIX_HOSTNAME/default.nix"
}
build() {
nix build ".#nixosConfigurations.${CAENIX_HOSTNAME}.config.system.build.toplevel"
}
permissions() {
if [ "$(id -u)" = "0" ]; then
sudo () {
"$@"
}
else
sudo -v
fi
}
ensure_confirmation() {
printf "\e[1;31m=== ARE YOU SURE YOU WANT TO CONTINUE WITH THE INSTALLATION ===\e[0m\n\n"
printf "This will \e[1;31mIRREVERSIBLY\e[0m wipe all data in '%s'\n" "$CAENIX_INSTALL_DEVICE"
printf "This disk contains following partitions:\n\n"
lsblk -o NAME,SIZE,TYPE,FSTYPE "$CAENIX_INSTALL_DEVICE"
printf "\n"
printf "Please write 'Yes, do as I say!' to continue with the installation\n> "
read -r install_prompt
if [ "$install_prompt" != "Yes, do as I say!" ]; then
echo "Cancelling installation"
exit 0
else
CAENIX_CONFIRM_DISK_NUKE="yes"
fi
}
partition_disk() {
if [ "$CAENIX_CONFIRM_DISK_NUKE" = "yes" ]; then
sudo nix --experimental-features 'flakes nix-command' run github:nix-community/disko/latest -- \
--mode destroy,format,mount --yes-wipe-all-disks "./hosts/$CAENIX_HOSTNAME/disko.nix"
else
>&2 echo "Aborted installation due to invalid state in the partitioning step."
exit 1
fi
}
install() {
yes | sudo nixos-install --no-root-passwd --flake ".#$CAENIX_HOSTNAME"
}
copy_files_to_new_install() {
username="$(grep user ./flake.nix | sed -e 's/.*user = "\(.*\)";.*/\1/')"
if [ -z "$username" ]; then
>&2 echo "Cannot determine username"
exit 1
fi
sudo cp -vr . /mnt/nix/config
sudo mkdir -p "/mnt/nix/persist/home/$username/programming/personal"
sudo ln -svf /nix/config "/mnt/nix/persist/home/$username/programming/personal/caenix"
sudo chown -R 1000:100 "/mnt/nix/persist/home/$username"
sudo chown -R 1000:100 "/mnt/nix/config"
}
reboot_on_consent() {
printf "\n\nInstallation finished. Would you like to reboot?\n[y/n] > "
read -r do_reboot
if [ "$do_reboot" = "y" ] || [ "$do_reboot" = "Y" ]; then
sudo reboot
fi
}
main () {
args "$@"
permissions
if [ -n "$CAENIX_DO_ONLY_BUILD" ]; then
if [ -n "$CAENIX_INSTALL_DEVICE" ]; then
update_managed_values
fi
build
exit 0
fi
ensure_confirmation
update_managed_values
partition_disk
copy_files_to_new_install
install
reboot_on_consent
}
set -e
main "$@"

View file

@ -1,7 +1,5 @@
{ lib }: { lib }:
# todo: Write a function to import all of these automatically
let let
fs = import ./fs.nix { inherit lib; }; fs = import ./fs.nix { inherit lib; };
hosts = import ./hosts.nix { inherit lib; }; hosts = import ./hosts.nix { inherit lib; };

View file

@ -5,6 +5,12 @@
path: let path: let
dirs = builtins.readDir path; dirs = builtins.readDir path;
in in
builtins.filter (name: dirs.${name} == "directory") (builtins.attrNames dirs); builtins.filter (type: dirs.${type} == "directory") (builtins.attrNames dirs);
getModuleImports =
path: let
files = builtins.attrNames (builtins.removeAttrs (builtins.readDir path) ["default.nix"]);
in
map (file: "${path}/${file}") files;
} }

View file

@ -2,15 +2,23 @@
{ {
mkHosts = { mkHosts = {
modules,
nixpkgs, nixpkgs,
inputs, inputs,
modules,
user,
}: builtins.listToAttrs (builtins.map (host: { }: builtins.listToAttrs (builtins.map (host: {
name = host; name = host;
value = nixpkgs.lib.nixosSystem { value = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = modules ++ [ ../hosts/${host} ]; modules = modules ++ [
specialArgs = { inherit inputs; }; ../hosts/${host}
../modules/nixos/user/${user}.nix
];
specialArgs = {
inherit inputs lib;
username = user;
cfgPath = ../.;
};
}; };
}) (lib.getDirsInDir ../hosts)); }) (lib.getDirsInDir ../hosts));
} }

View file

@ -1,19 +0,0 @@
{ pkgs, ... }:
{
environment.persistence."/nix/persist".users.hu.directories = [
".config/Signal"
".config/vesktop"
".config/tutanota-desktop"
".config/tuta_integration"
".config/Element"
];
environment.systemPackages = with pkgs; [
tutanota-desktop
signal-desktop
element-desktop
vesktop
];
}

View file

@ -1,35 +0,0 @@
{ pkgs, inputs, ... }:
{
environment.persistence."/nix/persist".users.hu.directories = [
".steam"
".local/share/Steam"
".local/share/honkers-railway-launcher"
".local/share/anime-game-launcher"
".local/share/PrismLauncher"
".xlcore"
".local/share/Euro Truck Simulator 2"
".local/share/osu"
".local/share/Colossal Order"
];
programs.steam = {
enable = true;
remotePlay.openFirewall = false;
dedicatedServer.openFirewall = true;
gamescopeSession.enable = true;
};
environment.systemPackages = with pkgs; [
prismlauncher
protonup-qt
osu-lazer-bin
protontricks
];
imports = [ inputs.aagl.nixosModules.default ];
nix.settings = inputs.aagl.nixConfig;
programs.anime-game-launcher.enable = true;
}

View file

@ -1,41 +0,0 @@
{ pkgs, ... }:
{
environment.persistence."/nix/persist".users.hu.directories = [
".config/OpenTabletDriver"
".config/tidal-hifi"
];
environment.systemPackages = with pkgs; [
mpv
imagemagick
ffmpeg-full
yt-dlp
(pkgs.symlinkJoin {
name = "flowblade";
paths = [ pkgs.flowblade ];
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
rm "$out/bin/flowblade"
echo "#!/bin/sh" > "$out/bin/flowblade"
echo "SDL12COMPAT_NO_QUIT_VIDEO=1 \
GDK_BACKEND=x11 \
SDL_VIDEODRIVER=x11 \
${pkgs.flowblade}/bin/flowblade" >> "$out/bin/flowblade"
chmod 555 "$out/bin/flowblade"
'';
})
gimp
inkscape
krita
tidal-hifi
blender
obs-studio
];
# hardware.opentabletdriver = {
# enable = true;
# daemon.enable = true;
# };
}

View file

@ -1,218 +0,0 @@
{ pkgs, ...}:
{
imports = [
../../system/fonts.nix
../../packages/waybar.nix
../../packages/rofi.nix
../../packages/foot.nix
];
environment.systemPackages = with pkgs; [
hyprpaper
rofi-wayland
foot
wl-clipboard
nautilus
pavucontrol
nvidia-vaapi-driver
];
environment.sessionVariables = {
LIBVA_DRIVER_NAME = "nvidia";
XDG_SESSION_TYPE = "wayland";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
NVD_BACKEND = "direct";
MOZ_DISABLE_RDD_SANDBOX = 1;
NIXOS_OZONE_WL = 1;
};
programs.hyprland = {
enable = true;
};
services.gnome.gnome-keyring.enable = true;
security.pam.services.greetd.enableGnomeKeyring = true;
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal";
TTYReset = true;
TTYHangup = true;
TTYVTDisallocate = true;
};
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --asterisks --cmd hyprland";
user = "greeter";
};
};
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
};
home-manager.users.hu = {
home.pointerCursor = {
gtk.enable = true;
name = "Bibata-Modern-Classic";
package = pkgs.bibata-cursors;
size = 24;
};
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
gtk = {
enable = true;
theme = {
name = "adw-gtk3-dark";
package = pkgs.adw-gtk3;
};
iconTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
};
qt = {
enable = true;
platformTheme.name = "adwaita";
style = {
name = "adwaita-dark";
package = pkgs.adwaita-qt;
};
};
services.hyprpaper = {
enable = true;
settings = {
ipc = "on";
splash = false;
preload = [
"/nix/config/assets/wallpapers/hyprland.jpg"
];
wallpaper = [
",/nix/config/wallpapers/hyprland.jpg"
];
};
};
wayland.windowManager.hyprland = {
enable = true;
systemd = {
enable = true;
variables = [ "--all" ];
};
settings = {
"$mod" = "SUPER";
"$terminal" = "foot";
"$menu" = "rofi -show drun";
monitor = "DP-1,1920x1080@144,auto,1";
cursor = {
no_hardware_cursors = true;
};
render = {
explicit_sync = 0;
};
input = {
kb_layout = "gb:intl";
follow_mouse = 1;
};
general = {
gaps_in = 3;
gaps_out = 6;
border_size = 2;
layout = "master";
allow_tearing = true;
"col.inactive_border" = "rgb(242424)";
"col.active_border" = "rgb(3584E4)";
};
master = {
mfact = 0.5;
};
decoration = {
rounding = 5;
blur = {
enabled = true;
size = 4;
passes = 1;
};
};
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
bind = [
"$mod, P, exec, $menu"
"$mod, RETURN, exec, $terminal"
", Scroll_Lock, exec, pavucontrol"
"$mod, f, exec, nautilus"
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-"
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", Pause, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
"$mod SHIFT, C, killactive"
"$mod, SPACE, togglefloating"
"$mod SHIFT, M, exit,"
"$mod SHIFT, RETURN, layoutmsg, swapwithmaster"
"$mod SHIFT, h, layoutmsg, mfact -0.05"
"$mod SHIFT, l, layoutmsg, mfact +0.05"
"$mod, h, movefocus, l"
"$mod, j, movefocus, d"
"$mod, k, movefocus, u"
"$mod, l, movefocus, r"
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod SHIFT, 1, movetoworkspace, 1"
"$mod SHIFT, 2, movetoworkspace, 2"
"$mod SHIFT, 3, movetoworkspace, 3"
"$mod SHIFT, 4, movetoworkspace, 4"
"$mod SHIFT, 5, movetoworkspace, 5"
"$mod SHIFT, 6, movetoworkspace, 6"
"$mod SHIFT, 7, movetoworkspace, 7"
"$mod SHIFT, 8, movetoworkspace, 8"
"$mod SHIFT, 9, movetoworkspace, 9"
];
};
};
};
}

View file

@ -1,209 +0,0 @@
{ pkgs, ... }:
let
sddm-background-drv = pkgs.stdenvNoCC.mkDerivation {
name = "sddm-background-drv";
src = ../../../assets/wallpapers;
dontUnpack = true;
installPhase = ''
cp $src/kde.png $out
'';
};
in {
imports = [
../../system/fonts.nix
];
environment.persistence."/nix/persist".directories = [
"/var/lib/AccountsService/"
];
environment.persistence."/nix/persist".users.hu.directories = [
".local/share/kwalletd"
".local/share/baloo"
".local/share/dolphin"
];
environment.persistence."/nix/persist".users.hu.files = [
".config/kwinoutputconfig.json" # https://github.com/nix-community/plasma-manager/issues/172
".local/state/konsolestaterc"
];
networking.networkmanager.enable = true;
users.users.hu.extraGroups = [ "networkmanager" ];
environment.sessionVariables = {
LIBVA_DRIVER_NAME = "nvidia";
XDG_SESSION_TYPE = "wayland";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
NVD_BACKEND = "direct";
NIXOS_OZONE_WL = 1;
};
services.desktopManager.plasma6.enable = true;
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
};
environment.plasma6.excludePackages = with pkgs.kdePackages; [
plasma-browser-integration
khelpcenter
krdp
];
environment.systemPackages = with pkgs; [
nvidia-vaapi-driver
kdePackages.sddm-kcm
(pkgs.writeTextDir "share/sddm/themes/breeze/theme.conf.user" ''
[General]
background=${sddm-background-drv}
'')
networkmanager-openvpn
wl-clipboard
];
home-manager.users.hu = {
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
gtk = {
gtk2.configLocation = "/home/hu/.config/gtk-2.0/gtkrc";
enable = true;
theme = {
name = "Breeze";
package = pkgs.kdePackages.breeze-gtk;
};
};
programs.konsole = {
enable = true;
defaultProfile = "custom";
customColorSchemes = {
"custom" = ../../packages/konsole/custom.colorscheme;
};
profiles = {
custom = {
name = "custom";
colorScheme = "custom";
font = {
name = "Go Mono Nerd Font";
size = 12;
};
};
};
};
programs.plasma = {
enable = true;
workspace = {
lookAndFeel = "org.kde.breezedark.desktop";
wallpaper = "/nix/config/assets/wallpapers/kde.png";
};
panels = [
{
location = "left";
floating = true;
widgets = [
{
kickoff = {
icon = "nix-snowflake-white";
};
}
{
iconTasks = {
launchers = [
"applications:org.kde.dolphin.desktop"
"applications:org.kde.konsole.desktop"
"applications:firefox-esr.desktop"
];
};
}
"org.kde.plasma.marginsseparator"
{
systemTray = {
icons = {
spacing = "small";
};
};
}
{
digitalClock = {
calendar.firstDayOfWeek = "monday";
time.format = "24h";
date.enable = false;
};
}
"org.kde.plasma.pager"
];
}
];
powerdevil = {
AC = {
autoSuspend.action = "nothing";
dimDisplay.enable = false;
powerButtonAction = "hibernate";
};
};
shortcuts = {
kwin = {
"Switch to Desktop 1" = "Meta+1";
"Switch to Desktop 2" = "Meta+2";
"Switch to Desktop 3" = "Meta+3";
"Switch to Desktop 4" = "Meta+4";
"Switch to Desktop 5" = "Meta+5";
"Switch to Desktop 6" = "Meta+6";
"Switch to Desktop 7" = "Meta+7";
"Switch to Desktop 8" = "Meta+8";
"Switch to Desktop 9" = "Meta+9";
# Don't blame me for this. This is all the doing of kwin.
# You're going to have to adjust this to your layout.
"Window to Desktop 1" = "Meta+!";
"Window to Desktop 2" = "Meta+\"";
"Window to Desktop 3" = "Meta+£";
"Window to Desktop 4" = "Meta+$";
"Window to Desktop 5" = "Meta+%";
"Window to Desktop 6" = "Meta+^";
"Window to Desktop 7" = "Meta+&";
"Window to Desktop 8" = "Meta+*";
"Window to Desktop 9" = "Meta+(";
};
};
configFile = {
kwinrc = {
Desktops = {
Number = {
value = 9;
};
Rows = {
value = 3;
};
};
};
plasmaashellrc = {
PlasmaViews = {
panelOpacity = 2;
};
};
kxkbrc = {
Layout = {
LayoutList = "gb";
Use = true;
};
};
};
};
};
}

View file

@ -1,305 +0,0 @@
{ pkgs, ...}:
{
imports = [
../../system/fonts.nix
../../packages/foot.nix
];
nixpkgs.overlays = [
(final: prev: {
sandbar = prev.sandbar.overrideAttrs (old: {
src = prev.fetchFromGitHub {
owner = "kolunmi";
repo = "sandbar";
rev = "e64a8b788d086cdf4ec44b51e62bdc7b6b5f8165";
hash = "sha256-dNYYlm5CEdnvLjskrPJgquptIQpYgU+gxOu+bt+7sbw=";
};
});
})
];
environment.systemPackages = with pkgs; [
foot # to be replaced with ghostty
wl-clipboard
sandbar
pamixer
pavucontrol
tofi
swaybg
fnott
slurp
wf-recorder
grim
libnotify
seahorse
];
environment.sessionVariables = {
NIXOS_OZONE_WL = 1;
};
programs.river.enable = true;
services.gnome.gnome-keyring.enable = true;
security.pam.services.greetd.enableGnomeKeyring = true;
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal";
TTYReset = true;
TTYHangup = true;
TTYVTDisallocate = true;
};
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --asterisks --cmd river";
user = "greeter";
};
};
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
};
home-manager.users.hu = {
home.file."/home/hu/.config/tofi/config" = {
text = ''
width = 100%
height = 100%
border-width = 0
outline-width = 0
padding-left = 35%
padding-top = 35%
result-spacing = 25
num-results = 5
font = Go Mono Nerd Font
background-color = #000A
'';
};
home.file."/home/hu/.config/river/bar" = {
text = ''
#!/usr/bin/env sh
FIFO="$XDG_RUNTIME_DIR/sandbar"
[ -e "$FIFO" ] && rm -f "$FIFO"
mkfifo "$FIFO"
while cat "$FIFO"; do :; done | sandbar \
-hide-normal-mode \
-no-layout \
-font "Go Mono Nerd Font:12" \
-active-fg-color "#bbbbbb" \
-active-bg-color "#222222" \
-inactive-fg-color "#888888" \
-inactive-bg-color "#111111" \
-urgent-fg-color "#ab5656" \
-title-fg-color "#bbbbbb" \
-title-bg-color "#222222"
'';
executable = true;
};
home.file."/home/hu/.config/river/status" = {
text = ''
#!/usr/bin/env sh
FIFO="$XDG_RUNTIME_DIR/sandbar"
[ -e "$FIFO" ] || mkfifo "$FIFO"
bat () {
read -r bat_status < /sys/class/power_supply/BAT0/status
read -r bat_capacity < /sys/class/power_supply/BAT0/capacity
case "$bat_status" in
"Charging")
bat_status="󱟦"
;;
"Discharging")
bat_status="󱟤"
;;
"Full")
bat_status="󱟢"
;;
"Not charging")
bat_status="󱞜"
;;
"Empty")
bat_status="󱟨"
;;
esac
bat="[$bat_status $bat_capacity]"
}
datetime () {
dat="[$(date "+%H:%M")]"
}
while true; do
if [ -d /sys/class/power_supply/BAT0/ ]; then
bat
fi
datetime
echo "all status $bat$dat" > "$FIFO"
sleep 20
done
'';
executable = true;
};
wayland.windowManager.river = {
enable = true;
systemd.enable = true;
settings = {
map.normal = {
"Super+Shift Return" = "spawn foot";
"Super+Shift C" = "close";
"Super J" = "focus-view next";
"Super K"= "focus-view previous";
"Super+Shift J" = "swap next";
"Super+Shift K" = "swap previous";
"Super Space" = "toggle-float";
"Super+Shift R" = "spawn ~/.config/river/init";
"Super+Shift Q" = "exit";
"Super H" = "send-layout-cmd rivertile 'main-ratio -0.05'";
"Super L" = "send-layout-cmd rivertile 'main-ratio +0.05'";
"Super P" = "spawn '$(tofi-drun)'";
"Super S" = "spawn ~/.config/river/screenshot.sh";
"Super O" = "spawn ~/.config/river/screencast.sh";
"Super+Shift O" = "spawn ~/.config/river/screencast.sh audio";
"None XF86AudioRaiseVolume" = "spawn 'pamixer -i 5'";
"None XF86AudioLowerVolume" = "spawn 'pamixer -d 5'";
"None XF86AudioMute" = "spawn 'pamixer --toggle-mute'";
"None XF86AudioMicMute" = "spawn 'pamixer --default-source --toggle-mute'";
};
map-pointer.normal = {
"Super BTN_LEFT" = "move-view";
"Super BTN_RIGHT" = "resize-view";
};
keyboard-layout = "de";
default-layout = "rivertile";
rule-add."-app-id" = {
"'bar'" = "csd";
};
set-repeat = "50 300";
spawn = [
"'swaybg -i /nix/config/assets/wallpapers/river.png'"
"/home/hu/.config/river/status"
"/home/hu/.config/river/bar"
"'fnott --config /home/hu/.config/fnott/fnott.conf.ini'"
"'gnome-keyring-daemon --start'"
];
border-width = 1;
border-color-focused = "0x333333";
border-color-unfocused = "0x000000";
};
extraConfig = "
for i in $(seq 1 9); do
tags=$((1 << ($i - 1)))
riverctl map normal Super $i set-focused-tags $tags
riverctl map normal Super+Shift $i set-view-tags $tags
done
rivertile -main-ratio 0.5 -view-padding 0 -outer-padding 0
";
};
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
gtk = {
enable = true;
theme = {
name = "adw-gtk3-dark";
package = pkgs.adw-gtk3;
};
iconTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
};
home.file."/home/hu/.config/river/screenshot.sh" = {
executable = true;
text = ''
#!/usr/bin/env sh
mkdir -p "$HOME/images/screenshots"
screenshot_file="$HOME/images/screenshots/$(date +%s).png"
area="$(slurp)"
if [ "$area" = "selection cancelled" ]; then
exit 0
fi
grim -g "$area" "$screenshot_file"
notify-send "Screenshot saved" "$screenshot_file"
wl-copy < "$screenshot_file"
'';
};
home.file."/home/hu/.config/river/screencast.sh" = {
executable = true;
text = ''
#!/usr/bin/env sh
if [ -n "$(pidof wf-recorder)" ]; then
pkill --signal=SIGINT wf-recorder
notify-send "Screencast saved" "$(cat "$HOME/.cache/last_screencast")"
wl-copy < "$(cat "$HOME/.cache/last_screencast")"
exit 0
fi
mkdir -p "$HOME/videos/screencasts/"
screencast_file="$HOME/videos/screencasts/$(date +%s).mp4"
area="$(slurp)"
if [ "$area" = "selection cancelled" ]; then
exit 0
fi
echo "$screencast_file" > "$HOME/.cache/last_screencast"
if [ "$1" = "audio" ]; then
wf-recorder -g "$area" --file="$screencast_file" --audio
else
wf-recorder -g "$area" --file="$screencast_file"
fi
'';
};
services.fnott = {
enable = true;
configFile = "/home/hu/.config/fnott/fnott.conf.ini";
};
home.file."/home/hu/.config/fnott/fnott.conf.ini" = {
text = ''
title-font=Go Mono Nerd Font
body-font=Go Mono Nerd Font
background=111111ff
title-color=888888ff
body-color=888888ff
summary-color=888888ff
default-timeout=10
'';
};
};
}

View file

@ -0,0 +1,6 @@
{ lib, ... }:
{
imports = lib.getModuleImports ./.;
}

View file

@ -0,0 +1,8 @@
{ config, ... }:
{
programs.gpg = {
enable = true;
homedir = "${config.xdg.dataHome}/gnupg";
};
}

View file

@ -0,0 +1,8 @@
#!/usr/bin/env zsh
zstyle ':completion:*:git-checkout:*' sort false
zstyle ':completion:*:descriptions' format '[%d]'
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' menu no
zstyle ':fzf-tab:*' fzf-flags --color 16 --bind=tab:accept
[ -n "$TMUX" ] && zstyle ':fzf-tab:*' fzf-command ftb-tmux-popup

View file

@ -0,0 +1,25 @@
#!/usr/bin/env zsh
local c0=$'%{\e[0m%}'
local c31=$'%{\e[31m%}'
local c33=$'%{\e[33m%}'
local c34=$'%{\e[34m%}'
local c35=$'%{\e[35m%}'
local c38=$'%{\e[38m%}'
local nix_shell_ps1_t=" $c34{$c33󱄅 shell$c34}$c0"
local path_no_ghostty="$(echo "$PATH" | sed -e 's/:\/nix\/store\/.*-ghostty-.*\/bin://g')"
if [ -n "$IN_NIX_SHELL" ]; then
local nix_shell_ps1="$nix_shell_ps1_t"
elif [[ "$path_no_ghostty" == *"/nix/store"* ]]; then
IN_NIX_SHELL=true
local nix_shell_ps1="$nix_shell_ps1_t"
fi
setopt prompt_subst
autoload -Uz vcs_info
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' formats " ${c34}${c0}${c31}(%b)${c0}"
precmd () { vcs_info }
export PS1='${c38}[${c35}%3~${c0}${vcs_info_msg_0_}${nix_shell_ps1}${c38}]${c0}# '

View file

@ -0,0 +1,87 @@
{ pkgs, config, ... }:
{
home.packages = with pkgs; [
lsd
bat
fd
ripgrep
fzf
tre-command
btop
zsh-completions
nix-zsh-completions
];
programs.bat = {
enable = true;
config = {
theme = "ansi";
};
};
programs.btop = {
enable = true;
settings = {
color_theme = "TTY";
};
};
home.file.".zshenv".enable = false;
home.file.".config/zsh/conf.d" = {
source = ./conf.d;
recursive = true;
};
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
dotDir = ".config/zsh";
autocd = true;
history.size = 10000;
history.ignoreAllDups = true;
/* Not persisted on purpose */
history.path = "${config.xdg.cacheHome}/zsh_history";
shellAliases = {
cat = "bat --paging=never --wrap=never --style='changes,snip,numbers'";
ls = "lsd";
tree = "tre";
};
initExtra = ''
alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
for dotfile in "$ZDOTDIR/conf.d/"*; do
source "$dotfile"
done
'';
plugins = [
{
name = "zsh-nix-shell";
file = "nix-shell.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "chisui";
repo = "zsh-nix-shell";
rev = "v0.8.0";
sha256 = "1lzrn0n4fxfcgg65v0qhnj7wnybybqzs4adz7xsrkgmcsr0ii8b7";
};
}
{
name = "fzf-tab";
file = "fzf-tab.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "Aloxaf";
repo = "fzf-tab";
rev = "v1.2.0";
sha256 = "sha256-q26XVS/LcyZPRqDNwKKA9exgBByE0muyuNb0Bbar2lY=";
};
}
];
};
}

View file

@ -0,0 +1,32 @@
{ lib, config, ... }:
{
imports = [
./packages.nix
];
home = {
username = "caem";
homeDirectory = "/home/caem";
stateVersion = "24.11";
};
home.file."${config.xdg.configHome}/user-dirs.dirs".force = lib.mkForce true;
xdg = {
enable = true;
userDirs = {
enable = true;
documents = "${config.home.homeDirectory}/documents";
download = "${config.home.homeDirectory}/download";
music = "${config.home.homeDirectory}/music";
pictures = "${config.home.homeDirectory}/images";
videos = "${config.home.homeDirectory}/videos";
/* I do not use these */
desktop = "${config.xdg.dataHome}/xdg/desktop";
publicShare = "${config.xdg.dataHome}/xdg/publicShare";
templates = "${config.xdg.dataHome}/xdg/templates";
};
};
}

View file

@ -0,0 +1,124 @@
{ pkgs, lib, inputs, config, ... }:
let
picture-uri = if builtins.hasAttr "wallpaper" inputs.secrets.paths
then builtins.toString inputs.secrets.paths.wallpaper
else builtins.toString ../../../../../assets/wallpaper.jpg;
in {
xdg.mimeApps = {
enable = true;
defaultApplications = {
"application/pdf" = "org.gnome.Evince.desktop";
"image/avif" = "org.gnome.Loupe.desktop";
"image/apng" = "org.gnome.Loupe.desktop";
"image/bmp" = "org.gnome.Loupe.desktop";
"image/gif" = "org.gnome.Loupe.desktop";
"image/jpeg" = "org.gnome.Loupe.desktop";
"image/vnd.microsoft.icon" = "org.gnome.Loupe.desktop";
"image/png" = "org.gnome.Loupe.desktop";
"image/tiff" = "org.gnome.Loupe.desktop";
"image/webp" = "org.gnome.Loupe.desktop";
"video/mp4" = "umpv.desktop";
"video/mpeg" = "umpv.desktop";
"video/ogg" = "umpv.desktop";
"video/webm" = "umpv.desktop";
"video/x-matroska" = "umpv.desktop";
"video/x-msvideo" = "umpv.desktop";
"video/quicktime" = "umpv.desktop";
"x-scheme-handler/mailto" = "tutanota-desktop.desktop";
};
};
gtk = {
enable = true;
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
};
dconf.settings = {
"org/gnome/desktop/background".picture-uri = picture-uri;
"org/gnome/desktop/background".picture-uri-dark = picture-uri;
"org/gnome/desktop/screensaver".picture-uri = picture-uri;
"org/gnome/desktop/interface" = {
accent-color = "slate";
color-scheme = "prefer-dark";
};
"org/gnome/desktop/input-sources" = {
sources = [
(lib.hm.gvariant.mkTuple ["xkb" "de"])
];
};
"org/gnome/desktop/peripherals/mouse" = {
accel-profile = "flat";
};
"org/gnome/shell" = {
disable-user-extensions = false;
allow-extension-installation = false;
enabled-extensions = with pkgs.gnomeExtensions; [
caffeine.extensionUuid
accent-directories.extensionUuid
just-perfection.extensionUuid
quick-settings-tweaker.extensionUuid
];
favorite-apps = [
"firefox-esr.desktop"
"com.mitchellh.ghostty.desktop"
"org.gnome.Nautilus.desktop"
];
};
"org/gnome/shell/extensions/just-perfection" = {
calendar = false;
events-button = false;
quick-settings-dark-mode = false;
world-clock = false;
};
"org/gnome/shell/extensions/quick-settings-tweaks" = {
notifications-enabled = false;
};
"org/gnome/desktop/wm/preferences" = {
audible-bell = false;
num-workspaces = 9;
};
"org/gnome/mutter" = {
dynamic-workspaces = false;
};
"org/gnome/shell/window-switcher" = {
current-workspace-only = true;
};
"org/gnome/shell/keybindings" = {
switch-windows = ["<Super>Tab"];
activate-window-menu = [];
switch-to-application-1 = [];
switch-to-application-2 = [];
switch-to-application-3 = [];
switch-to-application-4 = [];
switch-to-application-5 = [];
switch-to-application-6 = [];
switch-to-application-7 = [];
switch-to-application-8 = [];
switch-to-application-9 = [];
};
"org/gnome/desktop/wm/keybindings" = {
switch-to-workspace-1 = ["<Super>1"];
switch-to-workspace-2 = ["<Super>2"];
switch-to-workspace-3 = ["<Super>3"];
switch-to-workspace-4 = ["<Super>4"];
switch-to-workspace-5 = ["<Super>5"];
switch-to-workspace-6 = ["<Super>6"];
switch-to-workspace-7 = ["<Super>7"];
switch-to-workspace-8 = ["<Super>8"];
switch-to-workspace-9 = ["<Super>9"];
move-to-workspace-1 = ["<Super><Shift>1"];
move-to-workspace-2 = ["<Super><Shift>2"];
move-to-workspace-3 = ["<Super><Shift>3"];
move-to-workspace-4 = ["<Super><Shift>4"];
move-to-workspace-5 = ["<Super><Shift>5"];
move-to-workspace-6 = ["<Super><Shift>6"];
move-to-workspace-7 = ["<Super><Shift>7"];
move-to-workspace-8 = ["<Super><Shift>8"];
move-to-workspace-9 = ["<Super><Shift>9"];
};
};
}

View file

@ -0,0 +1,5 @@
{ lib, ... }:
{
imports = lib.getModuleImports ./.;
}

View file

@ -0,0 +1,33 @@
{ pkgs, config, ... }:
let
emacs-package = pkgs.emacs30-pgtk;
in {
services.emacs = {
enable = true;
package = emacs-package;
socketActivation.enable = true;
};
programs.emacs = {
enable = true;
package = emacs-package;
extraPackages = epkgs: with epkgs; [
treesit-grammars.with-all-grammars
vterm
paredit
nix-mode
meson-mode
rainbow-delimiters
darktooth-theme
smex
amx
# Why the fuck would you put a '+' in your package's name
(builtins.getAttr "ido-completing-read+" epkgs)
no-littering
treesit-auto
];
};
home.file."${config.xdg.configHome}/emacs".source = ./emacs.d;
}

View file

@ -0,0 +1,27 @@
(tool-bar-mode 0)
(menu-bar-mode 0)
(scroll-bar-mode 0)
(setq display-line-numbers-type 'relative)
(global-display-line-numbers-mode t)
(global-hl-line-mode t)
(add-to-list 'default-frame-alist
'(font . "Go Mono Nerd Font-12"))
(let ((opacity 95))
(set-frame-parameter nil 'alpha-background opacity)
(add-to-list 'default-frame-alist `(alpha-background . ,opacity)))
(setq compilation-scroll-output t)
(use-package rainbow-delimiters
:ensure nil
:hook
((prog-mode . rainbow-delimiters-mode)))
(use-package darktooth-theme
:ensure nil
:config
(load-theme 'darktooth-dark t)
(set-face-background 'hl-line "#262626"))

View file

@ -0,0 +1,17 @@
(use-package smex
:ensure nil
:bind
(("M-x" . smex)
("M-X" . smex-major-mode-commands))
:config (smex-initialize))
(use-package ido-completing-read+
:ensure nil
:config (ido-ubiquitous-mode 1))
(use-package amx
:ensure nil
:config (amx-mode 1))
(ido-mode 1)
(ido-everywhere 1)

Some files were not shown because too many files have changed in this diff Show more