Compare commits

..

1 Commits

Author SHA1 Message Date
7deb3fe8d9 add autoupdate (test probably broken)
All checks were successful
Build iso when a new version is pushed / test (push) Successful in 2m28s
2026-04-23 17:24:13 +02:00
84 changed files with 1119 additions and 1610 deletions

View File

@ -1,13 +1,8 @@
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:
@ -21,11 +16,3 @@ jobs:
- 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

1
.gitignore vendored
View File

@ -1 +0,0 @@
tmp/

View File

@ -4,8 +4,7 @@ FLAKE ?= .
MODE ?= switch
EXTRAFLAGS ?=
FLAGS = --impure -j 1 -L $(EXTRAFLAGS)
FLAGS = --impure --cores $(THREADS) -j $(THREADS)
ifdef OFFLINE
FLAGS += --option binary-caches ''
@ -15,6 +14,7 @@ all: os home
update:
cd $(FLAKE);nix flake update
$(MAKE) all
os:
sudo nixos-rebuild $(MODE) $(FLAGS) --flake $(FLAKE)#$(HOST)

163
flake.lock generated
View File

@ -5,11 +5,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1781857425,
"narHash": "sha256-YhFPbCmdGis/4hwwt/ls4IZ8FR159EULbxWvv6U15+I=",
"lastModified": 1775994227,
"narHash": "sha256-4VKeWtl9dEubrgpy9fSXkXbjBZlNXPNlQQM5l1ppHv4=",
"owner": "catppuccin",
"repo": "nix",
"rev": "8b943da8a0f8628f3446d2517ea39babcfaf27f3",
"rev": "d0a9a21ed8e235956a768fc624242ec9a3e15575",
"type": "github"
},
"original": {
@ -18,29 +18,6 @@
"type": "github"
}
},
"dockermcmgr": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1781713404,
"narHash": "sha256-sWYN0mtke4pMa/v19CXTYIhmZ8zIeYfcmzkSvtgBrhI=",
"ref": "refs/heads/master",
"rev": "64b2f04f8f1d3f826a5fe2c456dab41f5a13b3dc",
"revCount": 41,
"type": "git",
"url": "https://git.tmoron.fr/tom/dockermcmgr"
},
"original": {
"type": "git",
"url": "https://git.tmoron.fr/tom/dockermcmgr"
}
},
"firefox-addons": {
"inputs": {
"nixpkgs": [
@ -49,11 +26,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1782014564,
"narHash": "sha256-F/royQHyJAyKWKrV8AaG4Yf1yjzxa+PFk5xvTdvBrzk=",
"lastModified": 1776139376,
"narHash": "sha256-rBykvCL5GRT6VmiY39XnxAR10cohBsLeAENP0+3JM/0=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "d6668e34bbce788459883a1097bf0ee170f49c61",
"rev": "ccfaa2303117e22752bda4e1a1bb07d17f38ea2d",
"type": "gitlab"
},
"original": {
@ -63,22 +40,6 @@
"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": [
@ -86,30 +47,26 @@
]
},
"locked": {
"lastModified": 1782100728,
"narHash": "sha256-YTyPsWf6ieaU6j/gJ+i7ERXKC7DEJC8BxUcAubx2SVQ=",
"lastModified": 1776136611,
"narHash": "sha256-b2pu3Pb28W0bJzQVP3OJHZC5+dgOOeqjlli2WVakKEU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f3dc0b85833c6c9946ad1349ab810d07e0bdf761",
"rev": "8a423e444b17dde406097328604a64fc7429e34e",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "home-manager",
"type": "github"
}
},
"nixos-hardware": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1781622756,
"narHash": "sha256-JrPh4M6S7aPsEE9tOENuZrxC6o2szSLlK+t4+nLke9s=",
"lastModified": 1775490113,
"narHash": "sha256-2ZBhDNZZwYkRmefK5XLOusCJHnoeKkoN95hoSGgMxWM=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "08018c72174a4df5657f8d94178ac69fb9c243e5",
"rev": "c775c2772ba56e906cbeb4e0b2db19079ef11ff7",
"type": "github"
},
"original": {
@ -121,58 +78,32 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1781607440,
"narHash": "sha256-eM+l4TVD26SNoEjcxRcpispqZi5Qrqj/G0ZY4LfqwfM=",
"rev": "3e41b24abd260e8f71dbe2f5737d24122f972158",
"type": "tarball",
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1017567.3e41b24abd26/nixexprs.tar.xz"
"lastModified": 1775423009,
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
"type": "github"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1770107345,
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
"lastModified": 1775710090,
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4",
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"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": 1782099349,
"narHash": "sha256-SPuZdcuv4sMd5QVCxLDEcwc8SXjsU7ZjaMmiBSr4HoU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f56bad1bdd74e486c5b1223dc5e1066277efd983",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "master",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
@ -180,11 +111,10 @@
"root": {
"inputs": {
"catppuccin": "catppuccin",
"dockermcmgr": "dockermcmgr",
"firefox-addons": "firefox-addons",
"home-manager": "home-manager",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_4",
"nixpkgs": "nixpkgs_2",
"sops-nix": "sops-nix"
}
},
@ -195,11 +125,11 @@
]
},
"locked": {
"lastModified": 1781943681,
"narHash": "sha256-NFHmA7H47adqiyp+0iEOyZOQhmigDqA/NBAlf4imB6U=",
"lastModified": 1776119890,
"narHash": "sha256-Zm6bxLNnEOYuS/SzrAGsYuXSwk3cbkRQZY0fJnk8a5M=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "420f8d2e9882911f65cfac15cc706f639ba96cca",
"rev": "d4971dd58c6627bfee52a1ad4237637c0a2fb0cd",
"type": "github"
},
"original": {
@ -207,39 +137,6 @@
"repo": "sops-nix",
"type": "github"
}
},
"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": {
"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"
}
}
},
"root": "root",

View File

@ -6,7 +6,7 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/10/17 18:15:24 by tomoron #+# #+# #
# Updated: 2026/06/15 02:17:44 by tomoron ### ########.fr #
# Updated: 2025/12/16 19:01:21 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -14,7 +14,7 @@
description = "Nixos and home-manager config flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/master";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
catppuccin.url = "github:catppuccin/nix";
sops-nix = {
@ -23,7 +23,7 @@
};
home-manager = {
url = "github:nix-community/home-manager/master";
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
@ -33,11 +33,6 @@
inputs.nixpkgs.follows = "nixpkgs";
};
dockermcmgr = {
url = "git+https://git.tmoron.fr/tom/dockermcmgr";
inputs.nixpkgs.follows = "nixpkgs";
};
#plymouth-theme-ycontre-glow = {
# url = "git+file:///home/tom/desktop/bordel/ycontre-glow";
# inputs.nixpkgs.follows = "nixpkgs";
@ -48,8 +43,8 @@
let
pkgs = import nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; };
osConfig = {flakeName, minimal ? false, extraModules ? []}: nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; flakeName = flakeName; minimal = minimal; };
osConfig = {flakeName, extraModules ? []}: nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; flakeName = flakeName; };
modules = nixpkgs.lib.concatLists [
[
./osConfigs/os.nix
@ -61,9 +56,9 @@
];
};
homeConfig = {flakeName, sops ? true, extraModules ? [], username ? "tom", homeDir ? "/home/tom", minimal ? false}: home-manager.lib.homeManagerConfiguration {
homeConfig = {flakeName, sops ? true, extraModules ? [], username ? "tom", homeDir ? "/home/tom"}: home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = { inherit inputs; username = username; homeDir = homeDir; isOs = false; configSops = sops; minimal = minimal; };
extraSpecialArgs = { inherit inputs; username = username; homeDir = homeDir; isOs = false; configSops = sops; };
modules = nixpkgs.lib.concatLists [
[
./homeConfigs/home.nix
@ -76,8 +71,9 @@
};
in {
nixosConfigurations = {
server = osConfig {flakeName = "server"; minimal = true;};
server = osConfig {flakeName = "server";};
vbox = osConfig {flakeName = "vbox";};
laptop = osConfig {flakeName = "laptop"; extraModules = [ nixos-hardware.nixosModules.asus-zephyrus-ga401 ];};
desktop = osConfig {flakeName = "desktop";};
@ -98,7 +94,7 @@
ft = homeConfig { flakeName = "ft"; username = "tomoron"; homeDir = "/home/tomoron"; sops = false;};
laptop = homeConfig { flakeName = "laptop"; };
desktop = homeConfig { flakeName = "desktop"; };
server = homeConfig { flakeName = "server"; minimal = true; };
server = homeConfig { flakeName = "server"; };
};
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

View File

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

View File

@ -2,8 +2,6 @@
{
catppuccin = {
enable = true;
autoEnable = false;
flavor = "mocha";
dunst.enable = true;
@ -14,9 +12,9 @@
};
gtk = {
enable = true;
theme = { package = pkgs.magnetic-catppuccin-gtk; name = "Catppuccin-GTK-Dark"; };
gtk4.theme = config.gtk.theme;
enable = true;
theme = { package = pkgs.flat-remix-gtk; name = "Flat-Remix-GTK-Grey-Darkest"; };
font = { name = "Sans"; size = 11; };
};
@ -30,7 +28,7 @@
};
home.file = {
".config/wallpaper.png".source = lib.mkDefault ../assets/wallpaper.png;
".config/lock_screen.jpg".source = lib.mkDefault ../assets/lock_screen.jpg;
".config/wallpaper.png".source = lib.mkDefault ../utils/wallpaper.png;
".config/lock_screen.jpg".source = lib.mkDefault ../utils/lock_screen.jpg;
};
}

View File

@ -0,0 +1,13 @@
{ ... }:
{
catppuccin = {
enable = true;
flavor = "mocha";
dunst.enable = true;
dunst.flavor="frappe";
kvantum.apply = true;
rofi.enable = false;
};
}

View File

@ -1,18 +0,0 @@
{ 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

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

View File

@ -1,25 +0,0 @@
{ ... }:
{
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

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

View File

@ -1,30 +0,0 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# packages.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/09 22:01:56 by tomoron #+# #+# #
# Updated: 2026/06/14 19:11:25 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ pkgs, ...}:
{
home.packages = with pkgs;[
lrzip
git
lm_sensors
wget
curl
man-pages
ffmpeg-full
nix-index
sops
screen
btop
htop
];
}

View File

@ -1,213 +0,0 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# 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

@ -5,7 +5,7 @@
programs.rclone.remotes.nextcloud = {
config = {
type = "webdav";
url = "https://dnc.tmoron.fr/remote.php/dav/files/tom";
url = "https://nc.tmoron.fr/remote.php/dav/files/tom";
vendor = "nextcloud";
user = "tom";
};

View File

@ -5,7 +5,7 @@
theme = "rounded-nord-dark";
};
home.file.".local/share/rofi/themes".source = "${fetchGit {
home.file.".local/share/rofi/themes".source = "${builtins.fetchGit {
url = "https://github.com/newmanls/rofi-themes-collection";
rev = "c8239a45edced3502894e1716a8b661fdea8f1c9";
ref = "master";

View File

@ -1,5 +1,4 @@
{ homeDir, ... }:
{
home.shell.enableBashIntegration = true;
home.shellAliases = {
@ -7,6 +6,7 @@
grep = "grep --color=auto";
vim = "nvim";
vi = "nvim";
hl = "Hyprland";
clr = "clear";
noidle = "systemctl --user stop hypridle";
};
@ -24,17 +24,4 @@
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

@ -1,58 +0,0 @@
{ 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

@ -1,27 +0,0 @@
{ ... }:
{
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

@ -1,177 +0,0 @@
{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

@ -1,32 +0,0 @@
{ ... }:
{
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

@ -1,24 +0,0 @@
{ 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

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

View File

@ -1,19 +0,0 @@
{ ... }:
{
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

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

View File

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

View File

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

View File

@ -1,61 +0,0 @@
{ ... }:
{
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

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

View File

@ -1,12 +0,0 @@
{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

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

View File

@ -1,25 +0,0 @@
{ 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

@ -1,15 +0,0 @@
{ 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

@ -1,35 +0,0 @@
{ ... }:
{
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

@ -1,42 +0,0 @@
{ ... }:
{
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,7 +6,7 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/10/17 18:15:38 by tomoron #+# #+# #
# Updated: 2026/06/15 01:53:27 by tomoron ### ########.fr #
# Updated: 2025/09/24 02:08:41 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -16,19 +16,20 @@ username ? "tom",
homeDir ? "/home/tom",
isOs ? false,
configSops ? true,
minimal,
...
}:
{
imports = (lib.fileset.toList ./modules)
++ (lib.lists.optionals minimal (lib.fileset.toList ./global/minimal))
++ (lib.lists.optionals (!minimal) (lib.fileset.toList ./global));
imports = lib.concatLists [
[ ./packages.nix ]
(lib.fileset.toList ./modules)
(lib.fileset.toList ./global)
];
home.username = lib.mkIf (!isOs) "${username}";
home.homeDirectory = lib.mkIf (!isOs) "${homeDir}";
home.stateVersion = "25.11";
home.stateVersion = "24.05";
sops = lib.mkIf configSops{
defaultSopsFile = ../secrets/secrets.yaml;

View File

@ -1,6 +1,11 @@
{ ... }:
{
mods.game.enable = false;
mods.hyprland.enable = false;
mods.x11.enable = true;
programs.firefox.enable = false;
services.picom = {
backend = "xrender";
settings = {

View File

@ -1,8 +1,7 @@
{ lib, pkgs, config, ... }:
{ ... }:
{
programs.waybar.settings.mainBar.temperature.thermal-zone = 2;
mods.x11.enable = true;
wayland.windowManager.hyprland.settings = {
monitor = [
"DP-2, 1920x1080@60Hz, -1920x0, auto"
@ -21,8 +20,9 @@
"LIBVA_DRIVER_NAME,nvidia"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
];
cursor.no_hardware_cursors = true;
misc.vrr = 1;
};
mods.hyprland.autoSuspend = false;
}

View File

@ -1,4 +1,5 @@
{ lib, pkgs, ... }:
{
mods.nonChromium.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) / 100)).$(($(cat /sys/class/hwmon/hwmon6/fan2_input) / 100))\"";
exec = "echo \" \" \"$(cat /sys/class/hwmon/hwmon6/fan1_input).$(cat /sys/class/hwmon/hwmon6/fan2_input) |\"";
interval = 1;
interval-if = 1;
};
@ -27,7 +27,13 @@
", XF86Launch1, exec, hyprlock"
", XF86Launch4, exec, pkill activate-linux"
];
bindl = [
# ",switch:off:Lid Switch,exec,hyprctl keyword monitor \"eDP-1, 1920x1080@120, 0x0, 1\""
# ",switch:on:Lid Switch,exec,hyprctl keyword monitor \"eDP-1, disable\""
];
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"
];
@ -37,6 +43,8 @@
home.packages = with pkgs; [
blender
wireshark
localsend
impala
];
services.mpris-proxy.enable = true;

View File

@ -1,4 +1,12 @@
{ 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

@ -0,0 +1,21 @@
{ 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 {
catppuccin.alacritty.enable = true;
programs.alacritty = {
enable = true;
settings = {
# window.opacity = 0.95;
env.XTERM = "xterm-256color";
font.size = 9;
};
};
};
}

View File

@ -0,0 +1,24 @@
{ 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

@ -0,0 +1,21 @@
{ 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 {
catppuccin.firefox.enable = true;
programs.firefox = {
enable = lib.mkDefault true;
profiles.default = {
extensions.packages = with inputs.firefox-addons.packages."x86_64-linux";
[vimium ublock-origin];
extensions.force = true;
};
};
};
}

View File

@ -0,0 +1,20 @@
{ 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
r2modman
];
};
}

View File

@ -0,0 +1,34 @@
{ 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;
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,16 @@
{ config, lib, pkgs, ... }:
{
options.mods.nonChromium.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "all chromium/electron based application can't be built by act-runner, so they can't be in the iso";
};
config = lib.mkIf config.mods.nonChromium.enable {
home.packages = with pkgs;[
discord
google-chrome
];
};
}

View File

@ -1,7 +1,7 @@
{ lib, config, pkgs, ... }:
{ lib, config, ... }:
let
defPathLst = [ "desktop" "42_desktop" ];
defPathLst = ["desktop" "42_desktop" "Downloads"];
in
{
options.mods.sync = {
@ -19,7 +19,7 @@ in
destFolder = lib.mkOption {
type = lib.types.str;
default = "/raid/crit/pc_sync";
default = "/raid/pc_sync";
description = "where on the server";
};
@ -41,9 +41,8 @@ in
description = "hostname used by unison";
};
};
config = lib.mkIf config.mods.sync.enable {
home.packages = with pkgs;[ unison ];
home.file.".unison/default.prf" = {
config.home.file.".unison/default.prf" = lib.mkIf config.mods.sync.enable {
text = (lib.strings.concatStrings [''
auto=true
root=${config.mods.sync.homeFolder}
@ -53,5 +52,4 @@ in
(if !(isNull config.mods.sync.customHostName) then "\nclientHostName=${config.mods.sync.customHostName}" else "")
]);
};
};
}

228
homeConfigs/modules/vim.nix Normal file
View File

@ -0,0 +1,228 @@
{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
rust-analyzer
nodejs_24
glsl_analyzer
(pkgs.python3.withPackages (ps: with ps; [
python-lsp-server
pylsp-mypy
python-lsp-ruff
pycodestyle
]))
];
# programs.neovim.extraLuaConfig = ''
# vim.lsp.config('pylsp', {})
# '';
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' },
})
})
-- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below
-- Set configuration for specific filetype.
--[[ cmp.setup.filetype('gitcommit', {
sources = cmp.config.sources({
{ name = 'git' },
}, {
{ name = 'buffer' },
})
})
require("cmp_git").setup() ]]--
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
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()
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
}
})
'';
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,33 @@
{ 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

@ -0,0 +1,192 @@
{ 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.systemd.variables = [ "--all" ];
programs.hyprshot.enable = true;
wayland.windowManager.hyprland.enable = true;
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, rofi -show drun -show-icons"
"$mainMod SHIFT, D, exec, 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, 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 = 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 = [
"swaybg -i ~/.config/wallpaper.png&"
"(sleep 2;activate-linux)&"
"waybar&"
"alacritty&"
];
};
};
}

View File

@ -0,0 +1,32 @@
{ 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

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

View File

@ -0,0 +1,163 @@
{ 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;
}
#disk.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}% |";
states.high = "5";
};
"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,11 +6,11 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/10 00:32:47 by tomoron #+# #+# #
# Updated: 2026/06/16 23:09:20 by tomoron ### ########.fr #
# Updated: 2025/02/10 01:17:29 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{pkgs, lib, config, ... }:
{ 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" = "${lib.getExe pkgs.playerctl} play-pause";
"super + shift + p" = "${lib.getExe pkgs.playerctl} previous";
"super + shift + n" = "${lib.getExe pkgs.playerctl} next";
"super + shift + o" = "playerctl play-pause";
"super + shift + p" = "playerctl previous";
"super + shift + n" = "playerctl next";
"super + shift + alt + b" = "polybar-msg cmd hide";
"super + shift + b" = "polybar-msg cmd show";
};

View File

@ -6,7 +6,7 @@
# 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 #
# Updated: 2026/03/27 12:00:06 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -14,18 +14,28 @@
{
home.packages = with pkgs;[
lrzip
pigz
htop
gnumake
git
fastfetch
clang
ninja
gdb
valgrind
wget
cmake
man-pages
stress
ffmpeg-full
ripgrep
activate-linux
unison
brightnessctl
playerctl
vlc
nix-index
yubikey-manager
bibata-cursors
libcaca
@ -33,13 +43,9 @@
nerd-fonts.iosevka
compiledb
yubikey-personalization
sops
libreoffice
doxygen
qimgv
acpi
discord
google-chrome
localsend
];
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

View File

Before

Width:  |  Height:  |  Size: 797 KiB

After

Width:  |  Height:  |  Size: 797 KiB

View File

@ -6,13 +6,22 @@
# 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 #
# Updated: 2026/04/03 11:46:09 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{pkgs, ... } :
{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.consoleLogLevel = 3;
boot.initrd.verbose = false;
boot.kernelParams = [
@ -26,6 +35,16 @@
boot.plymouth = {
enable = true;
theme = "nixos-bgrt";
themePackages = with pkgs; [ nixos-bgrt-plymouth ];
themePackages = with pkgs; [ #(adi1090x-plymouth-themes.override {
# selected_themes = [ "black_hud" "circle_hud" "square_hud" "spinner_alt" ];
# })
# catppuccin-plymouth
nixos-bgrt-plymouth
];
};
services.journald.extraConfig = ''
SystemMaxUse=100M
SystemMaxFileSize=50M
'';
}

View File

@ -1,13 +0,0 @@
{ ... }:
{
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

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

View File

@ -6,7 +6,7 @@
# 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 #
# Updated: 2026/02/21 13:54:43 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -30,11 +30,6 @@
xz
systemd
fribidi
harfbuzz
libgpg-error
gmp
libxcomposite
libxtst
libxrandr

View File

@ -1,31 +0,0 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# 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

@ -1,23 +0,0 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# 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

@ -1,23 +0,0 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# 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,12 @@
{ ... }:
let
nix-alien-pkgs = import (
builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master"
) { };
in
{
environment.systemPackages = with nix-alien-pkgs; [
nix-alien
];
}

View File

@ -6,15 +6,20 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/02/09 01:43:46 by tomoron #+# #+# #
# Updated: 2026/06/15 02:06:30 by tomoron ### ########.fr #
# Updated: 2026/04/03 22:08:01 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ lib, ... }:
{
networking.hostName = lib.mkDefault "unnamed-nixos";
networking.networkmanager.enable = lib.mkDefault true;
programs.fuse.enable = true;
time.timeZone = "Europe/Paris";
services.xserver.enable = lib.mkDefault true;
services.xserver.displayManager.startx.enable = true;
@ -28,8 +33,5 @@
hardware.logitech.wireless.enable = true;
hardware.logitech.wireless.enableGraphical = true;
programs.noisetorch.enable = true;
programs.droidcam.enable = true;
catppuccin.enable = true;
services.fstrim.enable = true; # trims all the ssds on the machine every week
}

View File

@ -6,7 +6,7 @@
# 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 #
# Updated: 2025/12/30 18:12:05 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -14,13 +14,14 @@
{
environment.systemPackages = with pkgs; [
cryptsetup
home-manager
vim
pciutils
usbutils
ntfs3g
cryptsetup
acpi
unison
# nss //is this supposed to be here ?
nss
];
}

View File

@ -1,156 +0,0 @@
{ ... }:
{
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"
'';
}

View File

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

View File

@ -6,7 +6,7 @@
# 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 #
# Updated: 2026/01/13 16:32:42 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -14,10 +14,15 @@
{
users.users.tom = {
isNormalUser = true;
extraGroups = [
"wheel" # can sudo
"docker" # can use docker
"libvirtd" # can use libvirtd
"dialout" # can use serial devices
"wireshark" # can use wireshask
];
initialPassword = "password";
};
}

View File

@ -6,41 +6,46 @@
# 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 #
# Updated: 2026/03/30 13:46:43 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ pkgs, ... }:
{ config, lib, inputs, pkgs, ... }:
{
boot.kernelParams = [ "nvidia-drm-modset=1" ];
environment.systemPackages = with pkgs; [
lm_sensors # can be user (and global)
];
networking.hostName = "nixos-fixe";
hardware.cpu.intel.updateMicrocode = true;
mods.yubikey.pam.enable = true;
mods.nvidia.enable = true;
boot.kernelModules = [ "kvm-intel" "nvidia" ];
mods.displayManager.enable = true;
mods.nvidia.enable = true;
mods.gayming.enable = true;
programs.noisetorch.enable = true;
# hardware.nvidia = {
# open = true;
#
# prime.nvidiaBusId = "PCI:1:0:0";
# prime.intelBusId = "PCI:0:2:0";
# prime.sync.enable = true;
#
# modesetting.enable = true;
# };
services.openssh.enable = true;
programs.droidcam.enable = true;
boot.kernelPackages = pkgs.linuxPackages;
boot.supportedFilesystems = [ "zfs" ];
networking.hostId = "98e475dd";
mods.zfs.enable = true;
mods.docker = {
enable = true;
boot = false;
};
users.users.sync = {
isNormalUser = true;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIkVmIAJZewJVC6i1f39P7D36OPsdKqMNejALhBo92Td backup@server"
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIPy6ObpsitxHkRZzGbYdBpsBbR1YygtZOeClN2C/thu4AAAABHNzaDo= ssh:"
];
};
}

View File

@ -6,13 +6,17 @@
# 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 #
# Updated: 2025/09/06 00:57:03 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{lib, ... }:
{
imports = [
../global/packages.nix
];
users.users.tom = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "video" ];

View File

@ -6,7 +6,7 @@
# 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 #
# Updated: 2026/04/10 20:07:49 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -15,43 +15,37 @@
{
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.yubikeySupport = true;
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";
# };
#};
yubikey = {
twoFactor = false;
keyLength = 64;
saltLength = 32;
storage = {
device = "/dev/disk/by-uuid/BA5C-F216";
path = "/default";
};
};
};
boot.blacklistedKernelModules = [ "nvidia" "nvidia_drm" "nvidia_uvm" ]; #speeds up startup, loaded automatically when gpu is started
boot.blacklistedKernelModules = [ "nvidia" "nvidia_drm" "nvidia_uvm" ]; #speeds up startup
programs.droidcam.enable = true;
mods.displayManager.enable = true;
mods.yubikey.pam.enable = true;
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 ];
@ -74,13 +68,27 @@
environment.systemPackages = with pkgs; [ looking-glass-client ];
};
services.udev.extraRules = ''
SUBSYSTEM=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
'';
networking.dhcpcd.enable = false;
systemd.network.enable = true;
networking.useNetworkd = true;
programs.noisetorch.enable = true;
services.postgresql.enable = true;
hardware.bluetooth.enable = true;
environment.systemPackages = with pkgs; [
impala
openvr
acpi # can be user (global)
];
mods.touchpad.enable = true;
mods.powerSave = {
@ -97,8 +105,10 @@
};
services.asusd = {
enable = true;
# enableUserService = true;
};
services.supergfxd.enable = true;
@ -115,13 +125,14 @@
programs.wireshark.enable = true;
programs.wireshark.usbmon.enable = true;
mods.yubikey.pam.enable = true;
mods.docker.enable = true;
mods.gayming.enable = true;
mods.nvidia.enable = true;
mods.nvidia.prime = true;
services.usbmuxd.enable = true; #iphone usb service sometimes hangs when shutting down
services.usbmuxd.enable = true; #sometimes hangs when shutting down
services.avahi.enable = true;
services.pipewire = {
@ -141,13 +152,9 @@
"bluez5.enable-hw-volume" = true;
};
};
hardware.bluetooth.enable = true;
hardware.bluetooth.settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
programs.corectrl.enable = true;
}

View File

@ -6,11 +6,11 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:57:09 by tomoron #+# #+# #
# Updated: 2026/06/15 12:34:42 by tomoron ### ########.fr #
# Updated: 2026/04/09 13:21:07 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ config, pkgs, inputs, ... }:
{ config, pkgs, ... }:
let
ports = [
@ -27,14 +27,13 @@ let
];
in
{
boot.kernelPackages = pkgs.linuxPackages;
boot.extraModulePackages = [
config.boot.kernelPackages.gasket #driver for google coral edge tpu
];
boot.kernelParams = [
"amdgpu.vm_update_mode=3"
"amdgpu.gpu_recovery=1"
];
services.openssh.enable = true;
services.openssh.settings.PasswordAuthentication = false;
@ -64,34 +63,7 @@ in
# create dummy display to be able to start x11
'';
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
];
boot.supportedFilesystems = [ "zfs" ];
services.zfs = {
autoScrub.enable = true;
@ -111,6 +83,11 @@ in
autoprune = true;
};
environment.systemPackages = with pkgs; [
zfs
screen #can be user (and global)
];
networking = {
hostName = "server";
@ -141,30 +118,4 @@ in
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

@ -0,0 +1,36 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# displayManager.nix :+: :+: :+: #
# +:+ +:+ +:+ #
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/05 23:47:16 by tomoron #+# #+# #
# Updated: 2025/11/17 14:32:13 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{config, lib, ... }:
{
options.mods.displayManager.enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable the ly display manager";
};
config = lib.mkIf config.mods.displayManager.enable {
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

@ -1,25 +1,27 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# user.nix :+: :+: :+: #
# game.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 #
# Created: 2025/09/05 23:47:09 by tomoron #+# #+# #
# Updated: 2025/10/27 00:50:29 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ ... }:
{config, lib, ... }:
{
users.users.tom = {
isNormalUser = true;
extraGroups = [
"wheel" # can sudo
"docker" # can use docker
];
options.mods.gayming.enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "enable steam and other";
};
initialPassword = "password";
config = lib.mkIf config.mods.gayming.enable {
programs.steam.enable = true;
programs.steam.protontricks.enable = true;
programs.gamescope.enable = true;
};
}

View File

@ -1,46 +0,0 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# 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

@ -6,7 +6,7 @@
# 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 #
# Updated: 2025/09/06 01:03:07 by tomoron ### ########.fr #
# #
# **************************************************************************** #

View File

@ -1,13 +0,0 @@
{ 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" ];
};
}

View File

@ -6,22 +6,19 @@
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/09/06 00:56:36 by tomoron #+# #+# #
# Updated: 2026/06/14 18:56:12 by tomoron ### ########.fr #
# Updated: 2025/09/06 00:56:37 by tomoron ### ########.fr #
# #
# **************************************************************************** #
{ lib, flakeName, minimal, ... }:
{ lib, flakeName, ... }:
{
imports = (lib.concatLists [
imports = lib.concatLists [
[ ./hardware-configuration.nix ]
(lib.fileset.toList ./global)
(lib.fileset.toList ./modules)
])
++ (lib.lists.optionals minimal (lib.fileset.toList ./global/minimal))
++ (lib.lists.optionals (!minimal) (lib.fileset.toList ./global));
];
system.stateVersion = "25.05";
environment.etc.nixosFlakeName.text = "${flakeName}";
}