Compare commits
76 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 |
42 changed files with 1723 additions and 1276 deletions
21
common.nix
21
common.nix
|
|
@ -8,24 +8,33 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
] ++ (lib.my.mapModulesRec' (toString ./modules) import);
|
]
|
||||||
|
++ (lib.my.mapModulesRec' (toString ./modules) import);
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.nixFlakes;
|
package = pkgs.nixVersions.stable;
|
||||||
extraOptions = "experimental-features = nix-command flakes";
|
extraOptions = "experimental-features = nix-command flakes";
|
||||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||||
settings = {
|
settings = {
|
||||||
substituters = [
|
substituters = [
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"http://cache.banditlair.com"
|
|
||||||
"https://cache.nixos.org/"
|
"https://cache.nixos.org/"
|
||||||
|
"https://devenv.cachix.org"
|
||||||
|
# "ssh://nix-ssh@hel1.banditlair.com"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"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;
|
auto-optimise-store = true;
|
||||||
};
|
};
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
persistent = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
system.configurationRevision = lib.mkIf (inputs.self ? rev) inputs.self.rev;
|
system.configurationRevision = lib.mkIf (inputs.self ? rev) inputs.self.rev;
|
||||||
|
|
@ -34,6 +43,10 @@
|
||||||
|
|
||||||
i18n.defaultLocale = lib.mkDefault "en_US.UTF-8";
|
i18n.defaultLocale = lib.mkDefault "en_US.UTF-8";
|
||||||
|
|
||||||
|
zramSwap.enable = true;
|
||||||
|
zramSwap.memoryPercent = 300;
|
||||||
|
systemd.oomd.enable = true;
|
||||||
|
|
||||||
console = {
|
console = {
|
||||||
keyMap = lib.mkDefault "fr";
|
keyMap = lib.mkDefault "fr";
|
||||||
font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-v32n.psf.gz";
|
font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-v32n.psf.gz";
|
||||||
|
|
|
||||||
368
flake.lock
generated
368
flake.lock
generated
|
|
@ -1,38 +1,38 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"devshell": {
|
"blueprint": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"llm-agents",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728330715,
|
"lastModified": 1763308703,
|
||||||
"narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
|
"narHash": "sha256-O9Y+Wer8wOh+N+4kcCK5p/VLrXyX+ktk0/s3HdZvJzk=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "devshell",
|
"repo": "blueprint",
|
||||||
"rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
|
"rev": "5a9bba070f801d63e2af3c9ef00b86b212429f4f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "devshell",
|
"repo": "blueprint",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"emacs-overlay": {
|
"emacs-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-stable": "nixpkgs-stable"
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728839477,
|
"lastModified": 1766423654,
|
||||||
"narHash": "sha256-HXWknm3vRHknK0yKdlO1qKFxO6f8lJHaufFekxjL4RY=",
|
"narHash": "sha256-ko2vQ6kf8dXLMTq2bnNazbPAHvdsf+BrWQfr4acRNDo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "emacs-overlay",
|
"repo": "emacs-overlay",
|
||||||
"rev": "1ac99536bb5eb9b2b4fc161bd0651bcbbb36c6d9",
|
"rev": "d06edf59a5f5c1b15d607ec2e514cf2f8a71a591",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -41,140 +41,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"revCount": 57,
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat_2": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727826117,
|
|
||||||
"narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1726560853,
|
|
||||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flameshot-git": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1725222363,
|
|
||||||
"narHash": "sha256-xM99adstwfOOaeecKyWQU3yY0p65pQyFgoz7WJNra98=",
|
|
||||||
"owner": "flameshot-org",
|
|
||||||
"repo": "flameshot",
|
|
||||||
"rev": "14a136777cd82ab70f42c13b4bc9418c756d91d2",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "flameshot-org",
|
|
||||||
"repo": "flameshot",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"git-hooks": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat_2",
|
|
||||||
"gitignore": "gitignore",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"nixpkgs-stable": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1728092656,
|
|
||||||
"narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=",
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "git-hooks.nix",
|
|
||||||
"rev": "1211305a5b237771e13fcca0c51e60ad47326a9a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "git-hooks.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"git-hooks",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709087332,
|
|
||||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -182,11 +48,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728791962,
|
"lastModified": 1766387499,
|
||||||
"narHash": "sha256-nr5QiXwQcZmf6/auC1UpX8iAtINMtdi2mH+OkqJQVmU=",
|
"narHash": "sha256-AjK3/UKDzeXFeYNLVBaJ3+HLE9he1g5UrlNd4/BM3eA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "64c6325b28ebd708653dd41d88f306023f296184",
|
"rev": "527ad07e6625302b648ed3b28c34b62a79bd103e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -196,56 +62,33 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"home-manager_2": {
|
"llm-agents": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"blueprint": "blueprint",
|
||||||
"nixvim",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixpkgs"
|
"treefmt-nix": "treefmt-nix"
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726989464,
|
"lastModified": 1766441132,
|
||||||
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
|
"narHash": "sha256-bd6d2lQiNaIEIjRZo7yFthyYJ8uugnRJfWn8SuOy8i4=",
|
||||||
"owner": "nix-community",
|
"owner": "numtide",
|
||||||
"repo": "home-manager",
|
"repo": "llm-agents.nix",
|
||||||
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
|
"rev": "950a181bbb93b8de506b1db15fec242d273d2c1d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "numtide",
|
||||||
"ref": "release-24.05",
|
"repo": "llm-agents.nix",
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-darwin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727999297,
|
|
||||||
"narHash": "sha256-LTJuQPCsSItZ/8TieFeP30iY+uaLoD0mT0tAj1gLeyQ=",
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "8c8388ade72e58efdeae71b4cbb79e872c23a56b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728492678,
|
"lastModified": 1766309749,
|
||||||
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
|
"narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
|
"rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -257,27 +100,43 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728740863,
|
"lastModified": 1766014764,
|
||||||
"narHash": "sha256-u+rxA79a0lyhG+u+oPBRtTDtzz8kvkc9a6SWSt9ekVc=",
|
"narHash": "sha256-+73VffE5GP5fvbib6Hs1Su6LehG+9UV1Kzs90T2gBLA=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a3f9ad65a0bf298ed5847629a57808b97e6e8077",
|
"rev": "2b0d2b456e4e8452cf1c16d00118d145f31160f9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-24.05",
|
"ref": "nixos-25.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728492678,
|
"lastModified": 1766314097,
|
||||||
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
|
"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",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
|
"rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -287,43 +146,84 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixvim": {
|
"nixpkgs_4": {
|
||||||
"inputs": {
|
|
||||||
"devshell": "devshell",
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"git-hooks": "git-hooks",
|
|
||||||
"home-manager": "home-manager_2",
|
|
||||||
"nix-darwin": "nix-darwin",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728336862,
|
"lastModified": 1766070988,
|
||||||
"narHash": "sha256-0rG55ZD1zvLLJ+WgiYdJBZGm1fkgRUlwpfx7aNUT5m4=",
|
"narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=",
|
||||||
"owner": "nix-community",
|
"owner": "nixos",
|
||||||
"repo": "nixvim",
|
"repo": "nixpkgs",
|
||||||
"rev": "b041963c607d766c4b102b8b56244ad38731f549",
|
"rev": "c6245e83d836d0433170a16eb185cefe0572f8b8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nixos",
|
||||||
"ref": "nixos-24.05",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixvim",
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nvim-treesitter": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766230815,
|
||||||
|
"narHash": "sha256-+2PF6Q2uwRs/gbhKvR4jF8rYhe0HoZfwMwZCoZinp/o=",
|
||||||
|
"owner": "nvim-treesitter",
|
||||||
|
"repo": "nvim-treesitter",
|
||||||
|
"rev": "8cdffc6d334731ce3703b6d870a5a34fd878208a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nvim-treesitter",
|
||||||
|
"ref": "main",
|
||||||
|
"repo": "nvim-treesitter",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nvim-treesitter-main": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"nvim-treesitter": "nvim-treesitter",
|
||||||
|
"nvim-treesitter-textobjects": "nvim-treesitter-textobjects"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766296113,
|
||||||
|
"narHash": "sha256-s6bymukQTFg6kAsgogwbCda+Fe+Su3T9rJE0xZ8s9R0=",
|
||||||
|
"owner": "iofq",
|
||||||
|
"repo": "nvim-treesitter-main",
|
||||||
|
"rev": "5ca3b0dd2d3d00fb597ba8c316eb3ca79ea17fbc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "iofq",
|
||||||
|
"repo": "nvim-treesitter-main",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nvim-treesitter-textobjects": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766243280,
|
||||||
|
"narHash": "sha256-hbVwqoo0WRTVKIhsG5N6IXnmOVrrQzGuE4x0rEMYro0=",
|
||||||
|
"owner": "nvim-treesitter",
|
||||||
|
"repo": "nvim-treesitter-textobjects",
|
||||||
|
"rev": "e91c585ac0ee760198dabc1fad2e6227effdcd5e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nvim-treesitter",
|
||||||
|
"ref": "main",
|
||||||
|
"repo": "nvim-treesitter-textobjects",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"emacs-overlay": "emacs-overlay",
|
"emacs-overlay": "emacs-overlay",
|
||||||
"flameshot-git": "flameshot-git",
|
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"llm-agents": "llm-agents",
|
||||||
"nixvim": "nixvim",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"vim-org-roam": "vim-org-roam",
|
"nvim-treesitter-main": "nvim-treesitter-main",
|
||||||
"vim-yazi": "vim-yazi"
|
"vim-org-roam": "vim-org-roam"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
|
@ -344,16 +244,16 @@
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"llm-agents",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727984844,
|
"lastModified": 1766000401,
|
||||||
"narHash": "sha256-xpRqITAoD8rHlXQafYZOLvUXCF6cnZkPfoq67ThN0Hc=",
|
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "4446c7a6fc0775df028c5a3f6727945ba8400e64",
|
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -365,11 +265,11 @@
|
||||||
"vim-org-roam": {
|
"vim-org-roam": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727183922,
|
"lastModified": 1765802816,
|
||||||
"narHash": "sha256-gONxa/CUXPgV+ucC+WkEyeH/lFAiTaQx8bEBq7g6HyY=",
|
"narHash": "sha256-Zzq4JK3iFBVr8QmMmv5vm/R8QyYqmL44fRMZa15m7eo=",
|
||||||
"owner": "chipsenkbeil",
|
"owner": "chipsenkbeil",
|
||||||
"repo": "org-roam.nvim",
|
"repo": "org-roam.nvim",
|
||||||
"rev": "17f85abf207ece51bd37c8f3490d8f7d2fa106d0",
|
"rev": "74276a94e9e4af463e7ba35c22259eeced9c90f9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -377,22 +277,6 @@
|
||||||
"repo": "org-roam.nvim",
|
"repo": "org-roam.nvim",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"vim-yazi": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1728834368,
|
|
||||||
"narHash": "sha256-hvrtjNkieHFs/VzeEPlI+nkFoTsRX/c32bBOjXPBwpM=",
|
|
||||||
"owner": "mikavilpas",
|
|
||||||
"repo": "yazi.nvim",
|
|
||||||
"rev": "bff42c2ead02675d66e31799d2f3edaba29a4c79",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "mikavilpas",
|
|
||||||
"repo": "yazi.nvim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
|
||||||
27
flake.nix
27
flake.nix
|
|
@ -6,22 +6,13 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
emacs-overlay.url = "github:nix-community/emacs-overlay";
|
emacs-overlay.url = "github:nix-community/emacs-overlay";
|
||||||
nixvim = {
|
|
||||||
url = "github:nix-community/nixvim/nixos-24.05";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
vim-yazi = {
|
|
||||||
url = "github:mikavilpas/yazi.nvim";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
vim-org-roam = {
|
vim-org-roam = {
|
||||||
url = "github:chipsenkbeil/org-roam.nvim";
|
url = "github:chipsenkbeil/org-roam.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
flameshot-git = {
|
llm-agents.url = "github:numtide/llm-agents.nix";
|
||||||
url = "github:flameshot-org/flameshot";
|
# Workaround until nvim-treesitter main branch is used in nixpkgs
|
||||||
flake = false;
|
nvim-treesitter-main.url = "github:iofq/nvim-treesitter-main";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
|
|
@ -42,12 +33,20 @@
|
||||||
config.allowUnfreePredicate =
|
config.allowUnfreePredicate =
|
||||||
pkg:
|
pkg:
|
||||||
builtins.elem (pkgs.lib.getName pkg) [
|
builtins.elem (pkgs.lib.getName pkg) [
|
||||||
"corefonts"
|
|
||||||
"steam"
|
"steam"
|
||||||
"steam-original"
|
"steam-original"
|
||||||
"steam-run"
|
"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 [ ];
|
pkgs = mkPkgs nixpkgs [ ];
|
||||||
|
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./hardware-configuration.nix ];
|
|
||||||
|
|
||||||
modules = {
|
|
||||||
desktop.wm.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} =
|
|
||||||
{ _ }:
|
|
||||||
{
|
|
||||||
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,62 +0,0 @@
|
||||||
{ modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
initrd = {
|
|
||||||
availableKernelModules = [
|
|
||||||
"nvme"
|
|
||||||
"xhci_pci"
|
|
||||||
"sdhci_pci"
|
|
||||||
];
|
|
||||||
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,4 +1,4 @@
|
||||||
{ ... }:
|
{ pkgs, config, ... }:
|
||||||
{
|
{
|
||||||
imports = [ ./hardware-configuration.nix ];
|
imports = [ ./hardware-configuration.nix ];
|
||||||
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
docker.enable = true;
|
docker.enable = true;
|
||||||
libvirt.enable = true;
|
libvirt.enable = true;
|
||||||
languagetool.enable = true;
|
languagetool.enable = true;
|
||||||
|
work-proxy.enable = true;
|
||||||
};
|
};
|
||||||
media = {
|
media = {
|
||||||
mpd.enable = true;
|
mpd.enable = true;
|
||||||
|
|
@ -22,14 +23,67 @@
|
||||||
steam.enable = true;
|
steam.enable = true;
|
||||||
lutris.enable = true;
|
lutris.enable = true;
|
||||||
};
|
};
|
||||||
|
ai.opencode.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
user.name = "froidmpa";
|
||||||
|
|
||||||
programs.kdeconnect.enable = true;
|
programs.kdeconnect.enable = true;
|
||||||
|
|
||||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
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
|
# Allow to externally control MPD
|
||||||
networking.firewall.allowedTCPPorts = [ 6600 ];
|
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";
|
system.stateVersion = "20.09";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
|
|
@ -9,6 +8,7 @@
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
kernelPackages = pkgs.linuxPackages_zen;
|
||||||
initrd.availableKernelModules = [
|
initrd.availableKernelModules = [
|
||||||
"nvme"
|
"nvme"
|
||||||
"xhci_pci"
|
"xhci_pci"
|
||||||
|
|
@ -17,13 +17,6 @@
|
||||||
"sd_mod"
|
"sd_mod"
|
||||||
];
|
];
|
||||||
initrd.kernelModules = [ "amdgpu" ];
|
initrd.kernelModules = [ "amdgpu" ];
|
||||||
# kernelPackages = pkgs.linuxPackages_6_9;
|
|
||||||
|
|
||||||
# Prevents constant crashing in BG3
|
|
||||||
kernelParams = [
|
|
||||||
"amdgpu.mcbp=0"
|
|
||||||
"amdgpu.noretry=0"
|
|
||||||
];
|
|
||||||
|
|
||||||
kernelModules = [ "kvm-amd" ];
|
kernelModules = [ "kvm-amd" ];
|
||||||
extraModulePackages = [ ];
|
extraModulePackages = [ ];
|
||||||
|
|
@ -55,7 +48,10 @@
|
||||||
|
|
||||||
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";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
||||||
|
|
@ -67,13 +63,11 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
enable32Bit = true;
|
enable32Bit = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
rocm-opencl-icd
|
rocmPackages.clr
|
||||||
rocm-opencl-runtime
|
|
||||||
amdvlk
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode = true;
|
||||||
|
|
||||||
services.resolved.dnssec = "false";
|
services.resolved.dnssec = "false";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
users.users.root.openssh.authorizedKeys.keyFiles = [
|
users.users.root.openssh.authorizedKeys.keyFiles = [
|
||||||
../../ssh_keys/phfroidmont-desktop.pub
|
../../ssh_keys/phfroidmont-desktop.pub
|
||||||
../../ssh_keys/phfroidmont-laptop.pub
|
../../ssh_keys/phfroidmont-stellaris.pub
|
||||||
];
|
];
|
||||||
|
|
||||||
services.adguardhome = {
|
services.adguardhome = {
|
||||||
|
|
|
||||||
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -18,7 +18,7 @@ in
|
||||||
|
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.rofi-wayland.override { plugins = [ pkgs.rofi-calc ]; };
|
package = pkgs.rofi.override { plugins = [ pkgs.rofi-calc ]; };
|
||||||
terminal = "kitty";
|
terminal = "kitty";
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
icon-theme = "Paper";
|
icon-theme = "Paper";
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
wallpaper = pkgs.fetchurl {
|
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=";
|
sha256 = "sha256-obKI4qZvucogqRCl51lwV9X8SRaMqcbBwWMfc9TupIo=";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|
@ -18,27 +18,37 @@ in
|
||||||
type = lib.types.path;
|
type = lib.types.path;
|
||||||
default = wallpaper;
|
default = wallpaper;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
defaultBrowser = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "firefox";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.modules.desktop.wm.enable {
|
config = lib.mkIf config.modules.desktop.wm.enable {
|
||||||
|
|
||||||
fonts = {
|
fonts = {
|
||||||
|
enableDefaultPackages = true;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
corefonts # Microsoft free fonts
|
noto-fonts-color-emoji
|
||||||
noto-fonts-emoji
|
|
||||||
meslo-lg
|
meslo-lg
|
||||||
(nerdfonts.override {
|
pkgs.nerd-fonts.meslo-lg
|
||||||
fonts = [
|
pkgs.nerd-fonts.symbols-only
|
||||||
"Meslo"
|
|
||||||
"NerdFontsSymbolsOnly"
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
fontconfig.defaultFonts = {
|
fontconfig.defaultFonts = {
|
||||||
monospace = [ "MesloLGS Nerd Font Mono" ];
|
monospace = [ "MesloLGS Nerd Font Mono" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
security.pam.loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "*";
|
||||||
|
item = "nofile";
|
||||||
|
type = "-";
|
||||||
|
value = "65536";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
programs.adb.enable = true;
|
programs.adb.enable = true;
|
||||||
|
|
||||||
programs.ssh.startAgent = true;
|
programs.ssh.startAgent = true;
|
||||||
|
|
@ -53,7 +63,7 @@ in
|
||||||
gpg-agent = {
|
gpg-agent = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableSshSupport = false;
|
enableSshSupport = false;
|
||||||
pinentryPackage = pkgs.pinentry-gtk2;
|
pinentry.package = pkgs.pinentry-gtk2;
|
||||||
};
|
};
|
||||||
unclutter.enable = true;
|
unclutter.enable = true;
|
||||||
};
|
};
|
||||||
|
|
@ -62,18 +72,31 @@ in
|
||||||
gpg.enable = true;
|
gpg.enable = true;
|
||||||
git = {
|
git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = "Paul-Henri Froidmont";
|
|
||||||
userEmail = "git.contact-57n2p@froidmont.org";
|
|
||||||
signing = {
|
signing = {
|
||||||
key = lib.mkDefault "3AC6F170F01133CE393BCD94BE948AFD7E7873BE";
|
key = lib.mkDefault "3AC6F170F01133CE393BCD94BE948AFD7E7873BE";
|
||||||
signByDefault = true;
|
signByDefault = true;
|
||||||
};
|
};
|
||||||
extraConfig = {
|
settings = {
|
||||||
|
user.name = "Paul-Henri Froidmont";
|
||||||
|
user.email = "git.contact-57n2p@froidmont.org";
|
||||||
init.defaultBranch = "master";
|
init.defaultBranch = "master";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
ssh = {
|
ssh = {
|
||||||
enable = true;
|
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 = ''
|
extraConfig = ''
|
||||||
# Force IPv4 otherwise git will try to use IPv6 which doesn't play well through a VPN
|
# Force IPv4 otherwise git will try to use IPv6 which doesn't play well through a VPN
|
||||||
AddressFamily inet
|
AddressFamily inet
|
||||||
|
|
@ -114,10 +137,10 @@ in
|
||||||
defaultApplications = {
|
defaultApplications = {
|
||||||
"inode/directory" = "joshuto.desktop";
|
"inode/directory" = "joshuto.desktop";
|
||||||
|
|
||||||
"text/html" = "firefox.desktop";
|
"text/html" = "${config.modules.desktop.defaultBrowser}.desktop";
|
||||||
"x-scheme-handler/http" = "firefox.desktop";
|
"x-scheme-handler/http" = "${config.modules.desktop.defaultBrowser}.desktop";
|
||||||
"x-scheme-handler/https" = "firefox.desktop";
|
"x-scheme-handler/https" = "${config.modules.desktop.defaultBrowser}.desktop";
|
||||||
"x-scheme-handler/about" = "firefox.desktop";
|
"x-scheme-handler/about" = "${config.modules.desktop.defaultBrowser}.desktop";
|
||||||
|
|
||||||
"image/png" = "swayimg.desktop";
|
"image/png" = "swayimg.desktop";
|
||||||
"image/webp" = "swayimg.desktop";
|
"image/webp" = "swayimg.desktop";
|
||||||
|
|
@ -134,7 +157,8 @@ in
|
||||||
"application/pdf" = "org.pwmt.zathura-pdf-mupdf.desktop";
|
"application/pdf" = "org.pwmt.zathura-pdf-mupdf.desktop";
|
||||||
|
|
||||||
"application/msword" = "onlyoffice-desktopeditors.desktop";
|
"application/msword" = "onlyoffice-desktopeditors.desktop";
|
||||||
"application/vnd.openxmlformats-officedocument.presentationml.presentation" = "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";
|
"text/*" = "nvim.desktop";
|
||||||
|
|
@ -148,7 +172,10 @@ in
|
||||||
options = [ "caps:escape" ];
|
options = [ "caps:escape" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
sessionVariables.EDITOR = "vim";
|
sessionVariables = {
|
||||||
|
EDITOR = "vim";
|
||||||
|
NIXOS_OZONE_WL = 1;
|
||||||
|
};
|
||||||
|
|
||||||
packages =
|
packages =
|
||||||
(with pkgs; [
|
(with pkgs; [
|
||||||
|
|
@ -161,27 +188,36 @@ in
|
||||||
mpv
|
mpv
|
||||||
mumble
|
mumble
|
||||||
libreoffice-fresh
|
libreoffice-fresh
|
||||||
onlyoffice-bin
|
signal-desktop
|
||||||
|
onlyoffice-desktopeditors
|
||||||
thunderbird
|
thunderbird
|
||||||
portfolio
|
portfolio
|
||||||
gnucash
|
gnucash
|
||||||
transmission-remote-gtk
|
transmission-remote-gtk
|
||||||
monero-gui
|
|
||||||
|
|
||||||
scala-cli
|
scala-cli
|
||||||
|
beamMinimal27Packages.elixir
|
||||||
jdk
|
jdk
|
||||||
jetbrains.idea-community
|
jetbrains.idea-oss
|
||||||
|
jetbrains.idea
|
||||||
httpie
|
httpie
|
||||||
|
|
||||||
zsh-syntax-highlighting
|
zsh-syntax-highlighting
|
||||||
R
|
R
|
||||||
tldr
|
tldr
|
||||||
ark
|
kdePackages.ark
|
||||||
linuxPackages.perf
|
perf
|
||||||
|
keymapp
|
||||||
|
presenterm
|
||||||
|
|
||||||
|
ledger-live-desktop
|
||||||
|
monero-gui
|
||||||
])
|
])
|
||||||
++ [ pkgs.jellyfin-mpv-shim ];
|
++ [ pkgs.jellyfin-mpv-shim ];
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
hardware.keyboard.zsa.enable = true;
|
||||||
|
hardware.ledger.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.desktop.flameshot;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.desktop.flameshot = {
|
|
||||||
enable = lib.my.mkBoolOpt false;
|
|
||||||
};
|
|
||||||
config = lib.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 = [ pkgs.grim ];
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -18,15 +18,21 @@ in
|
||||||
font_family = "Meslo LG S";
|
font_family = "Meslo LG S";
|
||||||
font_size = 10;
|
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 = {
|
keybindings = {
|
||||||
"ctrl+up" = "change_font_size all +2.0";
|
"ctrl+up" = "change_font_size all +2.0";
|
||||||
"ctrl+down" = "change_font_size all -2.0";
|
"ctrl+down" = "change_font_size all -2.0";
|
||||||
"shift+page_up" = "scroll_page_up";
|
"shift+page_up" = "scroll_page_up";
|
||||||
"shift+page_down" = "scroll_page_down";
|
"shift+page_down" = "scroll_page_down";
|
||||||
"ctrl+shift+comma" = "scroll_to_prompt -1";
|
"ctrl+shift+u" = "scroll_to_prompt -1";
|
||||||
"ctrl+shift+semicolon" = "scroll_to_prompt 1";
|
"ctrl+shift+d" = "scroll_to_prompt 1";
|
||||||
"ctrl+shift+t" = "new_tab_with_cwd";
|
"ctrl+shift+t" = "new_tab_with_cwd !neighbor";
|
||||||
|
"ctrl+," = "previous_tab";
|
||||||
|
"ctrl+;" = "next_tab";
|
||||||
|
"ctrl+shift+," = "move_tab_backward";
|
||||||
|
"ctrl+shift+;" = "move_tab_forward";
|
||||||
};
|
};
|
||||||
themeFile = "gruvbox-dark";
|
themeFile = "gruvbox-dark";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@ let
|
||||||
|
|
||||||
gruvboxPlus = pkgs.stdenv.mkDerivation rec {
|
gruvboxPlus = pkgs.stdenv.mkDerivation rec {
|
||||||
name = "gruvbox-plus";
|
name = "gruvbox-plus";
|
||||||
version = "5.1";
|
version = "6.2.0";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://github.com/SylEleuth/gruvbox-plus-icon-pack/releases/download/v${version}/gruvbox-plus-icon-pack-${version}.zip";
|
url = "https://github.com/SylEleuth/gruvbox-plus-icon-pack/releases/download/v${version}/gruvbox-plus-icon-pack-${version}.zip";
|
||||||
sha256 = "1n3hqwk1mqaj8vbmy0pqbiq6v5jqrhmhin506xbpnccl28f907j0";
|
sha256 = "sha256-D+SPhucHU4Riz0mzU1LnaEkkaQt+blJMAsA5r6fTAQ0=";
|
||||||
};
|
};
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
let
|
let
|
||||||
cfg = config.modules.desktop.wm;
|
cfg = config.modules.desktop.wm;
|
||||||
term = "${config.home-manager.users.${config.user.name}.programs.kitty.package}/bin/kitty";
|
term = "${config.home-manager.users.${config.user.name}.programs.kitty.package}/bin/kitty";
|
||||||
|
wallpaper = config.modules.desktop.wallpaper;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.modules.desktop.wm = {
|
options.modules.desktop.wm = {
|
||||||
|
|
@ -27,451 +28,429 @@ in
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
dunst.enable = true;
|
dunst.enable = true;
|
||||||
htop.enable = true;
|
htop.enable = true;
|
||||||
flameshot.enable = true;
|
|
||||||
};
|
};
|
||||||
hardware = {
|
hardware = {
|
||||||
audio.enable = true;
|
audio.enable = true;
|
||||||
};
|
};
|
||||||
apps.rofi.enable = true;
|
apps = {
|
||||||
|
rofi.enable = true;
|
||||||
|
newsboat.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${config.user.name} = {
|
home-manager.users.${config.user.name} =
|
||||||
wayland.windowManager.sway = {
|
{ config, ... }:
|
||||||
enable = true;
|
{
|
||||||
systemd.enable = true;
|
wayland.windowManager.hyprland = {
|
||||||
xwayland = true;
|
enable = true;
|
||||||
config = {
|
systemd.enable = true;
|
||||||
modifier = "Mod4";
|
xwayland.enable = true;
|
||||||
input = {
|
settings = {
|
||||||
"type:keyboard" = {
|
"$mod" = "SUPER";
|
||||||
"xkb_layout" = "fr";
|
|
||||||
"xkb_variant" = "nodeadkeys";
|
|
||||||
"xkb_options" = "caps:escape";
|
|
||||||
"xkb_numlock" = "enabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keybindings = {
|
env = [
|
||||||
"mod4+Return" = "exec ${term}";
|
"XCURSOR_SIZE,24"
|
||||||
"mod4+c" = "kill";
|
"WLR_NO_HARDWARE_CURSORS,1"
|
||||||
"mod4+Shift+r" = "reload";
|
|
||||||
"mod4+Shift+c" = "exit";
|
|
||||||
"mod4+Shift+a" = "exec ${term} -e pulsemixer";
|
|
||||||
"mod4+w" = "exec firefox";
|
|
||||||
"mod4+r" = "exec ${term} -e yazi";
|
|
||||||
"mod4+e" = "exec emacsclient -c";
|
|
||||||
"mod4+n" = "exec emacsclient -c --eval '(elfeed)'";
|
|
||||||
"mod4+i" = "exec ${term} -e htop";
|
|
||||||
"mod4+m" = "exec ${term} -e ncmpcpp";
|
|
||||||
"mod4+v" = "exec ${term} -e ncmpcpp -s visualizer";
|
|
||||||
"mod4+t" = "floating toggle";
|
|
||||||
"mod4+d" = "exec rofi -show drun -show-icons";
|
|
||||||
"mod4+Shift+p" = "exec rofi -show p -modi p:rofi-power-menu";
|
|
||||||
|
|
||||||
"mod4+h" = "focus left";
|
|
||||||
"mod4+j" = "focus down";
|
|
||||||
"mod4+k" = "focus up";
|
|
||||||
"mod4+l" = "focus right";
|
|
||||||
"mod4+Shift+h" = "move left";
|
|
||||||
"mod4+Shift+j" = "move down";
|
|
||||||
"mod4+Shift+k" = "move up";
|
|
||||||
"mod4+Shift+l" = "move right";
|
|
||||||
"mod4+f" = "fullscreen";
|
|
||||||
|
|
||||||
"XF86AudioRaiseVolume" = "exec pulsemixer --change-volume +1";
|
|
||||||
"XF86AudioLowerVolume" = "exec pulsemixer --change-volume -1";
|
|
||||||
"XF86AudioMute" = "exec pulsemixer --toggle-mute";
|
|
||||||
"XF86AudioPlay" = "exec mpc toggle";
|
|
||||||
"XF86AudioPause" = "exec mpc toggle";
|
|
||||||
"XF86AudioNext" = "exec mpc next";
|
|
||||||
"XF86AudioPrev" = "exec mpc prev";
|
|
||||||
"mod4+p" = "exec mpc toggle";
|
|
||||||
};
|
|
||||||
|
|
||||||
keycodebindings = {
|
|
||||||
"mod4+10" = "workspace number 1";
|
|
||||||
"mod4+11" = "workspace number 2";
|
|
||||||
"mod4+12" = "workspace number 3";
|
|
||||||
"mod4+13" = "workspace number 4";
|
|
||||||
"mod4+14" = "workspace number 5";
|
|
||||||
"mod4+15" = "workspace number 6";
|
|
||||||
"mod4+16" = "workspace number 7";
|
|
||||||
"mod4+17" = "workspace number 8";
|
|
||||||
"mod4+18" = "workspace number 9";
|
|
||||||
"mod4+19" = "workspace number 0";
|
|
||||||
|
|
||||||
"mod4+Shift+10" = "move container to workspace number 1";
|
|
||||||
"mod4+Shift+11" = "move container to workspace number 2";
|
|
||||||
"mod4+Shift+12" = "move container to workspace number 3";
|
|
||||||
"mod4+Shift+13" = "move container to workspace number 4";
|
|
||||||
"mod4+Shift+14" = "move container to workspace number 5";
|
|
||||||
"mod4+Shift+15" = "move container to workspace number 6";
|
|
||||||
"mod4+Shift+16" = "move container to workspace number 7";
|
|
||||||
"mod4+Shift+17" = "move container to workspace number 8";
|
|
||||||
"mod4+Shift+18" = "move container to workspace number 9";
|
|
||||||
"mod4+Shift+19" = "move container to workspace number 0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
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 = {
|
xwayland = {
|
||||||
icon-size = 14;
|
force_zero_scaling = true;
|
||||||
spacing = 5;
|
|
||||||
show-passive-items = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu = {
|
general = {
|
||||||
interval = 1;
|
layout = "dwindle";
|
||||||
format = " {usage}%";
|
gaps_in = 7;
|
||||||
tooltip = false;
|
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory = {
|
dwindle = {
|
||||||
interval = 1;
|
preserve_split = true;
|
||||||
format = " {percentage}%";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
disk = {
|
debug = {
|
||||||
interval = 60;
|
disable_logs = false;
|
||||||
format = " {free}";
|
enable_stdout_logs = true;
|
||||||
tooltip = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
clock = {
|
input = {
|
||||||
format = " {:%A, %d %h %H:%M}";
|
kb_layout = "fr";
|
||||||
format-alt = " {:%d/%m/%Y %H:%M}";
|
kb_options = "caps:escape";
|
||||||
tooltip = false;
|
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;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
style = ''
|
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
font-family: MesloLGS Nerd Font;
|
|
||||||
font-size: 12px;
|
|
||||||
min-height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
programs.waybar = {
|
||||||
background: #282828;
|
enable = true;
|
||||||
border: 0px solid;
|
systemd.enable = true;
|
||||||
border-radius: 0px;
|
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"
|
||||||
|
];
|
||||||
|
|
||||||
window#waybar {
|
tray = {
|
||||||
background: #282828;
|
icon-size = 14;
|
||||||
color: #ebdbb2;
|
spacing = 5;
|
||||||
}
|
show-passive-items = true;
|
||||||
|
};
|
||||||
|
|
||||||
#workspaces button {
|
cpu = {
|
||||||
padding: 0 0.6em;
|
interval = 1;
|
||||||
color: #a89984;
|
format = " {usage}%";
|
||||||
border-radius: 0px;
|
tooltip = false;
|
||||||
}
|
};
|
||||||
|
|
||||||
#workspaces button.active {
|
memory = {
|
||||||
color: #ebdbb2;
|
interval = 1;
|
||||||
background: #665c54;
|
format = " {percentage}%";
|
||||||
}
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
#workspaces button.urgent {
|
disk = {
|
||||||
color: #1d2021;
|
interval = 60;
|
||||||
background: #fb4934;
|
format = " {free}";
|
||||||
}
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
#workspaces button:hover {
|
clock = {
|
||||||
background: #665c54;
|
format = " {:%A, %d %h %H:%M}";
|
||||||
}
|
format-alt = " {:%d/%m/%Y %H:%M}";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
#network,
|
};
|
||||||
#workspaces,
|
};
|
||||||
#bluetooth,
|
style = ''
|
||||||
#tray {
|
* {
|
||||||
color: #ebdbb2;
|
border: none;
|
||||||
padding: 0 5px;
|
font-family: MesloLGS Nerd Font;
|
||||||
margin: 0 5px;
|
font-size: 12px;
|
||||||
}
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#cpu,
|
tooltip {
|
||||||
#memory,
|
background: #282828;
|
||||||
#disk,
|
border: 0px solid;
|
||||||
#clock {
|
border-radius: 0px;
|
||||||
padding: 0 5px;
|
}
|
||||||
margin: 0 5px;
|
|
||||||
color: #83a598;
|
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"
|
||||||
'';
|
'';
|
||||||
package = pkgs.waybar.override { wireplumberSupport = false; };
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
wlr-randr
|
wlr-randr
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
wdisplays
|
wdisplays
|
||||||
];
|
grim
|
||||||
};
|
slurp
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
programs.swaylock = {
|
programs.swaylock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
package = pkgs.swaylock-effects;
|
package = pkgs.swaylock-effects;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
ignore-empty-password = true;
|
ignore-empty-password = true;
|
||||||
daemonize = true;
|
daemonize = true;
|
||||||
# fade-in = 0.5;
|
# fade-in = 0.5;
|
||||||
indicator = true;
|
indicator = true;
|
||||||
clock = true;
|
clock = true;
|
||||||
datestr = "%d/%m/%Y";
|
datestr = "%d/%m/%Y";
|
||||||
screenshots = true;
|
screenshots = true;
|
||||||
hide-keyboard-layout = true;
|
hide-keyboard-layout = true;
|
||||||
indicator-caps-lock = true;
|
indicator-caps-lock = true;
|
||||||
bs-hl-color = "7daea3cc";
|
bs-hl-color = "7daea3cc";
|
||||||
caps-lock-bs-hl-color = "7daea3cc";
|
caps-lock-bs-hl-color = "7daea3cc";
|
||||||
caps-lock-key-hl-color = "d3869bcc";
|
caps-lock-key-hl-color = "d3869bcc";
|
||||||
font = "MesloLGS Nerd Font Propo";
|
font = "MesloLGS Nerd Font Propo";
|
||||||
font-size = "35";
|
font-size = "35";
|
||||||
indicator-idle-visible = true;
|
indicator-idle-visible = true;
|
||||||
indicator-radius = 100;
|
indicator-radius = 100;
|
||||||
indicator-thickness = 7;
|
indicator-thickness = 7;
|
||||||
inside-color = "32302f66";
|
inside-color = "32302f66";
|
||||||
inside-clear-color = "89b48266";
|
inside-clear-color = "89b48266";
|
||||||
inside-caps-lock-color = "e78a4e66";
|
inside-caps-lock-color = "e78a4e66";
|
||||||
inside-ver-color = "7daea366";
|
inside-ver-color = "7daea366";
|
||||||
inside-wrong-color = "ea696266";
|
inside-wrong-color = "ea696266";
|
||||||
key-hl-color = "a9b665cc";
|
key-hl-color = "a9b665cc";
|
||||||
layout-bg-color = "32302f00";
|
layout-bg-color = "32302f00";
|
||||||
layout-text-color = "d4be98";
|
layout-text-color = "d4be98";
|
||||||
line-color = "00000000";
|
line-color = "00000000";
|
||||||
ring-color = "e78a4ecc";
|
ring-color = "e78a4ecc";
|
||||||
ring-clear-color = "89b482cc";
|
ring-clear-color = "89b482cc";
|
||||||
ring-caps-lock-color = "e78a4ecc";
|
ring-caps-lock-color = "e78a4ecc";
|
||||||
ring-ver-color = "7daea3cc";
|
ring-ver-color = "7daea3cc";
|
||||||
ring-wrong-color = "ea6962cc";
|
ring-wrong-color = "ea6962cc";
|
||||||
separator-color = "00000000";
|
separator-color = "00000000";
|
||||||
text-color = "d4be98";
|
text-color = "d4be98";
|
||||||
text-clear-color = "d4be98";
|
text-clear-color = "d4be98";
|
||||||
text-caps-lock-color = "d4be98";
|
text-caps-lock-color = "d4be98";
|
||||||
text-ver-color = "d4be98";
|
text-ver-color = "d4be98";
|
||||||
text-wrong-color = "d4be98";
|
text-wrong-color = "d4be98";
|
||||||
effect-blur = "9x9";
|
effect-blur = "9x9";
|
||||||
effect-greyscale = true;
|
effect-greyscale = true;
|
||||||
# effect-vignette = "0.5:0.5";
|
# effect-vignette = "0.5:0.5";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ in
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
syntaxHighlighting.enable = true;
|
syntaxHighlighting.enable = true;
|
||||||
initExtra = # bash
|
initContent = # bash
|
||||||
''
|
''
|
||||||
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
|
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
|
||||||
zle -N up-line-or-beginning-search
|
zle -N up-line-or-beginning-search
|
||||||
|
|
@ -41,6 +41,9 @@ in
|
||||||
|
|
||||||
[[ -n "$key[Up]" ]] && bindkey -- "$key[Up]" up-line-or-beginning-search
|
[[ -n "$key[Up]" ]] && bindkey -- "$key[Up]" up-line-or-beginning-search
|
||||||
[[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search
|
[[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search
|
||||||
|
|
||||||
|
bindkey "^P" up-line-or-beginning-search
|
||||||
|
bindkey "^N" down-line-or-beginning-search
|
||||||
'';
|
'';
|
||||||
oh-my-zsh = {
|
oh-my-zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -61,7 +64,7 @@ in
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
thefuck = {
|
pay-respects = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ in
|
||||||
activation = {
|
activation = {
|
||||||
installDoomEmacs = ''
|
installDoomEmacs = ''
|
||||||
if [ ! -d "${config.home-manager.users.${config.user.name}.xdg.configHome}/emacs" ]; then
|
if [ ! -d "${config.home-manager.users.${config.user.name}.xdg.configHome}/emacs" ]; then
|
||||||
git clone --depth=1 --single-branch https://github.com/doomemacs/doomemacs "${
|
${pkgs.git}/bin/git clone --depth=1 --single-branch https://github.com/doomemacs/doomemacs "${
|
||||||
config.home-manager.users.${config.user.name}.xdg.configHome
|
config.home-manager.users.${config.user.name}.xdg.configHome
|
||||||
}/emacs"
|
}/emacs"
|
||||||
fi
|
fi
|
||||||
|
|
@ -96,7 +96,7 @@ in
|
||||||
|
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.emacs29.override {
|
package = pkgs.emacs30.override {
|
||||||
withNativeCompilation = true;
|
withNativeCompilation = true;
|
||||||
withPgtk = true;
|
withPgtk = true;
|
||||||
withSQLite3 = true;
|
withSQLite3 = true;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,3 @@ map("n", "<leader>wh", "<C-w>h", { desc = "Go to Left Window", remap = true })
|
||||||
|
|
||||||
-- File
|
-- File
|
||||||
map("n", "<leader>fs", "<cmd>w<cr>", { desc = "Save File" })
|
map("n", "<leader>fs", "<cmd>w<cr>", { desc = "Save File" })
|
||||||
|
|
||||||
-- Buffer
|
|
||||||
map("n", "<leader>bk", LazyVim.ui.bufremove, { desc = "Delete Buffer" })
|
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,10 @@ return {
|
||||||
defaults = { path_display = { "truncate" } },
|
defaults = { path_display = { "truncate" } },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'folke/snacks.nvim',
|
||||||
|
keys = {
|
||||||
|
{ "<leader>bk", function() Snacks.bufdelete() end, desc = "Delete Buffer" },
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
return {
|
return {
|
||||||
{ "folke/tokyonight.nvim", enabled = false },
|
{ "folke/tokyonight.nvim", enabled = false },
|
||||||
{ "catppuccin", enabled = false },
|
{ "catppuccin", enabled = false },
|
||||||
{ "williamboman/mason.nvim", enabled = false },
|
{ "mason-org/mason.nvim", enabled = false },
|
||||||
{ "williamboman/mason-lspconfig.nvim", enabled = false },
|
{ "mason-org/mason-lspconfig.nvim", enabled = false },
|
||||||
{ "jay-babu/mason-nvim-dap.nvim", enabled = false },
|
{ "jay-babu/mason-nvim-dap.nvim", enabled = false },
|
||||||
{ "Bilal2453/luvit-meta", enabled = false },
|
{ "Bilal2453/luvit-meta", enabled = false },
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,15 @@
|
||||||
return {
|
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",
|
"neovim/nvim-lspconfig",
|
||||||
opts = {
|
opts = {
|
||||||
|
|
@ -6,8 +17,29 @@ return {
|
||||||
metals = {
|
metals = {
|
||||||
settings = {
|
settings = {
|
||||||
showImplicitArguments = false,
|
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,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
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,
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ return {
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
opts = {
|
opts = {
|
||||||
auto_install = false,
|
auto_install = false,
|
||||||
|
sync_install = false,
|
||||||
ensure_installed = {},
|
ensure_installed = {},
|
||||||
parser_install_dir = vim.fs.joinpath(vim.fn.stdpath('data'), 'site'),
|
parser_install_dir = vim.fs.joinpath(vim.fn.stdpath('data'), 'site'),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
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,
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
|
@ -15,17 +14,17 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home-manager.users.${config.user.name} = {
|
home-manager.users.${config.user.name} =
|
||||||
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
programs.neovim = {
|
programs.neovim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.neovim-unwrapped;
|
package = pkgs.neovim-unwrapped;
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
vimdiffAlias = true;
|
vimdiffAlias = true;
|
||||||
withNodeJs = true;
|
withNodeJs = true;
|
||||||
plugins =
|
plugins = with pkgs.vimPlugins; [
|
||||||
(with pkgs.vimPlugins; [
|
|
||||||
# base distro
|
# base distro
|
||||||
LazyVim
|
LazyVim
|
||||||
conform-nvim
|
conform-nvim
|
||||||
|
|
@ -49,6 +48,10 @@ in
|
||||||
which-key-nvim
|
which-key-nvim
|
||||||
nvim-web-devicons
|
nvim-web-devicons
|
||||||
mini-nvim
|
mini-nvim
|
||||||
|
mini-ai
|
||||||
|
mini-comment
|
||||||
|
mini-icons
|
||||||
|
mini-pairs
|
||||||
noice-nvim
|
noice-nvim
|
||||||
nui-nvim
|
nui-nvim
|
||||||
nvim-notify
|
nvim-notify
|
||||||
|
|
@ -57,6 +60,7 @@ in
|
||||||
nvim-navic
|
nvim-navic
|
||||||
dressing-nvim
|
dressing-nvim
|
||||||
aerial-nvim
|
aerial-nvim
|
||||||
|
snacks-nvim
|
||||||
|
|
||||||
# project management
|
# project management
|
||||||
project-nvim
|
project-nvim
|
||||||
|
|
@ -64,7 +68,6 @@ in
|
||||||
persistence-nvim
|
persistence-nvim
|
||||||
|
|
||||||
# smart typing
|
# smart typing
|
||||||
indent-blankline-nvim
|
|
||||||
guess-indent-nvim
|
guess-indent-nvim
|
||||||
vim-illuminate
|
vim-illuminate
|
||||||
|
|
||||||
|
|
@ -75,23 +78,22 @@ in
|
||||||
neodev-nvim
|
neodev-nvim
|
||||||
SchemaStore-nvim # load known formats for json and yaml
|
SchemaStore-nvim # load known formats for json and yaml
|
||||||
nvim-metals
|
nvim-metals
|
||||||
|
nvim-jdtls
|
||||||
|
|
||||||
# cmp plugins
|
# cmp plugins
|
||||||
nvim-cmp # completion plugin
|
nvim-cmp
|
||||||
cmp-buffer # buffer completions
|
blink-cmp # completion plugin
|
||||||
cmp-path # path completions
|
|
||||||
cmp_luasnip # snipper completions
|
cmp_luasnip # snipper completions
|
||||||
cmp-nvim-lsp # LSP completions
|
|
||||||
|
|
||||||
# snippets
|
# snippets
|
||||||
luasnip # snippet engine
|
luasnip # snippet engine
|
||||||
nvim-snippets
|
|
||||||
friendly-snippets # a bunch of snippets to use
|
friendly-snippets # a bunch of snippets to use
|
||||||
|
|
||||||
# search functionality
|
# search functionality
|
||||||
plenary-nvim
|
plenary-nvim
|
||||||
telescope-nvim
|
telescope-nvim
|
||||||
telescope-fzf-native-nvim
|
telescope-fzf-native-nvim
|
||||||
|
fzf-lua
|
||||||
grug-far-nvim
|
grug-far-nvim
|
||||||
flash-nvim
|
flash-nvim
|
||||||
|
|
||||||
|
|
@ -115,10 +117,12 @@ in
|
||||||
nvim-dap
|
nvim-dap
|
||||||
nvim-dap-ui
|
nvim-dap-ui
|
||||||
nvim-dap-virtual-text
|
nvim-dap-virtual-text
|
||||||
|
one-small-step-for-vimkind
|
||||||
|
|
||||||
# neotest
|
# neotest
|
||||||
neotest
|
neotest
|
||||||
neotest-rust
|
neotest-rust
|
||||||
|
neotest-elixir
|
||||||
|
|
||||||
# SQL
|
# SQL
|
||||||
vim-dadbod
|
vim-dadbod
|
||||||
|
|
@ -128,382 +132,182 @@ in
|
||||||
lazy-nvim
|
lazy-nvim
|
||||||
lazydev-nvim
|
lazydev-nvim
|
||||||
vim-startuptime
|
vim-startuptime
|
||||||
])
|
yazi-nvim
|
||||||
++ [
|
zk-nvim
|
||||||
# File manager
|
|
||||||
(pkgs.vimUtils.buildVimPlugin {
|
(pkgs.vimUtils.buildVimPlugin {
|
||||||
name = "yazi.nvim";
|
pname = "opencode.nvim";
|
||||||
src = inputs.vim-yazi;
|
version = "2025-12-04";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "NickvanDyke";
|
||||||
|
repo = "opencode.nvim";
|
||||||
|
rev = "963fad75f794deb85d1c310d2e2cb033da44f670";
|
||||||
|
hash = "sha256-nKOsHgMptHnOS+SCTHa77sQ/ZiUY0aW26I8GN7ocRHE=";
|
||||||
|
};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
gcc # needed for nvim-treesitter
|
gcc # needed for nvim-treesitter
|
||||||
|
|
||||||
# HTML, CSS, JSON
|
# HTML, CSS, JSON
|
||||||
vscode-langservers-extracted
|
vscode-langservers-extracted
|
||||||
|
|
||||||
# Nix
|
# Nix
|
||||||
nixd
|
nixd
|
||||||
statix
|
statix
|
||||||
nixfmt-rfc-style
|
nixfmt-rfc-style
|
||||||
|
|
||||||
# SQL
|
# SQL
|
||||||
sqlfluff
|
sqlfluff
|
||||||
|
|
||||||
# LazyVim defaults
|
# LazyVim defaults
|
||||||
stylua
|
stylua
|
||||||
shfmt
|
shfmt
|
||||||
|
|
||||||
# Markdown extra
|
# Markdown extra
|
||||||
markdownlint-cli2
|
markdownlint-cli2
|
||||||
marksman
|
marksman
|
||||||
|
|
||||||
# Docker extra
|
# Docker extra
|
||||||
nodePackages.dockerfile-language-server-nodejs
|
dockerfile-language-server
|
||||||
hadolint
|
hadolint
|
||||||
docker-compose-language-service
|
docker-compose-language-service
|
||||||
|
|
||||||
# JSON and YAML extras
|
# JSON and YAML extras
|
||||||
nodePackages.yaml-language-server
|
nodePackages.yaml-language-server
|
||||||
|
|
||||||
# Custom
|
# Java
|
||||||
editorconfig-checker
|
jdt-language-server
|
||||||
shellcheck
|
|
||||||
];
|
|
||||||
|
|
||||||
extraLuaConfig = # lua
|
# Elixir
|
||||||
''
|
beam28Packages.elixir-ls
|
||||||
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({
|
# Custom
|
||||||
spec = {
|
editorconfig-checker
|
||||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
shellcheck
|
||||||
-- import any extras modules here
|
];
|
||||||
{ import = "lazyvim.plugins.extras.dap.core" },
|
|
||||||
{ import = "lazyvim.plugins.extras.dap.nlua" },
|
extraLuaConfig = # lua
|
||||||
{ import = "lazyvim.plugins.extras.ui.edgy" },
|
''
|
||||||
{ import = "lazyvim.plugins.extras.coding.mini-comment" },
|
require("gruvbox").setup({
|
||||||
{ import = "lazyvim.plugins.extras.editor.aerial" },
|
overrides = {
|
||||||
{ import = "lazyvim.plugins.extras.editor.leap" },
|
Include = { ["link"] = "GruvboxRed" },
|
||||||
{ import = "lazyvim.plugins.extras.editor.navic" },
|
["@constructor"] = { ["link"] = "GruvboxYellow" },
|
||||||
{ import = "lazyvim.plugins.extras.lang.docker" },
|
["@function.builtin"] = { ["link"] = "GruvboxFg1" },
|
||||||
{ import = "lazyvim.plugins.extras.lang.json" },
|
["@function.call"] = { ["link"] = "GruvboxFg1" },
|
||||||
{ import = "lazyvim.plugins.extras.lang.markdown" },
|
["@function.macro"] = { ["link"] = "GruvboxFg1" },
|
||||||
{ import = "lazyvim.plugins.extras.lang.sql" },
|
["@function.method.call.scala"] = { ["link"] = "GruvboxFg1" },
|
||||||
{ import = "lazyvim.plugins.extras.lang.yaml" },
|
["@method.call"] = { ["link"] = "GruvboxFg1" },
|
||||||
{ import = "lazyvim.plugins.extras.lang.scala" },
|
["@variable.member.scala"] = { ["link"] = "GruvboxFg1" },
|
||||||
{ import = "lazyvim.plugins.extras.test.core" },
|
["@lsp.type.type.scala"] = { ["link"] = "" },
|
||||||
-- import/override with your plugins
|
["@lsp.type.method.scala"] = { ["link"] = "" },
|
||||||
{ import = "plugins" },
|
["@lsp.type.modifier.scala"] = { ["link"] = "GruvboxOrange" },
|
||||||
},
|
["@lsp.type.typeParameter.scala"] = { ["link"] = "GruvboxAqua" },
|
||||||
defaults = {
|
["@lsp.type.type.nix"] = { ["link"] = "" },
|
||||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
["@lsp.type.method.nix"] = { ["link"] = "" },
|
||||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
["@lsp.type.macro.nix"] = { ["link"] = "" },
|
||||||
lazy = false,
|
["@lsp.type.interface.nix"] = { ["link"] = "" },
|
||||||
-- 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
|
require("lazy").setup({
|
||||||
},
|
spec = {
|
||||||
performance = {
|
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||||
-- Used for NixOS
|
-- import any extras modules here
|
||||||
reset_packpath = false,
|
{ import = "lazyvim.plugins.extras.dap.core" },
|
||||||
rtp = {
|
{ import = "lazyvim.plugins.extras.dap.nlua" },
|
||||||
reset = false,
|
{ import = "lazyvim.plugins.extras.ui.edgy" },
|
||||||
-- disable some rtp plugins
|
{ import = "lazyvim.plugins.extras.coding.mini-comment" },
|
||||||
disabled_plugins = {
|
{ import = "lazyvim.plugins.extras.editor.aerial" },
|
||||||
"gzip",
|
{ import = "lazyvim.plugins.extras.editor.leap" },
|
||||||
-- "matchit",
|
{ import = "lazyvim.plugins.extras.editor.navic" },
|
||||||
-- "matchparen",
|
{ import = "lazyvim.plugins.extras.formatting.prettier" },
|
||||||
-- "netrwPlugin",
|
{ import = "lazyvim.plugins.extras.lang.angular" },
|
||||||
"tarPlugin",
|
{ import = "lazyvim.plugins.extras.lang.docker" },
|
||||||
"tohtml",
|
{ import = "lazyvim.plugins.extras.lang.java" },
|
||||||
"tutor",
|
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||||
"zipPlugin",
|
{ 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" },
|
||||||
},
|
},
|
||||||
dev = {
|
defaults = {
|
||||||
path = "${
|
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||||
pkgs.vimUtils.packDir
|
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||||
config.home-manager.users.${config.user.name}.programs.neovim.finalPackage.passthru.packpathDirs
|
lazy = false,
|
||||||
}/pack/myNeovimPackages/start",
|
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||||
patterns = {"folke", "nvim-telescope", "hrsh7th", "akinsho", "stevearc", "LazyVim", "catppuccin", "saadparwaiz1", "nvimdev", "rafamadriz", "lewis6991", "lukas-reineke", "nvim-lualine", "L3MON4D3", "williamboman", "echasnovski", "nvim-neo-tree", "MunifTanjim", "mfussenegger", "rcarriga", "neovim", "nvim-pack", "nvim-treesitter", "windwp", "JoosepAlviste", "nvim-tree", "nvim-lua", "RRethy", "dstein64", "Saecki", "ggandor", "iamcco", "nvim-neotest", "rouge8", "theHamsta", "SmiteshP", "jbyuki", "simrat39", "b0o", "tpope", "kosayoda", "ellisonleao", "NeogitOrg", "sindrets", "scalameta", "garymjr", "mikavilpas","kristijanhusak","MagicDuck","MeanderingProgrammer"},
|
-- have outdated releases, which may break your Neovim install.
|
||||||
},
|
version = false, -- always use the latest git commit
|
||||||
install = {
|
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||||
missing = false,
|
},
|
||||||
},
|
performance = {
|
||||||
})
|
-- Used for NixOS
|
||||||
'';
|
reset_packpath = false,
|
||||||
};
|
rtp = {
|
||||||
|
reset = false,
|
||||||
xdg.configFile."nvim/lua" = {
|
-- disable some rtp plugins
|
||||||
recursive = true;
|
disabled_plugins = {
|
||||||
source = ./lua;
|
"gzip",
|
||||||
};
|
-- "matchit",
|
||||||
|
-- "matchparen",
|
||||||
programs.nixvim = {
|
-- "netrwPlugin",
|
||||||
enable = false;
|
"tarPlugin",
|
||||||
package = pkgs.neovim-unwrapped;
|
"tohtml",
|
||||||
vimAlias = true;
|
"tutor",
|
||||||
|
"zipPlugin",
|
||||||
keymaps = [
|
},
|
||||||
# Search
|
|
||||||
{
|
|
||||||
key = "<leader>cx";
|
|
||||||
action = "<CMD>Telescope diagnostics layout_strategy=vertical<CR>";
|
|
||||||
options.desc = "Search diagnostics";
|
|
||||||
}
|
|
||||||
# Project
|
|
||||||
{
|
|
||||||
key = "<leader>ps";
|
|
||||||
action = "<CMD>wa<CR>";
|
|
||||||
options.desc = "Save all buffers";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
plugins = {
|
|
||||||
lazy = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [
|
|
||||||
{
|
|
||||||
pkg = pkgs.vimPlugins.gitsigns-nvim;
|
|
||||||
opts.__raw = # lua
|
|
||||||
''
|
|
||||||
{
|
|
||||||
on_attach = function(buffer)
|
|
||||||
local gs = package.loaded.gitsigns
|
|
||||||
|
|
||||||
local function map(mode, l ,r, desc)
|
|
||||||
vim.keymap.set(mode, l, r, { buffer = buffer, desc = desc})
|
|
||||||
end
|
|
||||||
|
|
||||||
map("n", "<leader>g;", function()
|
|
||||||
if vim.wo.diff then
|
|
||||||
vim.cmd.normal({ "]c", bang = true })
|
|
||||||
else
|
|
||||||
gs.nav_hunk("next")
|
|
||||||
end
|
|
||||||
end, "Next Hunk")
|
|
||||||
map("n", "<leader>g,", function()
|
|
||||||
if vim.wo.diff then
|
|
||||||
vim.cmd.normal({ "[c", bang = true })
|
|
||||||
else
|
|
||||||
gs.nav_hunk("prev")
|
|
||||||
end
|
|
||||||
end, "Prev Hunk")
|
|
||||||
map({ "n", "v" }, "<leader>gs", gs.stage_hunk, "Stage Hunk")
|
|
||||||
map({ "n", "v" }, "<leader>gr", gs.reset_hunk, "Reset Hunk")
|
|
||||||
map("n", "<leader>gS", gs.stage_buffer, "Stage Buffer")
|
|
||||||
map("n", "<leader>gu", gs.undo_stage_hunk, "Undo Stage Hunk")
|
|
||||||
map("n", "<leader>gR", gs.reset_buffer, "Reset Buffer")
|
|
||||||
map("n", "<leader>gp", gs.preview_hunk_inline, "Preview Hunk Inline")
|
|
||||||
map("n", "<leader>gb", function() gs.blame_line({ full = true }) end, "Blame Line")
|
|
||||||
map("n", "<leader>gd", gs.diffthis, "Diff This")
|
|
||||||
map("n", "<leader>gD", function() gs.diffthis("~") end, "Diff This ~")
|
|
||||||
map('n', '<leader>tb', gs.toggle_current_line_blame, "Toggle current line blame")
|
|
||||||
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "GitSigns Select Hunk")
|
|
||||||
end,
|
|
||||||
}
|
}
|
||||||
'';
|
},
|
||||||
}
|
dev = {
|
||||||
{
|
path = "${pkgs.vimUtils.packDir config.programs.neovim.finalPackage.passthru.packpathDirs}/pack/myNeovimPackages/start",
|
||||||
pkg = pkgs.vimPlugins.which-key-nvim;
|
patterns = {""},
|
||||||
event = "VimEnter";
|
},
|
||||||
config = # lua
|
install = {
|
||||||
''
|
missing = false,
|
||||||
function ()
|
},
|
||||||
require('which-key').setup()
|
})
|
||||||
require('which-key').register {
|
'';
|
||||||
['<leader>b'] = { name = 'Buffer', _ = 'which_key_ignore' },
|
|
||||||
['<leader>c'] = { name = 'Code', _ = 'which_key_ignore' },
|
|
||||||
['<leader>d'] = { name = 'Document', _ = 'which_key_ignore' },
|
|
||||||
['<leader>f'] = { name = 'File', _ = 'which_key_ignore' },
|
|
||||||
['<leader>g'] = { name = 'Git', _ = 'which_key_ignore' },
|
|
||||||
['<leader>o'] = { name = 'Org', _ = 'which_key_ignore' },
|
|
||||||
['<leader>n'] = { name = 'Org-roam', _ = 'which_key_ignore' },
|
|
||||||
['<leader>p'] = { name = 'Project', _ = 'which_key_ignore' },
|
|
||||||
['<leader>r'] = { name = 'Rename', _ = 'which_key_ignore' },
|
|
||||||
['<leader>s'] = { name = 'Search', _ = 'which_key_ignore' },
|
|
||||||
['<leader>w'] = { name = 'Window', _ = 'which_key_ignore' },
|
|
||||||
['<leader>t'] = { name = 'Toggle', _ = 'which_key_ignore' },
|
|
||||||
['<leader>q'] = { name = 'Quit/Session', _ = 'which_key_ignore' },
|
|
||||||
}
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
pkg = pkgs.vimPlugins.nvim-lspconfig;
|
|
||||||
config = # lua
|
|
||||||
''
|
|
||||||
function ()
|
|
||||||
vim.api.nvim_create_autocmd('LspAttach', {
|
|
||||||
group = vim.api.nvim_create_augroup('lsp-attach', { clear = true }),
|
|
||||||
callback = function(event)
|
|
||||||
local map = function(keys, func, desc)
|
|
||||||
vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
|
|
||||||
end
|
|
||||||
|
|
||||||
map('gd', require('telescope.builtin').lsp_definitions, 'Go to definition')
|
|
||||||
map('gr', require('telescope.builtin').lsp_references, 'Go to references')
|
|
||||||
map('gI', require('telescope.builtin').lsp_implementations, 'Goto implementation')
|
|
||||||
map('gD', vim.lsp.buf.declaration, 'Go to declaration')
|
|
||||||
map('gT', require('telescope.builtin').lsp_type_definitions, 'Type definition')
|
|
||||||
map('<leader>cD', require('telescope.builtin').lsp_document_symbols, 'Document symbols')
|
|
||||||
map('<leader>cw', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Workspace symbols ')
|
|
||||||
map('<leader>cd', vim.diagnostic.open_float, 'Line diagnostics')
|
|
||||||
map('<leader>c,', vim.diagnostic.goto_prev, 'Previous diagnostics')
|
|
||||||
map('<leader>c;', vim.diagnostic.goto_next, 'Next diagnostics')
|
|
||||||
map('<leader>cr', vim.lsp.buf.rename, 'Rename')
|
|
||||||
map('<leader>ca', vim.lsp.buf.code_action, 'Code action')
|
|
||||||
map('K', vim.lsp.buf.hover, 'Hover Documentation')
|
|
||||||
end
|
|
||||||
})
|
|
||||||
|
|
||||||
local has_cmp, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
|
|
||||||
local capabilities = vim.tbl_deep_extend(
|
|
||||||
"force",
|
|
||||||
{},
|
|
||||||
vim.lsp.protocol.make_client_capabilities(),
|
|
||||||
has_cmp and cmp_nvim_lsp.default_capabilities() or {}
|
|
||||||
)
|
|
||||||
|
|
||||||
local function setup(server, server_opts)
|
|
||||||
local server_opts_with_caps = vim.tbl_deep_extend("force", {
|
|
||||||
capabilities = vim.deepcopy(capabilities),
|
|
||||||
}, server_opts)
|
|
||||||
|
|
||||||
require("lspconfig")[server].setup(server_opts_with_caps)
|
|
||||||
end
|
|
||||||
|
|
||||||
setup("yamlls", {})
|
|
||||||
setup("typos_lsp", {
|
|
||||||
init_options = { diagnosticSeverity = "Hint" }
|
|
||||||
})
|
|
||||||
setup("tsserver", {})
|
|
||||||
setup("terraformls", {})
|
|
||||||
setup("marksman", {})
|
|
||||||
setup("lua_ls", {})
|
|
||||||
setup("jsonls", { cmd = { "${pkgs.vscode-langservers-extracted}/bin/vscode-json-language-server", "--stdio" } })
|
|
||||||
setup("html", { cmd = { "${pkgs.vscode-langservers-extracted}/bin/vscode-html-language-server", "--stdio" } })
|
|
||||||
setup("eslint", { cmd = { "${pkgs.vscode-langservers-extracted}/bin/vscode-eslint-language-server", "--stdio" } })
|
|
||||||
setup("dockerls", { cmd = { "${pkgs.dockerfile-language-server-nodejs}/bin/docker-langserver", "--stdio" } })
|
|
||||||
setup("docker_compose_language_service", {})
|
|
||||||
setup("cssls", { cmd = { "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server", "--stdio" } })
|
|
||||||
setup("bashls", {})
|
|
||||||
setup("ansiblels", { cmd = { "${pkgs.ansible-language-server}/bin/ansible-language-server", "--stdio" } })
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
pkg = pkgs.vimPlugins.nvim-cmp;
|
|
||||||
event = "InsertEnter";
|
|
||||||
dependencies = [
|
|
||||||
pkgs.vimPlugins.cmp-nvim-lsp
|
|
||||||
pkgs.vimPlugins.cmp-path
|
|
||||||
pkgs.vimPlugins.cmp-buffer
|
|
||||||
];
|
|
||||||
opts.__raw = # lua
|
|
||||||
''
|
|
||||||
function()
|
|
||||||
local cmp = require("cmp")
|
|
||||||
return {
|
|
||||||
mapping = {
|
|
||||||
["<C-Space>"] = cmp.mapping.complete(),
|
|
||||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
|
||||||
["<C-e>"] = cmp.mapping.close(),
|
|
||||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
|
||||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
|
||||||
["<C-y>"] = cmp.mapping.confirm({ select = true }),
|
|
||||||
["<S-Tab>"] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "s" }),
|
|
||||||
["<Tab>"] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "s" }),
|
|
||||||
},
|
|
||||||
sources = {
|
|
||||||
{ name = "nvim_lsp" },
|
|
||||||
{ name = "path" },
|
|
||||||
{ name = "buffer" },
|
|
||||||
{ name = "orgmode" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
# Disabled for now as it tries to write org grammar to its own directory in the nix store
|
|
||||||
# https://github.com/nvim-orgmode/orgmode/blob/95fb795a422f0455e03d13a3f83525f1d00793ad/lua/orgmode/utils/treesitter/install.lua#L9
|
|
||||||
# {
|
|
||||||
# pkg = pkgs.vimPlugins.orgmode;
|
|
||||||
# event = "VeryLazy";
|
|
||||||
# ft = [ "org" ];
|
|
||||||
# config = /*lua*/ ''
|
|
||||||
# function ()
|
|
||||||
# require('orgmode').setup({
|
|
||||||
# org_agend_files = '~/Nextcloud/Org/**/*',
|
|
||||||
# org_default_notes_file = '~/Nextcloud/Org/refile.org',
|
|
||||||
# })
|
|
||||||
# end
|
|
||||||
# '';
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# pkg = (pkgs.vimUtils.buildVimPlugin {
|
|
||||||
# name = "org-roam.nvim";
|
|
||||||
# src = inputs.vim-org-roam;
|
|
||||||
# });
|
|
||||||
# dependencies = [ pkgs.vimPlugins.orgmode ];
|
|
||||||
# event = "VeryLazy";
|
|
||||||
# ft = [ "org" ];
|
|
||||||
# config = /*lua*/ ''
|
|
||||||
# function ()
|
|
||||||
# require('org-roam').setup({
|
|
||||||
# directory = '~/Nextcloud/OrgRoam',
|
|
||||||
# })
|
|
||||||
# end
|
|
||||||
# '';
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
ripgrep
|
|
||||||
fd
|
|
||||||
nodejs
|
|
||||||
opentofu
|
|
||||||
coursier
|
|
||||||
|
|
||||||
# LSP
|
|
||||||
yaml-language-server
|
|
||||||
typos-lsp
|
|
||||||
nodePackages.typescript-language-server
|
|
||||||
terraform-ls
|
|
||||||
sqls
|
|
||||||
nixd
|
|
||||||
marksman
|
|
||||||
lua-language-server
|
|
||||||
docker-compose-language-service
|
|
||||||
bash-language-server
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ in
|
||||||
user.packages = [
|
user.packages = [
|
||||||
(lib.mkIf cfg.psx.enable pkgs.duckstation)
|
(lib.mkIf cfg.psx.enable pkgs.duckstation)
|
||||||
(lib.mkIf cfg.ds.enable pkgs.desmume)
|
(lib.mkIf cfg.ds.enable pkgs.desmume)
|
||||||
(lib.mkIf cfg.gc.enable pkgs.dolphinEmu)
|
(lib.mkIf cfg.gc.enable pkgs.dolphin-emu)
|
||||||
(lib.mkIf (cfg.gba.enable || cfg.gb.enable || cfg.snes.enable) pkgs.higan)
|
(lib.mkIf (cfg.gba.enable || cfg.gb.enable || cfg.snes.enable) pkgs.higan)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,31 @@ in
|
||||||
lutris.enable = lib.my.mkBoolOpt false;
|
lutris.enable = lib.my.mkBoolOpt false;
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = lib.mkMerge [
|
||||||
user.packages = [
|
{
|
||||||
(lib.mkIf cfg.steam.enable pkgs.steam)
|
user.packages = [
|
||||||
(lib.mkIf cfg.lutris.enable pkgs.lutris)
|
(lib.mkIf cfg.lutris.enable pkgs.lutris)
|
||||||
(lib.mkIf cfg.lutris.enable pkgs.wine)
|
(lib.mkIf cfg.lutris.enable pkgs.wine)
|
||||||
(lib.mkIf (cfg.steam.enable || cfg.lutris.enable) pkgs.protontricks)
|
(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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -18,8 +18,15 @@ in
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
(ncmpcpp.override { visualizerSupport = true; })
|
(
|
||||||
mpc_cli
|
(ncmpcpp.override { visualizerSupport = true; })
|
||||||
|
# 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;
|
file.".config/ncmpcpp/config".source = ./config;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
config = {
|
config = {
|
||||||
|
|
||||||
user = {
|
user = {
|
||||||
name = "froidmpa";
|
name = lib.mkDefault "froidmpa";
|
||||||
description = "The primary user account";
|
description = "The primary user account";
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel"
|
"wheel"
|
||||||
|
|
|
||||||
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.
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
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
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 +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