Compare commits

...

143 Commits

Author SHA1 Message Date
b561fe445c flake update 2026-06-26 14:16:45 +02:00
d5a4f5bdd1 add syncoid config 2026-06-26 14:11:04 +02:00
87a09834a2 add sync user, remove Downloads folder from synced list 2026-06-26 13:52:55 +02:00
0597249641 change sync path 2026-06-24 11:15:09 +02:00
8225fd1fe1 add udev rules, change lock screen, other 2026-06-24 11:11:32 +02:00
e86912da09 Auto update 2026-06-22 04:00:47 +00:00
dfeb98e31f wleave setup
All checks were successful
update the nix flake lock automatically every week / update (push) Successful in 32s
2026-06-17 20:57:08 +02:00
3e1ffba6a6 update dockermcmgr 2026-06-17 18:32:12 +02:00
816001160f idk 2026-06-17 15:28:41 +02:00
146fad0ce6 waybar split in files 2026-06-16 23:30:29 +02:00
6ff3e03029 waybar workspaces redesign 2026-06-16 23:03:30 +02:00
bba5ff934a fix laptop specific waybar cells 2026-06-16 20:44:02 +02:00
b9a33095f5 waybar remove default background 2026-06-16 02:22:32 +02:00
5d39868542 waybar new design on the right 2026-06-16 02:19:05 +02:00
7905ca167e update flake set waybar thermal zone 2026-06-15 17:34:26 +02:00
484999059a add gnumake, home-manager and git config to minimal config 2026-06-15 12:39:59 +02:00
3710d953ab fix windowsrulev2 deprecated, fix pinentry unfocused
Some checks failed
update the nix flake lock automatically every week / update (push) Failing after 49s
2026-06-15 02:28:55 +02:00
b1294976dd set home-manager mode back to switch 2026-06-15 02:22:37 +02:00
08a5db8508 refactor some things, might have broken everything 2026-06-15 02:21:03 +02:00
73e25a00b6 fix server config, add nixos fixe as authorized keys for builder 2026-06-14 16:46:51 +02:00
c5c3a73495 set remote build maxjobs to 2 2026-06-13 23:53:46 +02:00
9283b4a68d put remote builder config in module 2026-06-13 23:37:16 +02:00
943112677a laptop remote build configuration 2026-06-13 23:17:47 +02:00
0ba10a8643 fix server remote build config 2026-06-13 23:16:27 +02:00
fa06263d10 update dockermcmgr, add remote build account on server 2026-06-13 22:06:52 +02:00
e80dbffebf remove custom hosts on laptop, add dmm service on server 2026-06-11 16:37:45 +02:00
64c6ca6030 update dockermcmgr 2026-06-11 15:37:39 +02:00
1a0fee83e6 add dockermcmgr 2026-06-10 23:11:17 +02:00
dba02b91ef disable yubikey fde unlock 2026-06-10 12:02:20 +02:00
f06352bb31 Auto update 2026-06-08 04:00:39 +00:00
8bcc91bbab amd gpu stability improvement, fix nextcloud cronjob
All checks were successful
update the nix flake lock automatically every week / update (push) Successful in 29s
2026-06-07 03:13:02 +02:00
8bd4e7befa Auto update 2026-06-01 04:01:19 +00:00
b9ba959482 add hosts on laptop, catppuccin autoenable config
All checks were successful
update the nix flake lock automatically every week / update (push) Successful in 36s
2026-05-31 15:40:48 +02:00
d5d569dbf5 lutris repaired upstream, add lib on nix-ld, update flake 2026-05-29 12:45:35 +02:00
2ef3feda04 Auto update 2026-05-25 04:00:57 +00:00
76ebe4adcf enable docker on desktop
All checks were successful
update the nix flake lock automatically every week / update (push) Successful in 28s
2026-05-21 22:13:33 +02:00
c14e2372bb python-lsp-server fixed 2026-05-21 15:55:14 +02:00
41d3711b9b remove python lsp and lutris 2026-05-20 21:25:32 +02:00
ee248079aa fix default model 99 nvim 2026-05-18 21:03:25 +02:00
3793d9d4c3 add 99 nvim to neovim config 2026-05-18 17:51:34 +02:00
d9bac8a433 fix breaking upstream changes 2026-05-18 15:54:56 +02:00
29be5b73d4 Auto update 2026-05-18 04:00:53 +00:00
91702ec7a3 set flake to master, changes in Makefile, vim and home
All checks were successful
update the nix flake lock automatically every week / update (push) Successful in 24s
2026-05-12 15:10:58 +02:00
6a80170d4d change channel to master 2026-05-12 15:10:54 +02:00
3646963fd9 fix zfs 2026-05-12 15:06:00 +02:00
8920dadd4b Auto update 2026-05-11 04:00:40 +00:00
811b1d67b0 clean tmp on boot
All checks were successful
update the nix flake lock automatically every week / update (push) Successful in 34s
2026-05-07 17:44:55 +02:00
76c0ad8beb nextcloud use direct ip (cloudflare limitation), make update no auto rebuild 2026-05-07 13:30:03 +02:00
9de6978c8a Auto update 2026-05-04 04:01:33 +00:00
1c715564ac fix evaluation warnings (build broken openldap test fails)
All checks were successful
update the nix flake lock automatically every week / update (push) Successful in 38s
2026-04-27 14:26:37 +02:00
a60b6aeeec Auto update 2026-04-27 04:01:18 +00:00
835e726c6c add exraflags option on Makefile, fix yubikey support on systemd stage 1
All checks were successful
update the nix flake lock automatically every week / update (push) Successful in 24s
2026-04-25 21:46:49 +02:00
bf592c5e9d add alvr and remove nix-alien 2026-04-23 17:44:33 +02:00
983f51b0f3 Auto update 2026-04-23 15:42:18 +00:00
c95443f8b8 auto update push rights 2026-04-23 17:40:49 +02:00
14eaa9b5f8 add maunal update trigger 2026-04-23 17:29:38 +02:00
64ee797c97 add autoupdate (test probably broken) 2026-04-23 17:28:23 +02:00
5e83ab9626 update vim config, update flake and other things 2026-04-14 16:29:04 +02:00
ea58f1d641 server: zfs: auto scrub, repair zed pushover notifications 2026-04-09 13:30:17 +02:00
5b1b62dd32 plymouth, update laptop power scripts 2026-04-03 12:31:25 +02:00
7972ab111c enable fstrim service to trim disksk weekly 2026-03-31 17:09:28 +02:00
b6bea84f8b add zfs on desktop, changed screen configuration 2026-03-30 15:21:29 +02:00
6913e58e0b fix hyprland config 2026-03-27 12:22:19 +01:00
6a8d644c94 update flake 2026-03-27 12:13:04 +01:00
890d3381a5 set default application, disable monitor turn off when closed, add direnv 2026-03-27 11:46:54 +01:00
1cad2253b3 update lock and fix deprecated settings 2026-02-21 13:57:29 +01:00
091e23932d vbox -> default 2026-02-09 23:31:44 +01:00
c1bebc9df1 ignore line too long on python lsp 2026-02-09 23:25:08 +01:00
7d79e9d8ae change sync url 2026-02-09 13:38:10 +01:00
ebd650e854 only trigger iso rebuild when push on iso branch
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 1m46s
2026-02-07 16:14:03 +01:00
5becaf1588 nvim show diagnostics of line
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 1m48s
2026-02-07 16:12:33 +01:00
447c95c22d disable hugepages in vfio_ready specialisation, add pythonlsp and coq-nvim for autocompletion
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m7s
2026-02-07 00:07:10 +01:00
33c03199a0 glewe110 -> glew_1_100 in nix ld, setup iwd to replace wpa_supplicant (memory leak issue)
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 1m45s
2026-01-29 13:22:23 +01:00
3a0f0192f4 add transmission web interface in allowed ports
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 6m2s
2026-01-27 19:07:03 +01:00
6d045d1d4d uacess on usb df11 devices and setup nix-ld
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 1m36s
2026-01-19 11:51:50 +01:00
86719c309a update flake
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m6s
2026-01-19 11:42:12 +01:00
bdc61737cb update flake
Some checks failed
Build iso when a new version is pushed / test (push) Failing after 13m53s
2025-12-23 18:57:37 +01:00
05861081ce diverse changes, add cloudflared
Some checks failed
Build iso when a new version is pushed / test (push) Failing after 2m27s
2025-12-23 18:42:13 +01:00
724f5361e6 change sync ip address
Some checks failed
Build iso when a new version is pushed / test (push) Failing after 1m49s
2025-12-19 16:52:03 +01:00
c0223fdd09 add droidcam on desktop
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m19s
2025-12-03 21:03:03 +01:00
0e8dfb98c5 game of life on display manager
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m13s
2025-11-21 10:42:20 +01:00
26c4bb6495 laptop turn off screen when closed, set yazi as default file browser 2025-11-21 10:42:19 +01:00
ef6d5cedb0 update git config to follow the renaming of the options
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m5s
2025-11-19 20:32:35 +01:00
a70786d0bb change HDMI-A-3 to 60Hz on desktop (wtf nvidia ?)
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m8s
2025-11-19 20:22:38 +01:00
ca5538c4d1 update flake and add libreoffice to packages
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 1m56s
2025-11-17 11:54:16 +01:00
b0fe851dec change nvidia prime settings, change desktop config screens arangement
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m13s
2025-11-03 16:31:29 +01:00
c631965709 fix screen dispotition on desktop, add yubico-pam on desktop config
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 1m59s
2025-10-26 01:36:53 +02:00
a5134e71b8 add hyprshot and use it with screenshot shortcut
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m28s
2025-10-16 16:11:07 +02:00
93fd2215da gpg signed commits
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m18s
2025-10-11 00:02:54 +02:00
df25ce0495 update flake
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m8s
2025-10-05 15:40:49 +02:00
0555242a7f add droidcam, reenable usbmuxd, fix indent on nvim, enable gamescope
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m27s
2025-10-05 15:33:51 +02:00
fb2b3f80ad home : fix file manager config, add r2modman
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 1m59s
2025-09-24 23:50:45 +02:00
9a95e511e4 WIP: refactor homeeConfigs
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m0s
2025-09-24 14:13:12 +02:00
5e54902447 update flake, rofi changes, start powerManagement scripts with sudo
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 1m59s
2025-09-21 02:11:55 +02:00
074dff48ca change powerSave module settings, add scripts to change power profile
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m31s
2025-09-17 18:58:00 +02:00
fbc24916b5 refactor os configurations
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m10s
2025-09-06 01:27:10 +02:00
4b66e2489b add fuse nextcloud and age encrypted passwords
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m8s
2025-09-05 20:01:58 +02:00
e13360f793 add yubikey to unlock FDE on laptop; update flake; minor wayland changes
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m38s
2025-09-04 15:17:30 +02:00
1e46d42f27 remove stremio pacakge (insecure)
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m45s
2025-08-30 16:36:33 +02:00
7aef691ea2 update flake
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 9m35s
2025-08-28 23:39:10 +02:00
63d2538734 add localsend to laptop packages
Some checks failed
Build iso when a new version is pushed / test (push) Has been cancelled
2025-08-28 23:38:22 +02:00
84bc2fd737 add usbmuxd on laptop
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m17s
2025-08-15 19:16:46 +02:00
f362997567 update flake, add alvr on laptop 2025-08-12 17:12:08 +02:00
ea4489732b remove config
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m24s
2025-08-11 17:47:52 +02:00
6c35b8fb99 fix typo in polybar module
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m31s
2025-08-07 15:30:14 +02:00
76702ea878 use x11 on vbox and add option to polybar module for fspath
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m25s
2025-08-07 15:27:08 +02:00
b261195413 fix 42header (deleted revision)
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m35s
2025-08-07 15:13:39 +02:00
6651ba444e add compiledb to packages fixes on vbox config
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m30s
2025-08-07 15:06:36 +02:00
093ac9c011 set supergfxd config in nix files, change ly config, update flake
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m38s
2025-08-06 00:26:52 +02:00
d6ca7ba793 update flake
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m27s
2025-07-30 18:52:08 +02:00
17e3fc6a9e Merge branch 'new-42-homes'
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m40s
2025-07-29 12:55:09 +02:00
0da22649eb move nerdfont.iosevka to home config (broken in os config)
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 3m0s
2025-07-23 18:02:45 +02:00
f14bc8c082 update flake and remove duplicate neovim
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m31s
2025-07-21 23:00:41 +02:00
c766b08973 remove full home config from iso
Some checks failed
Build iso when a new version is pushed / test (push) Failing after 2m41s
2025-07-16 20:07:12 +02:00
27ca179697 update flake, sort system and home packages
Some checks failed
Build iso when a new version is pushed / test (push) Failing after 7m42s
2025-07-15 16:12:16 +02:00
66b67b9b03 set kvmfr size to 128mb and change cleanup makefile rule
Some checks failed
Build iso when a new version is pushed / test (push) Has been cancelled
2025-07-15 12:37:05 +02:00
116e81d080 change specialisation name, blacklist xpad when in vfio mode
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 17m4s
2025-07-12 18:15:24 +02:00
e64579832a fix typo on laptop config
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 18m35s
2025-07-12 16:57:03 +02:00
11e350751a repair usb redirection on libvirt
Some checks failed
Build iso when a new version is pushed / test (push) Has been cancelled
2025-07-12 16:54:59 +02:00
d86380c995 add pin shortcut and add kvm windows gpu passthrough support in a specialisation config on laptop
Some checks failed
Build iso when a new version is pushed / test (push) Has been cancelled
2025-07-12 16:52:43 +02:00
79ad288bcc beta nvidia drivers on desktop
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 14m41s
2025-07-09 17:15:32 +02:00
5b3d74179b set virtualmanager as module, trying to fix nvidia stutter screens lag stutter, remove docker legacy version (latest probably fixed)
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 11m57s
2025-07-03 14:58:19 +02:00
ac2d3acf0e disable password auth on ssh and change nvidia drivers to beta
Some checks failed
Build iso when a new version is pushed / test (push) Has been cancelled
2025-06-28 00:45:51 +02:00
9d132e5366 update flake and change some ly settings
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 12m12s
2025-06-26 14:47:45 +02:00
8248d4b969 update flake, switch to kvm instead of virtualbox, add lrzip package
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 9m44s
2025-06-09 17:04:50 +02:00
18df257130 update flake
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 11m54s
2025-05-20 16:04:54 +02:00
c9ffd8a567 nodejs_23 doesn't exist in nixpkgs unsable anymore
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 15m52s
2025-05-16 00:19:28 +02:00
637f7e0d78 update flake
Some checks failed
Build iso when a new version is pushed / test (push) Failing after 22s
2025-05-16 00:14:36 +02:00
4ff3ab574f change wallpaper on all configs instead of just laptop
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 9m18s
2025-05-12 12:35:54 +02:00
633eea8877 enable display manager on desktop
Some checks failed
Build iso when a new version is pushed / test (push) Failing after 13m10s
2025-05-06 22:47:47 +02:00
3b7c49041c add git autocorrect
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 12m49s
2025-05-01 21:38:53 +02:00
e8fac6e226 add allow discard to cryptroot 2025-04-29 15:56:22 +02:00
3239948de6 change ffmpeg to ffmpeg-full nad add nv-codec-headers
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 21m41s
2025-04-27 16:36:28 +02:00
10c46e1e6a update flake
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 20m56s
2025-04-26 17:09:25 +02:00
5f64559676 set rofi theme by default and add wireshark to laptop config
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 14m16s
2025-04-25 00:14:11 +02:00
a82be1df2c change wallpaper_test
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 10m30s
2025-04-22 22:49:38 +02:00
f5ea128df4 update flake and install git lfs
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 8m33s
2025-04-21 20:39:21 +02:00
3207899d6c try other wallpaper, might go back
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 13m4s
2025-04-20 21:45:05 +02:00
e2e9a60907 update flake
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 10m34s
2025-04-17 17:41:03 +02:00
26448d59d6 copy screenshot to clipboard automatically
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 11m39s
2025-04-16 16:28:49 +02:00
4d140208b3 change name for chromium apps on iso
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 12m14s
2025-04-16 15:02:19 +02:00
d965848b31 create iso only when there is a push to master
Some checks failed
Build iso when a new version is pushed / test (push) Has been cancelled
2025-04-16 14:57:32 +02:00
34e087b815 change home location
Some checks are pending
Build iso when a new version is pushed / test (push) Waiting to run
2025-04-09 16:50:26 +02:00
103 changed files with 2718 additions and 1127 deletions

View File

@ -0,0 +1,31 @@
name: update the nix flake lock automatically every week
run-name: update
permissions:
contents: write
on:
schedule:
- cron: "0 4 * * 1"
workflow_dispatch:
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: get repo
uses: actions/checkout@v4.2.2
- name: install nix
uses: https://github.com/cachix/install-nix-action@v31
- name: run the update
run: nix flake update
- name: Commit and push
run: |
git config user.name "Update action"
git config user.email "update-action@no-one.com"
git add .
git commit -m "Auto update"
git push

View File

@ -1,6 +1,9 @@
name: Build iso when a new version is pushed
run-name: iso building
on: [push]
on:
push:
branches:
- 'iso'
jobs:
test:

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
tmp/

7
.sops.yaml Normal file
View File

@ -0,0 +1,7 @@
keys:
- &primary age1sjzkhwr8ycdsmuj8xg8y4v2hcpuq9vethnhytxtwzeury692dsxqf80fwv
creation_rules:
- path_regex: secrets/secrets.yaml$
key_groups:
- age:
- *primary

View File

@ -1,18 +1,32 @@
HOST ?= $(file < /etc/nixosFlakeName)
THREADS ?= $(shell nproc)
FLAKE ?= .
MODE = boot
MODE ?= switch
FLAGS = --impure --cores $(THREADS) -j $(THREADS)
EXTRAFLAGS ?=
FLAGS = --impure -j 1 -L $(EXTRAFLAGS)
ifdef OFFLINE
FLAGS += --option binary-caches ''
endif
all: os home
update:
cd $(FLAKE);nix flake update
$(MAKE) all
os:
sudo nixos-rebuild $(MODE) $(FLAGS) --flake $(FLAKE)#$(HOST)
vm:
sudo nixos-rebuild build-vm $(FLAGS) --flake $(FLAKE)#$(HOST)
./result/bin/*
rm ./result
rm ./*.qcow2
hoem : home
home :
home-manager switch $(FLAGS) --flake $(FLAKE)#$(HOST)
@ -22,4 +36,10 @@ iso :
rm -rf result
cleanup :
sudo nix-env --delete-generations +1 --profile /nix/var/nix/profiles/system
nix-env --delete-generations +1 --profile ~/.local/state/nix/profiles/home-manager
nix-env --delete-generations +1
sudo nix-collect-garbage -d
optimize :
nix-store --optimize -vv

207
flake.lock generated
View File

@ -1,5 +1,46 @@
{
"nodes": {
"catppuccin": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1782462517,
"narHash": "sha256-HPzOASBxx1bAnPREm4syM5oTb8ls2qbudkLW4BTB94s=",
"owner": "catppuccin",
"repo": "nix",
"rev": "3f3b3511f9c433b93f20b24be32de01f675b046d",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "nix",
"type": "github"
}
},
"dockermcmgr": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1782248098,
"narHash": "sha256-qIvObIIVv+AGH2cKeqfbAfzAe02xR3gGWa26aQhqW5Q=",
"ref": "refs/heads/master",
"rev": "c4f3c129f108bb0b8b845b09ada7cda2ce0428c9",
"revCount": 42,
"type": "git",
"url": "https://git.tmoron.fr/tom/dockermcmgr"
},
"original": {
"type": "git",
"url": "https://git.tmoron.fr/tom/dockermcmgr"
}
},
"firefox-addons": {
"inputs": {
"nixpkgs": [
@ -8,11 +49,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1744173435,
"narHash": "sha256-q5cViHmB4k1CdncBUVBY4UUukiKQxgBJ6R18qJ3pHOA=",
"lastModified": 1782446584,
"narHash": "sha256-Biqg+xsXAYC/C6iOeh1OSdIAhvpTlMpB17TTRmejjx0=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "e7ea586f82360a06ec21f14544bc26b10aa1aea6",
"rev": "0672374ed1b75645f1e97828721a4d688182b75f",
"type": "gitlab"
},
"original": {
@ -22,6 +63,22 @@
"type": "gitlab"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -29,26 +86,30 @@
]
},
"locked": {
"lastModified": 1744208565,
"narHash": "sha256-vG3JJOar/r8ognz7wuwMtOJ8Knu1MMlOzHB1N6R2MbY=",
"lastModified": 1782423922,
"narHash": "sha256-qPNd6lUohHP5gcJhqQ7rLV87RwIx0xYR2A4Frb9Zjc4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "542efdf2dfac351498f534eb71671525b9bd45ed",
"rev": "5d320ab301cfaaca7d32514f13815d19d109f5f4",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "home-manager",
"type": "github"
}
},
"nixos-hardware": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1743420942,
"narHash": "sha256-b/exDDQSLmENZZgbAEI3qi9yHkuXAXCPbormD8CSJXo=",
"lastModified": 1782379505,
"narHash": "sha256-zPvPiU+a7pqtH47xrtZLNRABJKpOjfZQclDbcvNtH+I=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "de6fc5551121c59c01e2a3d45b277a6d05077bc4",
"rev": "603d3afd1b6145bd66e97ae38a34d91c95df70cf",
"type": "github"
},
"original": {
@ -60,64 +121,124 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1744098102,
"narHash": "sha256-tzCdyIJj9AjysC3OuKA+tMD/kDEDAF9mICPDU7ix0JA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c8cd81426f45942bb2906d5ed2fe21d2f19d95b7",
"type": "github"
"lastModified": 1782175435,
"narHash": "sha256-8d2wCNWKnd86GzKZvbuqqlS+HqMrheXkvRf0qGJ/oA0=",
"rev": "89570f24e97e614aa34aa9ab1c927b6578a43775",
"type": "tarball",
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1020805.89570f24e97e/nixexprs.tar.xz"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
"type": "tarball",
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
}
},
"pkgs-docker-2750": {
"nixpkgs_2": {
"locked": {
"lastModified": 1737525964,
"narHash": "sha256-3wFonKmNRWKq1himW9N3TllbeGIHFACI5vmLpk6moF8=",
"owner": "NixOS",
"lastModified": 1770107345,
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5757bbb8bd7c0630a0cc4bb19c47e588db30b97c",
"rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4",
"type": "github"
},
"original": {
"owner": "NixOS",
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"rev": "5757bbb8bd7c0630a0cc4bb19c47e588db30b97c",
"type": "github"
}
},
"plymouth-theme-ycontre-glow": {
"nixpkgs_3": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1782475513,
"narHash": "sha256-y7ioo+kcLbjDVdmYss8j2DgBc0U8y8FXCVAryTL3Pb4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f493f07ee021d998aeffedcc59a99e97eb0489d0",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"catppuccin": "catppuccin",
"dockermcmgr": "dockermcmgr",
"firefox-addons": "firefox-addons",
"home-manager": "home-manager",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_4",
"sops-nix": "sops-nix"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1731939263,
"narHash": "sha256-mLwLR5dEJTvtqJU/lvo9f8c3/xIFPOpXlPF3JsJtnHo=",
"ref": "refs/heads/master",
"rev": "702e7b014ef6cf748252e797724e4096bafcaafa",
"revCount": 1,
"type": "git",
"url": "file:///home/tom/desktop/bordel/ycontre-glow"
"lastModified": 1782165805,
"narHash": "sha256-478kKQBvK6SYTOdN2h9jhKJv94nbXRbFMfuL1WshErg=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "56b24064fdcaedca53553b1a6d607fd23b613a24",
"type": "github"
},
"original": {
"type": "git",
"url": "file:///home/tom/desktop/bordel/ycontre-glow"
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"root": {
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"firefox-addons": "firefox-addons",
"home-manager": "home-manager",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"pkgs-docker-2750": "pkgs-docker-2750",
"plymouth-theme-ycontre-glow": "plymouth-theme-ycontre-glow"
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1780220602,
"narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},

View File

@ -6,7 +6,7 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/10/17 18:15:24 by tomoron #+# #+# #
# Updated: 2025/04/13 13:35:56 by tomoron ### ########.fr #
# Updated: 2026/06/15 02:17:44 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -14,9 +14,16 @@
description = "Nixos and home-manager config flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs.url = "github:nixos/nixpkgs/master";
catppuccin.url = "github:catppuccin/nix";
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
@ -26,37 +33,51 @@
inputs.nixpkgs.follows = "nixpkgs";
};
plymouth-theme-ycontre-glow = {
url = "git+file:///home/tom/desktop/bordel/ycontre-glow";
inputs.nixpkgs.follows = "nixpkgs";
dockermcmgr = {
url = "git+https://git.tmoron.fr/tom/dockermcmgr";
inputs.nixpkgs.follows = "nixpkgs";
};
pkgs-docker-2750.url = "github:NixOS/nixpkgs?rev=5757bbb8bd7c0630a0cc4bb19c47e588db30b97c";
#plymouth-theme-ycontre-glow = {
# url = "git+file:///home/tom/desktop/bordel/ycontre-glow";
# inputs.nixpkgs.follows = "nixpkgs";
#};
};
outputs = { nixpkgs, home-manager, nixos-hardware, ... }@inputs:
outputs = { nixpkgs, catppuccin, home-manager, nixos-hardware, ... }@inputs:
let
pkgs = import nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; };
osConfig = {flakeName, extraModules ? []}: nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; flakeName = flakeName; };
osConfig = {flakeName, minimal ? false, extraModules ? []}: nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; flakeName = flakeName; minimal = minimal; };
modules = nixpkgs.lib.concatLists [
[./osConfigs/global.nix ./osConfigs/hosts/${flakeName}.nix ]
[
./osConfigs/os.nix
./osConfigs/hosts/${flakeName}.nix
catppuccin.nixosModules.catppuccin
inputs.sops-nix.nixosModules.sops
]
extraModules
];
};
homeConfig = {flakeName, extraModules ? [], username ? "tom", homeDir ? "/home/tom"}: home-manager.lib.homeManagerConfiguration {
homeConfig = {flakeName, sops ? true, extraModules ? [], username ? "tom", homeDir ? "/home/tom", minimal ? false}: home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = { inherit inputs; username = username; homeDir = homeDir; isOs = false; };
extraSpecialArgs = { inherit inputs; username = username; homeDir = homeDir; isOs = false; configSops = sops; minimal = minimal; };
modules = nixpkgs.lib.concatLists [
[ ./homeConfigs/home.nix ./homeConfigs/hosts/${flakeName}.nix]
[
./homeConfigs/home.nix
./homeConfigs/hosts/${flakeName}.nix
catppuccin.homeModules.catppuccin
inputs.sops-nix.homeManagerModules.sops
]
extraModules
];
};
in {
nixosConfigurations = { server = osConfig {flakeName = "server";};
nixosConfigurations = {
server = osConfig {flakeName = "server"; minimal = true;};
vbox = osConfig {flakeName = "vbox";};
laptop = osConfig {flakeName = "laptop"; extraModules = [ nixos-hardware.nixosModules.asus-zephyrus-ga401 ];};
desktop = osConfig {flakeName = "desktop";};
@ -67,19 +88,18 @@
modules = [
(nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix")
./osConfigs/hosts/iso.nix
inputs.home-manager.nixosModules.default
];
};
};
homeConfigurations = {
vbox = homeConfig { flakeName = "vbox"; };
ft = homeConfig { flakeName = "ft"; username = "tomoron"; homeDir = "/nfs/homes/tomoron";};
default = homeConfig { flakeName = "default";};
ft = homeConfig { flakeName = "ft"; username = "tomoron"; homeDir = "/home/tomoron"; sops = false;};
laptop = homeConfig { flakeName = "laptop"; };
desktop = homeConfig { flakeName = "desktop"; };
server = homeConfig { flakeName = "server"; };
server = homeConfig { flakeName = "server"; minimal = true; };
};
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 KiB

View File

@ -1,21 +0,0 @@
#!/bin/sh
FILE=/sys/class/backlight/amdgpu_bl1/brightness
if ! ( test -w "$FILE" ); then
xterm +cm -cr RED -bg BLACK -selbg WHITE -selfg BLACK -fg WHITE -fa Monospace -fs 14 -e "sudo chmod 777 $FILE"
fi
new=$(cat $FILE)
if [ "$1" = "up" ]; then
new=$((new + 13))
elif [ "$1" = "down" ];then
new=$((new - 13))
fi
if [ $new -gt 255 ]; then
new=255
elif [ $new -lt 0 ]; then
new=0
fi
echo $new > $FILE

View File

@ -1,3 +0,0 @@
#!/bin/sh
unison /home/tom/Desktop ssh://tom@tmoron.fr:1880//home/tom/Desktop_sync/Desktop $@

View File

@ -1,2 +0,0 @@
xtrlock&
systemctl hibernate

View File

@ -1,6 +0,0 @@
#!/bin/bash
if [ "$1" = "up" ]; then
asusctl -n
elif [ "$1" = "down" ];then
asusctl -p
fi

View File

@ -1,4 +0,0 @@
#!/bin/bash
until sudo iwctl station wlan0 show | grep iPhone > /dev/null;do
sudo iwctl station wlan0 scan 2>&1 > /dev/null
done

View File

@ -0,0 +1,11 @@
{ ... }:
{
catppuccin.alacritty.enable = true;
programs.alacritty = {
enable = true;
settings = {
env.XTERM = "xterm-256color";
font.size = 9;
};
};
}

View File

@ -0,0 +1,36 @@
{ lib, pkgs, config, ... }:
{
catppuccin = {
enable = true;
autoEnable = false;
flavor = "mocha";
dunst.enable = true;
dunst.flavor="frappe";
kvantum.apply = true;
rofi.enable = false;
};
gtk = {
enable = true;
theme = { package = pkgs.magnetic-catppuccin-gtk; name = "Catppuccin-GTK-Dark"; };
gtk4.theme = config.gtk.theme;
font = { name = "Sans"; size = 11; };
};
qt.style.name = "kvantum";
home.pointerCursor = {
gtk.enable = true;
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 16;
};
home.file = {
".config/wallpaper.png".source = lib.mkDefault ../assets/wallpaper.png;
".config/lock_screen.jpg".source = lib.mkDefault ../assets/lock_screen.jpg;
};
}

View File

@ -0,0 +1,11 @@
{ ... }:
{
xdg.mimeApps.defaultApplications = {
"application/pdf" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"inode/directory" = "yazi.desktop";
"image/*" = "qimgv.desktop";
};
}

View File

@ -0,0 +1,18 @@
{ inputs, config, ... }:
{
catppuccin.firefox.enable = true;
programs.firefox.configPath = "${config.xdg.configHome}/mozilla/firefox";
programs.firefox = {
enable = true;
profiles.default = {
extensions.packages = with inputs.firefox-addons.packages."x86_64-linux";
[vimium ublock-origin];
extensions.force = true;
settings = {
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
"layout.css.prefers-color-scheme.content-override" = 0;
"browser.theme.content-theme" = 0;
};
};
};
}

View File

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
home.packages = with pkgs;[
lutris
mangohud
moonlight-qt
prismlauncher
r2modman
];
}

View File

@ -0,0 +1,10 @@
{ ... }:
{
programs.yazi = {
enable = true;
settings.mgr.sort_dir_first=false;
};
home.sessionVariables.BROWSER = "yazi";
programs.yazi.shellWrapperName = "y";
}

View File

@ -0,0 +1,25 @@
{ ... }:
{
programs.git = {
enable = true;
lfs.enable = true;
signing.format = "openpgp";
settings = {
user.email = "tomoron@student.42angouleme.fr";
user.name = "tomoron";
init.defaultBranch="master";
pull.rebase = true;
push.autoSetupRemote = true;
rerere.enabled = true;
help.autocorrect = 1;
user.signingkey = "251B4BD73683A8DF13D760A868BFAFE31DF313AD";
commit.gpgsign = true;
alias = {
fuck = "!f() { git reset --hard \"@{upstream}\" && git restore . && git clean -f .; };f";
back = "reset HEAD~";
};
};
};
}

View File

@ -0,0 +1,6 @@
{ lib, ... }:
{
catppuccin.enable = lib.mkDefault false;
catppuccin.autoEnable = lib.mkDefault false;
}

View File

@ -6,7 +6,7 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/09 22:01:56 by tomoron #+# #+# #
# Updated: 2025/04/15 15:58:07 by tomoron ### ########.fr #
# Updated: 2026/06/14 19:11:25 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -14,22 +14,17 @@
{
home.packages = with pkgs;[
ripgrep
activate-linux
unison
brightnessctl
playerctl
python3
vlc
nerd-fonts.iosevka
nix-index
yubikey-manager
yubico-pam
dunst
bibata-cursors
libcaca
nasm
lrzip
git
lm_sensors
wget
curl
man-pages
ffmpeg-full
nix-index
sops
screen
btop
htop
];
}

View File

@ -0,0 +1,40 @@
{ homeDir, ... }:
{
home.shell.enableBashIntegration = true;
home.shellAliases = {
ls= "ls --color=auto";
grep = "grep --color=auto";
vim = "nvim";
vi = "nvim";
clr = "clear";
noidle = "systemctl --user stop hypridle";
};
programs.bash.profileExtra = ''
PATH=$PATH:${homeDir}/.cargo/bin
'';
programs.direnv.enable = true;
programs.direnv.enableBashIntegration = true;
programs.bash = {
enable = true;
historyControl = ["ignoreboth"];
historyIgnore = [ "ls" "cd" "exit" ];
shellOptions = [ "cdspell" "autocd"];
};
programs.bash.bashrcExtra = ''
cd() {
builtin cd "$@"
echo -n "$PWD" > ~/.last_directory
}
if [ -f ~/.last_directory ] && [ -n "$PS1" ];then
echo "going to $(cat ~/.last_directory)"
builtin cd "$(cat ~/.last_directory)"
fi
'';
}

View File

@ -0,0 +1,213 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# vim.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2026/06/14 19:22:40 by tomoron #+# #+# #
# Updated: 2026/06/14 19:32:07 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{pkgs, ...}:
{
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
withPython3 = false;
withRuby = false;
};
home.packages = with pkgs; [
ripgrep
];
programs.neovim.initLua= ''
local cmp = require'cmp'
cmp.setup({
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
end,
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'vsnip' },
}, {
{ name = 'buffer' },
})
})
cmp.setup.cmdline({ '/', '?' }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'buffer' }
}
})
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = 'path' }
}, {
{ name = 'cmdline' }
}),
matching = { disallow_symbol_nonprefix_matching = false }
})
local capabilities = require('cmp_nvim_lsp').default_capabilities()
local _99 = require("99")
local cwd = vim.uv.cwd()
local basename = vim.fs.basename(cwd)
_99.setup({
provider = _99.Providers.OpenCodeProvider,
model = "ollama/gemma4:26b",
logger = {
level = _99.DEBUG,
path = "/home/tom/99logs/" .. basename .. ".99.debug",
print_on_error = true,
},
tmp_dir = "./tmp",
--- Completions: #rules and @files in the prompt buffer
completion = {
--- Configure @file completion (all fields optional, sensible defaults)
files = {
-- enabled = true,
-- max_file_size = 102400, -- bytes, skip files larger than this
-- max_files = 5000, -- cap on total discovered files
-- exclude = { ".env", ".env.*", "node_modules", ".git", ... },
},
--- File Discovery:
source = "cmp", -- "native" (default), "cmp", or "blink"
},
md_files = {
-- "AGENT.md",
},
})
vim.keymap.set("v", "<leader>9v", function()
_99.visual()
end)
vim.keymap.set("n", "<leader>9x", function()
_99.stop_all_requests()
end)
vim.keymap.set("n", "<leader>9s", function()
_99.search()
end)
vim.keymap.set("n", "<leader>9m", function()
require("99.extensions.telescope").select_model()
end)
'';
programs.neovim.extraConfig = ''
set number
set ai
autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent! loadview
set tabstop=4
set scrolloff=10
set smartindent
set shiftwidth=4
map <silent> <C-N> :bnext<CR>
map <silent> <C-P> :bprevious<CR>
nmap <silent> <c-k> :wincmd k<CR>
nmap <silent> <c-j> :wincmd j<CR>
nmap <silent> <c-h> :wincmd h<CR>
nmap <silent> <c-l> :wincmd l<CR>
set hidden
set path +=**
set wildmenu
set wildignore+=**/node_modules/**
let mapleader=";"
autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
\| PlugInstall --sync
\| endif
call plug#begin('~/.config/nvim/plugged')
Plug 'bling/vim-bufferline'
Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim'
Plug 'andweeb/presence.nvim'
Plug 'neovim/nvim-lspconfig'
Plug 'bluz71/vim-nightfly-colors'
Plug 'catppuccin/nvim', { 'as': 'catppuccin' }
Plug 'tikhomirov/vim-glsl'
Plug 'lambdalisue/nerdfont.vim'
Plug 'lambdalisue/glyph-palette.vim'
Plug 'lambdalisue/fern-renderer-nerdfont.vim'
Plug 'lambdalisue/fern-git-status.vim'
Plug 'lambdalisue/fern.vim'
Plug 'hrsh7th/nvim-cmp'
Plug 'ThePrimeagen/99'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/cmp-buffer'
Plug 'hrsh7th/cmp-path'
Plug 'hrsh7th/cmp-cmdline'
Plug 'hrsh7th/nvim-cmp'
Plug 'hrsh7th/cmp-vsnip'
Plug 'hrsh7th/vim-vsnip'
call plug#end()
colorscheme catppuccin-mocha
set signcolumn=auto
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
nnoremap <leader>fi <cmd>Fern %:h<cr>
let g:user42 = 'tomoron'
let g:mail42 = 'tomoron@student.42angouleme.fr'
let g:fern#renderer = "nerdfont"
'';
home.file = {
#install plug.vim
".local/share/nvim/site/autoload/plug.vim".source = "${fetchGit {
url = "https://github.com/junegunn/vim-plug";
rev = "d80f495fabff8446972b8695ba251ca636a047b0";
ref = "master";
}}/plug.vim";
#install stdheader 42
".config/nvim/plugin/stdheader.vim".source = "${fetchGit {
url = "https://github.com/42Paris/42header";
rev = "e6e6b191871545e0d43f1aad817070bc806b8fa7";
ref = "master";
}}/plugin/stdheader.vim";
};
}

View File

@ -0,0 +1,45 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# packages.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/09 22:01:56 by tomoron #+# #+# #
# Updated: 2026/06/16 23:07:00 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ pkgs, ...}:
{
home.packages = with pkgs;[
pigz
fastfetch
clang
ninja
gdb
valgrind
cmake
stress
activate-linux
brightnessctl
vlc
yubikey-manager
bibata-cursors
libcaca
nasm
nerd-fonts.iosevka
compiledb
yubikey-personalization
libreoffice
doxygen
qimgv
acpi
discord
google-chrome
localsend
];
}

View File

@ -0,0 +1,21 @@
{ config, homeDir, ... }:
{
programs.rclone.enable = true;
sops.secrets."nextcloud_fuse/password" = {};
programs.rclone.remotes.nextcloud = {
config = {
type = "webdav";
url = "https://dnc.tmoron.fr/remote.php/dav/files/tom";
vendor = "nextcloud";
user = "tom";
};
secrets.pass = config.sops.secrets."nextcloud_fuse/password".path;
mounts = {
"/" = {
enable = true;
mountPoint = "${homeDir}/nextcloud";
options.vfs-cache-mode = "writes";
};
};
};
}

View File

@ -0,0 +1,13 @@
{ ... }:
{
programs.rofi = {
enable = true;
theme = "rounded-nord-dark";
};
home.file.".local/share/rofi/themes".source = "${fetchGit {
url = "https://github.com/newmanls/rofi-themes-collection";
rev = "c8239a45edced3502894e1716a8b661fdea8f1c9";
ref = "master";
}}/themes";
}

View File

@ -0,0 +1,58 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
clang-tools
nixd
nodejs_24
glsl_analyzer
opencode
(pkgs.python3.withPackages (ps: with ps; [
python-lsp-server
pylsp-mypy
python-lsp-ruff
pycodestyle
]))
];
programs.neovim.initLua= ''
vim.lsp.enable('clangd')
vim.lsp.config('clangd', {
capabilities = capabilities
})
vim.lsp.enable('nixd')
vim.lsp.config('nixd', {
capabilities = capabilities
})
vim.lsp.enable('glsl_analyzer')
vim.lsp.config('glsl_analyzer', {
capabilities = capabilities
})
vim.lsp.enable('pylsp')
vim.lsp.config('pylsp', {
capabilities = capabilities
})
vim.lsp.enable('rust_analyzer')
vim.lsp.config('rust_analyzer', {
capabilities = capabilities,
settings = {
["rust-analyzer"] = {
cargo = {
features = "all"
},
},
},
})
vim.diagnostic.config({
virtual_lines = {
current_line = true
}
})
'';
}

View File

@ -0,0 +1,27 @@
{ ... }:
{
home.shellAliases.noidle = "systemctl --user stop hypridle";
services.hypridle = {
enable = true;
settings = {
general.lock_cmd = "hyprlock";
general.before_sleep_cmd = "loginctl lock-session";
listener = [
{
timeout = 300;
on-timeout = "brightnessctl -s set 0";
on-resume = "brightnessctl -r";
}
{
timeout = 300;
on-timeout = "loginctl lock-session";
}
{
timeout = 1800;
on-timeout = "systemctl suspend";
}
];
};
};
}

View File

@ -0,0 +1,177 @@
{lib, pkgs, ... }:
{
wayland.windowManager.hyprland.systemd.variables = [ "--all" ];
programs.hyprshot.enable = true;
catppuccin.hyprland.enable = false;
home.shellAliases.hl = "Hyprland";
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.configType = "hyprlang";
wayland.windowManager.hyprland.settings = {
"$mainMod" = "SUPER";
bind = [
" , Print, exec, hyprshot -m region -o ~/screenshots -f $(date +%Y-%m-%d_%H-%M-%S).png"
" SHIFT, Print, exec, hyprshot -m output -m active -o ~/screenshots -f $(date +%Y-%m-%d_%H-%M-%S).png"
"$mainMod, Return, exec, alacritty"
"CTRL_ALT, Q, killactive,"
"CTRL_ALT_SHIFT, Q, forcekillactive,"
"SUPER_ALT, Q, exit,"
"$mainMod, S, togglefloating,"
"$mainMod, I, pin,"
"$mainMod, D, exec, ${lib.getExe pkgs.rofi} -show drun -show-icons"
"$mainMod SHIFT, D, exec, ${lib.getExe pkgs.rofi} -show run -show-icons"
"$mainMod, M, fullscreen, 1"
"$mainMod, F, fullscreen, 0"
# Move focus
"$mainMod, h, movefocus, l"
"$mainMod, l, movefocus, r"
"$mainMod, k, movefocus, u"
"$mainMod, j, movefocus, d"
#swap windows
"$mainMod SHIFT, h, swapwindow, l"
"$mainMod SHIFT, l, swapwindow, r"
"$mainMod SHIFT, k, swapwindow, u"
"$mainMod SHIFT, j, swapwindow, d"
# Switch workspaces with mainMod + [0-9]
"$mainMod, 1, workspace, 1"
"$mainMod, 2, workspace, 2"
"$mainMod, 3, workspace, 3"
"$mainMod, 4, workspace, 4"
"$mainMod, 5, workspace, 5"
"$mainMod, 6, workspace, 6"
"$mainMod, 7, workspace, 7"
"$mainMod, 8, workspace, 8"
"$mainMod, 9, workspace, 9"
"$mainMod, 0, workspace, 10"
# Move active window to a workspace with mainMod + SHIFT + [0-9]
"$mainMod SHIFT, 1, movetoworkspacesilent, 1"
"$mainMod SHIFT, 2, movetoworkspacesilent, 2"
"$mainMod SHIFT, 3, movetoworkspacesilent, 3"
"$mainMod SHIFT, 4, movetoworkspacesilent, 4"
"$mainMod SHIFT, 5, movetoworkspacesilent, 5"
"$mainMod SHIFT, 6, movetoworkspacesilent, 6"
"$mainMod SHIFT, 7, movetoworkspacesilent, 7"
"$mainMod SHIFT, 8, movetoworkspacesilent, 8"
"$mainMod SHIFT, 9, movetoworkspacesilent, 9"
"$mainMod SHIFT, 0, movetoworkspacesilent, 10"
# Scroll through existing workspaces with mainMod + scroll
"$mainMod, mouse_down, workspace, e+1"
"$mainMod, mouse_up, workspace, e-1"
];
bindm = [ #bind mouse
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
bindel = [ #repeat and locked
" ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
" ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
" ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
" ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
" ,XF86MonBrightnessUp, exec, brightnessctl s 10%+"
" ,XF86MonBrightnessDown, exec, brightnessctl s 10%-"
" ,XF86KbdBrightnessUp, exec, asusctl -n"
" ,XF86KbdBrightnessDown, exec, asusctl -p"
];
bindl = [ #repeat
" , XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
" , XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
" , XF86AudioPause, exec, ${lib.getExe pkgs.playerctl} play-pause"
" , XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
"$mainMod, n, exec, ${lib.getExe pkgs.playerctl} next"
"$mainMod, p, exec, ${lib.getExe pkgs.playerctl} previous"
"$mainMod, o, exec, ${lib.getExe pkgs.playerctl} play-pause"
];
windowrule = [
"match:class (pinentry-)(.*), stay_focused on"
];
input = {
kb_layout = "fr";
kb_variant = "us";
follow_mouse = 2;
kb_options = "caps:none";
touchpad.natural_scroll = false;
};
misc = {
force_default_wallpaper = 1;
disable_hyprland_logo = true;
mouse_move_focuses_monitor = false;
};
dwindle = {
force_split = 2;
};
animations = {
enabled = true;
bezier = [
"easeInOut, 0.77, 0, 0.175, 1"
"easeOut, 0.24, 0.66, 0.04, 1"
];
animation = [
"windows, 1, 2, easeInOut"
"windowsIn, 1, 2, easeInOut, slide"
"windowsOut, 1, 2, easeInOut, slide"
"fade, 1, 2, easeInOut"
"workspaces, 1, 2, easeOut"
];
};
decoration = {
rounding = 10;
shadow = {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
};
};
general = {
gaps_in = 2;
gaps_out = 5;
border_size = 1;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgba(595959aa)";
resize_on_border = false;
allow_tearing = false;
layout = "dwindle";
};
layerrule = {
name = "no_anim_for_selection";
no_anim = "on";
"match:namespace" = "selection";
};
cursor.no_warps = true;
env = [
"HYPRCURSOR_SIZE,17"
"HYPRCURSOR_THEME,bibata-modern-classic"
];
exec-once = [
"${lib.getExe pkgs.swaybg} -i ~/.config/wallpaper.png&"
"(sleep 2;${lib.getExe pkgs.activate-linux})&"
"waybar&"
"alacritty&"
];
};
}

View File

@ -0,0 +1,32 @@
{ ... }:
{
programs.hyprlock.enable = true;
catppuccin.hyprlock.enable = false;
programs.hyprlock.settings = {
general = {
no_fade_out = true;
ignore_empty_input = false;
};
background = {
monitor = "";
path = "~/.config/lock_screen.jpg";
};
input-field = {
monitor = "";
size = "300, 50";
dot_size = "0.2";
dots_fade_time = 100;
inner_color = "rgb(139,89,100)";
outer_color = "rgb(139,89,100)";
outline_thickness = 1;
fail_transition = "300";
fail_text = "learn to write, idiot";
};
};
}

View File

@ -0,0 +1,24 @@
{ pkgs, ... }:
{
programs.wleave.enable = true;
programs.wleave.settings.buttons= [
{
action = "echo systemctl poweroff";
keybind = "y";
label = "shutdown";
text = "sync and shutdown";
}
{
action = "echo systemctl soft-reboot";
keybind = "s";
label = "reboot";
text = "soft reboot2";
}
{
action = "echo \"touch ~/.nosync && systemctl poweroff\"";
keybind = "n";
label = "shutdown";
text = "shutdown without syncing";
}
];
}

View File

@ -0,0 +1,10 @@
{ pkgs, lib, config, ... }:
{
home.packages = with pkgs; [
grim
slurp
wl-clipboard
swaybg
];
}

View File

@ -0,0 +1,19 @@
{ ... }:
{
programs.waybar.settings.mainBar = {
battery = {
bat = "BAT0";
full-at = 79;
states = {
good = 20;
critical = 15;
};
format-time = " {H}:{m}";
format-discharging = "{icon} {capacity}%{time}";
format-charging = " {capacity}%{time}";
format-plugged = "";
format-icons = [" " " " " " " " " "];
interval = 10;
};
};
}

View File

@ -0,0 +1,10 @@
{ ... }:
{
programs.waybar.settings.mainBar = {
clock = {
interval = 1;
format-alt = "{:%Y-%m-%d}";
format = "{:%H:%M:%S}";
};
};
}

View File

@ -0,0 +1,15 @@
{ ... }:
{
programs.waybar.settings.mainBar = {
cpu = {
format = " {usage}%";
format-low = "";
states = {
low = 0;
working = 30;
high = 80;
};
interval = 5;
};
};
}

View File

@ -0,0 +1,12 @@
{ ... }:
{
programs.waybar.settings.mainBar = {
disk = {
format-low ="";
format = "󰋊 {percentage_used}%";
states.low = 0;
states.warning = 70;
states.high= 90;
};
};
}

View File

@ -0,0 +1,61 @@
{ ... }:
{
programs.waybar.style = ''
* {
font-family: "Iosevka Nerd Font";
font-size: 14px;
background-color: transparent;
color: #cdd6f4;
}
.modules-right, #window {
border: 1px solid #444444;
background-color: #1e1e2e;
padding-left: 10px;
padding-right: 10px;
padding-top: 3px;
padding-bottom: 3px;
border-radius: 10px;
}
.modules-right .module {
margin-left: 4px;
margin-right: 4px;
background-color: rgba(127, 132, 156, 0.3);
padding: 1px 6px;
border-radius: 5px;
transition: background-color 200ms ease;
}
@keyframes red_blink {
from { background-color: rgba(127, 132, 156, 0.6); }
to { background-color: rgba(193,89,118, 0.5); }
}
#custom-separator {
background-color: transparent;
margin: 0px;
padding: 0px
}
#network, #clock {
background-color: transparent;
}
#network.disconnected {
color: #f53c3c;
font-weight:bold;
}
.module.warning {
background-color: rgba(249, 226, 175, 0.4);
color: #ffffff;
}
.module.high, .module.critical {
background-color: rgba(193,89,118, 0.5);
color: #ffffff;
}
'';
}

View File

@ -0,0 +1,16 @@
{ ... }:
{
programs.waybar.settings.mainBar = {
memory = {
format = " {}%";
format-low = "";
interval = 5;
states = {
low = 0;
show = 50;
elevated = 80;
critical = 95;
};
};
};
}

View File

@ -0,0 +1,12 @@
{lib, pkgs, ... }:
{
programs.waybar.settings.mainBar = {
"custom/music" = {
exec-if = "${lib.getExe pkgs.playerctl} metadata 2>&1 >/dev/null";
exec = "${lib.getExe pkgs.playerctl} metadata --format ' {{ artist }} - {{title}}'";
interval = 1;
interval-if = 5;
max-length = 50;
};
};
}

View File

@ -0,0 +1,12 @@
{ ... }:
{
programs.waybar.settings.mainBar = {
network = {
format-wifi = "{icon} {essid}";
format-ethernet = "󰈁 {ifname}";
format-disconnected = "󰅛 ";
format-icons = ["󰤟 " "󰤢 " "󰤥 " "󰤨 "];
max-length = 20;
};
};
}

View File

@ -0,0 +1,25 @@
{ lib, pkgs, ... }:
{
programs.waybar.settings.mainBar = {
pulseaudio = {
format = "{icon}{volume}%";
format-bluetooth = " {icon} {volume}%";
format-muted = "";
format-icons = {
headphones = " ";
handsfree = "󰋎 ";
headset = "󰋎 ";
phone = " ";
portable = " ";
car = " ";
default = [" " " " " "];
};
on-click = "${lib.getExe pkgs.pavucontrol}";
states = {
low = 79;
warning = 99;
high = 100000;
};
};
};
}

View File

@ -0,0 +1,15 @@
{ lib, ... }:
{
programs.waybar.settings.mainBar = {
temperature = {
thermal-zone = lib.mkDefault 0;
critical-threshold = lib.mkDefault 85;
warning-threshold = lib.mkDefault 60;
interval = 5;
format = "";
format-warning ="{icon} {temperatureC}°C";
format-critical ="{icon} {temperatureC}°C";
format-icons = ["" "" "" "" ""];
};
};
}

View File

@ -0,0 +1,35 @@
{ ... }:
{
programs.waybar.enable = true;
programs.waybar.settings.mainBar = {
layer = "top";
position ="top";
height = 24;
margin-left = 5;
margin-right = 5;
modules-left = ["hyprland/workspaces" "custom/music"];
modules-center = ["hyprland/window"];
modules-right = [
"disk"
"pulseaudio"
"cpu"
"temperature"
"memory"
"battery"
"network"
"custom/separator"
"clock"
];
"hyprland/window" = {
max-length = 50;
};
"custom/separator" = {
format = "|";
};
};
}

View File

@ -0,0 +1,42 @@
{ ... }:
{
programs.waybar.style = ''
#workspaces {
border: 1px solid #444444;
background-color: #1e1e2e;
padding-left: 3px;
padding-right: 3px;
padding-top: 2px;
padding-bottom: 2px;
border-radius: 10px;
}
#workspaces button {
background-color: transparent;
padding: 0px 3px;
margin: 0px 5px;
min-height: 0px;
}
#workspaces button.active {
background-color: rgba(127, 132, 156, 0.6);
}
#workspaces button.urgent {
animation: red_blink 500ms infinite alternate;
color: #ffffff;
}
window#waybar.empty #window {
background-color: transparent;
border: none;
}
'';
programs.waybar.settings.mainBar = {
"hyprland/workspaces" = {
disable-scroll = true;
all-outputs = false;
format = "{id}";
};
};
}

View File

@ -6,75 +6,35 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/10/17 18:15:38 by tomoron #+# #+# #
# Updated: 2025/03/19 15:45:13 by tomoron ### ########.fr #
# Updated: 2026/06/15 01:53:27 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{lib, pkgs, username ? "tom" ,homeDir ? "/home/tom", isOs ? false, ... }:
{
lib,
username ? "tom",
homeDir ? "/home/tom",
isOs ? false,
configSops ? true,
minimal,
...
}:
{
imports = lib.concatLists [
[ ./packages.nix ]
(lib.fileset.toList ./modules)
];
imports = (lib.fileset.toList ./modules)
++ (lib.lists.optionals minimal (lib.fileset.toList ./global/minimal))
++ (lib.lists.optionals (!minimal) (lib.fileset.toList ./global));
home.username = lib.mkIf (!isOs) "${username}";
home.homeDirectory = lib.mkIf (!isOs) "${homeDir}";
home.stateVersion = "24.05";
home.stateVersion = "25.11";
# programs.ghostty.enable = true;
# programs.ghostty.settings = {
# theme = "catppuccin-mocha";
# font-size = 9;
# };
home.pointerCursor = {
gtk.enable = true;
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 16;
sops = lib.mkIf configSops{
defaultSopsFile = ../secrets/secrets.yaml;
age.keyFile = "${homeDir}/.config/sops/age/keys.txt";
};
gtk = {
enable = true;
theme = { package = pkgs.flat-remix-gtk; name = "Flat-Remix-GTK-Grey-Darkest"; };
iconTheme = { package = pkgs.adwaita-icon-theme; name = "Adwaita"; };
font = { name = "Sans"; size = 11; };
};
home.shellAliases = {
ls= "ls --color=auto";
grep = "grep --color=auto";
vim = "nvim";
vi = "nvim";
hl = "Hyprland";
clr = "clear";
tagueule = "asusctl profile -P Quiet";
parle = "asusctl profile -P performance";
noidle = "systemctl --user stop hypridle";
};
programs.bash = {
enable = true;
historyControl = ["ignoreboth"];
historyIgnore = [ "ls" "cd" "exit" ];
shellOptions = [ "cdspell" "autocd"];
};
home.sessionPath = [ "~/.local/bin" ];
home.file = { #should be able to make most of these in nix configs
".config/wallpaper.png".source = lib.mkDefault utils/wallpaper.png;
".config/pc.jpg".source = lib.mkDefault utils/pc.jpg;
".local/share/rofi/themes".source = "${builtins.fetchGit {
url = "https://github.com/newmanls/rofi-themes-collection";
rev = "c8239a45edced3502894e1716a8b661fdea8f1c9";
ref = "master";
}}/themes";
# ".local/bin/desk_sync".source = dotfiles/local/bin/desk_sync;
};
services.dunst.enable = true;
programs.home-manager.enable = true;
}

View File

@ -1,27 +1,28 @@
{ ... }:
{ lib, pkgs, config, ... }:
{
mods.x11.enable = true;
programs.waybar.settings.mainBar.temperature.thermal-zone = 2;
wayland.windowManager.hyprland.settings = {
monitor = [
"HDMI-A-1, 1920x1080@60, 0x0, auto"
"HDMI-A-3, 1920x1080@60, 1920x0, auto"
"DP-1, 1280x1024@60, 3840x0, auto"
"DP-3, 1280x1024@60, 5120x0, auto"
"DP-2, 1920x1080@60Hz, -1920x0, auto"
"HDMI-A-3, 1920x1080@60Hz, 0x0, auto"
"DP-3, 1920x1080@60.00Hz, 1920x0, auto"
"DP-4, 1280x1024@75.03Hz, 3840x0, auto"
];
workspace = [
"1, monitor:HDMI-A-1"
"2, monitor:HDMI-A-3, default:true"
"3, monitor:DP-1"
"4, monitor:DP-3"
"3, monitor:DP-2"
"1, monitor:HDMI-A-3, default:true"
"2, monitor:DP-3"
"4, monitor:DP-4"
];
env = [
"AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0"
"AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card2"
"LIBVA_DRIVER_NAME,nvidia"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
];
cursor.no_hardware_cursors = 1;
};
mods.hyprland.autoSuspend = false;
cursor.no_hardware_cursors = true;
misc.vrr = 1;
};
}

View File

@ -12,7 +12,9 @@
mods.x11.enable = true;
programs.firefox.enable = false;
mods.sync.homeFolder = "/sgoinfre/goinfre/Perso/tomoron";
mods.polybar.fspath = "/home/tomoron";
mods.sync.homeFolder = "/home/tomoron/sync";
mods.sync.defaultSynced = false;
mods.sync.syncedAdditions = [ "42_desktop" "Downloads" ];
mods.sync.customHostName = "pc42";

View File

@ -1,5 +1,4 @@
{ lib, pkgs, ... }:
{
mods.discord.enable = false;
}

View File

@ -5,14 +5,14 @@
modules-right = lib.mkBefore ["custom/fans" "custom/dgpu"];
"custom/dgpu" = {
exec-if = "test \"$(supergfxctl -g)\" = \"Hybrid\" || test \"$(supergfxctl -g)\" = \"Vfio\"";
exec = "echo \" on |\"";
exec = "echo \"󰾲 on\"";
interval-if = 10;
interval = 100;
};
"custom/fans" = {
exec-if = "test \"$(cat /sys/class/hwmon/hwmon6/fan1_input)\" -gt 0 -o \"$(cat /sys/class/hwmon/hwmon6/fan2_input)\" -gt 0";
exec = "echo \" \" \"$(cat /sys/class/hwmon/hwmon6/fan1_input).$(cat /sys/class/hwmon/hwmon6/fan2_input) |\"";
exec = "echo \" \" \"$(($(cat /sys/class/hwmon/hwmon6/fan1_input) / 100)).$(($(cat /sys/class/hwmon/hwmon6/fan2_input) / 100))\"";
interval = 1;
interval-if = 1;
};
@ -28,7 +28,6 @@
", XF86Launch4, exec, pkill activate-linux"
];
monitor= [
# "eDP-1, modeline 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync, 0x0, 1"
"eDP-1, 1920x1080@120, 0x0, 1"
"HDMI-A-1, 1920x1080@60, auto, auto"
];
@ -36,9 +35,9 @@
};
home.packages = with pkgs; [
stremio
blender
wireshark
];
#mods.sync.syncedAdditions = ["VirtualBox VMs"];
services.mpris-proxy.enable = true;
}

View File

@ -1,12 +1,4 @@
{ config, lib, pkgs, ... }:
{
mods.bash.goback = false;
wayland.windowManager.hyprland.settings = {
monitor= [
"virt-1, 1920x1080@60, 0x0, 1.0"
];
env = ["WLR_BACKENDS,headless"];
};
}

View File

@ -1,20 +0,0 @@
{ lib, config, ... }:
{
options.mods.alacritty.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "install and config alacritty";
};
config = lib.mkIf config.mods.alacritty.enable {
programs.alacritty = {
enable = true;
settings = {
window.opacity = 0.9;
env.XTERM = "xterm-256color";
font.size = 9;
};
};
};
}

View File

@ -1,24 +0,0 @@
{ lib, config, ...}:
{
options.mods.bash.goback = lib.mkOption{
type = lib.types.bool;
default = true;
description = "go back to last cd when starting bash";
};
config.programs.bash.bashrcExtra = lib.mkIf config.mods.bash.goback ''
cd() {
builtin cd "$@"
echo -n "$PWD" > ~/.last_directory
}
[ -z "\$${PS1:-}" ] && return
if [ -f ~/.last_directory ];then
echo -n going to
cat ~/.last_directory
echo
builtin cd "$(cat ~/.last_directory)"
fi
'';
}

View File

@ -1,16 +0,0 @@
{ config, lib, pkgs, ... }:
{
options.mods.discord.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "install discord";
};
config = lib.mkIf config.mods.discord.enable {
home.packages = with pkgs;[
discord
google-chrome
];
};
}

View File

@ -1,19 +0,0 @@
{ config, lib, inputs, ... }:
{
options.mods.firefox.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "install and configure firefox";
};
config = lib.mkIf config.mods.firefox.enable {
programs.firefox = {
enable = lib.mkDefault true;
profiles.default = {
extensions.packages = with inputs.firefox-addons.packages."x86_64-linux";
[vimium ublock-origin];
};
};
};
}

View File

@ -1,18 +0,0 @@
{ config, lib, pkgs, ... }:
{
options.mods.game.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "install packages for games (except steam , it's installed systemwide)";
};
config = lib.mkIf config.mods.game.enable {
home.packages = with pkgs;[
lutris
mangohud
moonlight-qt
prismlauncher
];
};
}

View File

@ -1,27 +0,0 @@
{ config, lib, ... }:
{
options.mods.git.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "git configuration";
};
config = lib.mkIf config.mods.git.enable {
programs.git = {
enable = true;
userEmail = "tomoron@student.42angouleme.fr";
userName = "tomoron";
extraConfig = {
init.defaultBranch="master";
pull.rebase = true;
push.autoSetupRemote = true;
rerere.enabled = true;
};
aliases = {
fuck = "!f() { git reset --hard \"@{upstream}\" && git restore . && git clean -f .; };f";
back = "reset HEAD~";
};
};
};
}

View File

@ -1,7 +1,7 @@
{ lib, config, ... }:
{ lib, config, pkgs, ... }:
let
defPathLst = ["desktop" "42_desktop" "Downloads"];
defPathLst = [ "desktop" "42_desktop" ];
in
{
options.mods.sync = {
@ -19,7 +19,7 @@ in
destFolder = lib.mkOption {
type = lib.types.str;
default = "/raid/pc_sync";
default = "/raid/crit/pc_sync";
description = "where on the server";
};
@ -41,15 +41,17 @@ in
description = "hostname used by unison";
};
};
config.home.file.".unison/default.prf" = lib.mkIf config.mods.sync.enable {
text = (lib.strings.concatStrings [''
auto=true
root=${config.mods.sync.homeFolder}
root=ssh://tom@tmoron.fr:1880/${config.mods.sync.destFolder}
''
(lib.strings.concatMapStrings (x: "\npath=" + x) (( if config.mods.sync.defaultSynced then defPathLst else [] ) ++ config.mods.sync.syncedAdditions ))
(if !(isNull config.mods.sync.customHostName) then "\nclientHostName=${config.mods.sync.customHostName}" else "")
]);
config = lib.mkIf config.mods.sync.enable {
home.packages = with pkgs;[ unison ];
home.file.".unison/default.prf" = {
text = (lib.strings.concatStrings [''
auto=true
root=${config.mods.sync.homeFolder}
root=ssh://tom@d.tmoron.fr:1880/${config.mods.sync.destFolder}
''
(lib.strings.concatMapStrings (x: "\npath=" + x) (( if config.mods.sync.defaultSynced then defPathLst else [] ) ++ config.mods.sync.syncedAdditions ))
(if !(isNull config.mods.sync.customHostName) then "\nclientHostName=${config.mods.sync.customHostName}" else "")
]);
};
};
}

View File

@ -1,102 +0,0 @@
{config, lib, pkgs, ...}:
{
options.mods.vim.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "install and configure vim";
};
config = lib.mkIf config.mods.vim.enable {
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
};
home.packages = with pkgs; [
clang-tools
nixd
nodejs_23
glsl_analyzer
];
programs.neovim.extraConfig = ''
set number
set ai
autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent! loadview
set tabstop=4
set shiftwidth=4
set scrolloff=10
set preserveindent
map <silent> <C-N> :bnext<CR>
map <silent> <C-P> :bprevious<CR>
nmap <silent> <c-k> :wincmd k<CR>
nmap <silent> <c-j> :wincmd j<CR>
nmap <silent> <c-h> :wincmd h<CR>
nmap <silent> <c-l> :wincmd l<CR>
set hidden
set path +=**
set wildmenu
set wildignore+=**/node_modules/**
let mapleader=";"
autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
\| PlugInstall --sync
\| endif
call plug#begin('~/.config/nvim/plugged')
Plug 'bling/vim-bufferline'
Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim'
Plug 'andweeb/presence.nvim'
Plug 'neovim/nvim-lspconfig'
Plug 'bluz71/vim-nightfly-colors'
Plug 'catppuccin/nvim', { 'as': 'catppuccin' }
Plug 'tikhomirov/vim-glsl'
Plug 'lambdalisue/nerdfont.vim'
Plug 'lambdalisue/glyph-palette.vim'
Plug 'lambdalisue/fern-renderer-nerdfont.vim'
Plug 'lambdalisue/fern-git-status.vim'
Plug 'lambdalisue/fern.vim'
call plug#end()
colorscheme catppuccin-mocha
lua require'lspconfig'.clangd.setup{}
lua require'lspconfig'.nixd.setup{}
lua require'lspconfig'.glsl_analyzer.setup{}
set signcolumn=no
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
nnoremap <leader>fi <cmd>Fern %:h<cr>
let g:user42 = 'tomoron'
let g:mail42 = 'tomoron@student.42angouleme.fr'
let g:fern#renderer = "nerdfont"
'';
home.file = {
#install plug.vim
".local/share/nvim/site/autoload/plug.vim".source = "${builtins.fetchGit {
url = "https://github.com/junegunn/vim-plug";
rev = "d80f495fabff8446972b8695ba251ca636a047b0";
ref = "master";
}}/plug.vim";
#install stdheader 42
".config/nvim/plugin/stdheader.vim".source = "${builtins.fetchGit {
url = "https://github.com/42Paris/42header";
rev = "71e6a4df6d72ae87a080282bf45bb993da6146b2";
ref = "master";
}}/plugin/stdheader.vim";
};
};
}

View File

@ -1,33 +0,0 @@
{ lib, config, ... }:
{
options.mods.hyprland.autoSuspend = lib.mkOption {
type = lib.types.bool;
default = true;
description = "enable hypridle suspend after 10min";
};
config = lib.mkIf config.mods.hyprland.enable {
services.hypridle = {
enable = true;
settings = {
general.lock_cmd = "hyprlock";
general.before_sleep_cmd = "loginctl lock-session";
listener = [
{
timeout = 300;
on-timeout = "brightnessctl -s set 0";
on-resume = "brightnessctl -r";
}
{
timeout = 300;
on-timeout = "loginctl lock-session";
}
] ++ lib.lists.optional config.mods.hyprland.autoSuspend {
timeout = 600;
on-timeout = "systemctl suspend";
};
};
};
};
}

View File

@ -1,179 +0,0 @@
{ config, lib, pkgs, ... }:
{
options.mods.hyprland.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "install and configure hyprland and others";
};
config = lib.mkIf config.mods.hyprland.enable {
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.settings = {
"$mainMod" = "SUPER";
bind = [
" , Print, exec, grim -t jpeg -g \"$(slurp)\" ~/screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg"
"$mainMod, Return, exec, alacritty"
"CTRL_ALT, Q, killactive,"
"SUPER_ALT, Q, exit,"
"$mainMod, S, togglefloating,"
"$mainMod, D, exec, rofi -show drun -show-icons"
"$mainMod, M, fullscreen, 1"
"$mainMod, F, fullscreen, 0"
# Move focus
"$mainMod, h, movefocus, l"
"$mainMod, l, movefocus, r"
"$mainMod, k, movefocus, u"
"$mainMod, j, movefocus, d"
#swap windows
"$mainMod SHIFT, h, swapwindow, l"
"$mainMod SHIFT, l, swapwindow, r"
"$mainMod SHIFT, k, swapwindow, u"
"$mainMod SHIFT, j, swapwindow, d"
# Switch workspaces with mainMod + [0-9]
"$mainMod, 1, workspace, 1"
"$mainMod, 2, workspace, 2"
"$mainMod, 3, workspace, 3"
"$mainMod, 4, workspace, 4"
"$mainMod, 5, workspace, 5"
"$mainMod, 6, workspace, 6"
"$mainMod, 7, workspace, 7"
"$mainMod, 8, workspace, 8"
"$mainMod, 9, workspace, 9"
"$mainMod, 0, workspace, 10"
# Move active window to a workspace with mainMod + SHIFT + [0-9]
"$mainMod SHIFT, 1, movetoworkspacesilent, 1"
"$mainMod SHIFT, 2, movetoworkspacesilent, 2"
"$mainMod SHIFT, 3, movetoworkspacesilent, 3"
"$mainMod SHIFT, 4, movetoworkspacesilent, 4"
"$mainMod SHIFT, 5, movetoworkspacesilent, 5"
"$mainMod SHIFT, 6, movetoworkspacesilent, 6"
"$mainMod SHIFT, 7, movetoworkspacesilent, 7"
"$mainMod SHIFT, 8, movetoworkspacesilent, 8"
"$mainMod SHIFT, 9, movetoworkspacesilent, 9"
"$mainMod SHIFT, 0, movetoworkspacesilent, 10"
# Scroll through existing workspaces with mainMod + scroll
"$mainMod, mouse_down, workspace, e+1"
"$mainMod, mouse_up, workspace, e-1"
];
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
bindel = [
" ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
" ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
" ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
" ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
" ,XF86MonBrightnessUp, exec, brightnessctl s 10%+"
" ,XF86MonBrightnessDown, exec, brightnessctl s 10%-"
" ,XF86KbdBrightnessUp, exec, asusctl -n"
" ,XF86KbdBrightnessDown, exec, asusctl -p"
];
bindl = [
" , XF86AudioNext, exec, playerctl next"
" , XF86AudioPrev, exec, playerctl previous"
" , XF86AudioPause, exec, playerctl play-pause"
" , XF86AudioPlay, exec, playerctl play-pause"
"$mainMod, n, exec, playerctl next"
"$mainMod, p, exec, playerctl previous"
"$mainMod, o, exec, playerctl play-pause"
];
windowrulev2 = [
#ignore maximize requests
"suppressevent maximize, class:.*"
#fix dragging issues with xwayland
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0"
];
input = {
kb_layout = "fr";
kb_variant = "us";
follow_mouse = 2;
kb_options = "caps:none";
touchpad.natural_scroll = false;
};
misc = {
force_default_wallpaper = 1;
disable_hyprland_logo = true;
mouse_move_focuses_monitor = false;
};
dwindle = {
pseudotile = true;
force_split = 2;
};
animations = {
enabled = true;
bezier = [
"easeInOut, 0.77, 0, 0.175, 1"
"easeOut, 0.24, 0.66, 0.04, 1"
];
animation = [
"windows, 1, 2, easeInOut"
"windowsIn, 1, 2, easeInOut, slide"
"windowsOut, 1, 2, easeInOut, slide"
"fade, 1, 2, easeInOut"
"workspaces, 1, 2, easeOut"
];
};
decoration = {
rounding = 10;
shadow = {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
};
blur = {
enabled = true;
size = 3;
passes = 1;
vibrancy = 0.1696;
};
};
general = {
gaps_in = 3;
gaps_out = 7;
border_size = 2;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgba(595959aa)";
resize_on_border = false;
allow_tearing = false;
layout = "dwindle";
};
cursor.no_warps = true;
env = [
"HYPRCURSOR_SIZE,17"
"HYPRCURSOR_THEME,bibata-modern-classic"
];
exec-once = [
"swaybg -i ~/.config/wallpaper.png&"
"(sleep 2;activate-linux)&"
"waybar&"
"alacritty&"
];
};
};
}

View File

@ -1,32 +0,0 @@
{ lib, config, ... }:
{
config = lib.mkIf config.mods.hyprland.enable {
programs.hyprlock.enable = true;
programs.hyprlock.settings = {
general = {
no_fade_out = true;
ignore_empty_input = false;
};
background = {
monitor = "";
path = "~/.config/pc.jpg";
# blur_passes = 1;
};
input-field = {
monitor = "";
size = "300, 50";
dot_size = "0.2";
dots_fade_time = 100;
inner_color = "rgb(139,89,100)";
outer_color = "rgb(139,89,100)";
outline_thickness = 1;
fail_transition = "300";
fail_text = "learn to write, idiot";
};
};
};
}

View File

@ -1,13 +0,0 @@
{ pkgs, lib, config, ... }:
{
config = lib.mkIf config.mods.hyprland.enable {
home.packages = with pkgs; [
rofi-wayland
grim
slurp
wl-clipboard
swaybg
];
};
}

View File

@ -1,159 +0,0 @@
{ config, lib, ... }:
{
config = lib.mkIf config.mods.hyprland.enable {
programs.waybar.enable = true;
programs.waybar.style = ''
* {
border: none;
border-radius: 0;
font-family: "Iosevka Nerd Font";
font-size: 15px;
min-height: 0;
}
window#waybar {
background: transparent;
color: white;
}
#window {
font-weight: bold;
}
#workspaces button {
padding: 0 5px;
background: transparent;
color: white;
border-top: 2px solid transparent;
}
#workspaces button.focused {
color: #c9545d;
border-top: 2px solid #c9545d;
}
#workspaces button.active {
color : #88ff88;
background-color : rgba(220,255, 220, 0.3)
}
#mode {
background: #64727D;
border-bottom: 3px solid white;
}
#network.disconnected {
color: #f53c3c;
font-weight:bold;
}
#temperature.critical {
color: #ff2222;
}
#battery.critical {
color: #ff2222;
}
#cpu.high {
color: #ff2222;
}
'';
programs.waybar.settings.mainBar = {
layer = "top";
position ="top";
height = 24;
margin-left = 5;
margin-right = 5;
modules-left = ["hyprland/workspaces" "custom/music"];
modules-center = ["hyprland/window"];
modules-right = ["disk" "pulseaudio" "network" "custom/pipe" "cpu" "custom/pipe" "temperature" "custom/pipe" "memory" "battery" "clock"];
"hyprland/workspaces" = {
disable-scroll = true;
all-outputs = false;
format = "{id}";
};
clock = {
interval = 1;
format-alt = " {:%Y-%m-%d}";
format = " {:%H:%M:%S}";
};
cpu = {
format = " {usage}% ";
states.high = 80;
interval = 5;
};
memory = {
format = " {}% |";
interval = 5;
};
battery = {
bat = "BAT0";
full-at = 79;
states = {
good = 20;
critical = 15;
};
format-time = " {H}:{m}";
format-discharging = " {icon} {capacity}%{time} |";
format-charging = " {capacity}%{time} |";
format-plugged = "";
format-icons = [" " " " " " " " " "];
interval = 10;
};
network = {
format-wifi = " {icon} {essid} ";
format-ethernet = " {ifname}: {ipaddr}/{cidr} ";
format-disconnected = " Disconnected ";
format-icons =["󰤟 " "󰤢 " "󰤥 " "󰤨 "];
};
pulseaudio = {
format = " {icon}{volume}% |";
format-bluetooth = " {icon} {volume}% |";
format-muted = "";
format-icons = {
headphones = " ";
handsfree = "󰋎 ";
headset = "󰋎 ";
phone = " ";
portable = " ";
car = " ";
default = [" " " " " "];
};
on-click = "pavucontrol";
};
temperature = {
thermal-zone = 0;
critical-threshold = 80;
interval = 5;
format =" {icon} {temperatureC}°C ";
format-icons = ["" "" "" "" ""];
};
disk = {
format =" 󰋊 {percentage_used}% |";
};
"custom/pipe" = {
format = "|";
};
"custom/music" = {
exec-if = "playerctl metadata 2>&1 >/dev/null";
exec = "playerctl metadata --format ' {{ artist }} - {{title}}'";
interval = 1;
interval-if = 5;
};
};
};
}

View File

@ -6,7 +6,7 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/10 00:21:11 by tomoron #+# #+# #
# Updated: 2025/02/12 09:36:07 by tomoron ### ########.fr #
# Updated: 2025/06/18 15:49:03 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{lib, config, ... }:
@ -34,7 +34,7 @@
setxkbmap fr us&
nitrogen --restore &
pgrep activate-linux >/dev/null || (sleep 2;activate-linux -d)&
''; # this is messy but i don't care, x11 isn't my default now.
''; # this is messy but i don't care, x11 is just a fallback now
};
}

View File

@ -6,13 +6,19 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/10 02:51:32 by tomoron #+# #+# #
# Updated: 2025/02/10 17:28:27 by tomoron ### ########.fr #
# Updated: 2025/08/07 15:30:07 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ lib, config, ... }:
{
options.mods.polybar.fspath = lib.mkOption {
type = lib.types.str;
default = "/";
description = "set the filesystem path for the remaining disk space";
};
config = lib.mkIf config.mods.x11.enable {
services.polybar.enable = true;
services.polybar.script = "pgrep polybar >/dev/null || polybar -q main -c \"$HOME/.config/polybar/config.ini\"&";
@ -44,8 +50,8 @@
"module/filesystem" = {
type = "internal/fs";
mount-0 = "/";
interval = 30;
mount-0 = config.mods.polybar.fspath;
interval = 10;
fixed-values = true;
format-mounted = "<label-mounted>";
format-mounted-prefix = "󰋊";

View File

@ -6,11 +6,11 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/10 00:32:47 by tomoron #+# #+# #
# Updated: 2025/02/10 01:17:29 by tomoron ### ########.fr #
# Updated: 2026/06/16 23:09:20 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ lib, config, ... }:
{pkgs, lib, config, ... }:
{
config = lib.mkIf config.mods.x11.enable {
@ -67,9 +67,9 @@
"alt + F7" = "brightnessctl s 10-";
"alt + F8" = "brightnessctl s 10+";
"super + shift + o" = "playerctl play-pause";
"super + shift + p" = "playerctl previous";
"super + shift + n" = "playerctl next";
"super + shift + o" = "${lib.getExe pkgs.playerctl} play-pause";
"super + shift + p" = "${lib.getExe pkgs.playerctl} previous";
"super + shift + n" = "${lib.getExe pkgs.playerctl} next";
"super + shift + alt + b" = "polybar-msg cmd hide";
"super + shift + b" = "polybar-msg cmd show";
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

31
osConfigs/global/boot.nix Normal file
View File

@ -0,0 +1,31 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# boot.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:37:58 by tomoron #+# #+# #
# Updated: 2026/06/14 17:50:09 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{pkgs, ... } :
{
boot.consoleLogLevel = 3;
boot.initrd.verbose = false;
boot.kernelParams = [
"quiet"
"udev.log_level=3"
"systemd.show_status=auto"
];
catppuccin.plymouth.enable = false;
boot.plymouth = {
enable = true;
theme = "nixos-bgrt";
themePackages = with pkgs; [ nixos-bgrt-plymouth ];
};
}

View File

@ -0,0 +1,13 @@
{ ... }:
{
services.displayManager.enable = true;
services.displayManager.ly.enable = true;
services.displayManager.ly.settings = {
animation = "gameoflife";
min_refresh_delta = 50;
bigclock = "en";
sleep_cmd = "systemctl sleep";
asterisk = "A";
auth_fails= 3;
};
}

View File

@ -0,0 +1,6 @@
{ ... }:
{
programs.steam.enable = true;
programs.steam.protontricks.enable = true;
programs.gamescope.enable = true;
}

148
osConfigs/global/ld.nix Normal file
View File

@ -0,0 +1,148 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# ld.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/12/30 20:37:07 by tomoron #+# #+# #
# Updated: 2026/05/28 23:20:01 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{pkgs, ... }:
{
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
zlib
zstd
stdenv.cc.cc
curl
openssl
attr
libssh
bzip2
libxml2
acl
libsodium
util-linux
xz
systemd
fribidi
harfbuzz
libgpg-error
gmp
libxcomposite
libxtst
libxrandr
libxext
libx11
libxfixes
libGL
libva
pipewire
libxcb
libxdamage
libxshmfence
libxxf86vm
libelf
glib
gtk2
networkmanager
vulkan-loader
libgbm
libdrm
libxcrypt
coreutils
pciutils
zenity
libxinerama
libxcursor
libxrender
libxscrnsaver
libxi
libsm
libice
gnome2.GConf
nspr
nss
cups
libcap
SDL2
libusb1
dbus-glib
ffmpeg
libudev0-shim
# needed to run unity
gtk3
icu
libnotify
gsettings-desktop-schemas
libxt
libxmu
libogg
libvorbis
SDL
SDL2_image
glew_1_10
libidn
tbb
# Other things from runtime
flac
freeglut
libjpeg
libpng
libpng12
libsamplerate
libmikmod
libtheora
libtiff
pixman
speex
SDL_image
SDL_ttf
SDL_mixer
SDL2_ttf
SDL2_mixer
libappindicator-gtk2
libdbusmenu-gtk2
libindicator-gtk2
libcaca
libcanberra
libgcrypt
libvpx
librsvg
libxft
libvdpau
pango
cairo
atk
gdk-pixbuf
fontconfig
freetype
dbus
alsa-lib
expat
# for blender
libxkbcommon
libxcrypt-legacy # For natron
libGLU # For natron
fuse
e2fsprogs
webkitgtk_4_1
libsoup_3
];
}

View File

@ -0,0 +1,31 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# boot.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2026/06/14 17:49:47 by tomoron #+# #+# #
# Updated: 2026/06/14 17:50:06 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ lib, pkgs, ... }:
{
boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
boot.loader = {
systemd-boot.enable = true;
systemd-boot.memtest86.enable = true;
efi.canTouchEfiVariables = true;
timeout = 1;
};
boot.tmp.cleanOnBoot = true;
services.journald.extraConfig = ''
SystemMaxUse=100M
SystemMaxFileSize=50M
'';
}

View File

@ -0,0 +1,18 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# nix.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:42:17 by tomoron #+# #+# #
# Updated: 2025/09/05 23:42:20 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ ... }:
{
nix.settings.experimental-features = ["nix-command" "flakes"];
nixpkgs.config.allowUnfree = true;
}

View File

@ -0,0 +1,23 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# other.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2026/06/14 18:02:15 by tomoron #+# #+# #
# Updated: 2026/06/15 02:06:17 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ lib, ... }:
{
networking.hostName = lib.mkDefault "unnamed-nixos";
networking.networkmanager.enable = lib.mkDefault true;
time.timeZone = "Europe/Paris";
services.fstrim.enable = true; # trims all the ssds on the machine every week
catppuccin.enable = lib.mkDefault false;
catppuccin.autoEnable = false;
}

View File

@ -0,0 +1,23 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# packages.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2026/06/14 18:03:28 by tomoron #+# #+# #
# Updated: 2026/06/15 12:36:24 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
neovim
pciutils
gnumake
home-manager
];
}

View File

@ -0,0 +1,8 @@
{ ... }:
{
sops = {
defaultSopsFile = ../../../secrets/secrets.yaml;
age.keyFile = "/home/tom/.config/sops/age/keys.txt";
};
}

View File

@ -0,0 +1,25 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# user.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:42:18 by tomoron #+# #+# #
# Updated: 2026/06/14 18:07:45 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ ... }:
{
users.users.tom = {
isNormalUser = true;
extraGroups = [
"wheel" # can sudo
"docker" # can use docker
];
initialPassword = "password";
};
}

View File

@ -1,63 +1,35 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# global.nix :+: :+: :+: #
# other.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/09 01:43:46 by tomoron #+# #+# #
# Updated: 2025/04/03 13:24:06 by tomoron ### ########.fr #
# Updated: 2026/06/15 02:06:30 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ lib, pkgs, flakeName, ... }:
{ lib, ... }:
{
imports = lib.concatLists [[
./hardware-configuration.nix
./packages.nix
]
(lib.fileset.toList ./modules)
];
nix.settings.experimental-features = ["nix-command" "flakes"];
nixpkgs.config.allowUnfree = true;
boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
boot.loader = {
systemd-boot.enable = true;
systemd-boot.memtest86.enable = true;
efi.canTouchEfiVariables = true;
timeout = 1;
};
networking.networkmanager.enable = lib.mkDefault true;
time.timeZone = "Europe/Paris";
programs.fuse.enable = true;
services.xserver.enable = lib.mkDefault true;
services.xserver.displayManager.startx.enable = true;
programs.hyprland.enable = lib.mkDefault true;
services.pipewire = {
enable = true;
pulse.enable = true;
};
users.users.tom = {
isNormalUser = true;
extraGroups = [ "wheel" "docker" "libvirtd" "dialout"];
initialPassword = "password";
};
virtualisation.docker.enable = true;
virtualisation.docker.enableOnBoot = lib.mkDefault false;
programs.hyprland.enable = lib.mkDefault true;
system.stateVersion = "24.05";
environment.etc.nixosFlakeName.text = "${flakeName}";
hardware.logitech.wireless.enable = true;
hardware.logitech.wireless.enableGraphical = true;
programs.noisetorch.enable = true;
programs.droidcam.enable = true;
catppuccin.enable = true;
}

View File

@ -0,0 +1,26 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# packages.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:57:21 by tomoron #+# #+# #
# Updated: 2026/06/15 12:36:24 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
cryptsetup
usbutils
ntfs3g
acpi
unison
# nss //is this supposed to be here ?
];
}

View File

@ -0,0 +1,156 @@
{ ... }:
{
services.udev.extraRules = ''
# Copy this file to /etc/udev/rules.d/
# If rules fail to reload automatically, you can refresh udev rules
# with the command "udevadm control --reload"
# This rules are based on the udev rules from the OpenOCD project, with unsupported probes removed.
# See http://openocd.org/ for more details.
#
# This file is available under the GNU General Public License v2.0
ACTION!="add|change", GOTO="probe_rs_rules_end"
SUBSYSTEM=="gpio", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM!="usb|tty|hidraw", GOTO="probe_rs_rules_end"
# Please keep this list sorted by VID:PID
# STMicroelectronics ST-LINK V1
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", MODE="660", GROUP="plugdev", TAG+="uaccess"
# STMicroelectronics ST-LINK/V2
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="660", GROUP="plugdev", TAG+="uaccess"
# STMicroelectronics ST-LINK/V2.1
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", MODE="660", GROUP="plugdev", TAG+="uaccess"
# STMicroelectronics STLINK-V3
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3754", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3757", MODE="660", GROUP="plugdev", TAG+="uaccess"
# SEGGER J-Link
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0101", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0102", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0103", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0104", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0105", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0107", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0108", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1001", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1002", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1003", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1004", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1005", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1006", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1007", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1008", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1009", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1010", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1011", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1012", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1013", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1014", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1015", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1016", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1017", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1018", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1019", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1020", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1021", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1022", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1023", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1024", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1025", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1026", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1027", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1028", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1029", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1050", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1051", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1052", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1053", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1054", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1055", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1056", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1057", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1058", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1059", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1060", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1061", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1062", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1063", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1064", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1065", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1066", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1067", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1068", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1069", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106f", MODE="660", GROUP="plugdev", TAG+="uaccess"
# FT232H
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="660", GROUP="plugdev", TAG+="uaccess"
# FT2232x
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="660", GROUP="plugdev", TAG+="uaccess"
# FT4232H
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="660", GROUP="plugdev", TAG+="uaccess"
# FTDI-based Olimex devices
ATTRS{idVendor}=="0x15ba", ATTRS{idProduct}=="0x0003", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0x15ba", ATTRS{idProduct}=="0x0004", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0x15ba", ATTRS{idProduct}=="0x002a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0x15ba", ATTRS{idProduct}=="0x002b", MODE="660", GROUP="plugdev", TAG+="uaccess"
# Espressif USB JTAG/serial debug unit
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", MODE="660", GROUP="plugdev", TAG+="uaccess"
# Espressif USB Bridge
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1002", MODE="660", GROUP="plugdev", TAG+="uaccess"
# CMSIS-DAP compatible adapters
ATTRS{product}=="*CMSIS-DAP*", MODE="660", GROUP="plugdev", TAG+="uaccess"
# WCH Link (CMSIS-DAP compatible adapter)
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8010", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8011", MODE="660", GROUP="plugdev", TAG+="uaccess"
# Infineon KitProg
ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="f155", MODE="660", GROUP="plugdev", TAG+="uaccess"
LABEL="probe_rs_rules_end"
'';
}

23
osConfigs/global/user.nix Normal file
View File

@ -0,0 +1,23 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# user.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:42:18 by tomoron #+# #+# #
# Updated: 2026/06/22 15:42:08 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ ... }:
{
users.users.tom = {
extraGroups = [
"libvirtd" # can use libvirtd
"dialout" # can use serial devices
"wireshark" # can use wireshask
];
};
}

View File

@ -1,34 +1,46 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# desktop.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:57:04 by tomoron #+# #+# #
# Updated: 2026/06/24 18:42:19 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, lib, inputs, pkgs, ... }:
{ pkgs, ... }:
{
imports = [
../modules/game.nix
../modules/nvidia.nix
../modules/vboxHost.nix
];
environment.systemPackages = with pkgs; [
cudatoolkit
lm_sensors
];
boot.kernelParams = [ "nvidia-drm-modset=1" ];
networking.hostName = "nixos-fixe";
hardware.cpu.intel.updateMicrocode = true;
mods.yubikey.pam.enable = true;
mods.nvidia.enable = true;
boot.kernelModules = [ "kvm-intel" "nvidia" ];
services.openssh.enable = true;
hardware.nvidia = {
open = true;
networking.hostId = "98e475dd";
prime.nvidiaBusId = "PCI:1:0:0";
prime.intelBusId = "PCI:0:2:0";
prime.sync.enable = true;
mods.zfs.enable = true;
modesetting.enable = true;
mods.docker = {
enable = true;
boot = false;
};
services.openssh.enable = true;
users.users.sync = {
isNormalUser = true;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIkVmIAJZewJVC6i1f39P7D36OPsdKqMNejALhBo92Td backup@server"
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIPy6ObpsitxHkRZzGbYdBpsBbR1YygtZOeClN2C/thu4AAAABHNzaDo= ssh:"
];
};
}

View File

@ -1,10 +1,18 @@
{lib, inputs, pkgs, ... }:
# **************************************************************************** #
# #
# ::: :::::::: #
# iso.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:57:02 by tomoron #+# #+# #
# Updated: 2026/06/14 18:25:39 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{lib, ... }:
{
imports = [
../packages.nix
];
users.users.tom = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "video" ];
@ -13,13 +21,4 @@
services.getty.autologinUser = lib.mkForce "tom";
services.getty.helpLine = lib.mkForce "";
programs.hyprland.enable = true;
home-manager.extraSpecialArgs = { inherit inputs; inherit pkgs; isOs = true;};
home-manager.users.tom = {
imports = [
../../homeConfigs/home.nix
../../homeConfigs/hosts/iso.nix
];
};
}

View File

@ -1,62 +1,153 @@
{ pkgs, ... }:
# **************************************************************************** #
# #
# ::: :::::::: #
# laptop.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:56:57 by tomoron #+# #+# #
# Updated: 2026/06/15 02:11:29 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ lib, config, pkgs, ... }:
{
boot.kernelParams = [ "kvm.enable_virt_at_load=0" ];
services.udev.packages = [ pkgs.yubikey-personalization ];
boot.initrd.kernelModules = [ "vfat" "nls_cp437" "nls_iso8859-1" "usbhid" ];
boot.initrd.systemd.enable = true;
boot.initrd.luks.yubikeySupport = false;
boot.initrd.luks.devices.cryptroot = {
device = "/dev/disk/by-uuid/a4593b01-069d-4a5d-a550-74a762b89b3f";
allowDiscards = true;
#set up initial : https://wiki.nixos.org/wiki/Yubikey_based_Full_Disk_Encryption_(FDE)_on_NixOS
#yubikey = { #bad implementation upstream. unlock with be with fallback password until it's better
# twoFactor = false;
# keyLength = 64;
# saltLength = 32;
# storage = {
# device = "/dev/disk/by-uuid/BA5C-F216";
# path = "/default";
# };
#};
boot.initrd.luks.devices.cryptroot.device = "/dev/disk/by-uuid/a4593b01-069d-4a5d-a550-74a762b89b3f";
services.displayManager.enable = true;
services.displayManager.ly.enable = true;
};
boot.blacklistedKernelModules = [ "nvidia" "nvidia_drm" "nvidia_uvm" ]; #speeds up startup, loaded automatically when gpu is started
networking.firewall.enable = false;
networking.hostName = "patate-douce";
networking.wireless.enable = true;
networking.networkmanager.wifi.backend = "iwd";
networking.wireless.iwd.enable = true;
networking.wireless.allowAuxiliaryImperativeNetworks = true;
networking.networkmanager.enable = false;
networking.dhcpcd.enable = false;
systemd.network.enable = true;
networking.useNetworkd = true;
specialisation.vfio_ready.configuration = {
#vfio ready configuration sets up kvmfr0 kernel module, disables xbox controller on host os, enables libvirtd and installs looking-glass
mods.virtualHost.enable = true;
boot.extraModulePackages = with config.boot.kernelPackages; [ kvmfr ];
boot.kernelModules = [ "kvmfr" ];
boot.extraModprobeConfig = ''
options kvmfr static_size_mb=128
blacklist xpad
'';
virtualisation.libvirtd.qemu.verbatimConfig = ''
cgroup_device_acl = [
"/dev/kvmfr0", "/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm",
"/dev/rtc","/dev/hpet",
]
'';
services.udev.extraRules = ''
SUBSYSTEM=="kvmfr", OWNER="tom", GROUP="kvm", MODE="0660"
'';
environment.systemPackages = with pkgs; [ looking-glass-client ];
};
environment.systemPackages = with pkgs; [
acpi
tlp
looking-glass-client
fprintd
impala
openvr
];
hardware.nvidia.prime.offload = {
mods.touchpad.enable = true;
mods.powerSave = {
enable = true;
enableOffloadCmd = true;
powahCommandAdditions = [
"supergfxctl -m Hybrid"
"if [ $# -gt 0 ] && [[ \"$1\" == \"moar\" ]] ; then asusctl profile set Performance; fi"
];
tagueuleCommandAdditions = [
"echo \"can't safely turn off the GPU\""
"asusctl profile set Quiet"
];
cpuMaxFreq = 4465261;
};
services.libinput.enable = true;
services.libinput.touchpad.clickMethod = "clickfinger";
services.libinput.touchpad.tapping = false;
services.asusd = {
enable = true;
};
services.supergfxd.enable = true;
services.supergfxd.settings = {
mode = lib.mkDefault "Integrated";
vfio_enable = true;
vfio_save = true;
always_reboot = false;
no_logind = true;
logout_timeout_s = 180;
hotplug_type = "None";
};
programs.wireshark.enable = true;
programs.wireshark.usbmon.enable = true;
mods.yubikey.pam.enable = true;
mods.docker.enable = true;
mods.nvidia.enable = true;
mods.nvidia.prime = true;
services.usbmuxd.enable = true; #iphone usb service sometimes hangs when shutting down
services.avahi.enable = true;
services.pipewire = {
raopOpenFirewall = true;
extraConfig.pipewire = {
"10-airplay"."context.modules" = [
{ name = "libpipewire-module-raop-discover"; }
];
};
};
services.pipewire.wireplumber.extraConfig."10-bluez" = {
"monitor.bluez.properties" = {
"bluez5.enable-sbc-xq" = true;
"bluez5.enable-msbc" = true;
"bluez5.enable-hw-volume" = true;
};
};
hardware.bluetooth.enable = true;
#power management
powerManagement.enable = true;
powerManagement.cpuFreqGovernor = "powersave";
services.auto-cpufreq.enable = true;
services.auto-cpufreq.settings = {
battery = {
governor = "powersave";
turbo = "never";
};
charger = {
governor = "performance";
turbo = "auto";
hardware.bluetooth.settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
services.upower.enable = true;
services.udev.packages = [ pkgs.yubikey-personalization ];
# boot.plymouth = {
# enable = true;
# theme = "ycontre-glow";
# themePackages = [
# inputs.plymouth-theme-ycontre-glow.defaultPackage.x86_64-linux
# ];
# };
programs.corectrl.enable = true;
}

View File

@ -1,98 +1,194 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# server.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:57:09 by tomoron #+# #+# #
# Updated: 2026/06/24 20:34:47 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, lib, inputs, pkgs, ... }:
{ lib, config, pkgs, inputs, ... }:
{
imports = [
../modules/game.nix
../modules/vboxHost.nix
../modules/nvidia.nix
let
ports = [
22 #git ssh
80 443 #http server
5000 #frigate
8083 137 138 139 445 548 3702 5357 #prob some samba shit
24454 #minecraft voice chat
25565 # minecraft server
9091 # transmission web interface
];
portRanges = [
{from = 47950; to = 49000;} #moonlight (wolf)
];
in
{
boot.extraModulePackages = [
config.boot.kernelPackages.gasket #driver for google coral edge tpu
];
boot.kernelParams = [
"amdgpu.vm_update_mode=3"
"amdgpu.gpu_recovery=1"
];
boot.kernelPackages = pkgs.linuxPackages;
boot.extraModulePackages = [ config.boot.kernelPackages.gasket ];
networking.hostName = "server";
services.openssh.enable = true;
services.openssh.settings.PasswordAuthentication = false;
services.openssh.ports = [ 1880 ];
services.xserver.videoDrivers = [ "nvidia" ];
sops.secrets."cloudflared/token" = {};
sops.secrets."zfs/p_user" = {};
sops.secrets."zfs/p_token" = {};
systemd.services.cloudflared = {
after = [
"network.target"
"network-online.target"
];
wants = [
"network.target"
"network-online.target"
];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''${pkgs.bash}/bin/bash -c '${pkgs.cloudflared}/bin/cloudflared tunnel --no-autoupdate run --token "$(cat ${config.sops.secrets."cloudflared/token".path})"' '';
Restart = "on-failure";
};
};
boot.extraModprobeConfig = ''
options amdgpu virtual_display=1
'';
# create dummy display to be able to start x11
'';
environment.systemPackages = with pkgs; [
zfs
nvidia-docker
libnvidia-container
screen
mods.zfs.enable = true;
boot.zfs.forceImportRoot = false;
boot.zfs.extraPools = [ "raid_vol" ];
systemd.timers."nextcloud-cron-job" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "5m";
OnUnitActiveSec = "5m";
Unit = "nextcloud-cron-job.service";
};
};
systemd.services."nextcloud-cron-job" = {
script = ''
${pkgs.docker}/bin/docker exec -u www-data nextcloud php /var/www/html/cron.php
'';
serviceConfig = {
Type = "oneshot";
User = "root";
};
};
environment.systemPackages = [
inputs.dockermcmgr.packages.${pkgs.stdenv.hostPlatform.system}.default
];
services.zfs = {
autoScrub.enable = true;
zed.settings = {
ZED_NOTIFY_VERBOSE=1;
ZED_PUSHOVER_TOKEN="$(cat ${config.sops.secrets."zfs/p_token".path})";
ZED_PUSHOVER_USER="$(cat ${config.sops.secrets."zfs/p_user".path})";
};
};
boot.supportedFilesystems = [ "zfs" ];
services.sanoid.enable = true;
services.sanoid.datasets."raid_vol" = {
daily = 31;
hourly = 24;
monthly = 12;
autosnap = true;
autoprune = true;
};
services.sanoid.datasets."raid_vol/crit" = {
daily = 31;
hourly = 24;
monthly = 12;
autosnap = true;
autoprune = true;
};
# services.cron.enable = false;
# services.cron.systemCronJobs = [
# # m h dom m dow
# # https://crontab.guru <3
# ];
users.users.backup.isNormalUser = true;
networking.firewall.allowedTCPPorts = [
22 #git ssh
80 443 #http server
5000 #frigate
8083 137 138 139 445 548 3702 5357 #prob some samba shit
24454 #minecraft voice chat
25565 # minecraft server
];
networking.firewall.allowedUDPPorts = [
22 #git ssh
80 443 #http server
5000 #frigate
8083 137 138 139 445 548 3702 5357 #prob some samba shit
24454 #minecraft voice chat
25565 # minecraft server
];
services.syncoid.enable = true;
services.syncoid.user = "backup";
services.syncoid.group = "users";
services.syncoid.service.serviceConfig = {
BindReadOnlyPaths = [ "/home/backup/.ssh" ];
ProtectHome = lib.mkForce false;
};
services.syncoid.sshKey = "/home/backup/.ssh/id_ed25519";
services.syncoid.commands."raid_vol-critical" = {
source = "raid_vol/crit";
target = "sync@192.168.1.41:stor";
};
networking.firewall.allowedUDPPortRanges = [
{from = 47950; to = 49000;}
];
networking.firewall.allowedTCPPortRanges = [
{from = 47950; to = 49000;}
];
networking = {
hostName = "server";
interfaces.eth0.ipv4.addresses = [ {
address = "192.168.1.24";
prefixLength = 24;
prefixLength = 24;
} ];
defaultGateway.address = "192.168.1.254";
defaultGateway.interface = "eth0";
nameservers = ["8.8.8.8" "8.8.4.4" "1.1.1.1"];
hostId = "68290da7";
};
virtualisation.docker = {
liveRestore = false;
enableOnBoot = true;
package = inputs.pkgs-docker-2750.legacyPackages."x86_64-linux".docker;
# daemon.settings = {
# runtimes.nvidia.path = "${pkgs.nvidia-docker}/bin/nvidia-container-runtime";
# exec-opts = ["native.cgroupdriver=cgroupfs"];
# };
defaultGateway.address = "192.168.1.254";
defaultGateway.interface = "eth0";
nameservers = ["8.8.8.8" "8.8.4.4" "1.1.1.1"];
hostId = "68290da7";
firewall.allowedTCPPorts = ports;
firewall.allowedUDPPorts = ports;
firewall.allowedUDPPortRanges = portRanges;
firewall.allowedTCPPortRanges = portRanges;
};
services.fail2ban.enable = true;
services.fail2ban.bantime = "2h";
services.fail2ban.bantime = "5h";
hardware.nvidia-container-toolkit.enable = true;
mods.nvidia.enable = true;
mods.nvidia.beta = true;
mods.nvidia.containerToolkit = true;
hardware.nvidia = {
open = true;
# prime.nvidiaBusId = "PCI:1:0:0";
# prime.amdgpuBusId = "PCI:13:0:0";
# prime.sync.enable = true;
# modesetting.enable = true;
mods.docker = {
enable = true;
boot = true;
};
systemd.services.dockermcmgr-server = {
enable = true;
wantedBy = ["multi-user.target"];
restartIfChanged = true;
serviceConfig = {
ExecStart = "${inputs.dockermcmgr.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/dmm serverMode";
User = "tom";
Group= "users";
};
};
nix.settings.trusted-users = [ "root" "builder" "tom" ];
users.users.builder = {
isNormalUser = true;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICzRsLTBnow52e63Qp6JqUaLNOCpoIsPpJFOAhJOgF1M root@patate-douce"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIl6m5mdyfixhVgcDIOHhRQRSyCH4//2XJ/MRmOLD8R4 root@nixos-fixe"
];
group = "builder";
};
users.groups.builder = {};
mods.remote-build.enable = false;
}

View File

@ -1,4 +1,16 @@
{ config, lib, inputs, pkgs, ... }:
# **************************************************************************** #
# #
# ::: :::::::: #
# vbox.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:56:42 by tomoron #+# #+# #
# Updated: 2025/09/06 00:56:52 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ ... }:
{
virtualisation.virtualbox.guest.enable = true;

View File

@ -0,0 +1,36 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# docker.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:10:58 by tomoron #+# #+# #
# Updated: 2025/09/06 01:06:23 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, lib, ... }:
{
options.mods.docker = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable docker";
};
boot = lib.mkOption {
type = lib.types.bool;
default = false;
description = "start docker with the system (if false, trigered by docker.socket)";
};
};
config = lib.mkIf config.mods.docker.enable {
virtualisation.docker = {
enable = true;
liveRestore = false;
enableOnBoot = config.mods.docker.boot;
};
};
}

View File

@ -1,14 +0,0 @@
{config, lib, ... }:
{
options.mods.gayming.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "enable games on the host";
};
config = lib.mkIf config.mods.gayming.enable {
programs.steam.enable = true;
programs.steam.protontricks.enable = true;
};
}

View File

@ -1,19 +1,65 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# nvidia.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:47:19 by tomoron #+# #+# #
# Updated: 2025/12/23 18:42:01 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, lib, inputs, pkgs, ... }:
{ config, lib, ... }:
{
options.mods.nvidia-graphics.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "enable my nvidia graphics settings";
options.mods.nvidia = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable nvidia drivers";
};
beta = lib.mkOption {
type = lib.types.bool;
default = false;
description = "use beta version of the drivers";
};
open = lib.mkOption {
type = lib.types.bool;
default = true;
description = "use open version of the drivers (on newer gpu)";
};
containerToolkit = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable the nvidia container toolkit (gpu in docker)";
};
prime = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable nvidia prime offload (saves battery). prime ?";
};
};
config = lib.mkIf config.mods.nvidia-graphics.enable {
config = lib.mkIf config.mods.nvidia.enable {
hardware.graphics = {
enable = true;
enable32Bit = true;
};
hardware.nvidia = {
package = lib.mkIf config.mods.nvidia.beta config.boot.kernelPackages.nvidiaPackages.beta;
open = config.mods.nvidia.open;
prime.offload = lib.mkIf config.mods.nvidia.prime {
enable = true;
enableOffloadCmd = true;
};
};
hardware.nvidia-container-toolkit.enable = config.mods.nvidia.containerToolkit;
services.xserver.videoDrivers = ["nvidia"];
};

View File

@ -0,0 +1,125 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# powerSave.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:45:04 by tomoron #+# #+# #
# Updated: 2025/09/23 04:25:20 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, lib, pkgs, ... }:
{
options.mods.powerSave = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable services and settings to save power";
};
powahCommandAdditions = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = "commands the `powah` script runs";
};
tagueuleCommandAdditions = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = "commands the `tagueule` script runs";
};
pStateCompatible = lib.mkOption {
type = lib.types.bool;
default = false;
description = "is the cpu p-state compatible. only most of intel cpu's";
};
cpuMaxFreq = lib.mkOption {
type = lib.types.ints.positive;
default = 5000000;
description = "the max frequency of the cpu (in KHz)";
};
governorPowers = {
ac.min = lib.mkOption {
type = lib.types.ints.unsigned;
default = 30;
description = "min frequency on AC";
};
ac.max = lib.mkOption {
type = lib.types.ints.unsigned;
default = 100;
description = "max frequency on AC";
};
bat.min = lib.mkOption {
type = lib.types.ints.unsigned;
default = 0;
description = "min frequency on BAT";
};
bat.max = lib.mkOption {
type = lib.types.ints.unsigned;
default = 40;
description = "max frequency on BAT";
};
};
};
config = lib.mkIf config.mods.powerSave.enable {
services.tlp = {
enable = true;
settings = {
TLP_DEFAULT_MODE = "BAT";
TLP_PERSISTENT_DEFAULT = 1;
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
}
// lib.optionalAttrs (!config.mods.powerSave.pStateCompatible) (with config.mods.powerSave; {
CPU_SCALING_MIN_FREQ_ON_AC = (cpuMaxFreq * governorPowers.ac.min) / 100;
CPU_SCALING_MAX_FREQ_ON_AC = (cpuMaxFreq * governorPowers.ac.max) / 100;
CPU_SCALING_MIN_FREQ_ON_BAT = (cpuMaxFreq * governorPowers.bat.min) / 100;
CPU_SCALING_MAX_FREQ_ON_BAT = (cpuMaxFreq * governorPowers.bat.max) / 100;
})
// lib.optionalAttrs config.mods.powerSave.pStateCompatible (with config.mods.powerSave.governorPowers; {
CPU_MIN_PERF_ON_AC = ac.min;
CPU_MAX_PERF_ON_AC = ac.max;
CPU_MIN_PERF_ON_BAT = bat.min;
CPU_MAX_PERF_ON_BAT = bat.max;
});
};
environment.systemPackages = [
(pkgs.writeShellApplication {
name = "powah";
runtimeInputs = with pkgs; [ tlp ];
text = ''
if [[ $EUID -ne 0 ]]; then
exec sudo bash "$0" "$@"
fi
tlp ac
'' + lib.concatStringsSep "\n" config.mods.powerSave.powahCommandAdditions;
})
(pkgs.writeShellApplication {
name = "tagueule";
runtimeInputs = with pkgs; [ tlp ];
text = ''
if [[ $EUID -ne 0 ]]; then
exec sudo bash "$0" "$@"
fi
tlp bat
'' + lib.concatStringsSep "\n" config.mods.powerSave.tagueuleCommandAdditions;
})
];
powerManagement.enable = true;
mods.nvidia.prime = true;
};
}

View File

@ -0,0 +1,46 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# remote_build.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:47:09 by tomoron #+# #+# #
# Updated: 2026/06/13 23:44:37 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{config, lib, ... }:
{
options.mods.remote-build.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "setup remote nix builder";
};
config = lib.mkIf config.mods.remote-build.enable {
nix.buildMachines = [
{
hostName = "tmoron.fr";
sshUser = "builder";
protocol = "ssh-ng";
sshKey = "/root/.ssh/id_ed25519";
system = "x86_64-linux";
maxJobs = 2;
speedFactor = 2;
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
}
];
nix.distributedBuilds = true;
programs.ssh.extraConfig = ''
Host tmoron.fr
HostName tmoron.fr
Port 1880
'';
};
}

View File

@ -0,0 +1,29 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# touchpad.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:39:41 by tomoron #+# #+# #
# Updated: 2025/09/06 01:02:41 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, lib, ... }:
{
options.mods.touchpad = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable touchpad support";
};
};
config = lib.mkIf config.mods.touchpad.enable {
services.libinput.enable = true;
services.libinput.touchpad.clickMethod = "clickfinger";
services.libinput.touchpad.tapping = false;
};
}

View File

@ -1,14 +0,0 @@
{ config, lib, inputs, pkgs, ... }:
{
options.mods.virtualbox.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "enable virtualbox as host";
};
config = lib.mkIf config.mods.virtualbox.enable {
virtualisation.virtualbox.host.enable = true;
users.users.tom.extraGroups = [ "vboxusers" ];
};
}

View File

@ -0,0 +1,31 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# virtualHost.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:47:19 by tomoron #+# #+# #
# Updated: 2026/06/15 02:01:25 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, lib, pkgs, ... }:
{
options.mods.virtualHost.enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable virtual manager as host";
};
config = lib.mkIf config.mods.virtualHost.enable {
programs.virt-manager.enable = true;
virtualisation.libvirtd.enable = true;
virtualisation.libvirtd.qemu.runAsRoot = true;
virtualisation.libvirtd.qemu.vhostUserPackages = [ pkgs.virtiofsd ];
virtualisation.spiceUSBRedirection.enable = true;
environment.systemPackages = with pkgs; [ spice-gtk ];
};
}

View File

@ -1,20 +1,32 @@
{ config, lib, inputs, pkgs, ... }:
# **************************************************************************** #
# #
# ::: :::::::: #
# yubikey.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:47:20 by tomoron #+# #+# #
# Updated: 2025/09/06 01:03:54 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, lib, pkgs, ... }:
{
options.mods.yubikey = {
options.mods.yubikey.pam = {
enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "enable yubikey";
};
default = false;
description = "enable yubikey pam module\nuse `ykpamcfg` to configure";
};
id = lib.mkOption {
type = lib.str;
description = "yubikey id";
};
id = lib.mkOption {
type = lib.str;
description = "id of the yubikey written under connector";
};
};
config = lib.mkIf config.mods.yubikey.enable {
config = lib.mkIf config.mods.yubikey.pam.enable {
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
@ -22,8 +34,12 @@
security.pam.yubico = {
enable = true;
id = config.mods.yubikey.id;
id = config.mods.yubikey.pam.id;
mode = "challenge-response";
};
environment.systemPackages = with pkgs; [
yubico-pam
];
};
}

13
osConfigs/modules/zfs.nix Normal file
View File

@ -0,0 +1,13 @@
{ pkgs, config, lib, ... }:
{
options.mods.zfs.enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "does this system support zfs filesystems";
};
config = lib.mkIf config.mods.zfs.enable {
boot.kernelPackages = pkgs.linuxPackages;
boot.supportedFilesystems = [ "zfs" ];
};
}

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