Compare commits
99 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1c00acd71 | ||
|
|
3e350bc425 | ||
|
|
d3debcc799 | ||
|
|
ec5364d764 | ||
|
|
3d5d391b24 | ||
|
|
171623d9a4 | ||
|
|
d77bfaeef9 | ||
|
|
33a35705c7 | ||
|
|
e3b2d5539e | ||
|
|
d4ede85a43 | ||
|
|
e579577ebc | ||
|
|
7bb02faafc | ||
|
|
6cc1cdefd0 | ||
|
|
8063fad558 | ||
|
|
6ceaec3e19 | ||
|
|
96c2fddfa9 | ||
|
|
41fdba3110 | ||
|
|
2a2c0f7d62 | ||
|
|
d08ce627c9 | ||
|
|
aed72ef9b1 | ||
|
|
bd7de0c0b8 | ||
|
|
185e9edb27 | ||
|
|
56a90423c6 | ||
|
|
5da70a0b2c | ||
|
|
22daf9d874 | ||
|
|
99180536b1 | ||
|
|
58fa90edb8 | ||
|
|
0a91c1ac33 | ||
|
|
dc4ddc932c | ||
|
|
dce67f426f | ||
|
|
7acfcd9e9b | ||
|
|
3b64d08ed8 | ||
|
|
1261c6fd1d | ||
|
|
3abfa5d11d | ||
|
|
8f4c739c17 | ||
|
|
649d17ec96 | ||
|
|
599245d31d | ||
|
|
e95a5adbdb | ||
|
|
73fca5b239 | ||
|
|
1237215796 | ||
|
|
bf23f13702 | ||
|
|
0ec400e235 | ||
|
|
fafc1334b9 | ||
|
|
da3cefab0d | ||
|
|
b4c0b9c09d | ||
|
|
765d744fb0 | ||
|
|
7357ab347c | ||
|
|
374d74b0e0 | ||
|
|
03b35dea36 | ||
|
|
0da8827b84 | ||
|
|
fc973b7060 | ||
|
|
30244c5a0c | ||
|
|
86b836789a | ||
|
|
81ad78432e | ||
|
|
660d714abb | ||
|
|
29e5648e02 | ||
|
|
2999862827 | ||
|
|
8c018bcad7 | ||
|
|
dc877e8e2c | ||
|
|
bff91b2a42 | ||
|
|
d3c8119c2c | ||
|
|
9ff1ccc4fa | ||
|
|
0f1b1ebbcf | ||
|
|
774273438f | ||
|
|
14ce02280d | ||
|
|
dad3f3db8e | ||
|
|
85f8018e36 | ||
|
|
97d80daa3d | ||
|
|
dd97680acc | ||
|
|
db78e0407f | ||
|
|
d94e1294c7 | ||
|
|
6564c4428b | ||
|
|
b0dce24c79 | ||
|
|
053fafde54 | ||
|
|
f39b5f76b1 | ||
|
|
48a3f42b30 | ||
|
|
683972662b | ||
|
|
d23beebddf | ||
|
|
eb3cf5bd91 | ||
|
|
d9c450d089 | ||
|
|
fe0ed96008 | ||
|
|
f6be5f8b80 | ||
|
|
d07a224bbc | ||
|
|
926cbacafb | ||
|
|
d864982647 | ||
|
|
b9bd906e65 | ||
|
|
c63062d2ae | ||
|
|
eac0729a0f | ||
|
|
d3cf892061 | ||
|
|
de024aa2bd | ||
|
|
dacb6643e2 | ||
|
|
2977882a60 | ||
|
|
6afd86c4ef | ||
|
|
87292dd44e | ||
|
|
106f9fb7bf | ||
|
|
72b28d88d2 | ||
|
|
623e014b69 | ||
|
|
e317c15342 | ||
|
|
7991472938 |
69 changed files with 2926 additions and 1717 deletions
55
common.nix
55
common.nix
|
|
@ -1,44 +1,62 @@
|
|||
{ inputs, config, lib, pkgs, ... }:
|
||||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my; {
|
||||
imports = [ inputs.home-manager.nixosModules.home-manager ]
|
||||
++ (mapModulesRec' (toString ./modules) import);
|
||||
{
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
]
|
||||
++ (lib.my.mapModulesRec' (toString ./modules) import);
|
||||
|
||||
nix = {
|
||||
package = pkgs.nixFlakes;
|
||||
package = pkgs.nixVersions.stable;
|
||||
extraOptions = "experimental-features = nix-command flakes";
|
||||
nixPath = [ "nixpkgs=${inputs.nixpkgs-unstable}" ];
|
||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||
settings = {
|
||||
substituters = [
|
||||
"https://nix-community.cachix.org"
|
||||
"http://cache.banditlair.com"
|
||||
"https://cache.nixos.org/"
|
||||
"https://devenv.cachix.org"
|
||||
# "ssh://nix-ssh@hel1.banditlair.com"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"cache.banditlair.com:4zk7iDvzKh6VN+LxzKIGcVPKgL5dLeyEt2ydrgx4o8c="
|
||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||
"hel1.banditlair.com:stzB4xe5QTFvSABoP11ZpNzLDCRZ93PExk0Z/gOzW3g="
|
||||
];
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
persistent = true;
|
||||
};
|
||||
};
|
||||
|
||||
system.configurationRevision = with inputs; mkIf (self ? rev) self.rev;
|
||||
system.configurationRevision = lib.mkIf (inputs.self ? rev) inputs.self.rev;
|
||||
|
||||
time.timeZone = mkDefault "Europe/Amsterdam";
|
||||
time.timeZone = lib.mkDefault "Europe/Amsterdam";
|
||||
|
||||
i18n.defaultLocale = mkDefault "en_US.UTF-8";
|
||||
i18n.defaultLocale = lib.mkDefault "en_US.UTF-8";
|
||||
|
||||
zramSwap.enable = true;
|
||||
zramSwap.memoryPercent = 300;
|
||||
systemd.oomd.enable = true;
|
||||
|
||||
console = {
|
||||
keyMap = lib.mkDefault "fr";
|
||||
font = mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-v32n.psf.gz";
|
||||
font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-v32n.psf.gz";
|
||||
earlySetup = true;
|
||||
};
|
||||
|
||||
fonts.fontconfig.antialias = mkDefault true;
|
||||
fonts.fontconfig.antialias = lib.mkDefault true;
|
||||
fonts.fontconfig.subpixel = {
|
||||
rgba = mkDefault "none";
|
||||
lcdfilter = mkDefault "none";
|
||||
rgba = lib.mkDefault "none";
|
||||
lcdfilter = lib.mkDefault "none";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
|
|
@ -60,7 +78,10 @@ with lib.my; {
|
|||
];
|
||||
|
||||
networking.hosts = {
|
||||
"127.0.0.1" = [ "localhost" "membres.yourcoop.local" ];
|
||||
"127.0.0.1" = [
|
||||
"localhost"
|
||||
"membres.yourcoop.local"
|
||||
];
|
||||
};
|
||||
services.resolved.dnssec = "false";
|
||||
}
|
||||
|
|
|
|||
621
flake.lock
generated
621
flake.lock
generated
|
|
@ -1,50 +1,38 @@
|
|||
{
|
||||
"nodes": {
|
||||
"doom-emacs": {
|
||||
"flake": false,
|
||||
"blueprint": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"llm-agents",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1662497747,
|
||||
"narHash": "sha256-4n7E1fqda7cn5/F2jTkOnKw1juG6XMS/FI9gqODL3aU=",
|
||||
"owner": "doomemacs",
|
||||
"repo": "doomemacs",
|
||||
"rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac",
|
||||
"lastModified": 1763308703,
|
||||
"narHash": "sha256-O9Y+Wer8wOh+N+4kcCK5p/VLrXyX+ktk0/s3HdZvJzk=",
|
||||
"owner": "numtide",
|
||||
"repo": "blueprint",
|
||||
"rev": "5a9bba070f801d63e2af3c9ef00b86b212429f4f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "doomemacs",
|
||||
"repo": "doomemacs",
|
||||
"rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"doom-snippets": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1694887483,
|
||||
"narHash": "sha256-KlKhruPSLPSKqUnr5/U65arm16VrY9ORzm+XKNZhpTQ=",
|
||||
"owner": "doomemacs",
|
||||
"repo": "snippets",
|
||||
"rev": "f022984ee1318a4015d5d081b3c3dab5a60dc6ff",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "doomemacs",
|
||||
"repo": "snippets",
|
||||
"owner": "numtide",
|
||||
"repo": "blueprint",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"emacs-overlay": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719106959,
|
||||
"narHash": "sha256-dxrEcXldbG9pw2f+BCgu5lv7nUeHphQHhGZupaaDmGg=",
|
||||
"lastModified": 1766423654,
|
||||
"narHash": "sha256-ko2vQ6kf8dXLMTq2bnNazbPAHvdsf+BrWQfr4acRNDo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "b5e4ae0a33bb011e9515181ff1634471a975539f",
|
||||
"rev": "d06edf59a5f5c1b15d607ec2e514cf2f8a71a591",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -53,236 +41,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"emacs-overlay_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1676366521,
|
||||
"narHash": "sha256-i4UAY8t9Au9SJtsgYppa3NHSVf1YkV6yqnNIQd+Km4g=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"emacs-so-long": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1575031854,
|
||||
"narHash": "sha256-xIa5zO0ZaToDrec1OFjBK6l39AbA4l/CE4LInVu2hi0=",
|
||||
"owner": "hlissner",
|
||||
"repo": "emacs-so-long",
|
||||
"rev": "ed666b0716f60e8988c455804de24b55919e71ca",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hlissner",
|
||||
"repo": "emacs-so-long",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"evil-escape": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1588439096,
|
||||
"narHash": "sha256-aB2Ge5o/93B18tPf4fN1c+O46CNh/nOqwLJbox4c8Gw=",
|
||||
"owner": "hlissner",
|
||||
"repo": "evil-escape",
|
||||
"rev": "819f1ee1cf3f69a1ae920e6004f2c0baeebbe077",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hlissner",
|
||||
"repo": "evil-escape",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"evil-markdown": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1626852210,
|
||||
"narHash": "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=",
|
||||
"owner": "Somelauw",
|
||||
"repo": "evil-markdown",
|
||||
"rev": "8e6cc68af83914b2fa9fd3a3b8472573dbcef477",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Somelauw",
|
||||
"repo": "evil-markdown",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"evil-org-mode": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1607203864,
|
||||
"narHash": "sha256-JxwqVYDN6OIJEH15MVI6XOZAPtUWUhJQWHyzcrUvrFg=",
|
||||
"owner": "hlissner",
|
||||
"repo": "evil-org-mode",
|
||||
"rev": "a9706da260c45b98601bcd72b1d2c0a24a017700",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hlissner",
|
||||
"repo": "evil-org-mode",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"evil-quick-diff": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1575189609,
|
||||
"narHash": "sha256-oGzl1ayW9rIuq0haoiFS7RZsS8NFMdEA7K1BSozgnJU=",
|
||||
"owner": "rgrinberg",
|
||||
"repo": "evil-quick-diff",
|
||||
"rev": "69c883720b30a892c63bc89f49d4f0e8b8028908",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rgrinberg",
|
||||
"repo": "evil-quick-diff",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"explain-pause-mode": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1595842060,
|
||||
"narHash": "sha256-++znrjiDSx+cy4okFBBXUBkRFdtnE2x+trkmqjB3Njs=",
|
||||
"owner": "lastquestion",
|
||||
"repo": "explain-pause-mode",
|
||||
"rev": "2356c8c3639cbeeb9751744dbe737267849b4b51",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lastquestion",
|
||||
"repo": "explain-pause-mode",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694529238,
|
||||
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flameshot-git": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1718732606,
|
||||
"narHash": "sha256-Y9RnVxic5mlRIc48wYVQXrvu/s65smtMMVj8HBskHzE=",
|
||||
"owner": "flameshot-org",
|
||||
"repo": "flameshot",
|
||||
"rev": "c1dac52231024174faa68a29577129ebca125dff",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "flameshot-org",
|
||||
"repo": "flameshot",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"format-all": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1581716637,
|
||||
"narHash": "sha256-ul7LCe60W8TIvUmUtZtZRo8489TK9iTPDsLHmzxY57M=",
|
||||
"owner": "lassik",
|
||||
"repo": "emacs-format-all-the-code",
|
||||
"rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lassik",
|
||||
"repo": "emacs-format-all-the-code",
|
||||
"rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gruvbox-gtk-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1718658865,
|
||||
"narHash": "sha256-wUBOR9CjjD2MwT3PdLw/mccVLYhwVCaTJ+fe2V2HhnE=",
|
||||
"owner": "Fausto-Korpsvart",
|
||||
"repo": "Gruvbox-GTK-Theme",
|
||||
"rev": "5e99fc6c2b30b0489065254240f15cd6d401eb0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Fausto-Korpsvart",
|
||||
"repo": "Gruvbox-GTK-Theme",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gruvbox-kvantum-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696096968,
|
||||
"narHash": "sha256-u2J4Zf9HuMjNCt3qVpgEffkytl/t277FzOvWL8Nm8os=",
|
||||
"owner": "sachnr",
|
||||
"repo": "gruvbox-kvantum-themes",
|
||||
"rev": "f47670be407c1f07c64890ad53884ee9977a7db1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "sachnr",
|
||||
"repo": "gruvbox-kvantum-themes",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
|
@ -290,85 +48,47 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718530513,
|
||||
"narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
|
||||
"lastModified": 1766387499,
|
||||
"narHash": "sha256-AjK3/UKDzeXFeYNLVBaJ3+HLE9he1g5UrlNd4/BM3eA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
|
||||
"rev": "527ad07e6625302b648ed3b28c34b62a79bd103e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.05",
|
||||
"ref": "master",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-doom-emacs": {
|
||||
"llm-agents": {
|
||||
"inputs": {
|
||||
"doom-emacs": "doom-emacs",
|
||||
"doom-snippets": "doom-snippets",
|
||||
"emacs-overlay": "emacs-overlay_2",
|
||||
"emacs-so-long": "emacs-so-long",
|
||||
"evil-escape": "evil-escape",
|
||||
"evil-markdown": "evil-markdown",
|
||||
"evil-org-mode": "evil-org-mode",
|
||||
"evil-quick-diff": "evil-quick-diff",
|
||||
"explain-pause-mode": "explain-pause-mode",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"format-all": "format-all",
|
||||
"nix-straight": "nix-straight",
|
||||
"blueprint": "blueprint",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nose": "nose",
|
||||
"ob-racket": "ob-racket",
|
||||
"org": "org",
|
||||
"org-contrib": "org-contrib",
|
||||
"org-yt": "org-yt",
|
||||
"php-extras": "php-extras",
|
||||
"revealjs": "revealjs",
|
||||
"rotate-text": "rotate-text",
|
||||
"sln-mode": "sln-mode",
|
||||
"ts-fold": "ts-fold",
|
||||
"ws-butler": "ws-butler"
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701264882,
|
||||
"narHash": "sha256-MBXR7x7Ua8qystlGr+lenwjQd7dsFNFpEFmtHhh10zM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-doom-emacs",
|
||||
"rev": "f7413022370f24bb53cb450bfb2803233510113e",
|
||||
"lastModified": 1766441132,
|
||||
"narHash": "sha256-bd6d2lQiNaIEIjRZo7yFthyYJ8uugnRJfWn8SuOy8i4=",
|
||||
"owner": "numtide",
|
||||
"repo": "llm-agents.nix",
|
||||
"rev": "950a181bbb93b8de506b1db15fec242d273d2c1d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-doom-emacs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-straight": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1694361489,
|
||||
"narHash": "sha256-kjDp+j6OtrmqbtjQB5uuOtjS08+kgJQuxFqhWE1Y9Rw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-straight.el",
|
||||
"rev": "748be99b84be0b130e946288099806a0f16d6e57",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-straight.el",
|
||||
"owner": "numtide",
|
||||
"repo": "llm-agents.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1718895438,
|
||||
"narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=",
|
||||
"lastModified": 1766309749,
|
||||
"narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3",
|
||||
"rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -380,27 +100,43 @@
|
|||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1718811006,
|
||||
"narHash": "sha256-0Y8IrGhRmBmT7HHXlxxepg2t8j1X90++qRN3lukGaIk=",
|
||||
"lastModified": 1766014764,
|
||||
"narHash": "sha256-+73VffE5GP5fvbib6Hs1Su6LehG+9UV1Kzs90T2gBLA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "03d771e513ce90147b65fe922d87d3a0356fc125",
|
||||
"rev": "2b0d2b456e4e8452cf1c16d00118d145f31160f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.11",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1718895438,
|
||||
"narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=",
|
||||
"lastModified": 1766314097,
|
||||
"narHash": "sha256-laJftWbghBehazn/zxVJ8NdENVgjccsWAdAqKXhErrM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "306ea70f9eb0fb4e040f8540e2deab32ed7e2055",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1766309749,
|
||||
"narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3",
|
||||
"rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -410,191 +146,84 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1695806987,
|
||||
"narHash": "sha256-fX5kGs66NZIxCMcpAGIpxuftajHL8Hil1vjHmjjl118=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f3dab3509afca932f3f4fd0908957709bb1c1f57",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1718835956,
|
||||
"narHash": "sha256-wM9v2yIxClRYsGHut5vHICZTK7xdrUGfrLkXvSuv6s4=",
|
||||
"lastModified": 1766070988,
|
||||
"narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "dd457de7e08c6d06789b1f5b88fc9327f4d96309",
|
||||
"rev": "c6245e83d836d0433170a16eb185cefe0572f8b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.05",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nose": {
|
||||
"nvim-treesitter": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1400604510,
|
||||
"narHash": "sha256-daEi8Kta1oGaDEmUUDDQMahTTPOpvNpDKk22rlr7cB0=",
|
||||
"owner": "emacsattic",
|
||||
"repo": "nose",
|
||||
"rev": "f8528297519eba911696c4e68fa88892de9a7b72",
|
||||
"lastModified": 1766230815,
|
||||
"narHash": "sha256-+2PF6Q2uwRs/gbhKvR4jF8rYhe0HoZfwMwZCoZinp/o=",
|
||||
"owner": "nvim-treesitter",
|
||||
"repo": "nvim-treesitter",
|
||||
"rev": "8cdffc6d334731ce3703b6d870a5a34fd878208a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "emacsattic",
|
||||
"repo": "nose",
|
||||
"owner": "nvim-treesitter",
|
||||
"ref": "main",
|
||||
"repo": "nvim-treesitter",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ob-racket": {
|
||||
"flake": false,
|
||||
"nvim-treesitter-main": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nvim-treesitter": "nvim-treesitter",
|
||||
"nvim-treesitter-textobjects": "nvim-treesitter-textobjects"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1584656173,
|
||||
"narHash": "sha256-rBUYDDCXb+3D4xTPQo9UocbTPZ32kWV1Uya/1DmZknU=",
|
||||
"owner": "xchrishawk",
|
||||
"repo": "ob-racket",
|
||||
"rev": "83457ec9e1e96a29fd2086ed19432b9d75787673",
|
||||
"lastModified": 1766296113,
|
||||
"narHash": "sha256-s6bymukQTFg6kAsgogwbCda+Fe+Su3T9rJE0xZ8s9R0=",
|
||||
"owner": "iofq",
|
||||
"repo": "nvim-treesitter-main",
|
||||
"rev": "5ca3b0dd2d3d00fb597ba8c316eb3ca79ea17fbc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "xchrishawk",
|
||||
"repo": "ob-racket",
|
||||
"owner": "iofq",
|
||||
"repo": "nvim-treesitter-main",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"org": {
|
||||
"nvim-treesitter-textobjects": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1695726851,
|
||||
"narHash": "sha256-qgbjspklSoI8M3cbCJOcUdjuijRgsL/+PSyEOW9VX4I=",
|
||||
"owner": "emacs-straight",
|
||||
"repo": "org-mode",
|
||||
"rev": "aa9177e1a8b039c357d369c1c9aaab710bb247a9",
|
||||
"lastModified": 1766243280,
|
||||
"narHash": "sha256-hbVwqoo0WRTVKIhsG5N6IXnmOVrrQzGuE4x0rEMYro0=",
|
||||
"owner": "nvim-treesitter",
|
||||
"repo": "nvim-treesitter-textobjects",
|
||||
"rev": "e91c585ac0ee760198dabc1fad2e6227effdcd5e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "emacs-straight",
|
||||
"repo": "org-mode",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"org-contrib": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1694946041,
|
||||
"narHash": "sha256-X/HFG6NZe5BY00KvGbcsIuf9R6Lg8x7Uhd0Y5+Q3qZU=",
|
||||
"owner": "emacsmirror",
|
||||
"repo": "org-contrib",
|
||||
"rev": "5eabbf22bdd4523c922a30787e98ee66c24221aa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "emacsmirror",
|
||||
"repo": "org-contrib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"org-yt": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1527381913,
|
||||
"narHash": "sha256-dzQ6B7ryzatHCTLyEnRSbWO0VUiX/FHYnpHTs74aVUs=",
|
||||
"owner": "TobiasZawada",
|
||||
"repo": "org-yt",
|
||||
"rev": "40cc1ac76d741055cbefa13860d9f070a7ade001",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "TobiasZawada",
|
||||
"repo": "org-yt",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"php-extras": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1573312690,
|
||||
"narHash": "sha256-r4WyVbzvT0ra4Z6JywNBOw5RxOEYd6Qe2IpebHXkj1U=",
|
||||
"owner": "arnested",
|
||||
"repo": "php-extras",
|
||||
"rev": "d410c5af663c30c01d461ac476d1cbfbacb49367",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "arnested",
|
||||
"repo": "php-extras",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"revealjs": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1695738029,
|
||||
"narHash": "sha256-Z9c9Q41jMkj/DyXOiZYyIa7Gmn8VB8yauTyWrSsT+ps=",
|
||||
"owner": "hakimel",
|
||||
"repo": "reveal.js",
|
||||
"rev": "88fbfc5751ad01e3f6adee5819eabeb9e73c3757",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hakimel",
|
||||
"repo": "reveal.js",
|
||||
"owner": "nvim-treesitter",
|
||||
"ref": "main",
|
||||
"repo": "nvim-treesitter-textobjects",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"emacs-overlay": "emacs-overlay",
|
||||
"flameshot-git": "flameshot-git",
|
||||
"gruvbox-gtk-theme": "gruvbox-gtk-theme",
|
||||
"gruvbox-kvantum-theme": "gruvbox-kvantum-theme",
|
||||
"home-manager": "home-manager",
|
||||
"nix-doom-emacs": "nix-doom-emacs",
|
||||
"llm-agents": "llm-agents",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||
}
|
||||
},
|
||||
"rotate-text": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1322962747,
|
||||
"narHash": "sha256-SOeOgSlcEIsKhUiYDJv0p+mLUb420s9E2BmvZQvZ0wk=",
|
||||
"owner": "debug-ito",
|
||||
"repo": "rotate-text.el",
|
||||
"rev": "48f193697db996855aee1ad2bc99b38c6646fe76",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "debug-ito",
|
||||
"repo": "rotate-text.el",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"sln-mode": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1423727528,
|
||||
"narHash": "sha256-XqkqPyEJuTtFslOz1fpTf/Klbd/zA7IGpzpmum/MGao=",
|
||||
"owner": "sensorflo",
|
||||
"repo": "sln-mode",
|
||||
"rev": "0f91d1b957c7d2a7bab9278ec57b54d57f1dbd9c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "sensorflo",
|
||||
"repo": "sln-mode",
|
||||
"type": "github"
|
||||
"nvim-treesitter-main": "nvim-treesitter-main",
|
||||
"vim-org-roam": "vim-org-roam"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
|
|
@ -612,50 +241,40 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"llm-agents",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"lastModified": 1766000401,
|
||||
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ts-fold": {
|
||||
"vim-org-roam": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1695278494,
|
||||
"narHash": "sha256-O4NcUC1u08W8ZslqoA/i+iTaLotKwheURXQWBxLLMFc=",
|
||||
"owner": "jcs-elpa",
|
||||
"repo": "ts-fold",
|
||||
"rev": "70b2c79ff4daa7351d4e2917b0343b9a18d4d4f2",
|
||||
"lastModified": 1765802816,
|
||||
"narHash": "sha256-Zzq4JK3iFBVr8QmMmv5vm/R8QyYqmL44fRMZa15m7eo=",
|
||||
"owner": "chipsenkbeil",
|
||||
"repo": "org-roam.nvim",
|
||||
"rev": "74276a94e9e4af463e7ba35c22259eeced9c90f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "jcs-elpa",
|
||||
"repo": "ts-fold",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ws-butler": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1634511126,
|
||||
"narHash": "sha256-c0y0ZPtxxICPk+eaNbbQf6t+FRCliNY54CCz9QHQ8ZI=",
|
||||
"owner": "hlissner",
|
||||
"repo": "ws-butler",
|
||||
"rev": "572a10c11b6cb88293de48acbb59a059d36f9ba5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hlissner",
|
||||
"repo": "ws-butler",
|
||||
"owner": "chipsenkbeil",
|
||||
"repo": "org-roam.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
72
flake.nix
72
flake.nix
|
|
@ -1,66 +1,78 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
url = "github:nix-community/home-manager/master";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
emacs-overlay.url = "github:nix-community/emacs-overlay";
|
||||
nix-doom-emacs.url = "github:nix-community/nix-doom-emacs";
|
||||
gruvbox-gtk-theme = {
|
||||
url = "github:Fausto-Korpsvart/Gruvbox-GTK-Theme";
|
||||
flake = false;
|
||||
};
|
||||
gruvbox-kvantum-theme = {
|
||||
url = "github:sachnr/gruvbox-kvantum-themes";
|
||||
flake = false;
|
||||
};
|
||||
flameshot-git = {
|
||||
url = "github:flameshot-org/flameshot";
|
||||
vim-org-roam = {
|
||||
url = "github:chipsenkbeil/org-roam.nvim";
|
||||
flake = false;
|
||||
};
|
||||
llm-agents.url = "github:numtide/llm-agents.nix";
|
||||
# Workaround until nvim-treesitter main branch is used in nixpkgs
|
||||
nvim-treesitter-main.url = "github:iofq/nvim-treesitter-main";
|
||||
};
|
||||
|
||||
outputs = inputs@{ self, home-manager, nixpkgs, nixpkgs-unstable, ... }:
|
||||
outputs =
|
||||
inputs@{
|
||||
self,
|
||||
nixpkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.my) mapModules mapModulesRec mkHost mapHosts;
|
||||
inherit (lib.my) mapHosts;
|
||||
|
||||
system = "x86_64-linux";
|
||||
|
||||
mkPkgs = pkgs: extraOverlays:
|
||||
mkPkgs =
|
||||
pkgs: extraOverlays:
|
||||
import pkgs {
|
||||
inherit system;
|
||||
config.allowUnfreePredicate = pkg:
|
||||
config.allowUnfreePredicate =
|
||||
pkg:
|
||||
builtins.elem (pkgs.lib.getName pkg) [
|
||||
"corefonts"
|
||||
"steam"
|
||||
"steam-original"
|
||||
"steam-run"
|
||||
"steam-unwrapped"
|
||||
"keymapp"
|
||||
"mongodb-compass"
|
||||
"nvidia-x11"
|
||||
"nvidia-settings"
|
||||
"idea"
|
||||
];
|
||||
overlays = extraOverlays ++ (pkgs.lib.attrValues self.overlays);
|
||||
overlays =
|
||||
extraOverlays
|
||||
++ (pkgs.lib.attrValues self.overlays)
|
||||
++ [ inputs.nvim-treesitter-main.overlays.default ];
|
||||
};
|
||||
pkgs = mkPkgs nixpkgs [ self.overlay ];
|
||||
pkgs-unstable = mkPkgs nixpkgs-unstable [ ];
|
||||
|
||||
lib = nixpkgs.lib.extend (self: super: {
|
||||
pkgs = mkPkgs nixpkgs [ ];
|
||||
|
||||
lib = nixpkgs.lib.extend (
|
||||
self: super: {
|
||||
my = import ./lib {
|
||||
inherit pkgs inputs;
|
||||
lib = self;
|
||||
};
|
||||
});
|
||||
in {
|
||||
}
|
||||
);
|
||||
in
|
||||
{
|
||||
lib = lib.my;
|
||||
|
||||
overlay = final: prev: { unstable = pkgs-unstable; };
|
||||
|
||||
overlays = { my = (import ./overlay.nix); };
|
||||
overlays = {
|
||||
my = import ./overlay.nix;
|
||||
};
|
||||
|
||||
nixosConfigurations = (mapHosts ./hosts { }) // {
|
||||
rpi3 = nixpkgs.lib.nixosSystem {
|
||||
system = "aarch64-linux";
|
||||
specialArgs = { inherit inputs; };
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
modules = [ ./hosts/rpi3/default.nix ];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
{ pkgs, config, lib, ... }: {
|
||||
imports = [ ./hardware-configuration.nix ];
|
||||
|
||||
modules = {
|
||||
desktop.hyprland.enable = true;
|
||||
editor = {
|
||||
vim.enable = true;
|
||||
emacs.enable = true;
|
||||
};
|
||||
services = {
|
||||
flatpak.enable = true;
|
||||
belgian-eid.enable = true;
|
||||
docker.enable = true;
|
||||
libvirt.enable = true;
|
||||
languagetool.enable = true;
|
||||
};
|
||||
media = {
|
||||
mpd.enable = true;
|
||||
ncmpcpp.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Monitor backlight control
|
||||
programs.light.enable = true;
|
||||
users.users.${config.user.name}.extraGroups = [ "video" ];
|
||||
|
||||
services.tlp.enable = true;
|
||||
|
||||
home-manager.users.${config.user.name} = { pkgs, config, ... }: {
|
||||
services.network-manager-applet.enable = true;
|
||||
services.blueman-applet.enable = true;
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
dwindle.no_gaps_when_only = 1;
|
||||
};
|
||||
};
|
||||
|
||||
services.pipewire.wireplumber.extraConfig = {
|
||||
"monitor.bluez.properties" = {
|
||||
"bluez5.enable-sbc-xq" = true;
|
||||
"bluez5.enable-msbc" = true;
|
||||
"bluez5.enable-hw-volume" = true;
|
||||
"bluez5.roles" = [ "hsp_hs" "hsp_ag" "hfp_hf" "hfp_ag" ];
|
||||
};
|
||||
};
|
||||
system.stateVersion = "21.05";
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = [ "nvme" "xhci_pci" "sdhci_pci" ];
|
||||
initrd.kernelModules = [ "dm-snapshot" ];
|
||||
kernelModules = [ "kvm-amd" ];
|
||||
# Required, otherwise the kernel freezes on boot
|
||||
kernelParams = [ "amd_iommu=on" "iommu=pt" "pci=noats" ];
|
||||
extraModulePackages = [ ];
|
||||
loader.systemd-boot.enable = true;
|
||||
loader.efi.canTouchEfiVariables = true;
|
||||
initrd.luks.devices."crypted".device =
|
||||
"/dev/disk/by-uuid/1e900b2e-daea-4558-b18f-3d3a5843de61";
|
||||
};
|
||||
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/a8abad9b-5615-4887-8431-3d80b78d073e";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/077C-758A";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[{ device = "/dev/disk/by-uuid/bb8fa9ef-9b8f-413d-913a-6c891649a954"; }];
|
||||
|
||||
zramSwap.enable = true;
|
||||
|
||||
hardware = {
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
# Enable A2DP Sink
|
||||
settings = { General = { Enable = "Source,Sink,Media,Socket"; }; };
|
||||
};
|
||||
};
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
services.blueman.enable = true;
|
||||
|
||||
services.logind.lidSwitch = "ignore";
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
{ pkgs, config, lib, ... }: {
|
||||
{ pkgs, config, ... }:
|
||||
{
|
||||
imports = [ ./hardware-configuration.nix ];
|
||||
|
||||
modules = {
|
||||
desktop.hyprland.enable = true;
|
||||
desktop.wm.enable = true;
|
||||
editor = {
|
||||
vim.enable = true;
|
||||
emacs.enable = true;
|
||||
|
|
@ -13,6 +14,7 @@
|
|||
docker.enable = true;
|
||||
libvirt.enable = true;
|
||||
languagetool.enable = true;
|
||||
work-proxy.enable = true;
|
||||
};
|
||||
media = {
|
||||
mpd.enable = true;
|
||||
|
|
@ -21,14 +23,67 @@
|
|||
steam.enable = true;
|
||||
lutris.enable = true;
|
||||
};
|
||||
ai.opencode.enable = true;
|
||||
};
|
||||
|
||||
user.name = "froidmpa";
|
||||
|
||||
programs.kdeconnect.enable = true;
|
||||
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
# nix = {
|
||||
# distributedBuilds = true;
|
||||
# buildMachines = [
|
||||
# {
|
||||
# hostName = "hel1.banditlair.com";
|
||||
# sshUser = "nix-ssh";
|
||||
# system = "x86_64-linux";
|
||||
# supportedFeatures = [
|
||||
# "nixos-test"
|
||||
# "benchmark"
|
||||
# "big-parallel"
|
||||
# "kvm"
|
||||
# ];
|
||||
# }
|
||||
# ];
|
||||
# settings = {
|
||||
# builders-use-substitutes = true;
|
||||
# };
|
||||
# };
|
||||
|
||||
services.tailscale.enable = true;
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings.PasswordAuthentication = false;
|
||||
listenAddresses = [
|
||||
{
|
||||
# Tailscale interface
|
||||
addr = "100.64.0.3";
|
||||
port = 22;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
users.users.${config.user.name} = {
|
||||
openssh.authorizedKeys.keyFiles = [
|
||||
../../ssh_keys/phfroidmont-desktop.pub
|
||||
../../ssh_keys/phfroidmont-stellaris.pub
|
||||
];
|
||||
};
|
||||
|
||||
# Allow to externally control MPD
|
||||
networking.firewall.allowedTCPPorts = [ 6600 ];
|
||||
|
||||
home-manager.users.${config.user.name} =
|
||||
{ ... }:
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
monitor = [
|
||||
"DP-1, 4096x2160@240, 0x0, 1.5"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
system.stateVersion = "20.09";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,40 +1,57 @@
|
|||
{ config, lib, pkgs, modulesPath, ... }: {
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules =
|
||||
[ "nvme" "xhci_pci" "ahci" "usbhid" "sd_mod" ];
|
||||
kernelPackages = pkgs.linuxPackages_zen;
|
||||
initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
];
|
||||
initrd.kernelModules = [ "amdgpu" ];
|
||||
|
||||
kernelModules = [ "kvm-amd" ];
|
||||
extraModulePackages = [ ];
|
||||
loader.systemd-boot.enable = true;
|
||||
loader.efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
fileSystems."/" = {
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/f1e21558-88e6-413e-b56a-04e0b25e9ddd";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/CCD1-0415";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
fileSystems."/home/froidmpa/Nextcloud" = {
|
||||
"/home/froidmpa/Nextcloud" = {
|
||||
device = "/dev/disk/by-uuid/a4ba8b21-ea33-4487-b6f6-9bb7470a0acb";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/home/froidmpa/Backup" = {
|
||||
"/home/froidmpa/Backup" = {
|
||||
device = "/dev/disk/by-uuid/7fdc4e44-ecb4-49c7-9fb0-cb1ef6235b05";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[{ device = "/dev/disk/by-uuid/f714775c-b5af-4c0c-8330-999b43db4794"; }];
|
||||
swapDevices = [ { device = "/dev/disk/by-uuid/f714775c-b5af-4c0c-8330-999b43db4794"; } ];
|
||||
|
||||
zramSwap.enable = true;
|
||||
powerManagement = {
|
||||
cpuFreqGovernor = "performance";
|
||||
powertop.enable = true;
|
||||
};
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
|
||||
|
|
@ -42,15 +59,15 @@
|
|||
networking.useNetworkd = true;
|
||||
networking.interfaces.enp31s0.useDHCP = true;
|
||||
|
||||
hardware.opengl = {
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
extraPackages = with pkgs; [ rocm-opencl-icd rocm-opencl-runtime ];
|
||||
enable32Bit = true;
|
||||
extraPackages = with pkgs; [
|
||||
rocmPackages.clr
|
||||
];
|
||||
};
|
||||
|
||||
hardware.cpu.amd.updateMicrocode =
|
||||
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
|
||||
services.resolved.dnssec = "false";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +1,33 @@
|
|||
{ inputs, pkgs, ... }: {
|
||||
{ inputs, pkgs, ... }:
|
||||
{
|
||||
|
||||
nix = {
|
||||
registry.nixpkgs.flake = inputs.nixpkgs;
|
||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||
};
|
||||
|
||||
boot.loader.grub.enable = false;
|
||||
boot.loader.generic-extlinux-compatible.enable = true;
|
||||
boot.kernelParams = [ "cma=256M" ];
|
||||
boot = {
|
||||
loader.grub.enable = false;
|
||||
loader.generic-extlinux-compatible.enable = true;
|
||||
kernelParams = [ "cma=256M" ];
|
||||
};
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/NIXOS_SD";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
swapDevices = [{
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/swapfile";
|
||||
size = 1024;
|
||||
}];
|
||||
}
|
||||
];
|
||||
|
||||
services.openssh.enable = true;
|
||||
users.users.root.openssh.authorizedKeys.keyFiles = [
|
||||
../../ssh_keys/phfroidmont-desktop.pub
|
||||
../../ssh_keys/phfroidmont-laptop.pub
|
||||
../../ssh_keys/phfroidmont-stellaris.pub
|
||||
];
|
||||
|
||||
services.adguardhome = {
|
||||
|
|
@ -33,15 +38,20 @@
|
|||
mutableSettings = false;
|
||||
|
||||
settings = {
|
||||
http = { address = "0.0.0.0:80"; };
|
||||
http = {
|
||||
address = "0.0.0.0:80";
|
||||
};
|
||||
auth_attempts = 5;
|
||||
block_auth_min = 15;
|
||||
dns = {
|
||||
bind_hosts = [ "0.0.0.0" ];
|
||||
port = 53;
|
||||
statistics_interval = 90;
|
||||
upstream_dns =
|
||||
[ "tls://doh.mullvad.net" "[/lan/]192.168.1.1" "[//]192.168.1.1" ];
|
||||
upstream_dns = [
|
||||
"tls://doh.mullvad.net"
|
||||
"[/lan/]192.168.1.1"
|
||||
"[//]192.168.1.1"
|
||||
];
|
||||
local_ptr_upstreams = [ "192.168.1.1" ];
|
||||
use_private_ptr_resolvers = true;
|
||||
resolve_clients = true;
|
||||
|
|
@ -64,11 +74,19 @@
|
|||
};
|
||||
};
|
||||
|
||||
networking.hostName = "rpi3";
|
||||
networking.firewall.allowedTCPPorts = [ 53 80 ];
|
||||
networking.firewall.allowedUDPPorts = [ 53 ];
|
||||
networking = {
|
||||
hostName = "rpi3";
|
||||
firewall.allowedTCPPorts = [
|
||||
53
|
||||
80
|
||||
];
|
||||
firewall.allowedUDPPorts = [ 53 ];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [ vim htop-vim ];
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim
|
||||
htop-vim
|
||||
];
|
||||
|
||||
system.stateVersion = "22.05";
|
||||
}
|
||||
|
|
|
|||
124
hosts/stellaris/default.nix
Normal file
124
hosts/stellaris/default.nix
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
imports = [ ./hardware-configuration.nix ];
|
||||
|
||||
modules = {
|
||||
desktop = {
|
||||
wm.enable = true;
|
||||
defaultBrowser = "brave";
|
||||
};
|
||||
editor = {
|
||||
vim.enable = true;
|
||||
emacs.enable = true;
|
||||
};
|
||||
services = {
|
||||
flatpak.enable = true;
|
||||
belgian-eid.enable = true;
|
||||
docker.enable = true;
|
||||
libvirt.enable = true;
|
||||
languagetool.enable = true;
|
||||
work-proxy.enable = true;
|
||||
kanata.enable = true;
|
||||
};
|
||||
media = {
|
||||
mpd.enable = true;
|
||||
ncmpcpp.enable = true;
|
||||
emulators.gc.enable = true;
|
||||
steam.enable = true;
|
||||
lutris.enable = true;
|
||||
};
|
||||
ai.opencode.enable = true;
|
||||
};
|
||||
|
||||
# Monitor backlight control
|
||||
programs.light.enable = true;
|
||||
|
||||
services.tlp.enable = true;
|
||||
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
hardware.tuxedo-drivers.enable = true;
|
||||
hardware.tuxedo-rs = {
|
||||
enable = true;
|
||||
tailor-gui.enable = true;
|
||||
};
|
||||
|
||||
hardware = {
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
# Enable A2DP Sink
|
||||
settings = {
|
||||
General = {
|
||||
Enable = "Source,Sink,Media,Socket";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
services.blueman.enable = true;
|
||||
|
||||
services.logind.settings.Login.HandleLidSwitch = "ignore";
|
||||
|
||||
user.name = "phfroidmont";
|
||||
|
||||
home-manager.users.${config.user.name} =
|
||||
{ ... }:
|
||||
{
|
||||
services.network-manager-applet.enable = true;
|
||||
services.blueman-applet.enable = true;
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
env = [
|
||||
"LIBVA_DRIVER_NAME,nvidia"
|
||||
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
||||
];
|
||||
|
||||
workspace = [
|
||||
"w[tv1], gapsout:0, gapsin:0"
|
||||
"f[1], gapsout:0, gapsin:0"
|
||||
];
|
||||
windowrulev2 = [
|
||||
"bordersize 0, floating:0, onworkspace:w[tv1]"
|
||||
"rounding 0, floating:0, onworkspace:w[tv1]"
|
||||
"bordersize 0, floating:0, onworkspace:f[1]"
|
||||
"rounding 0, floating:0, onworkspace:f[1]"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.pipewire.wireplumber.extraConfig = {
|
||||
"monitor.bluez.properties" = {
|
||||
"bluez5.enable-sbc-xq" = true;
|
||||
"bluez5.enable-msbc" = true;
|
||||
"bluez5.enable-hw-volume" = true;
|
||||
"bluez5.roles" = [
|
||||
"hsp_hs"
|
||||
"hsp_ag"
|
||||
"hfp_hf"
|
||||
"hfp_ag"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.tailscale.enable = true;
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings.PasswordAuthentication = false;
|
||||
listenAddresses = [
|
||||
{
|
||||
# Tailscale interface
|
||||
addr = "100.64.0.5";
|
||||
port = 22;
|
||||
}
|
||||
];
|
||||
};
|
||||
users.users.${config.user.name} = {
|
||||
openssh.authorizedKeys.keyFiles = [
|
||||
../../ssh_keys/phfroidmont-desktop.pub
|
||||
];
|
||||
extraGroups = [ "video" ];
|
||||
};
|
||||
|
||||
system.stateVersion = "25.05";
|
||||
}
|
||||
79
hosts/stellaris/disko.nix
Normal file
79
hosts/stellaris/disko.nix
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
{ ... }:
|
||||
{
|
||||
disko.devices = {
|
||||
disk.main = {
|
||||
type = "disk";
|
||||
# Replace with your device, e.g. /dev/disk/by-id/nvme-Samsung_SSD_980_...
|
||||
device = "/dev/disk/by-id/nvme-Samsung_SSD_9100_PRO_2TB_S7YFNJ0Y612225D";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
type = "ef00";
|
||||
size = "512M";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = [ "umask=0077" ];
|
||||
};
|
||||
};
|
||||
luks = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "luks";
|
||||
name = "cryptroot";
|
||||
settings = {
|
||||
allowDiscards = true;
|
||||
};
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = [
|
||||
"-L"
|
||||
"nixos"
|
||||
];
|
||||
# Top-level btrfs mountpoint isn't used; subvols below define mounts
|
||||
subvolumes = {
|
||||
"@".mountpoint = "/";
|
||||
"@home".mountpoint = "/home";
|
||||
"@nix".mountpoint = "/nix";
|
||||
"@log".mountpoint = "/var/log";
|
||||
"@cache".mountpoint = "/var/cache";
|
||||
|
||||
# Common, fast, SSD-friendly defaults
|
||||
"@".mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
"ssd"
|
||||
"autodefrag"
|
||||
];
|
||||
"@home".mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
"ssd"
|
||||
"autodefrag"
|
||||
];
|
||||
"@nix".mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
"ssd"
|
||||
];
|
||||
"@log".mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
"ssd"
|
||||
];
|
||||
"@cache".mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
"ssd"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
92
hosts/stellaris/hardware-configuration.nix
Normal file
92
hosts/stellaris/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||
boot.initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
"usb_storage"
|
||||
"sd_mod"
|
||||
"sdhci_pci"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@" ];
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."cryptroot".device =
|
||||
"/dev/disk/by-uuid/46f38e24-f03e-4e3b-9266-652340e1fa41";
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/4847-A536";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0077"
|
||||
"dmask=0077"
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems."/home" = {
|
||||
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@home" ];
|
||||
};
|
||||
|
||||
fileSystems."/nix" = {
|
||||
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@nix" ];
|
||||
};
|
||||
|
||||
fileSystems."/var/cache" = {
|
||||
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@cache" ];
|
||||
};
|
||||
|
||||
fileSystems."/var/log" = {
|
||||
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@log" ];
|
||||
};
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = false;
|
||||
powerManagement.finegrained = false;
|
||||
open = true;
|
||||
nvidiaSettings = true;
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
prime = {
|
||||
offload = {
|
||||
enable = true;
|
||||
enableOffloadCmd = true;
|
||||
};
|
||||
amdgpuBusId = "PCI:6:0:0";
|
||||
nvidiaBusId = "PCI:1:0:0";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,26 +1,22 @@
|
|||
{ lib, ... }:
|
||||
|
||||
with builtins;
|
||||
with lib;
|
||||
rec {
|
||||
# attrsToList
|
||||
attrsToList = attrs:
|
||||
mapAttrsToList (name: value: { inherit name value; }) attrs;
|
||||
attrsToList = attrs: lib.mapAttrsToList (name: value: { inherit name value; }) attrs;
|
||||
|
||||
# mapFilterAttrs ::
|
||||
# (name -> value -> bool)
|
||||
# (name -> value -> { name = any; value = any; })
|
||||
# attrs
|
||||
mapFilterAttrs = pred: f: attrs: filterAttrs pred (mapAttrs' f attrs);
|
||||
mapFilterAttrs =
|
||||
pred: f: attrs:
|
||||
lib.filterAttrs pred (lib.mapAttrs' f attrs);
|
||||
|
||||
# Generate an attribute set by mapping a function over a list of values.
|
||||
genAttrs' = values: f: listToAttrs (map f values);
|
||||
genAttrs' = values: f: lib.listToAttrs (map f values);
|
||||
|
||||
# anyAttrs :: (name -> value -> bool) attrs
|
||||
anyAttrs = pred: attrs:
|
||||
any (attr: pred attr.name attr.value) (attrsToList attrs);
|
||||
anyAttrs = pred: attrs: lib.any (attr: pred attr.name attr.value) (attrsToList attrs);
|
||||
|
||||
# countAttrs :: (name -> value -> bool) attrs
|
||||
countAttrs = pred: attrs:
|
||||
count (attr: pred attr.name attr.value) (attrsToList attrs);
|
||||
countAttrs = pred: attrs: lib.count (attr: pred attr.name attr.value) (attrsToList attrs);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ inputs, lib, pkgs, ... }:
|
||||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) makeExtensible attrValues foldr;
|
||||
|
|
@ -6,13 +11,25 @@ let
|
|||
|
||||
modules = import ./modules.nix {
|
||||
inherit lib;
|
||||
self.attrs = import ./attrs.nix { inherit lib; self = { }; };
|
||||
self.attrs = import ./attrs.nix {
|
||||
inherit lib;
|
||||
self = { };
|
||||
};
|
||||
};
|
||||
|
||||
mylib = makeExtensible (self:
|
||||
with self; mapModules ./.
|
||||
(file: import file { inherit self lib pkgs inputs; }));
|
||||
mylib = makeExtensible (
|
||||
self:
|
||||
mapModules ./. (
|
||||
file:
|
||||
import file {
|
||||
inherit
|
||||
self
|
||||
lib
|
||||
pkgs
|
||||
inputs
|
||||
;
|
||||
}
|
||||
)
|
||||
);
|
||||
in
|
||||
mylib.extend
|
||||
(self: super:
|
||||
foldr (a: b: a // b) { } (attrValues super))
|
||||
mylib.extend (self: super: foldr (a: b: a // b) { } (attrValues super))
|
||||
|
|
|
|||
|
|
@ -1,52 +1,62 @@
|
|||
{ self, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (builtins) attrValues readDir pathExists concatLists;
|
||||
inherit (lib) id mapAttrsToList filterAttrs hasPrefix hasSuffix nameValuePair removeSuffix;
|
||||
inherit (builtins)
|
||||
attrValues
|
||||
readDir
|
||||
pathExists
|
||||
concatLists
|
||||
;
|
||||
inherit (lib)
|
||||
id
|
||||
mapAttrsToList
|
||||
filterAttrs
|
||||
hasPrefix
|
||||
hasSuffix
|
||||
nameValuePair
|
||||
removeSuffix
|
||||
;
|
||||
inherit (self.attrs) mapFilterAttrs;
|
||||
in
|
||||
rec {
|
||||
mapModules = dir: fn:
|
||||
mapFilterAttrs
|
||||
(n: v:
|
||||
v != null &&
|
||||
!(hasPrefix "_" n))
|
||||
(n: v:
|
||||
let path = "${toString dir}/${n}"; in
|
||||
if v == "directory" && pathExists "${path}/default.nix"
|
||||
then nameValuePair n (fn path)
|
||||
else if v == "regular" &&
|
||||
n != "default.nix" &&
|
||||
hasSuffix ".nix" n
|
||||
then nameValuePair (removeSuffix ".nix" n) (fn path)
|
||||
else nameValuePair "" null)
|
||||
(readDir dir);
|
||||
|
||||
mapModules' = dir: fn:
|
||||
attrValues (mapModules dir fn);
|
||||
|
||||
mapModulesRec = dir: fn:
|
||||
mapFilterAttrs
|
||||
(n: v:
|
||||
v != null &&
|
||||
!(hasPrefix "_" n))
|
||||
(n: v:
|
||||
let path = "${toString dir}/${n}"; in
|
||||
if v == "directory"
|
||||
then nameValuePair n (mapModulesRec path fn)
|
||||
else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n
|
||||
then nameValuePair (removeSuffix ".nix" n) (fn path)
|
||||
else nameValuePair "" null)
|
||||
(readDir dir);
|
||||
|
||||
mapModulesRec' = dir: fn:
|
||||
mapModules =
|
||||
dir: fn:
|
||||
mapFilterAttrs (n: v: v != null && !(hasPrefix "_" n)) (
|
||||
n: v:
|
||||
let
|
||||
dirs =
|
||||
mapAttrsToList
|
||||
(k: _: "${dir}/${k}")
|
||||
(filterAttrs
|
||||
(n: v: v == "directory" && !(hasPrefix "_" n))
|
||||
(readDir dir));
|
||||
path = "${toString dir}/${n}";
|
||||
in
|
||||
if v == "directory" && pathExists "${path}/default.nix" then
|
||||
nameValuePair n (fn path)
|
||||
else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n then
|
||||
nameValuePair (removeSuffix ".nix" n) (fn path)
|
||||
else
|
||||
nameValuePair "" null
|
||||
) (readDir dir);
|
||||
|
||||
mapModules' = dir: fn: attrValues (mapModules dir fn);
|
||||
|
||||
mapModulesRec =
|
||||
dir: fn:
|
||||
mapFilterAttrs (n: v: v != null && !(hasPrefix "_" n)) (
|
||||
n: v:
|
||||
let
|
||||
path = "${toString dir}/${n}";
|
||||
in
|
||||
if v == "directory" then
|
||||
nameValuePair n (mapModulesRec path fn)
|
||||
else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n then
|
||||
nameValuePair (removeSuffix ".nix" n) (fn path)
|
||||
else
|
||||
nameValuePair "" null
|
||||
) (readDir dir);
|
||||
|
||||
mapModulesRec' =
|
||||
dir: fn:
|
||||
let
|
||||
dirs = mapAttrsToList (k: _: "${dir}/${k}") (
|
||||
filterAttrs (n: v: v == "directory" && !(hasPrefix "_" n)) (readDir dir)
|
||||
);
|
||||
files = attrValues (mapModules dir id);
|
||||
paths = files ++ concatLists (map (d: mapModulesRec' d id) dirs);
|
||||
in
|
||||
|
|
|
|||
|
|
@ -1,26 +1,42 @@
|
|||
{ inputs, lib, pkgs, ... }:
|
||||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let sys = "x86_64-linux";
|
||||
in {
|
||||
mkHost = path: attrs @ { system ? sys, ... }:
|
||||
nixosSystem {
|
||||
let
|
||||
sys = "x86_64-linux";
|
||||
in
|
||||
rec {
|
||||
mkHost =
|
||||
path:
|
||||
attrs@{
|
||||
system ? sys,
|
||||
...
|
||||
}:
|
||||
lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = { inherit lib inputs system; };
|
||||
specialArgs = {
|
||||
inherit lib inputs system;
|
||||
};
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.pkgs = pkgs;
|
||||
nix.registry.nixpkgs.flake = inputs.nixpkgs;
|
||||
networking.hostName = mkDefault (removeSuffix ".nix" (baseNameOf path));
|
||||
networking.hostName = lib.mkDefault (lib.removeSuffix ".nix" (baseNameOf path));
|
||||
}
|
||||
(filterAttrs (n: v: !elem n [ "system" ]) attrs)
|
||||
(lib.filterAttrs (n: v: !lib.elem n [ "system" ]) attrs)
|
||||
../common.nix
|
||||
(import path)
|
||||
];
|
||||
};
|
||||
|
||||
mapHosts = dir: attrs @ { system ? system, ... }:
|
||||
mapModules dir
|
||||
(hostPath: mkHost hostPath attrs);
|
||||
mapHosts =
|
||||
dir:
|
||||
attrs@{
|
||||
system ? system,
|
||||
...
|
||||
}:
|
||||
lib.my.mapModules dir (hostPath: mkHost hostPath attrs);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,14 +3,16 @@
|
|||
let
|
||||
inherit (lib) mkOption types;
|
||||
in
|
||||
rec {
|
||||
mkOpt = type: default:
|
||||
mkOption { inherit type default; };
|
||||
{
|
||||
mkOpt = type: default: mkOption { inherit type default; };
|
||||
|
||||
mkOpt' = type: default: description:
|
||||
mkOpt' =
|
||||
type: default: description:
|
||||
mkOption { inherit type default description; };
|
||||
|
||||
mkBoolOpt = default: mkOption {
|
||||
mkBoolOpt =
|
||||
default:
|
||||
mkOption {
|
||||
inherit default;
|
||||
type = types.bool;
|
||||
example = true;
|
||||
|
|
|
|||
93
modules/ai/opencode.nix
Normal file
93
modules/ai/opencode.nix
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.ai.opencode;
|
||||
in
|
||||
{
|
||||
options.modules.ai.opencode = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} =
|
||||
{ ... }:
|
||||
{
|
||||
programs.opencode = {
|
||||
enable = true;
|
||||
package = inputs.llm-agents.packages.${pkgs.system}.opencode;
|
||||
settings = {
|
||||
model = "glm_4_5_air";
|
||||
permission = {
|
||||
bash = "ask";
|
||||
edit = "ask";
|
||||
};
|
||||
provider = {
|
||||
vllm = {
|
||||
npm = "@ai-sdk/openai-compatible";
|
||||
name = "vLLM";
|
||||
options = {
|
||||
baseURL = "http://model1.lefoyer.lu:8030/v1";
|
||||
apiKey = "dummy";
|
||||
};
|
||||
models = {
|
||||
glm_4_5_air = {
|
||||
name = "GLM 4.5 Air (local)";
|
||||
temperature = true;
|
||||
default = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
openai = {
|
||||
models = {
|
||||
"gpt-5.1-codex" = {
|
||||
options = {
|
||||
store = false;
|
||||
# reasoningEffort = "high";
|
||||
# textVerbosity = "medium";
|
||||
# reasoningSummary = "auto";
|
||||
include = [ "reasoning.encrypted_content" ];
|
||||
};
|
||||
};
|
||||
"gpt-5.1-codex-max" = {
|
||||
options = {
|
||||
store = false;
|
||||
include = [ "reasoning.encrypted_content" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
agent = {
|
||||
build = {
|
||||
mode = "primary";
|
||||
temperature = 0.4;
|
||||
};
|
||||
plan = {
|
||||
mode = "primary";
|
||||
temperature = 0.4;
|
||||
};
|
||||
};
|
||||
lsp = {
|
||||
metals = {
|
||||
command = [ "${pkgs.metals}/bin/metals" ];
|
||||
extensions = [
|
||||
".scala"
|
||||
".sbt"
|
||||
".sc"
|
||||
];
|
||||
initialization = {
|
||||
statusBarProvider = "log-message";
|
||||
doctorProvider = "json";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
53
modules/apps/newsboat.nix
Normal file
53
modules/apps/newsboat.nix
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.apps.newsboat;
|
||||
in
|
||||
{
|
||||
options.modules.apps.newsboat = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
|
||||
programs.newsboat = {
|
||||
enable = true;
|
||||
autoFetchArticles = {
|
||||
enable = true;
|
||||
onCalendar = "hourly";
|
||||
};
|
||||
extraConfig = ''
|
||||
urls-source "ocnews"
|
||||
ocnews-url "https://cloud.banditlair.com"
|
||||
ocnews-login "paultrial"
|
||||
ocnews-passwordeval "secret-tool lookup elfeed nextcloud"
|
||||
|
||||
cleanup-on-quit yes
|
||||
|
||||
bind gg everywhere home
|
||||
bind G everywhere end
|
||||
|
||||
bind u everywhere toggle-article-read
|
||||
|
||||
bind , everywhere sort
|
||||
|
||||
bind ^u everywhere pageup
|
||||
bind ^d everywhere pagedown
|
||||
|
||||
bind k everywhere up
|
||||
bind j everywhere down
|
||||
|
||||
bind l feedlist open
|
||||
bind l articlelist open
|
||||
bind h articlelist quit
|
||||
bind h article quit
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,17 +1,24 @@
|
|||
{ inputs, config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.apps.rofi;
|
||||
in {
|
||||
options.modules.apps.rofi = { enable = mkBoolOpt false; };
|
||||
let
|
||||
cfg = config.modules.apps.rofi;
|
||||
in
|
||||
{
|
||||
options.modules.apps.rofi = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland.override { plugins = [ pkgs.rofi-calc ]; };
|
||||
package = pkgs.rofi.override { plugins = [ pkgs.rofi-calc ]; };
|
||||
terminal = "kitty";
|
||||
extraConfig = {
|
||||
icon-theme = "Paper";
|
||||
|
|
@ -31,7 +38,10 @@ in {
|
|||
};
|
||||
theme = ./theme.rasi;
|
||||
};
|
||||
home.packages = with pkgs.unstable; [ paper-icon-theme rofi-power-menu ];
|
||||
home.packages = with pkgs; [
|
||||
paper-icon-theme
|
||||
rofi-power-menu
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,34 +1,53 @@
|
|||
{ inputs, config, options, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let
|
||||
cfg = config.modules.desktop;
|
||||
wallpaper = pkgs.fetchurl {
|
||||
url =
|
||||
"https://raw.githubusercontent.com/AngelJumbo/gruvbox-wallpapers/main/wallpapers/irl/houseonthesideofalake.jpg";
|
||||
url = "https://raw.githubusercontent.com/AngelJumbo/gruvbox-wallpapers/main/wallpapers/photography/houseonthesideofalake.jpg";
|
||||
sha256 = "sha256-obKI4qZvucogqRCl51lwV9X8SRaMqcbBwWMfc9TupIo=";
|
||||
};
|
||||
in {
|
||||
in
|
||||
{
|
||||
|
||||
options.modules.desktop = {
|
||||
wallpaper = mkOption {
|
||||
type = types.path;
|
||||
wallpaper = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = wallpaper;
|
||||
};
|
||||
|
||||
defaultBrowser = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "firefox";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf config.modules.desktop.hyprland.enable {
|
||||
config = lib.mkIf config.modules.desktop.wm.enable {
|
||||
|
||||
fonts = {
|
||||
packages = with pkgs.unstable; [
|
||||
corefonts # Microsoft free fonts
|
||||
noto-fonts-emoji
|
||||
enableDefaultPackages = true;
|
||||
packages = with pkgs; [
|
||||
noto-fonts-color-emoji
|
||||
meslo-lg
|
||||
(nerdfonts.override { fonts = [ "Meslo" "NerdFontsSymbolsOnly" ]; })
|
||||
pkgs.nerd-fonts.meslo-lg
|
||||
pkgs.nerd-fonts.symbols-only
|
||||
];
|
||||
fontconfig.defaultFonts = { monospace = [ "MesloLGS Nerd Font Mono" ]; };
|
||||
fontconfig.defaultFonts = {
|
||||
monospace = [ "MesloLGS Nerd Font Mono" ];
|
||||
};
|
||||
};
|
||||
|
||||
security.pam.loginLimits = [
|
||||
{
|
||||
domain = "*";
|
||||
item = "nofile";
|
||||
type = "-";
|
||||
value = "65536";
|
||||
}
|
||||
];
|
||||
|
||||
programs.adb.enable = true;
|
||||
|
||||
|
|
@ -44,7 +63,7 @@ in {
|
|||
gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = false;
|
||||
pinentryPackage = pkgs.pinentry-gtk2;
|
||||
pinentry.package = pkgs.pinentry-gtk2;
|
||||
};
|
||||
unclutter.enable = true;
|
||||
};
|
||||
|
|
@ -53,16 +72,31 @@ in {
|
|||
gpg.enable = true;
|
||||
git = {
|
||||
enable = true;
|
||||
userName = "Paul-Henri Froidmont";
|
||||
userEmail = "git.contact-57n2p@froidmont.org";
|
||||
signing = {
|
||||
key = lib.mkDefault "3AC6F170F01133CE393BCD94BE948AFD7E7873BE";
|
||||
signByDefault = true;
|
||||
};
|
||||
extraConfig = { init.defaultBranch = "master"; };
|
||||
settings = {
|
||||
user.name = "Paul-Henri Froidmont";
|
||||
user.email = "git.contact-57n2p@froidmont.org";
|
||||
init.defaultBranch = "master";
|
||||
};
|
||||
};
|
||||
ssh = {
|
||||
enable = true;
|
||||
enableDefaultConfig = false;
|
||||
matchBlocks."*" = {
|
||||
forwardAgent = false;
|
||||
addKeysToAgent = "no";
|
||||
compression = false;
|
||||
serverAliveInterval = 0;
|
||||
serverAliveCountMax = 3;
|
||||
hashKnownHosts = false;
|
||||
userKnownHostsFile = "~/.ssh/known_hosts";
|
||||
controlMaster = "no";
|
||||
controlPath = "~/.ssh/master-%r@%n:%p";
|
||||
controlPersist = "no";
|
||||
};
|
||||
extraConfig = ''
|
||||
# Force IPv4 otherwise git will try to use IPv6 which doesn't play well through a VPN
|
||||
AddressFamily inet
|
||||
|
|
@ -103,10 +137,10 @@ in {
|
|||
defaultApplications = {
|
||||
"inode/directory" = "joshuto.desktop";
|
||||
|
||||
"text/html" = "firefox.desktop";
|
||||
"x-scheme-handler/http" = "firefox.desktop";
|
||||
"x-scheme-handler/https" = "firefox.desktop";
|
||||
"x-scheme-handler/about" = "firefox.desktop";
|
||||
"text/html" = "${config.modules.desktop.defaultBrowser}.desktop";
|
||||
"x-scheme-handler/http" = "${config.modules.desktop.defaultBrowser}.desktop";
|
||||
"x-scheme-handler/https" = "${config.modules.desktop.defaultBrowser}.desktop";
|
||||
"x-scheme-handler/about" = "${config.modules.desktop.defaultBrowser}.desktop";
|
||||
|
||||
"image/png" = "swayimg.desktop";
|
||||
"image/webp" = "swayimg.desktop";
|
||||
|
|
@ -125,8 +159,7 @@ in {
|
|||
"application/msword" = "onlyoffice-desktopeditors.desktop";
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.presentation" =
|
||||
"onlyoffice-desktopeditors.desktop";
|
||||
"application/vnd.openxmlformats-officedocument*" =
|
||||
"onlyoffice-desktopeditors.desktop";
|
||||
"application/vnd.openxmlformats-officedocument*" = "onlyoffice-desktopeditors.desktop";
|
||||
|
||||
"text/*" = "nvim.desktop";
|
||||
};
|
||||
|
|
@ -139,41 +172,52 @@ in {
|
|||
options = [ "caps:escape" ];
|
||||
};
|
||||
|
||||
sessionVariables.EDITOR = "vim";
|
||||
sessionVariables = {
|
||||
EDITOR = "vim";
|
||||
NIXOS_OZONE_WL = 1;
|
||||
};
|
||||
|
||||
packages = with pkgs.unstable; [
|
||||
packages =
|
||||
(with pkgs; [
|
||||
brave
|
||||
ungoogled-chromium
|
||||
mullvad-browser
|
||||
keepassxc
|
||||
krita
|
||||
element-desktop
|
||||
swayimg
|
||||
mpv
|
||||
jellyfin-mpv-shim
|
||||
mumble
|
||||
libreoffice-fresh
|
||||
onlyoffice-bin
|
||||
signal-desktop
|
||||
onlyoffice-desktopeditors
|
||||
thunderbird
|
||||
portfolio
|
||||
gnucash
|
||||
transmission-remote-gtk
|
||||
monero-gui
|
||||
|
||||
scala-cli
|
||||
beamMinimal27Packages.elixir
|
||||
jdk
|
||||
jetbrains.idea-community
|
||||
jetbrains.idea-oss
|
||||
jetbrains.idea
|
||||
httpie
|
||||
|
||||
zsh-syntax-highlighting
|
||||
R
|
||||
tldr
|
||||
thefuck
|
||||
ark
|
||||
linuxPackages.perf
|
||||
];
|
||||
kdePackages.ark
|
||||
perf
|
||||
keymapp
|
||||
presenterm
|
||||
|
||||
ledger-live-desktop
|
||||
monero-gui
|
||||
])
|
||||
++ [ pkgs.jellyfin-mpv-shim ];
|
||||
};
|
||||
|
||||
};
|
||||
hardware.keyboard.zsa.enable = true;
|
||||
hardware.ledger.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,18 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.dunst;
|
||||
in {
|
||||
options.modules.desktop.dunst = { enable = mkBoolOpt false; };
|
||||
config = mkIf cfg.enable {
|
||||
let
|
||||
cfg = config.modules.desktop.dunst;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.dunst = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
services.dunst = {
|
||||
enable = true;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,23 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.file-manager;
|
||||
in {
|
||||
options.modules.desktop.file-manager = { enable = mkBoolOpt false; };
|
||||
config = mkIf cfg.enable {
|
||||
let
|
||||
cfg = config.modules.desktop.file-manager;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.file-manager = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
package = pkgs.yazi;
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
manager = {
|
||||
|
|
@ -39,11 +47,13 @@ in {
|
|||
desc = "Copy files to clipboard";
|
||||
}
|
||||
];
|
||||
input.prepend_keymap = [{
|
||||
input.prepend_keymap = [
|
||||
{
|
||||
on = [ "<Esc>" ];
|
||||
run = "close";
|
||||
desc = "Cancel input";
|
||||
}];
|
||||
}
|
||||
];
|
||||
};
|
||||
theme = {
|
||||
status = {
|
||||
|
|
@ -63,7 +73,7 @@ in {
|
|||
};
|
||||
|
||||
home = {
|
||||
packages = with pkgs.unstable; [
|
||||
packages = with pkgs; [
|
||||
ffmpegthumbnailer
|
||||
unar
|
||||
poppler
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.flameshot;
|
||||
in {
|
||||
options.modules.desktop.flameshot = { enable = mkBoolOpt false; };
|
||||
config = mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = { config, ... }: {
|
||||
services.flameshot = {
|
||||
enable = true;
|
||||
package = pkgs.flameshot.overrideAttrs (old: {
|
||||
src = inputs.flameshot-git;
|
||||
cmakeFlags = [ "-DUSE_WAYLAND_GRIM=1" ];
|
||||
});
|
||||
settings = {
|
||||
General = {
|
||||
showStartupLaunchMessage = false;
|
||||
disabledTrayIcon = true;
|
||||
showHelp = false;
|
||||
showDesktopNotification = false;
|
||||
filenamePattern = "%F_%T";
|
||||
savePath = "${config.home.homeDirectory}/Pictures/Screenshots";
|
||||
savePathFixed = true;
|
||||
saveAfterCopy = true;
|
||||
uiColor = "#83A598";
|
||||
};
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs.unstable; [ grim ];
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,16 +1,26 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.htop;
|
||||
in {
|
||||
options.modules.desktop.htop = { enable = mkBoolOpt false; };
|
||||
config = mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = { config, ... }: {
|
||||
let
|
||||
cfg = config.modules.desktop.htop;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.htop = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} =
|
||||
{ config, ... }:
|
||||
{
|
||||
programs.htop = {
|
||||
enable = true;
|
||||
package = pkgs.htop-vim;
|
||||
settings = {
|
||||
settings =
|
||||
{
|
||||
hide_userland_threads = true;
|
||||
highlight_base_name = true;
|
||||
vim_mode = true;
|
||||
|
|
@ -26,19 +36,25 @@ in {
|
|||
TIME
|
||||
COMM
|
||||
];
|
||||
} // (with config.lib.htop;
|
||||
}
|
||||
// (
|
||||
with config.lib.htop;
|
||||
leftMeters [
|
||||
(bar "LeftCPUs2")
|
||||
(bar "CPU")
|
||||
(bar "Memory")
|
||||
(bar "Swap")
|
||||
]) // (with config.lib.htop;
|
||||
]
|
||||
)
|
||||
// (
|
||||
with config.lib.htop;
|
||||
rightMeters [
|
||||
(bar "RightCPUs2")
|
||||
(text "Tasks")
|
||||
(text "LoadAverage")
|
||||
(text "Uptime")
|
||||
]);
|
||||
]
|
||||
);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,385 +0,0 @@
|
|||
{ options, config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
|
||||
let
|
||||
cfg = config.modules.desktop.hyprland;
|
||||
term = "${
|
||||
config.home-manager.users.${config.user.name}.programs.kitty.package
|
||||
}/bin/kitty";
|
||||
in {
|
||||
options.modules.desktop.hyprland = { enable = mkBoolOpt false; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
modules = {
|
||||
desktop = {
|
||||
themes = {
|
||||
gtk.enable = true;
|
||||
qt.enable = true;
|
||||
};
|
||||
terminal.enable = true;
|
||||
file-manager.enable = true;
|
||||
zsh.enable = true;
|
||||
vscode.enable = true;
|
||||
dunst.enable = true;
|
||||
htop.enable = true;
|
||||
flameshot.enable = true;
|
||||
};
|
||||
hardware = { audio.enable = true; };
|
||||
apps.rofi.enable = true;
|
||||
};
|
||||
|
||||
home-manager.users.${config.user.name} = {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
xwayland.enable = true;
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
|
||||
env = [ "XCURSOR_SIZE,24" "WLR_NO_HARDWARE_CURSORS,1" ];
|
||||
|
||||
xwayland = { force_zero_scaling = true; };
|
||||
|
||||
general = {
|
||||
layout = "dwindle";
|
||||
gaps_in = 7;
|
||||
gaps_out = 14;
|
||||
border_size = 2;
|
||||
"col.active_border" = "rgb(B28121)";
|
||||
"col.inactive_border" = "rgb(504945)";
|
||||
no_focus_fallback = false;
|
||||
resize_on_border = false;
|
||||
hover_icon_on_border = false;
|
||||
};
|
||||
|
||||
dwindle = { preserve_split = true; };
|
||||
|
||||
input = {
|
||||
kb_layout = "fr";
|
||||
kb_options = "caps:escape";
|
||||
numlock_by_default = "true";
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
disable_while_typing = true;
|
||||
tap-to-click = false;
|
||||
middle_button_emulation = false;
|
||||
};
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_fingers = 3;
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
animation = [
|
||||
"windows, 1, 2, default, popin 80%"
|
||||
"windowsOut, 1, 2, default, popin 85%"
|
||||
"windowsMove, 1, 2, default"
|
||||
"workspaces, 1, 2, default"
|
||||
"specialWorkspace, 1, 2, default"
|
||||
];
|
||||
};
|
||||
|
||||
bind = [
|
||||
"$mod, Return, exec, ${term}"
|
||||
"$mod, C, killactive"
|
||||
"$mod SHIFT, Q, exit"
|
||||
"$mod SHIFT, A, exec, ${term} -e pulsemixer"
|
||||
"$mod, W, exec, firefox"
|
||||
"$mod, R, exec, ${term} -e yazi"
|
||||
"$mod, E, exec, emacsclient -c"
|
||||
"$mod, N, exec, emacsclient -c --eval '(elfeed)'"
|
||||
"$mod, I, exec, ${term} -e htop"
|
||||
"$mod, M, exec, ${term} -e ncmpcpp"
|
||||
"$mod, V, exec, ${term} -e ncmpcpp -s visualizer"
|
||||
"$mod, T, togglefloating"
|
||||
"$mod, D, exec, rofi -show drun -show-icons"
|
||||
"$mod SHIFT, P, exec, rofi -show p -modi p:rofi-power-menu"
|
||||
|
||||
# Layout manipulation
|
||||
"$mod SHIFT, O, layoutmsg, togglesplit"
|
||||
"$mod, comma, splitratio, -0.1"
|
||||
"$mod, semicolon, splitratio, +0.1"
|
||||
|
||||
"$mod, F, fullscreen, 0"
|
||||
"$mod, X, exec, swaylock"
|
||||
|
||||
# Move focus
|
||||
"$mod, H, movefocus, l"
|
||||
"$mod, L, movefocus, r"
|
||||
"$mod, K, movefocus, u"
|
||||
"$mod, J, movefocus, d"
|
||||
"$mod, left, movefocus, l"
|
||||
"$mod, right, movefocus, r"
|
||||
"$mod, up, movefocus, u"
|
||||
"$mod, down, movefocus, d"
|
||||
|
||||
# Move window
|
||||
"$mod SHIFT, H, movewindow, l"
|
||||
"$mod SHIFT, L, movewindow, r"
|
||||
"$mod SHIFT, K, movewindow, u"
|
||||
"$mod SHIFT, J, movewindow, d"
|
||||
"$mod SHIFT, left, movewindow, l"
|
||||
"$mod SHIFT, right, movewindow, r"
|
||||
"$mod SHIFT, up, movewindow, u"
|
||||
"$mod SHIFT, down, movewindow, d"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"$mod, code:10, moveworkspacetomonitor, 1 current"
|
||||
"$mod, code:10, workspace, 1"
|
||||
"$mod, code:11, moveworkspacetomonitor, 2 current"
|
||||
"$mod, code:11, workspace, 2"
|
||||
"$mod, code:12, moveworkspacetomonitor, 3 current"
|
||||
"$mod, code:12, workspace, 3"
|
||||
"$mod, code:13, moveworkspacetomonitor, 4 current"
|
||||
"$mod, code:13, workspace, 4"
|
||||
"$mod, code:14, moveworkspacetomonitor, 5 current"
|
||||
"$mod, code:14, workspace, 5"
|
||||
"$mod, code:15, moveworkspacetomonitor, 6 current"
|
||||
"$mod, code:15, workspace, 6"
|
||||
"$mod, code:16, moveworkspacetomonitor, 7 current"
|
||||
"$mod, code:16, workspace, 7"
|
||||
"$mod, code:17, moveworkspacetomonitor, 8 current"
|
||||
"$mod, code:17, workspace, 8"
|
||||
"$mod, code:18, moveworkspacetomonitor, 9 current"
|
||||
"$mod, code:18, workspace, 9"
|
||||
"$mod, code:19, moveworkspacetomonitor, 10 current"
|
||||
"$mod, code:19, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$mod SHIFT, code:10, movetoworkspace, 1"
|
||||
"$mod SHIFT, code:11, movetoworkspace, 2"
|
||||
"$mod SHIFT, code:12, movetoworkspace, 3"
|
||||
"$mod SHIFT, code:13, movetoworkspace, 4"
|
||||
"$mod SHIFT, code:14, movetoworkspace, 5"
|
||||
"$mod SHIFT, code:15, movetoworkspace, 6"
|
||||
"$mod SHIFT, code:16, movetoworkspace, 7"
|
||||
"$mod SHIFT, code:17, movetoworkspace, 8"
|
||||
"$mod SHIFT, code:18, movetoworkspace, 9"
|
||||
"$mod SHIFT, code:19, movetoworkspace, 10"
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"$mod, mouse_down, workspace, e-1"
|
||||
"$mod, mouse_up, workspace, e+1"
|
||||
|
||||
# Media controls
|
||||
", XF86AudioRaiseVolume, exec, pulsemixer --change-volume +1"
|
||||
", XF86AudioLowerVolume, exec, pulsemixer --change-volume -1"
|
||||
# ", XF86AudioMicMute, exec, pulsemixer --toggle-mute"
|
||||
", XF86AudioMute, exec, pulsemixer --toggle-mute"
|
||||
", XF86AudioPlay, exec, mpc toggle"
|
||||
", XF86AudioPause, exec, mpc toggle"
|
||||
", XF86AudioNext, exec, mpc next"
|
||||
", XF86AudioPrev, exec, mpc prev"
|
||||
"$mod, P, exec, mpc toggle"
|
||||
|
||||
", XF86MonBrightnessDown, exec, light -U 5"
|
||||
", XF86MonBrightnessUp, exec, light -A 5"
|
||||
|
||||
", Print, exec, flameshot full"
|
||||
"SHIFT , Print, exec, env QT_SCREEN_SCALE_FACTORS=0.66666666 flameshot gui"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
"${pkgs.swaybg}/bin/swaybg --image ${config.modules.desktop.wallpaper} --mode fill"
|
||||
"keepassxc"
|
||||
];
|
||||
|
||||
misc = {
|
||||
force_default_wallpaper = 0;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
animate_manual_resizes = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
mainBar = {
|
||||
layer = "top";
|
||||
position = "bottom";
|
||||
height = 25;
|
||||
spacing = 2;
|
||||
reload-style-on-change = true;
|
||||
modules-left = [ "cpu" "memory" "disk" "hyprland/window" ];
|
||||
modules-center = [ "hyprland/workspaces" ];
|
||||
modules-right = [ "mpd" "battery" "clock" "tray" ];
|
||||
|
||||
tray = {
|
||||
icon-size = 14;
|
||||
spacing = 5;
|
||||
show-passive-items = true;
|
||||
};
|
||||
|
||||
cpu = {
|
||||
interval = 1;
|
||||
format = " {usage}%";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
memory = {
|
||||
interval = 1;
|
||||
format = " {percentage}%";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
disk = {
|
||||
interval = 60;
|
||||
format = " {free}";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
clock = {
|
||||
format = " {:%A, %d %h %H:%M}";
|
||||
format-alt = " {:%d/%m/%Y %H:%M}";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
style = ''
|
||||
* {
|
||||
border: none;
|
||||
font-family: MesloLGS Nerd Font;
|
||||
font-size: 12px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background: #282828;
|
||||
border: 0px solid;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: #282828;
|
||||
color: #ebdbb2;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 0.6em;
|
||||
color: #a89984;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: #ebdbb2;
|
||||
background: #665c54;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: #1d2021;
|
||||
background: #fb4934;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: #665c54;
|
||||
}
|
||||
|
||||
#network,
|
||||
#workspaces,
|
||||
#bluetooth,
|
||||
#tray {
|
||||
color: #ebdbb2;
|
||||
padding: 0 5px;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#clock {
|
||||
padding: 0 5px;
|
||||
margin: 0 5px;
|
||||
color: #83a598;
|
||||
}
|
||||
'';
|
||||
package = pkgs.waybar.override { wireplumberSupport = false; };
|
||||
};
|
||||
|
||||
home = {
|
||||
packages = with pkgs.unstable; [ wlr-randr wl-clipboard wdisplays ];
|
||||
};
|
||||
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
|
||||
package = pkgs.swaylock-effects;
|
||||
|
||||
settings = {
|
||||
ignore-empty-password = true;
|
||||
daemonize = true;
|
||||
# fade-in = 0.5;
|
||||
indicator = true;
|
||||
clock = true;
|
||||
datestr = "%d/%m/%Y";
|
||||
screenshots = true;
|
||||
hide-keyboard-layout = true;
|
||||
indicator-caps-lock = true;
|
||||
bs-hl-color = "7daea3cc";
|
||||
caps-lock-bs-hl-color = "7daea3cc";
|
||||
caps-lock-key-hl-color = "d3869bcc";
|
||||
font = "MesloLGS Nerd Font Propo";
|
||||
font-size = "35";
|
||||
indicator-idle-visible = true;
|
||||
indicator-radius = 100;
|
||||
indicator-thickness = 7;
|
||||
inside-color = "32302f66";
|
||||
inside-clear-color = "89b48266";
|
||||
inside-caps-lock-color = "e78a4e66";
|
||||
inside-ver-color = "7daea366";
|
||||
inside-wrong-color = "ea696266";
|
||||
key-hl-color = "a9b665cc";
|
||||
layout-bg-color = "32302f00";
|
||||
layout-text-color = "d4be98";
|
||||
line-color = "00000000";
|
||||
ring-color = "e78a4ecc";
|
||||
ring-clear-color = "89b482cc";
|
||||
ring-caps-lock-color = "e78a4ecc";
|
||||
ring-ver-color = "7daea3cc";
|
||||
ring-wrong-color = "ea6962cc";
|
||||
separator-color = "00000000";
|
||||
text-color = "d4be98";
|
||||
text-clear-color = "d4be98";
|
||||
text-caps-lock-color = "d4be98";
|
||||
text-ver-color = "d4be98";
|
||||
text-wrong-color = "d4be98";
|
||||
effect-blur = "9x9";
|
||||
effect-greyscale = true;
|
||||
# effect-vignette = "0.5:0.5";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
config.preferred = {
|
||||
default = "gtk";
|
||||
"org.freedesktop.impl.portal.Screencast" = "hyprland";
|
||||
};
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-hyprland
|
||||
];
|
||||
};
|
||||
|
||||
hardware.opengl.enable = true;
|
||||
|
||||
security.pam.services.swaylock = { };
|
||||
|
||||
};
|
||||
}
|
||||
|
|
@ -1,11 +1,13 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.terminal;
|
||||
in {
|
||||
options.modules.desktop.terminal = { enable = mkBoolOpt false; };
|
||||
config = mkIf cfg.enable {
|
||||
let
|
||||
cfg = config.modules.desktop.terminal;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.terminal = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
|
|
@ -15,18 +17,24 @@ in {
|
|||
enable_audio_bell = false;
|
||||
font_family = "Meslo LG S";
|
||||
font_size = 10;
|
||||
symbol_map =
|
||||
"U+e000-U+e00a,U+ea60-U+ebeb,U+e0a0-U+e0c8,U+e0ca,U+e0cc-U+e0d4,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b1,U+e700-U+e7c5,U+f000-U+f2e0,U+f300-U+f372,U+f400-U+f532,U+f0001-U+f1af0 Symbols Nerd Font Mono";
|
||||
symbol_map = "U+e000-U+e00a,U+ea60-U+ebeb,U+e0a0-U+e0c8,U+e0ca,U+e0cc-U+e0d4,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b1,U+e700-U+e7c5,U+f000-U+f2e0,U+f300-U+f372,U+f400-U+f532,U+f0001-U+f1af0 Symbols Nerd Font Mono";
|
||||
allow_remote_control = "yes";
|
||||
listen_on = "unix:@mykitty";
|
||||
};
|
||||
keybindings = {
|
||||
"ctrl+up" = "change_font_size all +2.0";
|
||||
"ctrl+down" = "change_font_size all -2.0";
|
||||
"shift+page_up" = "scroll_page_up";
|
||||
"shift+page_down" = "scroll_page_down";
|
||||
"ctrl+shift+comma" = "scroll_to_prompt -1";
|
||||
"ctrl+shift+semicolon" = "scroll_to_prompt 1";
|
||||
"ctrl+shift+u" = "scroll_to_prompt -1";
|
||||
"ctrl+shift+d" = "scroll_to_prompt 1";
|
||||
"ctrl+shift+t" = "new_tab_with_cwd !neighbor";
|
||||
"ctrl+," = "previous_tab";
|
||||
"ctrl+;" = "next_tab";
|
||||
"ctrl+shift+," = "move_tab_backward";
|
||||
"ctrl+shift+;" = "move_tab_forward";
|
||||
};
|
||||
theme = "Gruvbox Dark";
|
||||
themeFile = "gruvbox-dark";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,17 +1,19 @@
|
|||
{ inputs, config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let
|
||||
cfg = config.modules.desktop.themes.gtk;
|
||||
|
||||
gruvboxPlus = pkgs.stdenv.mkDerivation rec {
|
||||
name = "gruvbox-plus";
|
||||
version = "5.1";
|
||||
version = "6.2.0";
|
||||
src = pkgs.fetchurl {
|
||||
url =
|
||||
"https://github.com/SylEleuth/gruvbox-plus-icon-pack/releases/download/v${version}/gruvbox-plus-icon-pack-${version}.zip";
|
||||
sha256 = "1n3hqwk1mqaj8vbmy0pqbiq6v5jqrhmhin506xbpnccl28f907j0";
|
||||
url = "https://github.com/SylEleuth/gruvbox-plus-icon-pack/releases/download/v${version}/gruvbox-plus-icon-pack-${version}.zip";
|
||||
sha256 = "sha256-D+SPhucHU4Riz0mzU1LnaEkkaQt+blJMAsA5r6fTAQ0=";
|
||||
};
|
||||
dontUnpack = true;
|
||||
installPhase = ''
|
||||
|
|
@ -20,10 +22,13 @@ let
|
|||
'';
|
||||
|
||||
};
|
||||
in {
|
||||
options.modules.desktop.themes.gtk = { enable = mkBoolOpt false; };
|
||||
in
|
||||
{
|
||||
options.modules.desktop.themes.gtk = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
systemd.packages = [ pkgs.dconf ];
|
||||
|
||||
|
|
@ -34,11 +39,11 @@ in {
|
|||
gtk = {
|
||||
enable = true;
|
||||
cursorTheme = {
|
||||
package = pkgs.unstable.paper-icon-theme;
|
||||
package = pkgs.paper-icon-theme;
|
||||
name = "Paper";
|
||||
};
|
||||
theme = {
|
||||
package = pkgs.unstable.adw-gtk3;
|
||||
package = pkgs.adw-gtk3;
|
||||
name = "adw-gtk3";
|
||||
};
|
||||
iconTheme = {
|
||||
|
|
@ -48,13 +53,17 @@ in {
|
|||
};
|
||||
|
||||
xdg.configFile = {
|
||||
"gtk-3.0/gtk.css" = { source = ./gtk.css; };
|
||||
"gtk-4.0/gtk.css" = { source = ./gtk.css; };
|
||||
"gtk-3.0/gtk.css" = {
|
||||
source = ./gtk.css;
|
||||
};
|
||||
"gtk-4.0/gtk.css" = {
|
||||
source = ./gtk.css;
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
pointerCursor = {
|
||||
package = pkgs.unstable.paper-icon-theme;
|
||||
package = pkgs.paper-icon-theme;
|
||||
name = "Paper";
|
||||
size = 24;
|
||||
gtk.enable = true;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,20 @@
|
|||
{ inputs, config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.themes.qt;
|
||||
let
|
||||
cfg = config.modules.desktop.themes.qt;
|
||||
|
||||
in {
|
||||
options.modules.desktop.themes.qt = { enable = mkBoolOpt false; };
|
||||
in
|
||||
{
|
||||
options.modules.desktop.themes.qt = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
libsForQt5.qt5.qtquickcontrols2
|
||||
|
|
@ -21,7 +28,7 @@ in {
|
|||
platformTheme.name = "gtk";
|
||||
style = {
|
||||
name = "adwaita-dark";
|
||||
package = pkgs.unstable.adwaita-qt;
|
||||
package = pkgs.adwaita-qt;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,19 +1,23 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.vscode;
|
||||
in {
|
||||
let
|
||||
cfg = config.modules.desktop.vscode;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.vscode = {
|
||||
enable = mkBoolOpt false;
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
extensions = (
|
||||
with pkgs.vscode-extensions; [
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
pkief.material-icon-theme
|
||||
jnoortheen.nix-ide
|
||||
arrterian.nix-env-selector
|
||||
|
|
@ -22,8 +26,7 @@ in {
|
|||
hashicorp.terraform
|
||||
bradlc.vscode-tailwindcss
|
||||
asciidoctor.asciidoctor-vscode
|
||||
]
|
||||
);
|
||||
];
|
||||
userSettings = {
|
||||
"editor.formatOnSave" = true;
|
||||
"editor.quickSuggestions" = {
|
||||
|
|
@ -33,8 +36,14 @@ in {
|
|||
"scala" = "html";
|
||||
};
|
||||
"tailwindCSS.experimental.classRegex" = [
|
||||
[ "cls\\(([^)]*)\\)" "\"([^']*)\"" ]
|
||||
[ "cls\\s*:=\\s*\\(?([^,^\\n^\\)]*)" "\"([^']*)\"" ]
|
||||
[
|
||||
"cls\\(([^)]*)\\)"
|
||||
"\"([^']*)\""
|
||||
]
|
||||
[
|
||||
"cls\\s*:=\\s*\\(?([^,^\\n^\\)]*)"
|
||||
"\"([^']*)\""
|
||||
]
|
||||
];
|
||||
|
||||
"files.autoSave" = "onFocusChange";
|
||||
|
|
@ -50,9 +59,7 @@ in {
|
|||
"terraform.languageServer" = {
|
||||
"external" = true;
|
||||
"pathToBinary" = "";
|
||||
"args" = [
|
||||
"serve"
|
||||
];
|
||||
"args" = [ "serve" ];
|
||||
"maxNumberOfProblems" = 100;
|
||||
"trace.server" = "off";
|
||||
};
|
||||
|
|
|
|||
472
modules/desktop/wm.nix
Normal file
472
modules/desktop/wm.nix
Normal file
|
|
@ -0,0 +1,472 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.desktop.wm;
|
||||
term = "${config.home-manager.users.${config.user.name}.programs.kitty.package}/bin/kitty";
|
||||
wallpaper = config.modules.desktop.wallpaper;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.wm = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
modules = {
|
||||
desktop = {
|
||||
themes = {
|
||||
gtk.enable = true;
|
||||
qt.enable = true;
|
||||
};
|
||||
terminal.enable = true;
|
||||
file-manager.enable = true;
|
||||
zsh.enable = true;
|
||||
dunst.enable = true;
|
||||
htop.enable = true;
|
||||
};
|
||||
hardware = {
|
||||
audio.enable = true;
|
||||
};
|
||||
apps = {
|
||||
rofi.enable = true;
|
||||
newsboat.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users.${config.user.name} =
|
||||
{ config, ... }:
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
xwayland.enable = true;
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
|
||||
env = [
|
||||
"XCURSOR_SIZE,24"
|
||||
"WLR_NO_HARDWARE_CURSORS,1"
|
||||
];
|
||||
|
||||
xwayland = {
|
||||
force_zero_scaling = true;
|
||||
};
|
||||
|
||||
general = {
|
||||
layout = "dwindle";
|
||||
gaps_in = 7;
|
||||
gaps_out = 14;
|
||||
border_size = 2;
|
||||
"col.active_border" = "rgb(B28121)";
|
||||
"col.inactive_border" = "rgb(504945)";
|
||||
no_focus_fallback = false;
|
||||
resize_on_border = false;
|
||||
hover_icon_on_border = false;
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
preserve_split = true;
|
||||
};
|
||||
|
||||
debug = {
|
||||
disable_logs = false;
|
||||
enable_stdout_logs = true;
|
||||
};
|
||||
|
||||
input = {
|
||||
kb_layout = "fr";
|
||||
kb_options = "caps:escape";
|
||||
numlock_by_default = "true";
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
disable_while_typing = true;
|
||||
tap-to-click = false;
|
||||
middle_button_emulation = false;
|
||||
};
|
||||
};
|
||||
|
||||
gesture = [
|
||||
"3, horizontal, workspace"
|
||||
];
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
animation = [
|
||||
"windows, 1, 2, default, popin 80%"
|
||||
"windowsOut, 1, 2, default, popin 85%"
|
||||
"windowsMove, 1, 2, default"
|
||||
"workspaces, 1, 2, default"
|
||||
"specialWorkspace, 1, 2, default"
|
||||
];
|
||||
};
|
||||
|
||||
bind = [
|
||||
"$mod, Return, exec, ${term}"
|
||||
"$mod, C, killactive"
|
||||
# "$mod SHIFT, Q, exit"
|
||||
"$mod SHIFT, A, exec, ${term} -e pulsemixer"
|
||||
"$mod, W, exec, firefox"
|
||||
"$mod, R, exec, ${term} -e yazi"
|
||||
"$mod, E, exec, emacsclient -c"
|
||||
"$mod, N, exec, ${term} -e newsboat"
|
||||
"$mod, I, exec, ${term} -e htop"
|
||||
"$mod, M, exec, ${term} -e ncmpcpp"
|
||||
"$mod, V, exec, ${term} -e ncmpcpp -s visualizer"
|
||||
"$mod, T, togglefloating"
|
||||
"$mod, D, exec, rofi -show drun -show-icons"
|
||||
"$mod SHIFT, P, exec, rofi -show p -modi p:rofi-power-menu"
|
||||
|
||||
# Layout manipulation
|
||||
"$mod SHIFT, O, layoutmsg, togglesplit"
|
||||
"$mod, comma, splitratio, -0.1"
|
||||
"$mod, semicolon, splitratio, +0.1"
|
||||
|
||||
"$mod, F, fullscreen, 0"
|
||||
"$mod, X, exec, swaylock"
|
||||
|
||||
# Move focus
|
||||
"$mod, H, movefocus, l"
|
||||
"$mod, L, movefocus, r"
|
||||
"$mod, K, movefocus, u"
|
||||
"$mod, J, movefocus, d"
|
||||
"$mod, left, movefocus, l"
|
||||
"$mod, right, movefocus, r"
|
||||
"$mod, up, movefocus, u"
|
||||
"$mod, down, movefocus, d"
|
||||
|
||||
# Move window
|
||||
"$mod SHIFT, H, movewindow, l"
|
||||
"$mod SHIFT, L, movewindow, r"
|
||||
"$mod SHIFT, K, movewindow, u"
|
||||
"$mod SHIFT, J, movewindow, d"
|
||||
"$mod SHIFT, left, movewindow, l"
|
||||
"$mod SHIFT, right, movewindow, r"
|
||||
"$mod SHIFT, up, movewindow, u"
|
||||
"$mod SHIFT, down, movewindow, d"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"$mod, code:10, moveworkspacetomonitor, 1 current"
|
||||
"$mod, code:10, workspace, 1"
|
||||
"$mod, 1, moveworkspacetomonitor, 1 current"
|
||||
"$mod, 1, workspace, 1"
|
||||
"$mod, code:11, moveworkspacetomonitor, 2 current"
|
||||
"$mod, code:11, workspace, 2"
|
||||
"$mod, 2, moveworkspacetomonitor, 2 current"
|
||||
"$mod, 2, workspace, 2"
|
||||
"$mod, code:12, moveworkspacetomonitor, 3 current"
|
||||
"$mod, code:12, workspace, 3"
|
||||
"$mod, 3, moveworkspacetomonitor, 3 current"
|
||||
"$mod, 3, workspace, 3"
|
||||
"$mod, code:13, moveworkspacetomonitor, 4 current"
|
||||
"$mod, code:13, workspace, 4"
|
||||
"$mod, 4, moveworkspacetomonitor, 4 current"
|
||||
"$mod, 4, workspace, 4"
|
||||
"$mod, code:14, moveworkspacetomonitor, 5 current"
|
||||
"$mod, code:14, workspace, 5"
|
||||
"$mod, 5, moveworkspacetomonitor, 5 current"
|
||||
"$mod, 5, workspace, 5"
|
||||
"$mod, code:15, moveworkspacetomonitor, 6 current"
|
||||
"$mod, code:15, workspace, 6"
|
||||
"$mod, 6, moveworkspacetomonitor, 6 current"
|
||||
"$mod, 6, workspace, 6"
|
||||
"$mod, code:16, moveworkspacetomonitor, 7 current"
|
||||
"$mod, code:16, workspace, 7"
|
||||
"$mod, 7, moveworkspacetomonitor, 7 current"
|
||||
"$mod, 7, workspace, 7"
|
||||
"$mod, code:17, moveworkspacetomonitor, 8 current"
|
||||
"$mod, code:17, workspace, 8"
|
||||
"$mod, 8, moveworkspacetomonitor, 8 current"
|
||||
"$mod, 8, workspace, 8"
|
||||
"$mod, code:18, moveworkspacetomonitor, 9 current"
|
||||
"$mod, code:18, workspace, 9"
|
||||
"$mod, 9, moveworkspacetomonitor, 9 current"
|
||||
"$mod, 9, workspace, 9"
|
||||
"$mod, code:19, moveworkspacetomonitor, 10 current"
|
||||
"$mod, code:19, workspace, 10"
|
||||
"$mod, 0, moveworkspacetomonitor, 10 current"
|
||||
"$mod, 0, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$mod SHIFT, code:10, movetoworkspace, 1"
|
||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
||||
"$mod SHIFT, code:11, movetoworkspace, 2"
|
||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
||||
"$mod SHIFT, code:12, movetoworkspace, 3"
|
||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
||||
"$mod SHIFT, code:13, movetoworkspace, 4"
|
||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
||||
"$mod SHIFT, code:14, movetoworkspace, 5"
|
||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
||||
"$mod SHIFT, code:15, movetoworkspace, 6"
|
||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
||||
"$mod SHIFT, code:16, movetoworkspace, 7"
|
||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
||||
"$mod SHIFT, code:17, movetoworkspace, 8"
|
||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
||||
"$mod SHIFT, code:18, movetoworkspace, 9"
|
||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
||||
"$mod SHIFT, code:19, movetoworkspace, 10"
|
||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"$mod, mouse_down, workspace, e-1"
|
||||
"$mod, mouse_up, workspace, e+1"
|
||||
|
||||
# Media controls
|
||||
", XF86AudioRaiseVolume, exec, pulsemixer --change-volume +1"
|
||||
", XF86AudioLowerVolume, exec, pulsemixer --change-volume -1"
|
||||
# ", XF86AudioMicMute, exec, pulsemixer --toggle-mute"
|
||||
", XF86AudioMute, exec, pulsemixer --toggle-mute"
|
||||
", XF86AudioPlay, exec, mpc toggle"
|
||||
", XF86AudioPause, exec, mpc toggle"
|
||||
", XF86AudioNext, exec, mpc next"
|
||||
", XF86AudioPrev, exec, mpc prev"
|
||||
"$mod, P, exec, mpc toggle"
|
||||
|
||||
", XF86MonBrightnessDown, exec, light -U 5"
|
||||
", XF86MonBrightnessUp, exec, light -A 5"
|
||||
|
||||
", Print, exec, grim -g \"$(slurp)\" - | satty -f -"
|
||||
"SHIFT, Print, exec, grim - | satty -f -"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
"${pkgs.swaybg}/bin/swaybg --image ${wallpaper} --mode fill"
|
||||
"keepassxc"
|
||||
];
|
||||
|
||||
misc = {
|
||||
force_default_wallpaper = 0;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
animate_manual_resizes = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
mainBar = {
|
||||
layer = "top";
|
||||
position = "bottom";
|
||||
height = 25;
|
||||
spacing = 2;
|
||||
reload-style-on-change = true;
|
||||
modules-left = [
|
||||
"cpu"
|
||||
"memory"
|
||||
"disk"
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-center = [ "hyprland/workspaces" ];
|
||||
modules-right = [
|
||||
"mpd"
|
||||
"battery"
|
||||
"clock"
|
||||
"tray"
|
||||
];
|
||||
|
||||
tray = {
|
||||
icon-size = 14;
|
||||
spacing = 5;
|
||||
show-passive-items = true;
|
||||
};
|
||||
|
||||
cpu = {
|
||||
interval = 1;
|
||||
format = " {usage}%";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
memory = {
|
||||
interval = 1;
|
||||
format = " {percentage}%";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
disk = {
|
||||
interval = 60;
|
||||
format = " {free}";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
clock = {
|
||||
format = " {:%A, %d %h %H:%M}";
|
||||
format-alt = " {:%d/%m/%Y %H:%M}";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
style = ''
|
||||
* {
|
||||
border: none;
|
||||
font-family: MesloLGS Nerd Font;
|
||||
font-size: 12px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background: #282828;
|
||||
border: 0px solid;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: #282828;
|
||||
color: #ebdbb2;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 0.6em;
|
||||
color: #a89984;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: #ebdbb2;
|
||||
background: #665c54;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: #1d2021;
|
||||
background: #fb4934;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: #665c54;
|
||||
}
|
||||
|
||||
#network,
|
||||
#workspaces,
|
||||
#bluetooth,
|
||||
#tray {
|
||||
color: #ebdbb2;
|
||||
padding: 0 5px;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#clock {
|
||||
padding: 0 5px;
|
||||
margin: 0 5px;
|
||||
color: #83a598;
|
||||
}
|
||||
'';
|
||||
package = pkgs.waybar.override { wireplumberSupport = false; };
|
||||
};
|
||||
|
||||
programs.satty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
output-filename = "${config.home.homeDirectory}/Pictures/Screenshots/satty_%Y-%m-%d_%H-%M-%S.png";
|
||||
copy-command = "wl-copy";
|
||||
actions-on-enter = [
|
||||
"save-to-clipboard"
|
||||
"save-to-file"
|
||||
"exit"
|
||||
];
|
||||
early-exit = true;
|
||||
save-after-copy = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.activation.ensureScreenshotsDir = ''
|
||||
${pkgs.coreutils}/bin/mkdir -p "$HOME/Pictures/Screenshots"
|
||||
'';
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
wlr-randr
|
||||
wl-clipboard
|
||||
wdisplays
|
||||
grim
|
||||
slurp
|
||||
];
|
||||
};
|
||||
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
|
||||
package = pkgs.swaylock-effects;
|
||||
|
||||
settings = {
|
||||
ignore-empty-password = true;
|
||||
daemonize = true;
|
||||
# fade-in = 0.5;
|
||||
indicator = true;
|
||||
clock = true;
|
||||
datestr = "%d/%m/%Y";
|
||||
screenshots = true;
|
||||
hide-keyboard-layout = true;
|
||||
indicator-caps-lock = true;
|
||||
bs-hl-color = "7daea3cc";
|
||||
caps-lock-bs-hl-color = "7daea3cc";
|
||||
caps-lock-key-hl-color = "d3869bcc";
|
||||
font = "MesloLGS Nerd Font Propo";
|
||||
font-size = "35";
|
||||
indicator-idle-visible = true;
|
||||
indicator-radius = 100;
|
||||
indicator-thickness = 7;
|
||||
inside-color = "32302f66";
|
||||
inside-clear-color = "89b48266";
|
||||
inside-caps-lock-color = "e78a4e66";
|
||||
inside-ver-color = "7daea366";
|
||||
inside-wrong-color = "ea696266";
|
||||
key-hl-color = "a9b665cc";
|
||||
layout-bg-color = "32302f00";
|
||||
layout-text-color = "d4be98";
|
||||
line-color = "00000000";
|
||||
ring-color = "e78a4ecc";
|
||||
ring-clear-color = "89b482cc";
|
||||
ring-caps-lock-color = "e78a4ecc";
|
||||
ring-ver-color = "7daea3cc";
|
||||
ring-wrong-color = "ea6962cc";
|
||||
separator-color = "00000000";
|
||||
text-color = "d4be98";
|
||||
text-clear-color = "d4be98";
|
||||
text-caps-lock-color = "d4be98";
|
||||
text-ver-color = "d4be98";
|
||||
text-wrong-color = "d4be98";
|
||||
effect-blur = "9x9";
|
||||
effect-greyscale = true;
|
||||
# effect-vignette = "0.5:0.5";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
config.preferred = {
|
||||
default = "gtk";
|
||||
"org.freedesktop.impl.portal.Screencast" = "hyprland";
|
||||
};
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-hyprland
|
||||
];
|
||||
};
|
||||
|
||||
hardware.graphics.enable = true;
|
||||
|
||||
security.pam.services.swaylock = { };
|
||||
|
||||
};
|
||||
}
|
||||
|
|
@ -1,20 +1,30 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.desktop.zsh;
|
||||
in {
|
||||
options.modules.desktop.zsh = { enable = mkBoolOpt false; };
|
||||
config = mkIf cfg.enable {
|
||||
let
|
||||
cfg = config.modules.desktop.zsh;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.zsh = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.pathsToLink = [ "/share/zsh" ];
|
||||
|
||||
programs.zsh.enable = true;
|
||||
|
||||
users.users.${config.user.name} = { shell = pkgs.zsh; };
|
||||
users.users.${config.user.name} = {
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
home-manager.users.${config.user.name} = {
|
||||
programs.zsh = {
|
||||
programs = {
|
||||
zsh = {
|
||||
enable = true;
|
||||
history = {
|
||||
save = 50000;
|
||||
|
|
@ -23,7 +33,8 @@ in {
|
|||
enableCompletion = true;
|
||||
autosuggestion.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
initExtra = ''
|
||||
initContent = # bash
|
||||
''
|
||||
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
|
||||
zle -N up-line-or-beginning-search
|
||||
zle -N down-line-or-beginning-search
|
||||
|
|
@ -31,11 +42,16 @@ in {
|
|||
[[ -n "$key[Up]" ]] && bindkey -- "$key[Up]" up-line-or-beginning-search
|
||||
[[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search
|
||||
|
||||
eval $(${pkgs.thefuck}/bin/thefuck --alias)
|
||||
bindkey "^P" up-line-or-beginning-search
|
||||
bindkey "^N" down-line-or-beginning-search
|
||||
'';
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
plugins = [ "git" "terraform" "systemd" ];
|
||||
plugins = [
|
||||
"git"
|
||||
"terraform"
|
||||
"systemd"
|
||||
];
|
||||
};
|
||||
plugins = [
|
||||
{
|
||||
|
|
@ -48,7 +64,11 @@ in {
|
|||
}
|
||||
];
|
||||
};
|
||||
programs.starship = {
|
||||
pay-respects = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
|
|
@ -57,11 +77,22 @@ in {
|
|||
min_time = 0;
|
||||
show_milliseconds = true;
|
||||
};
|
||||
scala = { symbol = " "; };
|
||||
terraform = { symbol = " "; };
|
||||
nix_shell = { symbol = " "; };
|
||||
nodejs = { symbol = " "; };
|
||||
php = { symbol = " "; };
|
||||
scala = {
|
||||
symbol = " ";
|
||||
};
|
||||
terraform = {
|
||||
symbol = " ";
|
||||
};
|
||||
nix_shell = {
|
||||
symbol = " ";
|
||||
};
|
||||
nodejs = {
|
||||
symbol = " ";
|
||||
};
|
||||
php = {
|
||||
symbol = " ";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,132 +1,120 @@
|
|||
{ inputs, config, lib, pkgs, ... }:
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.editor.emacs;
|
||||
in {
|
||||
options.modules.editor.emacs = { enable = mkBoolOpt false; };
|
||||
let
|
||||
cfg = config.modules.editor.emacs;
|
||||
in
|
||||
{
|
||||
options.modules.editor.emacs = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
|
||||
nixpkgs.overlays = [ inputs.emacs-overlay.overlay ];
|
||||
|
||||
home.packages = with pkgs.unstable; [
|
||||
binutils
|
||||
ripgrep
|
||||
fd
|
||||
findutils.locate
|
||||
python311
|
||||
libsecret
|
||||
gcc
|
||||
gnumake
|
||||
cmake
|
||||
nodejs
|
||||
home = {
|
||||
packages = [
|
||||
pkgs.binutils
|
||||
pkgs.ripgrep
|
||||
pkgs.fd
|
||||
pkgs.findutils.locate
|
||||
pkgs.python311
|
||||
pkgs.libsecret
|
||||
pkgs.gcc
|
||||
pkgs.gnumake
|
||||
pkgs.cmake
|
||||
pkgs.nodejs
|
||||
|
||||
opentofu
|
||||
pandoc
|
||||
pkgs.opentofu
|
||||
pkgs.pandoc
|
||||
|
||||
# Formatters and linters
|
||||
nixfmt-rfc-style # nix formatter
|
||||
nixpkgs-fmt
|
||||
shfmt # sh formatter
|
||||
shellcheck # sh linter
|
||||
html-tidy # HTML formatter
|
||||
nodePackages.stylelint # CSS linter
|
||||
nodePackages.js-beautify # JS/CSS/HTML formatter
|
||||
pkgs.nixfmt-rfc-style # nix formatter
|
||||
pkgs.nixpkgs-fmt
|
||||
pkgs.shfmt # sh formatter
|
||||
pkgs.shellcheck # sh linter
|
||||
pkgs.html-tidy # HTML formatter
|
||||
pkgs.nodePackages.stylelint # CSS linter
|
||||
pkgs.nodePackages.js-beautify # JS/CSS/HTML formatter
|
||||
|
||||
# LSPs
|
||||
coursier
|
||||
pkgs.coursier
|
||||
# metals # Scala
|
||||
|
||||
# Nix
|
||||
nil
|
||||
pkgs.nil
|
||||
|
||||
phpactor # PHP
|
||||
pkgs.phpactor # PHP
|
||||
#OCaml
|
||||
ocaml
|
||||
dune_3
|
||||
ocamlPackages.ocaml-lsp
|
||||
ocamlPackages.ocamlformat
|
||||
ocamlPackages.utop
|
||||
ocamlPackages.ocp-indent
|
||||
ocamlPackages.merlin
|
||||
pkgs.ocaml
|
||||
pkgs.dune_3
|
||||
pkgs.ocamlPackages.ocaml-lsp
|
||||
pkgs.ocamlPackages.ocamlformat
|
||||
pkgs.ocamlPackages.utop
|
||||
pkgs.ocamlPackages.ocp-indent
|
||||
pkgs.ocamlPackages.merlin
|
||||
|
||||
# Used by org-roam
|
||||
sqlite
|
||||
graphviz
|
||||
pkgs.sqlite
|
||||
pkgs.graphviz
|
||||
|
||||
# Used by elfeed-tube
|
||||
yt-dlp
|
||||
mpv
|
||||
pkgs.yt-dlp
|
||||
pkgs.mpv
|
||||
|
||||
# Used by dirvish
|
||||
imagemagick
|
||||
ffmpegthumbnailer
|
||||
mediainfo
|
||||
poppler
|
||||
gnutar
|
||||
unzip
|
||||
pkgs.imagemagick
|
||||
pkgs.ffmpegthumbnailer
|
||||
pkgs.mediainfo
|
||||
pkgs.poppler
|
||||
pkgs.gnutar
|
||||
pkgs.unzip
|
||||
];
|
||||
sessionPath = [ "${config.home-manager.users.${config.user.name}.xdg.configHome}/emacs/bin" ];
|
||||
activation = {
|
||||
installDoomEmacs = ''
|
||||
if [ ! -d "${config.home-manager.users.${config.user.name}.xdg.configHome}/emacs" ]; then
|
||||
${pkgs.git}/bin/git clone --depth=1 --single-branch https://github.com/doomemacs/doomemacs "${
|
||||
config.home-manager.users.${config.user.name}.xdg.configHome
|
||||
}/emacs"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
services.emacs = {
|
||||
enable = true;
|
||||
client.enable = true;
|
||||
};
|
||||
|
||||
# Use either this or nix-doom-emacs
|
||||
programs.emacs = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.emacs29.override {
|
||||
package = pkgs.emacs30.override {
|
||||
withNativeCompilation = true;
|
||||
withPgtk = true;
|
||||
withSQLite3 = true;
|
||||
withTreeSitter = true;
|
||||
withWebP = true;
|
||||
};
|
||||
extraPackages = epkgs:
|
||||
with epkgs; [
|
||||
extraPackages =
|
||||
epkgs: with epkgs; [
|
||||
vterm
|
||||
pdf-tools
|
||||
treesit-grammars.with-all-grammars
|
||||
];
|
||||
};
|
||||
xdg.configFile = { "doom" = { source = ./doom.d; }; };
|
||||
home.sessionPath = [
|
||||
"${
|
||||
config.home-manager.users.${config.user.name}.xdg.configHome
|
||||
}/emacs/bin"
|
||||
];
|
||||
home.activation = {
|
||||
installDoomEmacs = ''
|
||||
if [ ! -d "${
|
||||
config.home-manager.users.${config.user.name}.xdg.configHome
|
||||
}/emacs" ]; then
|
||||
git clone --depth=1 --single-branch https://github.com/doomemacs/doomemacs "${
|
||||
config.home-manager.users.${config.user.name}.xdg.configHome
|
||||
}/emacs"
|
||||
fi
|
||||
'';
|
||||
xdg.configFile = {
|
||||
"doom" = {
|
||||
source = ./doom.d;
|
||||
};
|
||||
};
|
||||
|
||||
# imports = [ inputs.nix-doom-emacs.hmModule ];
|
||||
# programs.doom-emacs = {
|
||||
# enable = true;
|
||||
# doomPrivateDir = ./doom.d;
|
||||
# emacsPackagesOverlay = final: prev: {
|
||||
# ob-ammonite = with final;
|
||||
# (trivialBuild {
|
||||
# src = pkgs.fetchFromGitHub {
|
||||
# owner = "zwild";
|
||||
# repo = "ob-ammonite";
|
||||
# rev = "39937dff395e70aff76a4224fa49cf2ec6c57cca";
|
||||
# sha256 = pkgs.lib.fakeSha256;
|
||||
# };
|
||||
# pname = "ob-ammonite";
|
||||
# packageRequires = [ s dash editorconfig ];
|
||||
# });
|
||||
# };
|
||||
# };
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
|
||||
let cfg = config.modules.editor.vim;
|
||||
in {
|
||||
options.modules.editor.vim = { enable = mkBoolOpt false; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
vimAlias = true;
|
||||
plugins = with pkgs; [
|
||||
vimPlugins.gruvbox-community
|
||||
vimPlugins.vim-airline
|
||||
vimPlugins.vim-airline-themes
|
||||
vimPlugins.vim-gitgutter
|
||||
vimPlugins.nerdtree
|
||||
vimPlugins.nerdtree-git-plugin
|
||||
vimPlugins.ctrlp-vim
|
||||
vimPlugins.tabular
|
||||
];
|
||||
extraConfig = ''
|
||||
let g:gruvbox_italic=1
|
||||
colorscheme gruvbox
|
||||
set background=dark
|
||||
let g:airline_powerline_fonts = 1
|
||||
autocmd VimEnter * hi Normal ctermbg=NONE guibg=NONE
|
||||
|
||||
"Toggle NERDTree with Ctrl-N
|
||||
map <C-n> :NERDTreeToggle<CR>
|
||||
|
||||
"Show hidden files in NERDTree
|
||||
let NERDTreeShowHidden=1
|
||||
|
||||
set number relativenumber
|
||||
set ignorecase
|
||||
|
||||
vnoremap . :norm.<CR>
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
15
modules/editor/vim/.neoconf.json
Normal file
15
modules/editor/vim/.neoconf.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
3
modules/editor/vim/lua/config/autocmds.lua
Normal file
3
modules/editor/vim/lua/config/autocmds.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-- Autocmds are automatically loaded on the VeryLazy event
|
||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||
-- Add any additional autocmds here
|
||||
18
modules/editor/vim/lua/config/keymaps.lua
Normal file
18
modules/editor/vim/lua/config/keymaps.lua
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
-- Keymaps are automatically loaded on the VeryLazy event
|
||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||
-- Add any additional keymaps here
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
-- Windows
|
||||
map("n", "<leader>ww", "<C-w>p", { desc = "Other Window", remap = true })
|
||||
map("n", "<leader>wd", "<C-w>c", { desc = "Delete Window", remap = true })
|
||||
map("n", "<leader>ws", "<C-w>s", { desc = "Split Window Below", remap = true })
|
||||
map("n", "<leader>wv", "<C-w>v", { desc = "Split Window Right", remap = true })
|
||||
map("n", "<leader>wj", "<C-w>j", { desc = "Go to Lower Window", remap = true })
|
||||
map("n", "<leader>wk", "<C-w>k", { desc = "Go to Upper Window", remap = true })
|
||||
map("n", "<leader>wl", "<C-w>l", { desc = "Go to Right Window", remap = true })
|
||||
map("n", "<leader>wh", "<C-w>h", { desc = "Go to Left Window", remap = true })
|
||||
|
||||
-- File
|
||||
map("n", "<leader>fs", "<cmd>w<cr>", { desc = "Save File" })
|
||||
3
modules/editor/vim/lua/config/options.lua
Normal file
3
modules/editor/vim/lua/config/options.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-- Options are automatically loaded before lazy.nvim startup
|
||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||
-- Add any additional options here
|
||||
20
modules/editor/vim/lua/plugins/core.lua
Normal file
20
modules/editor/vim/lua/plugins/core.lua
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
return {
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "gruvbox",
|
||||
},
|
||||
},
|
||||
{
|
||||
'nvim-telescope/telescope.nvim',
|
||||
opts = {
|
||||
defaults = { path_display = { "truncate" } },
|
||||
},
|
||||
},
|
||||
{
|
||||
'folke/snacks.nvim',
|
||||
keys = {
|
||||
{ "<leader>bk", function() Snacks.bufdelete() end, desc = "Delete Buffer" },
|
||||
},
|
||||
},
|
||||
}
|
||||
8
modules/editor/vim/lua/plugins/disabled.lua
Normal file
8
modules/editor/vim/lua/plugins/disabled.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
return {
|
||||
{ "folke/tokyonight.nvim", enabled = false },
|
||||
{ "catppuccin", enabled = false },
|
||||
{ "mason-org/mason.nvim", enabled = false },
|
||||
{ "mason-org/mason-lspconfig.nvim", enabled = false },
|
||||
{ "jay-babu/mason-nvim-dap.nvim", enabled = false },
|
||||
{ "Bilal2453/luvit-meta", enabled = false },
|
||||
}
|
||||
46
modules/editor/vim/lua/plugins/lsp.lua
Normal file
46
modules/editor/vim/lua/plugins/lsp.lua
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
return {
|
||||
recommended = function()
|
||||
return LazyVim.extras.wants({
|
||||
ft = "scala",
|
||||
root = { "build.sbt", "build.mill", "build.sc", "build.gradle", "pom.xml" },
|
||||
})
|
||||
end,
|
||||
{
|
||||
"scalameta/nvim-metals",
|
||||
ft = { "scala", "sbt", "mill" },
|
||||
config = function() end,
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
metals = {
|
||||
settings = {
|
||||
showImplicitArguments = false,
|
||||
startMcpServer = true,
|
||||
},
|
||||
},
|
||||
elixirls = {
|
||||
cmd = { "elixir-ls" },
|
||||
},
|
||||
},
|
||||
setup = {
|
||||
metals = function(_, opts)
|
||||
local metals = require("metals")
|
||||
local metals_config = vim.tbl_deep_extend("force", metals.bare_config(), opts)
|
||||
metals_config.on_attach = LazyVim.has("nvim-dap") and metals.setup_dap or nil
|
||||
|
||||
local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true })
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "scala", "sbt", "mill" },
|
||||
callback = function()
|
||||
metals.initialize_or_attach(metals_config)
|
||||
end,
|
||||
group = nvim_metals_group,
|
||||
})
|
||||
return true
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
14
modules/editor/vim/lua/plugins/lualine.lua
Normal file
14
modules/editor/vim/lua/plugins/lualine.lua
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
return {
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
sections = {
|
||||
lualine_z = {
|
||||
{
|
||||
require("opencode").statusline,
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
15
modules/editor/vim/lua/plugins/neogit.lua
Normal file
15
modules/editor/vim/lua/plugins/neogit.lua
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
return {
|
||||
{
|
||||
"NeogitOrg/neogit",
|
||||
dependencies = { "nvim-lua/plenary.nvim", "sindrets/diffview.nvim", "nvim-telescope/telescope.nvim" },
|
||||
event = "VeryLazy",
|
||||
keys = {
|
||||
{
|
||||
"<leader>gg",
|
||||
"<cmd>Neogit<cr>",
|
||||
desc = "Neogit",
|
||||
},
|
||||
},
|
||||
config = true,
|
||||
},
|
||||
}
|
||||
39
modules/editor/vim/lua/plugins/nix.lua
Normal file
39
modules/editor/vim/lua/plugins/nix.lua
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
return {
|
||||
{
|
||||
"mfussenegger/nvim-lint",
|
||||
opts = {
|
||||
linters_by_ft = {
|
||||
nix = {
|
||||
"statix",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
nixd = {
|
||||
settings = {
|
||||
nixd = {
|
||||
formatting = {
|
||||
command = { "nixfmt" }
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"stevearc/conform.nvim",
|
||||
opts = {
|
||||
format = {
|
||||
lsp_format = "first"
|
||||
},
|
||||
formatters_by_ft = {
|
||||
nix = { "nixfmt" },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
36
modules/editor/vim/lua/plugins/opencode.lua
Normal file
36
modules/editor/vim/lua/plugins/opencode.lua
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
return {
|
||||
"NickvanDyke/opencode.nvim",
|
||||
config = function()
|
||||
---@type opencode.Opts
|
||||
vim.g.opencode_opts = {
|
||||
provider = {
|
||||
enabled = "kitty",
|
||||
kitty = {
|
||||
location = "tab"
|
||||
}
|
||||
},
|
||||
events = {
|
||||
permissions = {
|
||||
enabled = false
|
||||
}
|
||||
}
|
||||
}
|
||||
vim.o.autoread = true
|
||||
|
||||
vim.keymap.set({ "n", "x" }, "<leader>aa", function()
|
||||
require("opencode").ask("@this: ", { submit = true })
|
||||
end, { desc = "Ask opencode" })
|
||||
|
||||
vim.keymap.set({ "n", "x" }, "<leader>ao", function()
|
||||
require("opencode").select()
|
||||
end, { desc = "Execute opencode action…" })
|
||||
|
||||
vim.keymap.set({ "n", "x" }, "<leader>as", function()
|
||||
require("opencode").prompt("@this")
|
||||
end, { desc = "Add to opencode" })
|
||||
|
||||
vim.keymap.set({ "n", "t" }, "<leader>a.", function()
|
||||
require("opencode").toggle()
|
||||
end, { desc = "Toggle opencode" })
|
||||
end,
|
||||
}
|
||||
11
modules/editor/vim/lua/plugins/treesitter.lua
Normal file
11
modules/editor/vim/lua/plugins/treesitter.lua
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
return {
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = {
|
||||
auto_install = false,
|
||||
sync_install = false,
|
||||
ensure_installed = {},
|
||||
parser_install_dir = vim.fs.joinpath(vim.fn.stdpath('data'), 'site'),
|
||||
},
|
||||
},
|
||||
}
|
||||
21
modules/editor/vim/lua/plugins/yazi.lua
Normal file
21
modules/editor/vim/lua/plugins/yazi.lua
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
return {
|
||||
{
|
||||
"mikavilpas/yazi.nvim",
|
||||
event = "VeryLazy",
|
||||
keys = {
|
||||
{
|
||||
"<leader>.",
|
||||
function()
|
||||
require("yazi").yazi()
|
||||
end,
|
||||
desc = "Open the file manager",
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
open_for_directories = true,
|
||||
},
|
||||
config = function(opts)
|
||||
require('yazi').setup(opts)
|
||||
end,
|
||||
}
|
||||
}
|
||||
52
modules/editor/vim/lua/plugins/zk.lua
Normal file
52
modules/editor/vim/lua/plugins/zk.lua
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
return {
|
||||
"zk-org/zk-nvim",
|
||||
keys = {
|
||||
{
|
||||
"<leader>zn",
|
||||
"<Cmd>ZkNew { title = vim.fn.input('Title: ') }<CR>",
|
||||
desc = "Create a new note after asking for its title"
|
||||
},
|
||||
{
|
||||
"<leader>zo",
|
||||
"<Cmd>ZkNotes { sort = { 'modified' } }<CR>",
|
||||
desc = "Open Notes"
|
||||
},
|
||||
{
|
||||
"<leader>zt",
|
||||
"<Cmd>ZkTags<CR>",
|
||||
desc = "Open notes associated with the selected tags"
|
||||
},
|
||||
{
|
||||
"<leader>zf",
|
||||
"<Cmd>ZkNotes { sort = { 'modified' }, match = { vim.fn.input('Search: ') } }<CR>",
|
||||
desc = "Search for the notes matching a given query"
|
||||
},
|
||||
{
|
||||
"<leader>zf",
|
||||
":'<,'>ZkMatch<CR>",
|
||||
mode = { "v" },
|
||||
desc = "Search for the notes matching the current visual selection"
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require("zk").setup({
|
||||
picker = "fzf_lua",
|
||||
|
||||
lsp = {
|
||||
-- `config` is passed to `vim.lsp.start(config)`
|
||||
config = {
|
||||
name = "zk",
|
||||
cmd = { "zk", "lsp" },
|
||||
filetypes = { "markdown" },
|
||||
-- on_attach = ...
|
||||
-- etc, see `:h vim.lsp.start()`
|
||||
},
|
||||
|
||||
-- automatically attach buffers in a zk notebook that match the given filetypes
|
||||
auto_attach = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
313
modules/editor/vim/vim.nix
Normal file
313
modules/editor/vim/vim.nix
Normal file
|
|
@ -0,0 +1,313 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.editor.vim;
|
||||
in
|
||||
{
|
||||
options.modules.editor.vim = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} =
|
||||
{ config, ... }:
|
||||
{
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
package = pkgs.neovim-unwrapped;
|
||||
vimAlias = true;
|
||||
vimdiffAlias = true;
|
||||
withNodeJs = true;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# base distro
|
||||
LazyVim
|
||||
conform-nvim
|
||||
nvim-lint
|
||||
markdown-preview-nvim
|
||||
render-markdown-nvim
|
||||
|
||||
# theme
|
||||
gruvbox-nvim
|
||||
|
||||
# UI
|
||||
bufferline-nvim
|
||||
gitsigns-nvim
|
||||
neogit
|
||||
diffview-nvim
|
||||
edgy-nvim
|
||||
dashboard-nvim
|
||||
toggleterm-nvim
|
||||
trouble-nvim
|
||||
lualine-nvim
|
||||
which-key-nvim
|
||||
nvim-web-devicons
|
||||
mini-nvim
|
||||
mini-ai
|
||||
mini-comment
|
||||
mini-icons
|
||||
mini-pairs
|
||||
noice-nvim
|
||||
nui-nvim
|
||||
nvim-notify
|
||||
nvim-lsp-notify
|
||||
neo-tree-nvim
|
||||
nvim-navic
|
||||
dressing-nvim
|
||||
aerial-nvim
|
||||
snacks-nvim
|
||||
|
||||
# project management
|
||||
project-nvim
|
||||
neoconf-nvim
|
||||
persistence-nvim
|
||||
|
||||
# smart typing
|
||||
guess-indent-nvim
|
||||
vim-illuminate
|
||||
|
||||
# LSP
|
||||
nvim-lspconfig
|
||||
nvim-lightbulb # lightbulb for quick actions
|
||||
# nvim-code-action-menu # code action menu
|
||||
neodev-nvim
|
||||
SchemaStore-nvim # load known formats for json and yaml
|
||||
nvim-metals
|
||||
nvim-jdtls
|
||||
|
||||
# cmp plugins
|
||||
nvim-cmp
|
||||
blink-cmp # completion plugin
|
||||
cmp_luasnip # snipper completions
|
||||
|
||||
# snippets
|
||||
luasnip # snippet engine
|
||||
friendly-snippets # a bunch of snippets to use
|
||||
|
||||
# search functionality
|
||||
plenary-nvim
|
||||
telescope-nvim
|
||||
telescope-fzf-native-nvim
|
||||
fzf-lua
|
||||
grug-far-nvim
|
||||
flash-nvim
|
||||
|
||||
# treesitter
|
||||
nvim-treesitter-context
|
||||
nvim-ts-autotag
|
||||
nvim-treesitter-textobjects
|
||||
nvim-treesitter.withAllGrammars
|
||||
|
||||
# comments
|
||||
ts-comments-nvim
|
||||
nvim-ts-context-commentstring
|
||||
todo-comments-nvim
|
||||
|
||||
# leap
|
||||
vim-repeat
|
||||
leap-nvim
|
||||
flit-nvim
|
||||
|
||||
# DAP
|
||||
nvim-dap
|
||||
nvim-dap-ui
|
||||
nvim-dap-virtual-text
|
||||
one-small-step-for-vimkind
|
||||
|
||||
# neotest
|
||||
neotest
|
||||
neotest-rust
|
||||
neotest-elixir
|
||||
|
||||
# SQL
|
||||
vim-dadbod
|
||||
vim-dadbod-ui
|
||||
vim-dadbod-completion
|
||||
|
||||
lazy-nvim
|
||||
lazydev-nvim
|
||||
vim-startuptime
|
||||
yazi-nvim
|
||||
zk-nvim
|
||||
|
||||
(pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "opencode.nvim";
|
||||
version = "2025-12-04";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "NickvanDyke";
|
||||
repo = "opencode.nvim";
|
||||
rev = "963fad75f794deb85d1c310d2e2cb033da44f670";
|
||||
hash = "sha256-nKOsHgMptHnOS+SCTHa77sQ/ZiUY0aW26I8GN7ocRHE=";
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
gcc # needed for nvim-treesitter
|
||||
|
||||
# HTML, CSS, JSON
|
||||
vscode-langservers-extracted
|
||||
|
||||
# Nix
|
||||
nixd
|
||||
statix
|
||||
nixfmt-rfc-style
|
||||
|
||||
# SQL
|
||||
sqlfluff
|
||||
|
||||
# LazyVim defaults
|
||||
stylua
|
||||
shfmt
|
||||
|
||||
# Markdown extra
|
||||
markdownlint-cli2
|
||||
marksman
|
||||
|
||||
# Docker extra
|
||||
dockerfile-language-server
|
||||
hadolint
|
||||
docker-compose-language-service
|
||||
|
||||
# JSON and YAML extras
|
||||
nodePackages.yaml-language-server
|
||||
|
||||
# Java
|
||||
jdt-language-server
|
||||
|
||||
# Elixir
|
||||
beam28Packages.elixir-ls
|
||||
|
||||
# Custom
|
||||
editorconfig-checker
|
||||
shellcheck
|
||||
];
|
||||
|
||||
extraLuaConfig = # lua
|
||||
''
|
||||
require("gruvbox").setup({
|
||||
overrides = {
|
||||
Include = { ["link"] = "GruvboxRed" },
|
||||
["@constructor"] = { ["link"] = "GruvboxYellow" },
|
||||
["@function.builtin"] = { ["link"] = "GruvboxFg1" },
|
||||
["@function.call"] = { ["link"] = "GruvboxFg1" },
|
||||
["@function.macro"] = { ["link"] = "GruvboxFg1" },
|
||||
["@function.method.call.scala"] = { ["link"] = "GruvboxFg1" },
|
||||
["@method.call"] = { ["link"] = "GruvboxFg1" },
|
||||
["@variable.member.scala"] = { ["link"] = "GruvboxFg1" },
|
||||
["@lsp.type.type.scala"] = { ["link"] = "" },
|
||||
["@lsp.type.method.scala"] = { ["link"] = "" },
|
||||
["@lsp.type.modifier.scala"] = { ["link"] = "GruvboxOrange" },
|
||||
["@lsp.type.typeParameter.scala"] = { ["link"] = "GruvboxAqua" },
|
||||
["@lsp.type.type.nix"] = { ["link"] = "" },
|
||||
["@lsp.type.method.nix"] = { ["link"] = "" },
|
||||
["@lsp.type.macro.nix"] = { ["link"] = "" },
|
||||
["@lsp.type.interface.nix"] = { ["link"] = "" },
|
||||
},
|
||||
})
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import any extras modules here
|
||||
{ import = "lazyvim.plugins.extras.dap.core" },
|
||||
{ import = "lazyvim.plugins.extras.dap.nlua" },
|
||||
{ import = "lazyvim.plugins.extras.ui.edgy" },
|
||||
{ import = "lazyvim.plugins.extras.coding.mini-comment" },
|
||||
{ import = "lazyvim.plugins.extras.editor.aerial" },
|
||||
{ import = "lazyvim.plugins.extras.editor.leap" },
|
||||
{ import = "lazyvim.plugins.extras.editor.navic" },
|
||||
{ import = "lazyvim.plugins.extras.formatting.prettier" },
|
||||
{ import = "lazyvim.plugins.extras.lang.angular" },
|
||||
{ import = "lazyvim.plugins.extras.lang.docker" },
|
||||
{ import = "lazyvim.plugins.extras.lang.java" },
|
||||
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||
{ import = "lazyvim.plugins.extras.lang.markdown" },
|
||||
{ import = "lazyvim.plugins.extras.lang.sql" },
|
||||
{ import = "lazyvim.plugins.extras.lang.yaml" },
|
||||
{ import = "lazyvim.plugins.extras.lang.scala" },
|
||||
{ import = "lazyvim.plugins.extras.lang.elixir" },
|
||||
{ import = "lazyvim.plugins.extras.test.core" },
|
||||
{ import = "lazyvim.plugins.extras.lang.typescript" },
|
||||
-- import/override with your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||
lazy = false,
|
||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||
-- have outdated releases, which may break your Neovim install.
|
||||
version = false, -- always use the latest git commit
|
||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||
},
|
||||
performance = {
|
||||
-- Used for NixOS
|
||||
reset_packpath = false,
|
||||
rtp = {
|
||||
reset = false,
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
-- "matchit",
|
||||
-- "matchparen",
|
||||
-- "netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
}
|
||||
},
|
||||
dev = {
|
||||
path = "${pkgs.vimUtils.packDir config.programs.neovim.finalPackage.passthru.packpathDirs}/pack/myNeovimPackages/start",
|
||||
patterns = {""},
|
||||
},
|
||||
install = {
|
||||
missing = false,
|
||||
},
|
||||
})
|
||||
'';
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/lua" = {
|
||||
recursive = true;
|
||||
source = ./lua;
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
ZK_NOTEBOOK_DIR = "${config.home.homeDirectory}/Nextcloud/notes";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
ripgrep
|
||||
fd
|
||||
nodejs
|
||||
opentofu
|
||||
coursier
|
||||
|
||||
# LSP
|
||||
yaml-language-server
|
||||
typos-lsp
|
||||
nodePackages.typescript-language-server
|
||||
nodePackages.prettier
|
||||
terraform-ls
|
||||
sqls
|
||||
nixd
|
||||
marksman
|
||||
lua-language-server
|
||||
docker-compose-language-service
|
||||
bash-language-server
|
||||
angular-language-server
|
||||
vtsls
|
||||
zk
|
||||
metals
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +1,19 @@
|
|||
{ options, config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.hardware.audio;
|
||||
in {
|
||||
options.modules.hardware.audio = { enable = mkBoolOpt false; };
|
||||
let
|
||||
cfg = config.modules.hardware.audio;
|
||||
in
|
||||
{
|
||||
options.modules.hardware.audio = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
sound.enable = true;
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
security.rtkit.enable = true;
|
||||
|
||||
|
|
@ -17,7 +23,7 @@ in {
|
|||
};
|
||||
|
||||
home-manager.users.${config.user.name} = {
|
||||
home.packages = with pkgs.unstable; [ pulsemixer ];
|
||||
home.packages = [ pkgs.pulsemixer ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +1,29 @@
|
|||
{ options, config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.media.emulators;
|
||||
in {
|
||||
let
|
||||
cfg = config.modules.media.emulators;
|
||||
in
|
||||
{
|
||||
options.modules.media.emulators = {
|
||||
psx.enable = mkBoolOpt false; # Playstation
|
||||
ds.enable = mkBoolOpt false; # Nintendo DS
|
||||
gc.enable = mkBoolOpt false; # GameCube
|
||||
gb.enable = mkBoolOpt false; # GameBoy + GameBoy Color
|
||||
gba.enable = mkBoolOpt false; # GameBoy Advance
|
||||
snes.enable = mkBoolOpt false; # Super Nintendo
|
||||
psx.enable = lib.my.mkBoolOpt false; # Playstation
|
||||
ds.enable = lib.my.mkBoolOpt false; # Nintendo DS
|
||||
gc.enable = lib.my.mkBoolOpt false; # GameCube
|
||||
gb.enable = lib.my.mkBoolOpt false; # GameBoy + GameBoy Color
|
||||
gba.enable = lib.my.mkBoolOpt false; # GameBoy Advance
|
||||
snes.enable = lib.my.mkBoolOpt false; # Super Nintendo
|
||||
};
|
||||
|
||||
config = {
|
||||
user.packages = with pkgs; [
|
||||
(mkIf cfg.psx.enable duckstation)
|
||||
(mkIf cfg.ds.enable desmume)
|
||||
(mkIf cfg.gc.enable dolphinEmu)
|
||||
(mkIf (cfg.gba.enable || cfg.gb.enable || cfg.snes.enable) higan)
|
||||
user.packages = [
|
||||
(lib.mkIf cfg.psx.enable pkgs.duckstation)
|
||||
(lib.mkIf cfg.ds.enable pkgs.desmume)
|
||||
(lib.mkIf cfg.gc.enable pkgs.dolphin-emu)
|
||||
(lib.mkIf (cfg.gba.enable || cfg.gb.enable || cfg.snes.enable) pkgs.higan)
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,44 @@
|
|||
{ options, config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.media;
|
||||
in {
|
||||
let
|
||||
cfg = config.modules.media;
|
||||
in
|
||||
{
|
||||
options.modules.media = {
|
||||
steam.enable = mkBoolOpt false;
|
||||
lutris.enable = mkBoolOpt false;
|
||||
steam.enable = lib.my.mkBoolOpt false;
|
||||
lutris.enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = {
|
||||
user.packages = with pkgs; [
|
||||
(mkIf cfg.steam.enable steam)
|
||||
(mkIf cfg.lutris.enable lutris)
|
||||
(mkIf cfg.lutris.enable wine)
|
||||
(mkIf (cfg.steam.enable || cfg.lutris.enable) protontricks)
|
||||
config = lib.mkMerge [
|
||||
{
|
||||
user.packages = [
|
||||
(lib.mkIf cfg.lutris.enable pkgs.lutris)
|
||||
(lib.mkIf cfg.lutris.enable pkgs.wine)
|
||||
(lib.mkIf (cfg.steam.enable || cfg.lutris.enable) pkgs.protontricks)
|
||||
];
|
||||
}
|
||||
(lib.mkIf cfg.steam.enable {
|
||||
hardware.steam-hardware.enable = true;
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
protontricks.enable = true;
|
||||
};
|
||||
})
|
||||
(lib.mkIf (cfg.steam.enable || cfg.lutris.enable) {
|
||||
programs.gamemode = {
|
||||
enable = true;
|
||||
enableRenice = true;
|
||||
};
|
||||
home-manager.users.${config.user.name} = {
|
||||
programs.mangohud = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
41
modules/media/mopidy.nix
Normal file
41
modules/media/mopidy.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.media.mopidy;
|
||||
in
|
||||
{
|
||||
options.modules.media.mopidy = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} =
|
||||
{ ... }:
|
||||
{
|
||||
services.mopidy = {
|
||||
enable = true;
|
||||
extensionPackages = with pkgs; [
|
||||
mopidy-mpd
|
||||
mopidy-subidy
|
||||
];
|
||||
settings = {
|
||||
mpd = {
|
||||
enabled = true;
|
||||
hostname = "0.0.0.0";
|
||||
port = "6600";
|
||||
};
|
||||
subidy = {
|
||||
url = "https://cloud.banditlair.com/apps/music/subsonic";
|
||||
username = "paultrial";
|
||||
password = "oEcMsam5uo8k";
|
||||
legacy_auth = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,12 +1,16 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.media.mpd;
|
||||
in {
|
||||
options.modules.media.mpd = { enable = mkBoolOpt false; };
|
||||
config = mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = { config, ... }: {
|
||||
let
|
||||
cfg = config.modules.media.mpd;
|
||||
in
|
||||
{
|
||||
options.modules.media.mpd = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} =
|
||||
{ config, ... }:
|
||||
{
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
network.listenAddress = "any";
|
||||
|
|
|
|||
|
|
@ -1,18 +1,32 @@
|
|||
{ inputs, config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let cfg = config.modules.media.ncmpcpp;
|
||||
in {
|
||||
options.modules.media.ncmpcpp = { enable = mkBoolOpt false; };
|
||||
let
|
||||
cfg = config.modules.media.ncmpcpp;
|
||||
in
|
||||
{
|
||||
options.modules.media.ncmpcpp = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.user.name} = {
|
||||
|
||||
home = {
|
||||
packages = with pkgs.unstable; [
|
||||
packages = with pkgs; [
|
||||
(
|
||||
(ncmpcpp.override { visualizerSupport = true; })
|
||||
mpc_cli
|
||||
# Duplicate fix until it makes its way in unstable
|
||||
.overrideAttrs
|
||||
(old: {
|
||||
configureFlags = old.configureFlags ++ [ (lib.withFeatureAs true "boost" boost.dev) ];
|
||||
})
|
||||
)
|
||||
mpc
|
||||
];
|
||||
|
||||
file.".config/ncmpcpp/config".source = ./config;
|
||||
|
|
|
|||
|
|
@ -1,19 +1,28 @@
|
|||
{ config, options, lib, home-manager, ... }:
|
||||
{
|
||||
config,
|
||||
options,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my; {
|
||||
options = with types; { user = mkOpt attrs { }; };
|
||||
{
|
||||
options = {
|
||||
user = lib.my.mkOpt lib.types.attrs { };
|
||||
};
|
||||
|
||||
config = {
|
||||
|
||||
user = {
|
||||
name = "froidmpa";
|
||||
name = lib.mkDefault "froidmpa";
|
||||
description = "The primary user account";
|
||||
extraGroups = [ "wheel" "adbusers" ];
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"adbusers"
|
||||
];
|
||||
isNormalUser = true;
|
||||
};
|
||||
|
||||
users.users.${config.user.name} = mkAliasDefinitions options.user;
|
||||
users.users.${config.user.name} = lib.mkAliasDefinitions options.user;
|
||||
|
||||
home-manager = {
|
||||
useUserPackages = true;
|
||||
|
|
@ -21,7 +30,7 @@ with lib.my; {
|
|||
users.${config.user.name} = {
|
||||
home = {
|
||||
enableNixpkgsReleaseCheck = true;
|
||||
stateVersion = config.system.stateVersion;
|
||||
inherit (config.system) stateVersion;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,13 +1,19 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let
|
||||
cfg = config.modules.services.belgian-eid;
|
||||
in
|
||||
{
|
||||
options.modules.services.belgian-eid = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
let cfg = config.modules.services.belgian-eid;
|
||||
in {
|
||||
options.modules.services.belgian-eid = { enable = mkBoolOpt false; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
services.pcscd.enable = true;
|
||||
|
||||
|
|
|
|||
32
modules/services/certs/Foyer-Group-Root-CA.crt
Normal file
32
modules/services/certs/Foyer-Group-Root-CA.crt
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFYzCCA0ugAwIBAgIQGdeAPz782qlMfDK9Mp+7DjANBgkqhkiG9w0BAQsFADAe
|
||||
MRwwGgYDVQQDExNGb3llci1Hcm91cC1Sb290LUNBMB4XDTE5MDIxMjEyNDAzN1oX
|
||||
DTM5MDIxMjEyNTAzMlowHjEcMBoGA1UEAxMTRm95ZXItR3JvdXAtUm9vdC1DQTCC
|
||||
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1B7QRo9beAqb8aFGqGBlya
|
||||
veWDPu/0ZdF4v+GCspw2AvQx9EQW373QLxa9bdnbHmij8tah/hvLaYUksRl/0kbZ
|
||||
Gik6O8caY+06a3dYwpQkOCjV2tHoPiTsZUyg5hdsQYIvZXmtXlA+qcDc+N5WjPjU
|
||||
4/KY/kgJNCQBh7DM2OziE6SQMn+i+iKiIuJlCT8Q03Y3FZR0n4aOW90YGYKoISh8
|
||||
VKuacw0D22MvxhZX8X6zIuMpH8vEXsMwIcCBENEowi0bCye5Aj1Jeyw0mLRUaDfE
|
||||
aKxFZedrAC3pZKvX9SKLqMPM/NZLgK9WTbTG1c4KrRa1S/OKrUp36y4fgdgEjvPU
|
||||
WtDaGBSDOqVqylLC5FnJjYEJESQcuOzhiJyYqZY9Cme/9QoiAmPxAVjTFZVBVyJ/
|
||||
0r6JVygBYS5l3BbV7hJ76aVHrwy4f/CuHlnaIpax99wljvgf0QFEyXHGgzOu8tmc
|
||||
g08OhlwfydSttMrsrj1wLrOTYbGLek4l4G7hJrtbqV3M0U4lforXhEFl/PWTeh7u
|
||||
ytgW7RAqC/kCUVFPgZzcgAsFXJHPAhEGjMN8//eY13tn9D9dy8kxGYt+PMHWaPdH
|
||||
ZYEOrPXogQB8iU0Z7g9pjzX/GPjcsJG6wr2D8yhFmfkanKE3Q7x5xJoeATswpnT5
|
||||
gYBYJ8EMnQnSydjR/0pbAgMBAAGjgZwwgZkwDgYDVR0PAQH/BAQDAgEGMBIGA1Ud
|
||||
EwEB/wQIMAYBAf8CAQIwHQYDVR0OBBYEFNZ6BPnRJmRv4hzKAOWlKzYBvH8cMFQG
|
||||
A1UdIARNMEswSQYJKwYBBAGCnDkBMDwwOgYIKwYBBQUHAgIwLh4sAEwAZQBnAGEA
|
||||
bAAgAFAAbwBsAGkAYwB5ACAAUwB0AGEAdABlAG0AZQBuAHQwDQYJKoZIhvcNAQEL
|
||||
BQADggIBAEwuHKngSP8SxCQ0qCWM1uLCdLdpdHnn4WftOczJTotXA8RZvdKQn5N2
|
||||
BNR8PI3tQ7aauPB/0YNfaGDaDdg2g1is/1Oh0PFaN4mYcbZIJr6El+IDdcPcGngQ
|
||||
YZYHtXqJ3y82uVM1A8cWPfx44MT5eMoK9sqpaZJaQM12BkhYkUYiAn2qaIRHrj4d
|
||||
xa3mmuxUqNmxiVcFPv357TvmuGsbmgbtLE+zRzhNStoE3VNd0Efl7wYD84UpKB2x
|
||||
hC/V5AD+FXwleDdCz2o+U1IjBnBos+cksqsJiLvYg2Fn4C4rRD/bYanOSP3Lh4ll
|
||||
eHnXOuRDgJLyZj3MRTZl9LD5czxU+pk/luNgJyGiAuykVhcr52PKybxXYCnQmiXw
|
||||
uCS8DYNjth4uSWIQqPGiNsTerdDsGUFQznTblT5e9ZArXwsa+iGno0AIUPmg08EW
|
||||
/twNdm0NSVM2tzVoKsUJxNO0GwE+j4NLGdZgxs5NlpmlKqCVK+YX4XHkbfFMu5Z3
|
||||
Tl+QnLP+XbKej08mO6r8IEmJmnjKvpXOYxme9XCyAeArzrhvIwMfA0Qvy2qpTaBW
|
||||
WdCWCiVe2F3L3e0afsfIZ/QOApjgU0tT2iz+2cPfVYHMve0RES3CGjdMCN8WHOKt
|
||||
w654Qw7ZrChUoLsPfjyhlHUB7UipQtIDT79QFxtqdi+HWTO/59Wl
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
40
modules/services/certs/Foyer-Sub-CA.crt
Normal file
40
modules/services/certs/Foyer-Sub-CA.crt
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIG5zCCBM+gAwIBAgITZQAAAAgE68Dg5FuAUQAAAAAACDANBgkqhkiG9w0BAQsF
|
||||
ADAeMRwwGgYDVQQDExNGb3llci1Hcm91cC1Sb290LUNBMB4XDTE5MDIxMjE1MjYx
|
||||
N1oXDTI5MDIxMjE1MzYxN1owRDESMBAGCgmSJomT8ixkARkWAmx1MRcwFQYKCZIm
|
||||
iZPyLGQBGRYHbGVmb3llcjEVMBMGA1UEAxMMRm95ZXItU3ViLUNBMIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2lTHYcFx1SjtRKaKKYUwlZBd2PCt9D+D
|
||||
qdn7qwgL8sEFSvydfIWTyq8fI4VLvjCg93G7hdK/+IKvBMuExNaUXAwquyJ7Xfez
|
||||
sWPXSpCS9k8LbNpBcTQrjY6vi7ldtaveZlngzwTQ2DMj2jBcEecZCtSYjpF4Tvqd
|
||||
up9U0wmzJP447cxWg+9PvU8dnt2oipeZLGjh2CjQfm26yrKse/1hEtaBkmeDo9ko
|
||||
zWEiuJUjoYZ8Zi82iDftW2nwBK/4QBDPYXEcWcL2O+Y4lY5ccgQupqTIrKNuDlU0
|
||||
lUBaLWeiHH+arMACi8V2PtXssFaG/FOL5IiQrqDOwQTpxUPy5AGF7wIDAQABo4IC
|
||||
9jCCAvIwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFKkHvhdxLAGlvxPEzggz
|
||||
LfoVCNLRMFQGA1UdIARNMEswSQYJKwYBBAGCnDkBMDwwOgYIKwYBBQUHAgIwLh4s
|
||||
AEwAZQBnAGEAbAAgAFAAbwBsAGkAYwB5ACAAUwB0AGEAdABlAG0AZQBuAHQwGQYJ
|
||||
KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMBIGA1UdEwEB/wQI
|
||||
MAYBAf8CAQAwHwYDVR0jBBgwFoAU1noE+dEmZG/iHMoA5aUrNgG8fxwwggEKBgNV
|
||||
HR8EggEBMIH+MIH7oIH4oIH1hoHFbGRhcDovLy9DTj1Gb3llci1Hcm91cC1Sb290
|
||||
LUNBLENOPUZveWVyLUdyb3VwLVJvb3QtQ0EsQ049Q0RQLENOPVB1YmxpYyUyMEtl
|
||||
eSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9bGVm
|
||||
b3llcixEQz1sdT9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0
|
||||
Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnSGK2h0dHA6Ly9jcmwuZm95ZXIubHUv
|
||||
Rm95ZXItR3JvdXAtUm9vdC1DQS5jcmwwgf0GCCsGAQUFBwEBBIHwMIHtMIGxBggr
|
||||
BgEFBQcwAoaBpGxkYXA6Ly8vQ049Rm95ZXItR3JvdXAtUm9vdC1DQSxDTj1BSUEs
|
||||
Q049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmln
|
||||
dXJhdGlvbixEQz1sZWZveWVyLERDPWx1P2NBQ2VydGlmaWNhdGU/YmFzZT9vYmpl
|
||||
Y3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MDcGCCsGAQUFBzAChitodHRw
|
||||
Oi8vYWlhLmZveWVyLmx1L0ZveWVyLUdyb3VwLVJvb3QtQ0EuY3J0MA0GCSqGSIb3
|
||||
DQEBCwUAA4ICAQC0RdvBmQkEjTpP0VzBYojCnYBytzU/1eDtOS3t7vB7dRA6oo65
|
||||
nqjUXvf5jKUD3WA7bZoBL5WO9TFlzyKgPyfGaDks20vS4Xl/bdsq9Cv9wjoenrfa
|
||||
lTExbZ9u5+UgzY0dnjkJV6cUEx0v6dujviTgwyLPOL3/5JulkwmKb8tcuUedS0GP
|
||||
MbshL7J73IJ7t5ZwZkJMZ2fAQEsmGjWYupe9vdKCs4WDPiNrw9zU3seuWH5dWqfS
|
||||
0bO6QROc8Zqrd/+ZE7quxNFw8j/DtTrq+5Xg+uCOV6nGN6ANLbcF1DO6S8mmzXlF
|
||||
2cPO3UffxCKpM+3zg+NFfOS5S7H71lxm+SgD7Qf0SPxxDOUC3p3urmAKHWvvihfc
|
||||
Ttd9MOTcF5hi2Edl2NGrORxksnLAyOkPg/9H+JdL0J1h8RrkPhhl87fmQd1VONdP
|
||||
D8n4/r0hD4RuhWQtih/b/Ode3b2NjW77rHd+5/kHdFAQKoJwXZ2kulJ7ANtT2DkW
|
||||
hpzdvkhxOchnh39E2PEH6WiMAeKHXHgqGXqiGAWoLvIvk/ciP5VG3m/Nly9J2A7f
|
||||
C8OhpoJcExnxrL1rHH+QWO3wVvbYrtKSsKqMqS7Bu8gWsAbEw8HpXgdO5TyJ3RHM
|
||||
yql2gDHKnbshIff/7tjPNwk5mttAPHtignx/MvOnRmnJvpug31v0UVEcig==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
BIN
modules/services/certs/cacerts
Normal file
BIN
modules/services/certs/cacerts
Normal file
Binary file not shown.
|
|
@ -1,19 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let
|
||||
cfg = config.modules.services.docker;
|
||||
in
|
||||
{
|
||||
options.modules.services.docker = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
let cfg = config.modules.services.docker;
|
||||
in {
|
||||
options.modules.services.docker = { enable = mkBoolOpt false; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
virtualisation = {
|
||||
docker = {
|
||||
enable = true;
|
||||
autoPrune.enable = true;
|
||||
enableOnBoot = mkDefault false;
|
||||
enableOnBoot = lib.mkDefault false;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,19 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let
|
||||
cfg = config.modules.services.flatpak;
|
||||
in
|
||||
{
|
||||
options.modules.services.flatpak = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
let cfg = config.modules.services.flatpak;
|
||||
in {
|
||||
options.modules.services.flatpak = { enable = mkBoolOpt false; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.flatpak.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
|
|
|
|||
57
modules/services/kanata.nix
Normal file
57
modules/services/kanata.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.services.kanata;
|
||||
in
|
||||
{
|
||||
options.modules.services.kanata = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.kanata = {
|
||||
enable = true;
|
||||
keyboards.laptop.config = ''
|
||||
;; QWERTY-shaped matrix; works for AZERTY because Kanata uses scancodes.
|
||||
(defsrc
|
||||
esc 1 2 3 4 5 6 7 8 9 0 - = bspc
|
||||
tab q w e r t y u i o p [ ] \
|
||||
caps a s d f g h j k l ; ' ret
|
||||
lsft z x c v b n m , . / rsft
|
||||
lctl lmet lalt spc ralt rmet rctl
|
||||
)
|
||||
|
||||
(defvar
|
||||
tap-time 150
|
||||
hold-time 200
|
||||
)
|
||||
|
||||
;; Home-row mod-taps (tap sends the letter; hold sends the modifier)
|
||||
(defalias
|
||||
a-alt (tap-hold $tap-time $hold-time a lalt)
|
||||
s-ctl (tap-hold $tap-time $hold-time s lctl)
|
||||
d-sft (tap-hold $tap-time $hold-time d lsft)
|
||||
f-met (tap-hold $tap-time $hold-time f lmet)
|
||||
|
||||
j-met (tap-hold $tap-time $hold-time j rmet)
|
||||
k-sft (tap-hold $tap-time $hold-time k rsft)
|
||||
l-ctl (tap-hold $tap-time $hold-time l rctl)
|
||||
;-alt (tap-hold $tap-time $hold-time ; ralt)
|
||||
)
|
||||
|
||||
(deflayer main
|
||||
esc 1 2 3 4 5 6 7 8 9 0 - = bspc
|
||||
tab q w e r t y u i o p [ ] \
|
||||
caps @a-alt @s-ctl @d-sft @f-met g h @j-met @k-sft @l-ctl @;-alt ' ret
|
||||
lsft z x c v b n m , . / rsft
|
||||
lctl lmet lalt spc ralt rmet rctl
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +1,14 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let
|
||||
cfg = config.modules.services.languagetool;
|
||||
in
|
||||
{
|
||||
options.modules.services.languagetool = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
let cfg = config.modules.services.languagetool;
|
||||
in {
|
||||
options.modules.services.languagetool = { enable = mkBoolOpt false; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.languagetool = {
|
||||
enable = true;
|
||||
allowOrigin = "*";
|
||||
|
|
|
|||
|
|
@ -1,13 +1,19 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
with lib.my;
|
||||
let
|
||||
cfg = config.modules.services.libvirt;
|
||||
in
|
||||
{
|
||||
options.modules.services.libvirt = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
let cfg = config.modules.services.libvirt;
|
||||
in {
|
||||
options.modules.services.libvirt = { enable = mkBoolOpt false; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
virtualisation = {
|
||||
libvirtd.enable = true;
|
||||
|
|
|
|||
60
modules/services/work-proxy.nix
Normal file
60
modules/services/work-proxy.nix
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.services.work-proxy;
|
||||
in
|
||||
{
|
||||
options.modules.services.work-proxy = {
|
||||
enable = lib.my.mkBoolOpt false;
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
services.tinyproxy = {
|
||||
enable = true;
|
||||
settings = {
|
||||
LogLevel = "Info";
|
||||
Port = 2345;
|
||||
Upstream = [
|
||||
''upstream http wsl:2345 ".microsoftonline.com"''
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
security.pki.certificateFiles = [
|
||||
"${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
|
||||
./certs/Foyer-Group-Root-CA.crt
|
||||
./certs/Foyer-Sub-CA.crt
|
||||
];
|
||||
|
||||
environment.variables = {
|
||||
JAVAX_NET_SSL_TRUSTSTORE = ./certs/cacerts;
|
||||
JAVA_OPTS = "-Djavax.net.ssl.trustStore=${./certs/cacerts} -Djavax.net.ssl.trustStorePassword=changeit";
|
||||
JAVA_TOOL_OPTIONS = "-Djavax.net.ssl.trustStore=${./certs/cacerts} -Djavax.net.ssl.trustStorePassword=changeit";
|
||||
};
|
||||
|
||||
home-manager.users.${config.user.name} = {
|
||||
home = {
|
||||
file.".sbt/repositories".text = ''
|
||||
[repositories]
|
||||
local
|
||||
maven-local
|
||||
nexus-maven: https://nexus.foyer.lu/repository/mvn-all/
|
||||
nexus-ivy: https://nexus.foyer.lu/repository/ivy-all/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
|
||||
nexus-ivy-sbt: https://nexus.foyer.lu/repository/ivy-all/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[artifact](-[classifier])-[type].[ext]
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
(sbt.override { jre = jdk17; })
|
||||
mongodb-compass
|
||||
chisel
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,3 +1 @@
|
|||
final: prev: {
|
||||
activitywatch-bin = prev.callPackage ./packages/activitywatch.nix { };
|
||||
}
|
||||
final: prev: { activitywatch-bin = prev.callPackage ./packages/activitywatch.nix { }; }
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchzip
|
||||
, autoPatchelfHook
|
||||
, libGL
|
||||
, freetype
|
||||
, libdrm
|
||||
, fontconfig
|
||||
, harfbuzz
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
autoPatchelfHook,
|
||||
libGL,
|
||||
freetype,
|
||||
libdrm,
|
||||
fontconfig,
|
||||
harfbuzz,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
|
@ -18,7 +19,14 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "sha256-4lfUxJTBpjrsRO+pmW7DNKV69tMr2wiarA5Fy4wPgMk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook libGL freetype libdrm fontconfig harfbuzz ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
libGL
|
||||
freetype
|
||||
libdrm
|
||||
fontconfig
|
||||
harfbuzz
|
||||
];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp -r * $out/
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILu2vaezsTNaTY8X4o2mFOmQguPnSAMOoPZRlW2ACAku froidmpa@froidmpa-laptop-2021-06-30
|
||||
1
ssh_keys/phfroidmont-stellaris.pub
Normal file
1
ssh_keys/phfroidmont-stellaris.pub
Normal file
|
|
@ -0,0 +1 @@
|
|||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk6GUenOaMxf0YquxEPubN5zjrfHvqw76IYXxD9NUo6 phfroidmont@stellaris-2025-09-09
|
||||
Loading…
Add table
Add a link
Reference in a new issue