mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2026-09-08 07:54:40 +00:00
Compare commits
10
Commits
fa6b2a387e
...
40660a57eb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40660a57eb
|
||
|
|
cf55802ffa
|
||
|
|
7eae6f1678
|
||
|
|
cbc6eaab1e
|
||
|
|
8d2607c8ad
|
||
|
|
0c8e8c27d4
|
||
|
|
7b705fd938
|
||
|
|
4ec11e92ab
|
||
|
|
6fd42a30b0
|
||
|
|
acf28da653
|
Generated
+34
-34
@@ -24,11 +24,11 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775706155,
|
||||
"narHash": "sha256-h7Rw0vlb0n0Jsk21WJPm7H+1T1bG+PEuxE5cJ2TZl8A=",
|
||||
"lastModified": 1784365424,
|
||||
"narHash": "sha256-kJO1Tww/GkvLq5amrV4BKidYGr5YumM+cH/xYALAiw4=",
|
||||
"owner": "abenz1267",
|
||||
"repo": "elephant",
|
||||
"rev": "376ee71c66db38683daabd57350bf3f6f086eaf8",
|
||||
"rev": "23f37238367355cf46843015ad5e94706200176a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -45,11 +45,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778716662,
|
||||
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||
"lastModified": 1782949081,
|
||||
"narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||
"rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -65,11 +65,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781009359,
|
||||
"narHash": "sha256-w/mZkRscTatf8NWyUstli8ROzM/eopxZzi0WRjoeYkU=",
|
||||
"lastModified": 1784913159,
|
||||
"narHash": "sha256-JWq0BfjO4ktpH5USfQNQzdvHpIDT8fSKD5K7LvdMRFs=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "c58ead12efcac436afffa93a22099a5595eb4157",
|
||||
"rev": "079a3b5d1aa6a719920a51316253b7d6dd22738d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -86,16 +86,16 @@
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731508795,
|
||||
"narHash": "sha256-+UibbVz5CTisKMms/5VXGe39FYr56qzaEtX4TWQPkjk=",
|
||||
"lastModified": 1783421544,
|
||||
"narHash": "sha256-msVlanBvdLsMeLdXnBQ6f9nRHKmDf7vhKoQMtyYbS8c=",
|
||||
"owner": "InioX",
|
||||
"repo": "matugen",
|
||||
"rev": "cb9f81eb0150f6253895ea0adb1daa8534c15fc7",
|
||||
"rev": "cf3c74c231e526121bd8e2ce0f1d04702301c342",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "InioX",
|
||||
"ref": "v2.4.1",
|
||||
"ref": "cf3c74c231e526121bd8e2ce0f1d04702301c342",
|
||||
"repo": "matugen",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -112,11 +112,11 @@
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780944960,
|
||||
"narHash": "sha256-/Tzx2TY0IVm/ptBvkKaLdOHADpM7xsUMfBKOpCibH1M=",
|
||||
"lastModified": 1784874881,
|
||||
"narHash": "sha256-u4jhSIf/Un0qZB+Cn3hTTaHSI20XeAxYbA5o4faqdJs=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "da6577a9bef8a4d7a9d7a2a0dc1e1089edb46bed",
|
||||
"rev": "ef7a2a3d719af46b906c22a3ebfb7d65627b2cd2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -145,11 +145,11 @@
|
||||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1780938415,
|
||||
"narHash": "sha256-QHyIMGSbCQW8d5qbOrMsm6gem10bO3Au2YLa3alJfHo=",
|
||||
"lastModified": 1784570726,
|
||||
"narHash": "sha256-9EMn69JBcFWFgUM7f0VBAX+jBby5b9H3M59U75+5yI4=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "6f1a2c5f0e8274223d4204b1f8d6f7f91538967e",
|
||||
"rev": "7f26c3ee804fb6ed458ef7fb0e3c794f14e0b3bc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -176,11 +176,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1780749050,
|
||||
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
|
||||
"lastModified": 1784796856,
|
||||
"narHash": "sha256-wWFrV5/Qbm+lyt5x20E/bSbfJiGKMo4RCxZV8cl/WZI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a799d3e3886da994fa307f817a6bc705ae538eeb",
|
||||
"rev": "e2587caef70cea85dd97d7daab492899902dbf5d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -192,11 +192,11 @@
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1780511130,
|
||||
"narHash": "sha256-2v9lT4ya59Lh1FqPeLnz1MoX9y/wz2huqfe9RtQZITk=",
|
||||
"lastModified": 1782847189,
|
||||
"narHash": "sha256-twXPFqFsrrY5r28Zh7Homgcp2gUMBgQ6WDS98Q/3xFI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "535f3e6942cb1cead3929c604320d3db54b542b9",
|
||||
"rev": "b6018f87da91d19d0ab4cf979885689b469cdd41",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -215,11 +215,11 @@
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780995253,
|
||||
"narHash": "sha256-6Lsoyw2XPvY8YNMCtPnsyw0JVVtHsXP2xtrFJBBTAOQ=",
|
||||
"lastModified": 1784814601,
|
||||
"narHash": "sha256-T32JXjZ7kIbhBn8/Har171yGg6IBdl97cxAWameqZDE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "43a7e6f82978ac975c3bba6728869b231e7a1ba0",
|
||||
"rev": "f316e949e0ed9df0e1e0bf645c6dce721d4e230e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -404,11 +404,11 @@
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1777789924,
|
||||
"narHash": "sha256-fX3ErzTmHRO9z1SzHC2VZUgKOgRfO13X/joC5a3QN7Q=",
|
||||
"lastModified": 1784217994,
|
||||
"narHash": "sha256-gxHJsrJZo2qbKK47Kf/9ho3i/HhRwkL8XvPnczGPd9E=",
|
||||
"owner": "abenz1267",
|
||||
"repo": "walker",
|
||||
"rev": "93d44d1cb41732e1370e4b949429ae8e34ea05a4",
|
||||
"rev": "42b3ed88abf50bc52638fb2835b7f17e3ea3ac4c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -437,11 +437,11 @@
|
||||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1779745227,
|
||||
"narHash": "sha256-yqY7RtEJGJiENzR0GwL6q69tSAy6xAAmAcLuIhLjPf8=",
|
||||
"lastModified": 1784679892,
|
||||
"narHash": "sha256-Mb7jpqnrcYCfNSItIkkHpuR3YxWFxPuIBfcwNKlRBkk=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "5d1efbc9dc3ab1c10160b656e0247f3325daf0f2",
|
||||
"rev": "8d135d3b2854b30fd01ea6cd6c27e523dd50a839",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
matugen = {
|
||||
url = "github:InioX/matugen?ref=v2.4.1";
|
||||
url = "github:InioX/matugen?ref=cf3c74c231e526121bd8e2ce0f1d04702301c342";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixvim = {
|
||||
@@ -60,6 +60,7 @@
|
||||
allowUnfree = true;
|
||||
allowUnsupportedSystem = true;
|
||||
experimental-features = "nix-command flakes";
|
||||
permittedInsecurePackages = [ "pnpm-10.29.2" ];
|
||||
};
|
||||
overlays = [
|
||||
niri.overlays.niri
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
svelte.enable = true;
|
||||
docker.enable = true;
|
||||
};
|
||||
flatpak.enable = true;
|
||||
windows-vm.enable = true;
|
||||
};
|
||||
|
||||
@@ -190,6 +191,7 @@
|
||||
p7zip
|
||||
fzf
|
||||
eza
|
||||
yazi
|
||||
# docker
|
||||
ausweisapp
|
||||
];
|
||||
|
||||
@@ -27,4 +27,30 @@
|
||||
accel_profile = "flat";
|
||||
}
|
||||
];
|
||||
programs.git = {
|
||||
enable = true;
|
||||
signing = {
|
||||
format = "openpgp";
|
||||
key = "6C9E EFC5 1AE0 0131 78DE B9C8 68FF FB1E C187 88CA";
|
||||
signByDefault = true;
|
||||
};
|
||||
settings = {
|
||||
user = {
|
||||
email = "dev@theaninova.de";
|
||||
name = "Thea Schöbl";
|
||||
};
|
||||
pull.rebase = true;
|
||||
init.defaultBranch = "main";
|
||||
merge = {
|
||||
tool = "nvim-mergetool";
|
||||
conflictstyle = "diff3";
|
||||
};
|
||||
mergetool.nvim-mergetool = {
|
||||
cmd = # sh
|
||||
''nvim -f -c "MergetoolStart" "$MERGED" "$BASE" "$LOCAL" "$REMOTE"'';
|
||||
trustExitCode = true;
|
||||
};
|
||||
mergetool.prompt = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -166,6 +166,7 @@
|
||||
p7zip
|
||||
fzf
|
||||
eza
|
||||
yazi
|
||||
];
|
||||
|
||||
networking = {
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
mfact = 0.65;
|
||||
always_keep_position = true;
|
||||
};
|
||||
input.kb_options = "lv3:caps_switch";
|
||||
};
|
||||
monitor = [
|
||||
{
|
||||
|
||||
@@ -60,15 +60,11 @@
|
||||
locale.preset.theaninova.enable = true;
|
||||
|
||||
services.xserver = {
|
||||
xkb = {
|
||||
#variant = "altgr-intl";
|
||||
#layout = "us";
|
||||
layout = "de";
|
||||
};
|
||||
videoDrivers = [ "nvidia" ];
|
||||
};
|
||||
|
||||
services.airprint.enable = true;
|
||||
services.languagetool.enable = true;
|
||||
|
||||
hardware = {
|
||||
q3279vwf.enable = true;
|
||||
@@ -83,7 +79,7 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
cc1.enable = true;
|
||||
luci-keyboard.enable = true;
|
||||
|
||||
nvidia.preset.proprietary.enable = true;
|
||||
|
||||
@@ -155,6 +151,7 @@
|
||||
"audio"
|
||||
"video"
|
||||
"plugdev"
|
||||
"dialout"
|
||||
"cdrom"
|
||||
"kvm"
|
||||
];
|
||||
@@ -178,6 +175,7 @@
|
||||
nfs-utils
|
||||
opensc
|
||||
openssl
|
||||
github-copilot-cli
|
||||
# secure boot / tmp2
|
||||
sbctl
|
||||
tpm2-tss
|
||||
@@ -188,6 +186,7 @@
|
||||
p7zip
|
||||
fzf
|
||||
eza
|
||||
yazi
|
||||
];
|
||||
|
||||
networking = {
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
})
|
||||
];
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.config.input.kb_options = "lv3:caps_switch";
|
||||
services.nextcloud-client.enable = true;
|
||||
systemd.user.services = {
|
||||
nm-applet = {
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
imports = [
|
||||
./programs/neovide.nix
|
||||
./programs/nixvim.nix
|
||||
./programs/git.nix
|
||||
./packages
|
||||
./programs
|
||||
./services
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.auto-session;
|
||||
in
|
||||
{
|
||||
options.presets.auto-session = {
|
||||
enable = lib.mkEnableOption "auto session";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
opts.sessionoptions = lib.mkDefault (
|
||||
lib.strings.concatStringsSep "," [
|
||||
"blank"
|
||||
"buffers"
|
||||
"curdir"
|
||||
"folds"
|
||||
"help"
|
||||
"tabpages"
|
||||
"winsize"
|
||||
"winpos"
|
||||
"terminal"
|
||||
"localoptions"
|
||||
"globals"
|
||||
]
|
||||
);
|
||||
|
||||
plugins = {
|
||||
auto-session = {
|
||||
enable = lib.mkDefault true;
|
||||
settings = {
|
||||
cwd_change_handling = lib.mkDefault true;
|
||||
lazy_support = false;
|
||||
show_auto_restore_notif = true;
|
||||
bypass_save_filetypes = [ "neo-tree" ];
|
||||
};
|
||||
};
|
||||
lz-n.enable = true;
|
||||
neo-tree.lazyLoad = {
|
||||
enable = true;
|
||||
settings.cmd = "Neotree";
|
||||
};
|
||||
fidget.lazyLoad = {
|
||||
enable = true;
|
||||
settings = {
|
||||
event = [ "LspAttach" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -29,6 +29,10 @@ in
|
||||
copilot-lua = lib.mkIf cfg.copilot {
|
||||
enable = true;
|
||||
settings.suggestion.auto_trigger = true;
|
||||
lazyLoad = {
|
||||
enable = true;
|
||||
settings.event = [ "InsertEnter" ];
|
||||
};
|
||||
};
|
||||
minuet = lib.mkIf cfg.ollama {
|
||||
enable = true;
|
||||
@@ -107,7 +111,7 @@ in
|
||||
};
|
||||
documentation = {
|
||||
border = "solid";
|
||||
zindex = 10;
|
||||
zindex = 9;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -18,8 +18,10 @@ in
|
||||
enable = true;
|
||||
settings.formatters_by_ft = lib.mkIf cfg.prettier {
|
||||
javascript = [ "prettierd" ];
|
||||
javascriptreact = [ "prettierd" ];
|
||||
markdown = [ "prettierd" ];
|
||||
typescript = [ "prettierd" ];
|
||||
typescriptreact = [ "prettierd" ];
|
||||
json = [ "prettierd" ];
|
||||
yaml = [ "prettierd" ];
|
||||
html = [ "prettierd" ];
|
||||
|
||||
@@ -31,12 +31,6 @@ in
|
||||
settings = {
|
||||
options = {
|
||||
globalstatus = true;
|
||||
/*
|
||||
section_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
*/
|
||||
component_separators = {
|
||||
left = "┊";
|
||||
right = "┊";
|
||||
@@ -46,25 +40,14 @@ in
|
||||
lualine_a = [
|
||||
{
|
||||
__unkeyed-1 = "mode";
|
||||
/*
|
||||
separator = {
|
||||
right = "";
|
||||
left = "";
|
||||
};
|
||||
*/
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
lualine_c = [ ];
|
||||
lualine_x = lib.mkAfter [ { __unkeyed-1 = "filetype"; } ];
|
||||
lualine_z = [
|
||||
{
|
||||
__unkeyed-1 = "location";
|
||||
/*
|
||||
separator = {
|
||||
right = "";
|
||||
left = "";
|
||||
};
|
||||
*/
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
@@ -26,6 +26,7 @@ in
|
||||
grammarPackages = pkgs.vimPlugins.nvim-treesitter.allGrammars;
|
||||
nixvimInjections = true;
|
||||
};
|
||||
treesitter-textobjects.enable = lib.mkDefault true;
|
||||
indent-blankline = {
|
||||
enable = lib.mkDefault true;
|
||||
settings = {
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.base.tabs;
|
||||
in
|
||||
{
|
||||
options.presets.base.tabs = {
|
||||
enable = lib.mkEnableOption "Tabs";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "<A-f>";
|
||||
action = # vim
|
||||
"<cmd>BufferPrevious<CR>";
|
||||
options.desc = "Navigate Buffer Left";
|
||||
}
|
||||
{
|
||||
key = "<A-h>";
|
||||
action = # vim
|
||||
"<cmd>BufferNext<CR>";
|
||||
options.desc = "Navigate Buffer Right";
|
||||
}
|
||||
{
|
||||
key = "<A-F>";
|
||||
action = # vim
|
||||
"<cmd>BufferMovePrevious<CR>";
|
||||
options.desc = "Move Buffer Left";
|
||||
}
|
||||
{
|
||||
key = "<A-H>";
|
||||
action = # vim
|
||||
"<cmd>BufferMoveNext<CR>";
|
||||
options.desc = "Move Buffer Right";
|
||||
}
|
||||
{
|
||||
key = "<A-p>";
|
||||
action = # vim
|
||||
"<cmd>BufferPin<CR>";
|
||||
options.desc = "Pin Buffer";
|
||||
}
|
||||
{
|
||||
key = "<A-c>";
|
||||
action = # vim
|
||||
"<cmd>BufferClose<CR>";
|
||||
options.desc = "Close Buffer";
|
||||
}
|
||||
{
|
||||
key = "<A-C>";
|
||||
action = # vim
|
||||
"<cmd>BufferRestore<CR>";
|
||||
options.desc = "Close Buffer";
|
||||
}
|
||||
{
|
||||
key = "gb";
|
||||
action = # vim
|
||||
"<cmd>BufferPick<CR>";
|
||||
options.desc = "Pick Buffer";
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
barbar = {
|
||||
enable = true;
|
||||
settings = {
|
||||
highlight_inactive_file_icons = true;
|
||||
icons = {
|
||||
button = "";
|
||||
separator = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
modified.button = "";
|
||||
separator_at_end = false;
|
||||
pinned = {
|
||||
button = "";
|
||||
filename = true;
|
||||
};
|
||||
current = {
|
||||
filetype.custom_colors = true;
|
||||
separator = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
};
|
||||
inactive = {
|
||||
separator = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
minimum_padding = 1;
|
||||
maximum_padding = 1;
|
||||
letters = "etarfkcdmhsunobwgiyzqxvplj.,-ETARFKCDMHSUNOBWGIYZQXVPLJ";
|
||||
};
|
||||
};
|
||||
auto-session.settings = {
|
||||
pre_save_cmds = [
|
||||
{
|
||||
__raw = ''
|
||||
function()
|
||||
-- require("scope.session").save_state()
|
||||
vim.api.nvim_exec_autocmds('User', {pattern = 'SessionSavePre'})
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
post_restore_cmds = [
|
||||
{
|
||||
__raw = ''
|
||||
function()
|
||||
-- require("scope.session").load_state()
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
scope = {
|
||||
enable = false;
|
||||
settings.hooks = {
|
||||
pre_tab_leave.__raw = ''
|
||||
function()
|
||||
vim.api.nvim_exec_autocmds('User', {pattern = 'ScopeTabLeavePre'})
|
||||
end
|
||||
'';
|
||||
post_tab_enter.__raw = ''
|
||||
function()
|
||||
vim.api.nvim_exec_autocmds('User', {pattern = 'ScopeTabEnterPost'})
|
||||
end
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -20,23 +20,18 @@ in
|
||||
web-devicons.enable = true;
|
||||
neo-tree = {
|
||||
enable = true;
|
||||
lazyLoad = {
|
||||
enable = true;
|
||||
settings.cmd = "Neotree";
|
||||
};
|
||||
settings = {
|
||||
event_handlers = [
|
||||
{
|
||||
event = "neo_tree_buffer_leave";
|
||||
handler.__raw = ''
|
||||
function()
|
||||
require('neo-tree').close_all()
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
window.position = "float";
|
||||
filesystem = {
|
||||
use_libuv_file_watcher = true;
|
||||
follow_current_file.enabled = true;
|
||||
filtered_items.visible = true;
|
||||
};
|
||||
popupBorderStyle = "rounded";
|
||||
popup_border_style = "";
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.presets.base.yazi;
|
||||
in
|
||||
{
|
||||
options.presets.base.yazi = {
|
||||
enable = lib.mkEnableOption "yazi";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>y";
|
||||
mode = [
|
||||
"n"
|
||||
"v"
|
||||
];
|
||||
action = # vim
|
||||
"<cmd>Yazi<CR>";
|
||||
}
|
||||
];
|
||||
globals.loaded_netrwPlugin = 1;
|
||||
plugins = {
|
||||
web-devicons.enable = true;
|
||||
yazi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
enable_mouse_support = true;
|
||||
open_for_directories = true;
|
||||
yazi_floating_window_border = "none";
|
||||
keymaps.show_help = "<?>";
|
||||
};
|
||||
lazyLoad = {
|
||||
enable = true;
|
||||
settings.cmd = "Yazi";
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>y";
|
||||
desc = "Yazi";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
./aerial.nix
|
||||
./auto-save.nix
|
||||
./auto-session.nix
|
||||
./auto-format.nix
|
||||
./harpoon.nix
|
||||
./mergetool.nix
|
||||
@@ -33,7 +34,9 @@
|
||||
./base/spellcheck.nix
|
||||
./base/status-line.nix
|
||||
./base/syntax.nix
|
||||
./base/tabs.nix
|
||||
./base/tree.nix
|
||||
./base/yazi.nix
|
||||
|
||||
./languages/angular.nix
|
||||
./languages/c.nix
|
||||
@@ -49,6 +52,7 @@
|
||||
./languages/shell.nix
|
||||
./languages/strudel.nix
|
||||
./languages/svelte.nix
|
||||
./languages/typst.nix
|
||||
|
||||
./remaps/half-page-scroll.nix
|
||||
./remaps/no-accidental-macro.nix
|
||||
|
||||
@@ -10,49 +10,60 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
keymaps = [
|
||||
{
|
||||
key = "hh";
|
||||
key = "<leader>m";
|
||||
mode = "n";
|
||||
action = ":Telescope harpoon marks<CR>";
|
||||
action.__raw = ''
|
||||
function() require("harpoon"):list():add() end
|
||||
'';
|
||||
options.desc = "Mark";
|
||||
}
|
||||
{
|
||||
key = "<leader><leader>";
|
||||
mode = "n";
|
||||
action.__raw = ''
|
||||
function()
|
||||
local harpoon = require("harpoon")
|
||||
local conf = require("telescope.config").values
|
||||
|
||||
local harpoon_files = harpoon:list()
|
||||
|
||||
local file_paths = {}
|
||||
for _, item in ipairs(harpoon_files.items) do
|
||||
table.insert(file_paths, item.value)
|
||||
end
|
||||
|
||||
require("telescope.pickers").new({}, {
|
||||
prompt_title = "Harpoon",
|
||||
finder = require("telescope.finders").new_table({
|
||||
results = file_paths,
|
||||
}),
|
||||
previewer = conf.file_previewer({}),
|
||||
sorter = conf.generic_sorter({}),
|
||||
}):find()
|
||||
end
|
||||
'';
|
||||
options.desc = "Harpoon List";
|
||||
}
|
||||
{
|
||||
key = "<C-n>";
|
||||
mode = "n";
|
||||
action.__raw = ''
|
||||
function() require("harpoon"):list():next() end
|
||||
'';
|
||||
options.desc = "Harpoon Next";
|
||||
}
|
||||
{
|
||||
key = "<C-p>";
|
||||
mode = "n";
|
||||
action.__raw = ''
|
||||
function() require("harpoon"):list():prev() end
|
||||
'';
|
||||
options.desc = "Harpoon Prev";
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
telescope.enable = true;
|
||||
harpoon = {
|
||||
enable = true;
|
||||
enableTelescope = true;
|
||||
keymaps = {
|
||||
addFile = "hm";
|
||||
navNext = "hn";
|
||||
navPrev = "hp";
|
||||
};
|
||||
};
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "h";
|
||||
group = "Harpoon";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "hh";
|
||||
desc = "Marks";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "hm";
|
||||
desc = "Add File";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "hn";
|
||||
desc = "Next";
|
||||
icon = "";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "hp";
|
||||
desc = "Prev";
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
plugins.harpoon = {
|
||||
enable = true;
|
||||
enableTelescope = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -15,7 +15,9 @@ in
|
||||
plugins = {
|
||||
godot.enable = true;
|
||||
conform-nvim.settings.formatters_by_ft.gdscript = [ "gdscript-formatter" ];
|
||||
lsp.servers.gdscript = {
|
||||
};
|
||||
lsp.servers = {
|
||||
gdscript = {
|
||||
enable = true;
|
||||
package = null;
|
||||
config = {
|
||||
@@ -24,6 +26,7 @@ in
|
||||
root_markers = [ "project.godot" ];
|
||||
};
|
||||
};
|
||||
gdshader_lsp.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -14,7 +14,13 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
plugins = {
|
||||
strudel.enable = true;
|
||||
strudel = {
|
||||
enable = true;
|
||||
lazyLoad = {
|
||||
enable = true;
|
||||
settings.ft = [ "strudel" ];
|
||||
};
|
||||
};
|
||||
web-devicons.customIcons = {
|
||||
str = {
|
||||
icon = " ";
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.presets.languages.typst;
|
||||
in
|
||||
{
|
||||
options.presets.languages.typst = {
|
||||
enable = lib.mkEnableOption "Typst";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
lsp.servers.tinymist.enable = true;
|
||||
plugins.typst-preview = {
|
||||
enable = true;
|
||||
lazyLoad = {
|
||||
enable = true;
|
||||
settings.ft = [ "typst" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -64,6 +64,7 @@ in
|
||||
settings = {
|
||||
direction = lib.mkDefault "vertical";
|
||||
size = lib.mkDefault 60;
|
||||
float_opts.border = config.opts.winborder;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -15,18 +15,14 @@
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
# nix
|
||||
cachix
|
||||
# lorri
|
||||
vulnix
|
||||
# gccdiag
|
||||
|
||||
# browsers
|
||||
firefox
|
||||
chromium
|
||||
|
||||
# media
|
||||
yt-dlp
|
||||
f3d
|
||||
makemkv
|
||||
libfaketime
|
||||
@@ -39,13 +35,10 @@
|
||||
|
||||
# chat apps
|
||||
vesktop
|
||||
discord
|
||||
thunderbird
|
||||
signal-desktop
|
||||
# cinny-desktop
|
||||
|
||||
# office
|
||||
libreoffice
|
||||
apostrophe
|
||||
|
||||
# creative
|
||||
@@ -55,12 +48,13 @@
|
||||
audacity
|
||||
pinta
|
||||
losslesscut-bin
|
||||
shotcut
|
||||
pkgsRocm.blender
|
||||
|
||||
# development
|
||||
ghidra
|
||||
kdePackages.kate
|
||||
tinymist
|
||||
typewriter
|
||||
|
||||
# utils
|
||||
kdePackages.ark
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
signing = {
|
||||
format = "openpgp";
|
||||
key = "6C9E EFC5 1AE0 0131 78DE B9C8 68FF FB1E C187 88CA";
|
||||
signByDefault = true;
|
||||
};
|
||||
settings = {
|
||||
user = {
|
||||
email = "dev@theaninova.de";
|
||||
name = "Thea Schöbl";
|
||||
};
|
||||
pull.rebase = true;
|
||||
init.defaultBranch = "main";
|
||||
merge = {
|
||||
tool = "nvim-mergetool";
|
||||
conflictstyle = "diff3";
|
||||
};
|
||||
mergetool.nvim-mergetool = {
|
||||
cmd = # sh
|
||||
''nvim -f -c "MergetoolStart" "$MERGED" "$BASE" "$LOCAL" "$REMOTE"'';
|
||||
trustExitCode = true;
|
||||
};
|
||||
mergetool.prompt = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -4,11 +4,27 @@
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
vimAlias = true;
|
||||
nixpkgs.useGlobalPackages = true;
|
||||
|
||||
performance.byteCompileLua = {
|
||||
enable = true;
|
||||
configs = true;
|
||||
initLua = true;
|
||||
luaLib = true;
|
||||
nvimRuntime = true;
|
||||
plugins = true;
|
||||
};
|
||||
|
||||
extraConfigLuaPre = ''
|
||||
require('vim._core.ui2').enable()
|
||||
'';
|
||||
|
||||
opts = {
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
|
||||
cmdheight = 0;
|
||||
|
||||
tabstop = 2;
|
||||
softtabstop = 2;
|
||||
shiftwidth = 2;
|
||||
@@ -27,6 +43,9 @@
|
||||
updatetime = 50;
|
||||
|
||||
fillchars.eob = " ";
|
||||
|
||||
winborder = "solid";
|
||||
pumborder = "solid";
|
||||
};
|
||||
clipboard = {
|
||||
register = "unnamedplus";
|
||||
@@ -36,16 +55,15 @@
|
||||
|
||||
presets = {
|
||||
auto-save.enable = true;
|
||||
auto-session.enable = true;
|
||||
auto-format.enable = true;
|
||||
lazygit.enable = true;
|
||||
mergetool.enable = true;
|
||||
undotree.enable = true;
|
||||
aerial.enable = true;
|
||||
base = {
|
||||
completion = {
|
||||
enable = true;
|
||||
copilot = true;
|
||||
ollama = false;
|
||||
};
|
||||
diagnostics.enable = true;
|
||||
coverage.enable = false;
|
||||
@@ -58,6 +76,7 @@
|
||||
spellcheck.enable = true;
|
||||
status-line.enable = true;
|
||||
syntax.enable = true;
|
||||
tabs.enable = true;
|
||||
tree.enable = true;
|
||||
};
|
||||
languages = {
|
||||
@@ -81,6 +100,7 @@
|
||||
shell.enable = true;
|
||||
strudel.enable = true;
|
||||
svelte.enable = true;
|
||||
typst.enable = true;
|
||||
};
|
||||
remaps = {
|
||||
half-page-scroll.enable = true;
|
||||
@@ -94,10 +114,41 @@
|
||||
which-key.enable = true;
|
||||
schemastore.enable = true;
|
||||
todo-comments.enable = true;
|
||||
origami.enable = false;
|
||||
nvim-surround.enable = true;
|
||||
lensline.enable = false; # Maybe?
|
||||
ccc.enable = false; # Maybe?
|
||||
spider.enable = false; # Maybe?
|
||||
fidget.enable = true;
|
||||
vim-tidal.enable = true;
|
||||
gitsigns = {
|
||||
enable = true;
|
||||
settings = {
|
||||
current_line_blame = true;
|
||||
signcolumn = true;
|
||||
numhl = true;
|
||||
diff_opts = {
|
||||
ignore_blank_lines = true;
|
||||
ignore_whitespace_change = true;
|
||||
ignore_whitespace_change_at_eol = true;
|
||||
};
|
||||
|
||||
signs_staged = {
|
||||
add.text = "█ ";
|
||||
change.text = "🮙 ";
|
||||
delete.text = "▂ ";
|
||||
topdelete.text = "🮂 ";
|
||||
changedelete.text = "╲ ";
|
||||
untracked.text = "╳ ";
|
||||
};
|
||||
signs = {
|
||||
add.text = "█ ";
|
||||
change.text = "🮙 ";
|
||||
delete.text = "▂ ";
|
||||
topdelete.text = "🮂 ";
|
||||
changedelete.text = "╲ ";
|
||||
untracked.text = "╳ ";
|
||||
};
|
||||
};
|
||||
};
|
||||
treesitter-context = {
|
||||
enable = false; # TODO: looks weird with Neovide
|
||||
settings.line_numbers = false;
|
||||
|
||||
@@ -37,7 +37,7 @@ hl.config({
|
||||
},
|
||||
})
|
||||
|
||||
hl.curve("default", { type = "spring", mass = 1, stiffness = 90, dampening = 30 })
|
||||
hl.curve("default", { type = "spring", mass = 1, stiffness = 270, dampening = 30 })
|
||||
hl.curve("linear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.5, 0.5 } } })
|
||||
|
||||
hl.animation({ leaf = "windows", enabled = true, speed = 1, spring = "default", style = "slide" })
|
||||
@@ -49,5 +49,3 @@ hl.animation({ leaf = "border", enabled = true, speed = 1, spring = "default" })
|
||||
hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "linear" })
|
||||
hl.animation({ leaf = "fadeShadow", enabled = true, speed = 4, bezier = "linear" })
|
||||
hl.animation({ leaf = "fadeDim", enabled = true, speed = 4, bezier = "linear" })
|
||||
|
||||
hl.animation({ leaf = "workspaces", enabled = true, speed = 1, spring = "default", style = "slidevert" })
|
||||
|
||||
@@ -23,16 +23,18 @@ in
|
||||
};
|
||||
flavour = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"content"
|
||||
"expressive"
|
||||
"fidelity"
|
||||
"fruit-salad"
|
||||
"monochrome"
|
||||
"neutral"
|
||||
"rainbow"
|
||||
"tonal-spot"
|
||||
"SchemeContent"
|
||||
"SchemeExpressive"
|
||||
"SchemeFidelity"
|
||||
"SchemeFruitSalad"
|
||||
"SchemeMonochrome"
|
||||
"SchemeNeutral"
|
||||
"SchemeRainbow"
|
||||
"SchemeTonalSpot"
|
||||
"SchemeVibrant"
|
||||
"SchemeSmart"
|
||||
];
|
||||
default = "tonal-spot";
|
||||
default = "SchemeSmart";
|
||||
description = "The flavour of the theme";
|
||||
};
|
||||
contrast = lib.mkOption {
|
||||
@@ -189,106 +191,14 @@ in
|
||||
pkgs.zenity
|
||||
pkgs.sunwait
|
||||
];
|
||||
text =
|
||||
# sh
|
||||
''
|
||||
WALLPAPER=${config.xdg.configHome}/matugen/wallpaper
|
||||
STATE=${config.xdg.stateHome}/md3-evo
|
||||
|
||||
SCHEME=$(dconf read /org/gnome/desktop/interface/color-scheme)
|
||||
if [ "$SCHEME" = "'prefer-light'" ]; then
|
||||
MODE="light"
|
||||
else
|
||||
MODE="dark"
|
||||
fi
|
||||
|
||||
if [ ! -d "$STATE" ]; then
|
||||
mkdir -p "$STATE"
|
||||
fi
|
||||
if [ -f "$STATE/mode" ]; then
|
||||
MODE=$(cat "$STATE/mode")
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo -e "\033[1mUsage:\033[0m mode|light|dark|auto|toggle|wallpaper"
|
||||
exit 1
|
||||
elif [ "$1" = "mode" ]; then
|
||||
echo -e "$MODE"
|
||||
exit 0
|
||||
elif [ "$1" = "wallpaper" ]; then
|
||||
if [ $# -eq 1 ]; then
|
||||
PICKED=$(zenity --file-selection --file-filter='Images | *.png *.jpg *.jpeg *.svg *.bmp *.gif')
|
||||
cp "$PICKED" "$WALLPAPER"
|
||||
else
|
||||
cp "$2" "$WALLPAPER"
|
||||
fi
|
||||
elif [ "$1" = "toggle" ]; then
|
||||
if [ "$MODE" = "light" ]; then
|
||||
MODE="dark"
|
||||
else
|
||||
MODE="light"
|
||||
fi
|
||||
echo "$MODE" > "$STATE/mode"
|
||||
elif [ "$1" = "light" ] || [ "$1" = "dark" ] || [ "$1" == "auto" ]; then
|
||||
MODE="$1"
|
||||
echo "$MODE" > "$STATE/mode"
|
||||
elif [ "$1" = "init" ]; then
|
||||
echo -e "\033[1mSetting up matugen\033[0m"
|
||||
else
|
||||
echo -e "\033[31mInvalid argument\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $WALLPAPER ]; then
|
||||
echo -e "\033[31,1mNo wallpaper set\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
THEME_SERVICE_PATH="${config.xdg.configHome}/systemd/user/theme-init.timer"
|
||||
if [ "$MODE" = "auto" ]; then
|
||||
TIME=$(sunwait poll ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E || :)
|
||||
if [ "$TIME" = "DAY" ]; then
|
||||
MODE="light"
|
||||
NEXT=6
|
||||
else
|
||||
MODE="dark"
|
||||
NEXT=4
|
||||
fi
|
||||
NEXT=$(sunwait report ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E | awk "/Daylight:/ {print \$$NEXT}")
|
||||
cat <<EOF | tee "$THEME_SERVICE_PATH" > /dev/null
|
||||
[Unit]
|
||||
Description=Next theme change timer
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* $(date -d "$NEXT today + 5 minutes" +'%H:%M'):00
|
||||
AccuracySec=1min
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOF
|
||||
else
|
||||
rm -f "$THEME_SERVICE_PATH"
|
||||
fi
|
||||
systemctl --user daemon-reload &> /dev/null || :
|
||||
systemctl --user restart theme-init.timer &> /dev/null || :
|
||||
|
||||
if command -v niri &> /dev/null; then
|
||||
niri msg action do-screen-transition --delay-ms 500
|
||||
fi
|
||||
|
||||
if [ "$MODE" = "light" ]; then
|
||||
GTK_THEME="adw-gtk3"
|
||||
else
|
||||
GTK_THEME="adw-gtk3-dark"
|
||||
fi
|
||||
|
||||
matugen image "$WALLPAPER" --type scheme-${cfg.flavour} --contrast ${builtins.toString cfg.contrast} --mode "$MODE"
|
||||
awww img "$WALLPAPER"
|
||||
|
||||
dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'"
|
||||
dconf write /org/gnome/desktop/interface/color-scheme "'prefer-$MODE'"
|
||||
dconf write /org/gnome/desktop/interface/icon-theme "'Tela'"
|
||||
'';
|
||||
runtimeEnv = {
|
||||
STATE = "/home/theaninova/.local/state/md3-evo";
|
||||
THEME_SERVICE_PATH = "${config.xdg.configHome}/systemd/user/theme-init.timer";
|
||||
FLAVOUR = toString cfg.flavour;
|
||||
LAT = "${toString cfg.auto-dark.lat}N";
|
||||
LON = "${toString cfg.auto-dark.lon}E";
|
||||
};
|
||||
text = builtins.readFile ./theme.sh;
|
||||
}
|
||||
);
|
||||
in
|
||||
@@ -297,9 +207,12 @@ in
|
||||
pkgs.adw-gtk3
|
||||
pkgs.awww
|
||||
pkgs.tela-icon-theme
|
||||
pkgs.adwaita-icon-theme
|
||||
pkgs.adwaita-icon-theme-legacy
|
||||
pkgs.bibata-cursors
|
||||
pkgs.gnome-themes-extra
|
||||
theme-script
|
||||
];
|
||||
|
||||
gtk = {
|
||||
gtk3.extraCss = # css
|
||||
"@import './theme.css';";
|
||||
@@ -399,6 +312,10 @@ in
|
||||
settings = {
|
||||
config = {
|
||||
version_check = false;
|
||||
source_color_index = 0;
|
||||
|
||||
contrast = cfg.contrast;
|
||||
type = cfg.flavour;
|
||||
|
||||
reload_apps_list = {
|
||||
waybar = config.programs.waybar.enable;
|
||||
@@ -436,20 +353,26 @@ in
|
||||
info = mkColor "semantic" "info";
|
||||
};
|
||||
|
||||
custom_keywords = {
|
||||
inherit (cfg) flavour;
|
||||
padding = builtins.toString cfg.padding;
|
||||
double_padding = builtins.toString (cfg.padding * 2);
|
||||
radius = builtins.toString cfg.radius;
|
||||
transparency = builtins.toString cfg.transparency;
|
||||
blur = builtins.toString cfg.blur;
|
||||
contrast = builtins.toString cfg.contrast;
|
||||
transparency_hex =
|
||||
let
|
||||
zeroPad = hex: if builtins.stringLength hex == 1 then "0${hex}" else hex;
|
||||
in
|
||||
zeroPad (lib.trivial.toHexString (builtins.floor (cfg.transparency * 255)));
|
||||
};
|
||||
import_json_files = [
|
||||
(pkgs.writeText "keywords.json" (
|
||||
builtins.toJSON {
|
||||
custom = {
|
||||
inherit (cfg) flavour;
|
||||
padding = toString cfg.padding;
|
||||
double_padding = toString (cfg.padding * 2);
|
||||
radius = toString cfg.radius;
|
||||
transparency = toString cfg.transparency;
|
||||
blur = toString cfg.blur;
|
||||
contrast = toString cfg.contrast;
|
||||
transparency_hex =
|
||||
let
|
||||
zeroPad = hex: if builtins.stringLength hex == 1 then "0${hex}" else hex;
|
||||
in
|
||||
zeroPad (lib.trivial.toHexString (builtins.floor (cfg.transparency * 255)));
|
||||
};
|
||||
}
|
||||
))
|
||||
];
|
||||
};
|
||||
|
||||
templates =
|
||||
|
||||
@@ -37,7 +37,7 @@ let g:terminal_color_14 = "{{colors.cyan.default.hex}}"
|
||||
let g:terminal_color_15 = "{{colors.on_surface_variant.default.hex}}"
|
||||
set termguicolors
|
||||
|
||||
set background={{mode | to_lower}}
|
||||
set background={{mode | lower_case}}
|
||||
|
||||
if exists("g:neovide")
|
||||
hi! Normal guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
|
||||
@@ -115,15 +115,49 @@ hi! SpellRare gui=undercurl guisp={{colors.success.default.hex}}
|
||||
hi! SpellLocal gui=undercurl guisp={{colors.success.default.hex}}
|
||||
|
||||
hi! DiffAdd guibg={{colors.green_container.default.hex}} guifg={{colors.on_green_container.default.hex}}
|
||||
hi! DiffChange guibg={{colors.yellow_container.default.hex}} guifg={{colors.on_yellow_container.default.hex}}
|
||||
hi! DiffChange guibg={{colors.blue_container.default.hex}} guifg={{colors.on_blue_container.default.hex}}
|
||||
hi! DiffDelete guibg={{colors.red_container.default.hex}} guifg={{colors.on_red_container.default.hex}}
|
||||
hi! DiffText guibg={{colors.blue_container.default.hex}} guifg={{colors.on_blue_container.default.hex}}
|
||||
hi! DiffText guibg={{colors.yellow_container.default.hex}} guifg={{colors.on_yellow_container.default.hex}}
|
||||
|
||||
hi Added guifg={{colors.green.default.hex}}
|
||||
hi Changed guifg={{colors.blue.default.hex}}
|
||||
hi Removed guifg={{colors.red.default.hex}}
|
||||
|
||||
hi GitSignsAdd guibg={{colors.green_container.default.hex}} guifg={{colors.green.default.hex | auto_lightness: 40.0}}
|
||||
hi GitSignsChange guibg={{colors.blue_container.default.hex}} guifg={{colors.blue.default.hex | auto_lightness: 30.0}}
|
||||
hi GitSignsDelete guibg={{colors.red_container.default.hex}} guifg={{colors.red.default.hex | auto_lightness: 40.0}}
|
||||
hi GitSignsTopdelete guibg={{colors.red_container.default.hex}} guifg={{colors.red.default.hex | auto_lightness: 40.0}}
|
||||
hi GitSignsChangedelete guibg={{colors.yellow_container.default.hex}} guifg={{colors.yellow.default.hex | auto_lightness: 30.0}}
|
||||
hi GitSignsUntracked guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex | auto_lightness: 30.0}}
|
||||
|
||||
hi GitSignsStagedAdd guibg={{colors.green_container.default.hex}} guifg={{colors.green.default.hex}}
|
||||
hi GitSignsStagedChange guibg={{colors.blue_container.default.hex}} guifg={{colors.blue.default.hex}}
|
||||
hi GitSignsStagedDelete guibg={{colors.red_container.default.hex}} guifg={{colors.red.default.hex}}
|
||||
hi GitSignsStagedTopdelete guibg={{colors.red_container.default.hex}} guifg={{colors.red.default.hex}}
|
||||
hi GitSignsStagedChangedelete guibg={{colors.yellow_container.default.hex}} guifg={{colors.yellow.default.hex}}
|
||||
hi GitSignsStagedUntracked guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
|
||||
|
||||
hi GitSignsAddNr guibg={{colors.green_container.default.hex}} guifg={{colors.on_green_container.default.hex}}
|
||||
hi GitSignsChangeNr guibg={{colors.blue_container.default.hex}} guifg={{colors.on_blue_container.default.hex}}
|
||||
hi GitSignsDeleteNr guibg={{colors.red_container.default.hex}} guifg={{colors.on_red_container.default.hex}}
|
||||
hi GitSignsTopdeleteNr guibg={{colors.red_container.default.hex}} guifg={{colors.on_red_container.default.hex}}
|
||||
hi GitSignsChangedeleteNr guibg={{colors.yellow_container.default.hex}} guifg={{colors.on_yellow_container.default.hex}}
|
||||
hi GitSignsUntrackedNr guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
|
||||
|
||||
hi GitSignsStagedAddNr guibg={{colors.green_container.default.hex}} guifg={{colors.on_green_container.default.hex}}
|
||||
hi GitSignsStagedChangeNr guibg={{colors.blue_container.default.hex}} guifg={{colors.on_blue_container.default.hex}}
|
||||
hi GitSignsStagedDeleteNr guibg={{colors.red_container.default.hex}} guifg={{colors.on_red_container.default.hex}}
|
||||
hi GitSignsStagedTopdeleteNr guibg={{colors.red_container.default.hex}} guifg={{colors.on_red_container.default.hex}}
|
||||
hi GitSignsStagedChangedeleteNr guibg={{colors.yellow_container.default.hex}} guifg={{colors.on_yellow_container.default.hex}}
|
||||
hi GitSignsStagedUntrackedNr guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
|
||||
|
||||
hi GitSignsCurrentLineBlame guifg={{colors.outline.default.hex}}
|
||||
|
||||
hi! NeoTreeGitAdded guifg={{colors.green.default.hex}}
|
||||
hi! NeoTreeGitDeleted guifg={{colors.red.default.hex}}
|
||||
hi! NeoTreeGitModified guifg={{colors.yellow.default.hex}}
|
||||
hi! NeoTreeGitModified guifg={{colors.blue.default.hex}}
|
||||
hi! NeoTreeGitConflict guifg={{colors.danger.default.hex}}
|
||||
hi! NeoTreeGitUntracked guifg={{colors.blue.default.hex}}
|
||||
hi! NeoTreeGitUntracked guifg={{colors.yellow.default.hex}}
|
||||
|
||||
hi! NonText guifg={{colors.outline_variant.default.hex}}
|
||||
hi! CursorLineNr guifg={{colors.on_surface.default.hex}}
|
||||
@@ -221,6 +255,27 @@ hi! MatchParen gui=none guibg={{colors.surface_container_highest.default.hex}}
|
||||
|
||||
hi! LspInlayHint gui=italic guifg={{colors.outline.default.hex}} guibg={{colors.surface_container_highest.default.hex}}
|
||||
|
||||
hi BufferCurrent guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
|
||||
hi BufferCurrentMod guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
|
||||
hi BufferCurrentIcon guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
|
||||
hi BufferCurrentSign guibg={{colors.surface.default.hex}} guifg={{colors.primary.default.hex}}
|
||||
hi BufferCurrentTarget guibg={{colors.primary.default.hex}} guifg={{colors.on_primary.default.hex}}
|
||||
|
||||
hi BufferVisible guibg={{colors.primary_container.default.hex}} guifg={{colors.on_primary_container.default.hex}}
|
||||
hi BufferVisibleIcon guibg={{colors.primary_container.default.hex}}
|
||||
hi BufferVisibleSign guibg={{colors.surface.default.hex}} guifg={{colors.primary_container.default.hex}}
|
||||
hi BufferVisibleTarget guibg={{colors.primary_container.default.hex}} guifg={{colors.primary.default.hex}}
|
||||
|
||||
hi BufferInactive guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
|
||||
hi BufferInactiveIcon guibg={{colors.surface.default.hex}}
|
||||
hi BufferInactiveSign guibg={{colors.surface.default.hex}} guifg={{colors.outline.default.hex}}
|
||||
hi BufferInactiveTarget guibg={{colors.surface.default.hex}} guifg={{colors.primary.default.hex}}
|
||||
|
||||
hi BufferTabpageFill guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
|
||||
hi BufferScrollArrow guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
|
||||
hi BufferTabpages guibg={{colors.surface.default.hex}} guifg={{colors.secondary.default.hex}}
|
||||
hi BufferTabpagesSep guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}
|
||||
|
||||
let g:lualine_theme = {
|
||||
\ "insert": {
|
||||
\ "a": {"fg": "{{colors.on_green.default.hex}}", "bg": "{{colors.green.default.hex}}", "gui": "bold"},
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
SCHEME=$(dconf read /org/gnome/desktop/interface/color-scheme)
|
||||
if [ "$SCHEME" = "'prefer-light'" ]; then
|
||||
MODE="light"
|
||||
else
|
||||
MODE="dark"
|
||||
fi
|
||||
|
||||
if [ ! -d "$STATE" ]; then
|
||||
mkdir -p "$STATE"
|
||||
fi
|
||||
if [ -f "$STATE/mode" ]; then
|
||||
MODE=$(cat "$STATE/mode")
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo -e "\033[1mUsage:\033[0m mode|light|dark|auto|toggle|wallpaper"
|
||||
exit 1
|
||||
elif [ "$1" = "mode" ]; then
|
||||
echo -e "$MODE"
|
||||
exit 0
|
||||
elif [ "$1" = "wallpaper" ]; then
|
||||
if [ $# -eq 1 ]; then
|
||||
PICKED=$(zenity --file-selection --file-filter='Images | *.png *.jpg *.jpeg *.svg *.bmp *.gif')
|
||||
else
|
||||
dconf write /org/gnome/desktop/background/picture-uri "'file://$2'"
|
||||
fi
|
||||
dconf write /org/gnome/desktop/background/picture-uri "'file://$PICKED'"
|
||||
elif [ "$1" = "wallpaper-dark" ]; then
|
||||
if [ $# -eq 1 ]; then
|
||||
PICKED=$(zenity --file-selection --file-filter='Images | *.png *.jpg *.jpeg *.svg *.bmp *.gif')
|
||||
else
|
||||
dconf write /org/gnome/desktop/background/picture-uri-dark "'file://$2'"
|
||||
fi
|
||||
dconf write /org/gnome/desktop/background/picture-uri-dark "'file://$PICKED'"
|
||||
elif [ "$1" = "toggle" ]; then
|
||||
if [ "$MODE" = "light" ]; then
|
||||
MODE="dark"
|
||||
else
|
||||
MODE="light"
|
||||
fi
|
||||
echo "$MODE" >"$STATE/mode"
|
||||
elif [ "$1" = "light" ] || [ "$1" = "dark" ] || [ "$1" == "auto" ]; then
|
||||
MODE="$1"
|
||||
echo "$MODE" >"$STATE/mode"
|
||||
elif [ "$1" = "init" ]; then
|
||||
echo -e "\033[1mSetting up matugen\033[0m"
|
||||
else
|
||||
echo -e "\033[31mInvalid argument\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$MODE" = "auto" ]; then
|
||||
TIME=$(sunwait poll "$LAT" "$LON" || :)
|
||||
if [ "$TIME" = "DAY" ]; then
|
||||
MODE="light"
|
||||
NEXT=6
|
||||
else
|
||||
MODE="dark"
|
||||
NEXT=4
|
||||
fi
|
||||
NEXT=$(sunwait report "$LAT" "$LON" | awk "/Daylight:/ {print \$$NEXT}")
|
||||
cat <<EOF | tee "$THEME_SERVICE_PATH" >/dev/null
|
||||
[Unit]
|
||||
Description=Next theme change timer
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* $(date -d "$NEXT today + 5 minutes" +'%H:%M'):00
|
||||
AccuracySec=1min
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOF
|
||||
else
|
||||
rm -f "$THEME_SERVICE_PATH"
|
||||
fi
|
||||
systemctl --user daemon-reload &>/dev/null || :
|
||||
systemctl --user restart theme-init.timer &>/dev/null || :
|
||||
|
||||
if command -v niri &>/dev/null; then
|
||||
niri msg action do-screen-transition --delay-ms 500
|
||||
fi
|
||||
|
||||
if [ "$MODE" = "light" ]; then
|
||||
GTK_THEME="adw-gtk3"
|
||||
WALLPAPER=$(dconf read /org/gnome/desktop/background/picture-uri | sed "s/'file:\/\///;s/'//g")
|
||||
else
|
||||
GTK_THEME="adw-gtk3-dark"
|
||||
WALLPAPER=$(dconf read /org/gnome/desktop/background/picture-uri-dark | sed "s/'file:\/\///;s/'//g")
|
||||
fi
|
||||
|
||||
if [ ! -f "$WALLPAPER" ]; then
|
||||
echo -e "\033[31,1mNo wallpaper set\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
matugen image "$WALLPAPER" --mode "$MODE"
|
||||
awww img "$WALLPAPER"
|
||||
|
||||
dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'"
|
||||
dconf write /org/gnome/desktop/interface/color-scheme "'prefer-$MODE'"
|
||||
dconf write /org/gnome/desktop/interface/icon-theme "'Tela'"
|
||||
@@ -15,6 +15,7 @@
|
||||
./hardware/astro-a50.nix
|
||||
./hardware/audio.nix
|
||||
./hardware/gbmonctl.nix
|
||||
./hardware/luci-keyboard.nix
|
||||
./hardware/nvidia-proprietary.nix
|
||||
./hardware/nvidia-nouveau.nix
|
||||
./hardware/amdgpu.nix
|
||||
@@ -28,6 +29,7 @@
|
||||
|
||||
./usecases/3d-printing.nix
|
||||
./usecases/development.nix
|
||||
./usecases/flatpak.nix
|
||||
./usecases/gaming.nix
|
||||
./usecases/localai.nix
|
||||
./usecases/nix-ld.nix
|
||||
|
||||
@@ -16,7 +16,10 @@ in
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [ glib ];
|
||||
environment.systemPackages = with pkgs; [
|
||||
glib
|
||||
adwaita-icon-theme
|
||||
];
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
@@ -90,7 +93,7 @@ in
|
||||
services = {
|
||||
kmscon = {
|
||||
enable = true;
|
||||
hwRender = true;
|
||||
config.hwaccel = true;
|
||||
};
|
||||
greetd = {
|
||||
enable = true;
|
||||
|
||||
@@ -137,7 +137,7 @@ in
|
||||
services = {
|
||||
kmscon = {
|
||||
enable = true;
|
||||
hwRender = true;
|
||||
config.hwaccel = true;
|
||||
};
|
||||
greetd = {
|
||||
enable = true;
|
||||
|
||||
@@ -56,6 +56,13 @@ in
|
||||
no_break_fs_vrr = 1;
|
||||
};
|
||||
};
|
||||
animation = {
|
||||
leaf = "workspaces";
|
||||
enabled = true;
|
||||
speed = 1;
|
||||
spring = "default";
|
||||
style = "slidevert";
|
||||
};
|
||||
monitor = {
|
||||
output = "DP-3";
|
||||
mode = "3840x2160@144";
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
xkb_symbols "luci-keyboard"
|
||||
{
|
||||
include "de(basic)"
|
||||
|
||||
key <CAPS> {[backslash, bar]};
|
||||
key <INS> {
|
||||
type="ONE_LEVEL",
|
||||
symbols[Group1] = [ bar ]
|
||||
};
|
||||
key <PGUP> {[braceleft]};
|
||||
key <PGDN> {[braceright]};
|
||||
key <HOME> {
|
||||
type="ONE_LEVEL",
|
||||
symbols[Group1] = [ at ]
|
||||
};
|
||||
key <END> {[asciitilde]};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.hardware.luci-keyboard;
|
||||
in
|
||||
{
|
||||
options.hardware.luci-keyboard = {
|
||||
enable = mkEnableOption "Enable Luci Keyboard Layout";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home-manager.users."${username}".xdg.configFile."xkb/symbols/luci-keyboard".source =
|
||||
./luci-keyboard;
|
||||
console.useXkbConfig = true;
|
||||
services.xserver.xkb = {
|
||||
layout = "luci-keyboard";
|
||||
extraLayouts.luci-keyboard = {
|
||||
description = "Luci's optimized layout";
|
||||
languages = [
|
||||
"ger"
|
||||
];
|
||||
symbolsFile = ./luci-keyboard;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -24,6 +24,9 @@ in
|
||||
# Bambu Network Plugin
|
||||
networking.firewall.allowedUDPPorts = [ 2021 ];
|
||||
home-manager.users.${username} = {
|
||||
home.packages = with pkgs; [
|
||||
orca-slicer
|
||||
];
|
||||
programs = {
|
||||
lazygit.enable = true;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.usecases.flatpak;
|
||||
|
||||
home-path = "${config.home-manager.users.${username}.home.path}";
|
||||
home-files = "${config.home-manager.users.${username}.home-files}";
|
||||
icon_theme_name = "${config.home-manager.users.${username}.gtk.iconTheme.name}";
|
||||
theme_name = "${config.home-manager.users.${username}.gtk.theme.name}";
|
||||
cursor_theme_name = "${config.home-manager.users.${username}.gtk.cursorTheme.name}";
|
||||
in
|
||||
let
|
||||
gawk = "${pkgs.gawk}/bin/gawk";
|
||||
flatpak = "${pkgs.flatpak}/bin/flatpak";
|
||||
su = "${pkgs.su}/bin/su";
|
||||
cursor_theme_path = "${home-files}/.local/share/icons/${cursor_theme_name}";
|
||||
icon_theme_path = "${home-files}/.local/share/icons/${icon_theme_name}";
|
||||
theme_path = "${home-files}/.local/share/themes/${theme_name}";
|
||||
icon_theme_path_1 = "${home-path}/share/icons/${icon_theme_name}";
|
||||
theme_path_1 = "${home-path}/share/themes/${theme_name}";
|
||||
in
|
||||
let
|
||||
workaround =
|
||||
# sh
|
||||
''
|
||||
if [ ! -f /var/lib/flatpak/overrides/global ]; then
|
||||
touch /var/lib/flatpak/overrides/global
|
||||
fi
|
||||
${gawk} -i inplace '{gsub(/\/nix\/store[^;]*;|!\/nix\/store[^;]*;/,""); print}' /var/lib/flatpak/overrides/global
|
||||
${gawk} -i inplace '{gsub(/filesystems=/,"filesystems=${icon_theme_path};${theme_path};${cursor_theme_path};"); print}' /var/lib/flatpak/overrides/global
|
||||
${gawk} -i inplace '{gsub(/\/nix\/store[^;]*;|!\/nix\/store[^;]*;/,""); print}' "/home/${username}/.local/share/flatpak/overrides/global"
|
||||
${gawk} -i inplace '{gsub(/filesystems=/,"filesystems=${icon_theme_path};${theme_path};${cursor_theme_path};"); print}' "/home/${username}/.local/share/flatpak/overrides/global"
|
||||
${flatpak} override --env=GTK_THEME=${theme_name}
|
||||
${su} "${username}" -c '${flatpak} override --user --env=GTK_THEME=${theme_name}'
|
||||
'';
|
||||
in
|
||||
{
|
||||
options.usecases.flatpak = {
|
||||
enable = mkEnableOption "Enable flatpak stuff";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
fonts.fontDir.enable = true;
|
||||
|
||||
# Need to run
|
||||
# flatpak --user override --filesystem=$HOME/.local/share/fonts:ro
|
||||
# flatpak --user override --filesystem=$HOME/.icons:ro
|
||||
# flatpak --user override --filesystem=/nix/store:ro
|
||||
# flatpak --user override --filesystem=/run/current-system/sw/share/X11/fonts:ro
|
||||
|
||||
system.fsPackages = [ pkgs.bindfs ];
|
||||
fileSystems =
|
||||
let
|
||||
mkRoSymBind = path: {
|
||||
device = path;
|
||||
fsType = "fuse.bindfs";
|
||||
options = [
|
||||
"ro"
|
||||
"resolve-symlinks"
|
||||
"x-gvfs-hide"
|
||||
];
|
||||
};
|
||||
fontsPkgs =
|
||||
config.fonts.packages
|
||||
++ (with pkgs; [
|
||||
# Add your cursor themes and icon packages here
|
||||
bibata-cursors
|
||||
gnome-themes-extra
|
||||
adwaita-icon-theme
|
||||
tela-icon-theme
|
||||
# etc.
|
||||
]);
|
||||
x11Fonts =
|
||||
pkgs.runCommand "X11-fonts"
|
||||
{
|
||||
preferLocalBuild = true;
|
||||
nativeBuildInputs = with pkgs; [
|
||||
gzip
|
||||
mkfontdir
|
||||
];
|
||||
}
|
||||
(
|
||||
''
|
||||
mkdir -p "$out/share/fonts"
|
||||
font_regexp='.*\.\(ttf\|ttc\|otb\|otf\|pcf\|pfa\|pfb\|bdf\)\(\.gz\)?'
|
||||
''
|
||||
+ (builtins.concatStringsSep "\n" (
|
||||
builtins.map (pkg: ''
|
||||
find ${toString pkg} -regex "$font_regexp" \
|
||||
-exec ln -sf -t "$out/share/fonts" '{}' \;
|
||||
'') fontsPkgs
|
||||
))
|
||||
+ ''
|
||||
cd "$out/share/fonts"
|
||||
mkfontscale
|
||||
mkfontdir
|
||||
cat $(find ${pkgs.font-alias}/ -name fonts.alias) >fonts.alias
|
||||
''
|
||||
);
|
||||
aggregatedIcons = pkgs.buildEnv {
|
||||
name = "system-icons";
|
||||
paths = fontsPkgs;
|
||||
pathsToLink = [
|
||||
"/share/icons"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
"/usr/share/icons" = mkRoSymBind (aggregatedIcons + "/share/icons");
|
||||
"/usr/share/fonts" = mkRoSymBind (x11Fonts + "/share/fonts");
|
||||
};
|
||||
|
||||
services.flatpak.enable = true;
|
||||
##workaround for themes and icons
|
||||
systemd.services.workaround-for-theme-and-icons = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "systemd-user-sessions.service" ];
|
||||
before = [ "getty.target" ];
|
||||
script = workaround;
|
||||
};
|
||||
home-manager.users.${username}.home.file = {
|
||||
".local/share/icons/${icon_theme_name}".source =
|
||||
config.home-manager.users.${username}.lib.file.mkOutOfStoreSymlink
|
||||
"${icon_theme_path_1}";
|
||||
".local/share/themes/${theme_name}".source =
|
||||
config.home-manager.users.${username}.lib.file.mkOutOfStoreSymlink
|
||||
"${theme_path_1}";
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user