chore: reorganize

This commit is contained in:
Christoph Hollizeck 2025-12-02 15:18:15 +01:00
parent 4897d002a8
commit 318294f683
Signed by: Daholli
GPG key ID: 249300664F2AF2C7
7 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,24 @@
{
flake.modules = {
nixos.base = {
nixpkgs.config.allowUnFree = true;
home-manager = {
backupFileExtension = "bak";
useUserPackages = true;
useGlobalPkgs = true;
};
};
homeManager.base = {
programs.home-manager.enable = true;
services = {
home-manager.autoExpire = {
enable = true;
frequency = "weekly";
store.cleanup = true;
};
};
};
};
}

View file

@ -0,0 +1,80 @@
{
flake.modules = {
nixos.base =
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
fastfetch
fd
tree
ripgrep
fzf
eza
#optional
pciutils
usbutils
btop
zip
unzip
nettools
];
};
homeManager.base =
{
lib,
osConfig,
pkgs,
...
}:
{
catppuccin.fish.enable = true;
programs = {
fish = {
enable = true;
shellInit = ''
set -x LESS_TERMCAP_mb \e'[01;32m'
set -x LESS_TERMCAP_md \e'[01;32m'
set -x LESS_TERMCAP_me \e'[0m'
set -x LESS_TERMCAP_se \e'[0m'
set -x LESS_TERMCAP_so \e'[01;47;34m'
set -x LESS_TERMCAP_ue \e'[0m'
set -x LESS_TERMCAP_us \e'[01;36m'
set -x LESS -R
set -x GROFF_NO_SGR 1
'';
shellAliases = {
vim = "hx";
ls = "eza -lah --icons --git";
lss = "ls --total-size";
lt = "ls -T --git-ignore";
};
functions = {
checkHash = "nix hash to-sri --type sha256 $(nix-prefetch-url --unpack $argv)";
deployNixberry = "${lib.getExe osConfig.programs.nh.package} os switch --target-host nixberry -H nixberry";
deployLoptland = "${lib.getExe osConfig.programs.nh.package} os switch --target-host christophhollizeck.dev -H loptland";
exportMachineSSHkey = "export SOPS_AGE_KEY=$(sudo ssh-to-age -i /etc/ssh/ssh_host_ed25519_key -private-key)
";
checkPR = ''cd /home/cholli/projects/NixOS/nixpkgs && ${lib.getExe pkgs.nixpkgs-review} pr $argv --post-result --systems "x86_64-linux aarch64-linux"'';
};
plugins = with pkgs.fishPlugins; [
{
name = "forgit";
src = forgit.src;
}
];
};
zoxide = {
enable = true;
options = [ "--cmd cd" ];
};
};
};
};
}

129
modules/base/home/git.nix Normal file
View file

@ -0,0 +1,129 @@
topLevel: {
flake.modules = {
nixos.base =
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
git
];
};
homeManager.cholli =
{
config,
lib,
osConfig,
...
}:
let
username = topLevel.config.flake.meta.users.cholli.username;
in
{
programs.git = {
enable = true;
lfs.enable = true;
signing = {
key = topLevel.config.flake.meta.users.cholli.key;
signByDefault = true;
};
ignores = [
".direnv/"
".devenv/"
"result"
];
settings = {
user = {
name = topLevel.config.flake.meta.users.cholli.name;
email = topLevel.config.flake.meta.users.cholli.email;
};
core = {
fsmonitor = true;
};
init = {
defaultBranch = "main";
};
pull = {
rebase = true;
};
push = {
autoSetupRemote = true;
};
rebase = {
autoStash = true;
};
safe = {
directory = "/home/${username}/projects/config";
};
maintenance = {
repo = [
"/home/${username}/projects/NixOS/nixpkgs"
"/home/${username}/projects/config"
];
strategy = "incremental";
};
lfs."https://git.christophhollizeck.dev/Daholli/nixos-config.git/info/lfs".locksverify = true;
};
};
systemd.user = lib.mkIf (osConfig.networking.hostName == "yggdrasil") {
services."git-maintenance@" = {
Unit = {
Description = "Optimize Git repositories data";
};
Service = {
Type = "oneshot";
ExecStart = ''"${lib.getExe config.programs.git.package}" --exec-path="${lib.getBin config.programs.git.package}/bin" -c credential.interactive=false -c core.askPass=true for-each-repo --config=maintenance.repo maintenance run --schedule=%i'';
LockPersonality = "yes";
MemoryDenyWriteExecute = "yes";
NoNewPrivileges = "yes";
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_VSOCK";
RestrictNamespaces = "yes";
RestrictRealtime = "yes";
RestrictSUIDSGID = "yes";
SystemCallArchitectures = "native";
SystemCallFilter = "@system-service";
};
};
timers = {
"git-maintenance@hourly" = {
Unit = {
Description = "Optimize Git repositories data";
};
Timer = {
OnCalendar = "*-*-* *:00:00";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
"git-maintenance@daily" = {
Unit = {
Description = "Optimize Git repositories data";
};
Timer = {
OnCalendar = "*-*-* 20:00:00";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
"git-maintenance@weekly" = {
Unit = {
Description = "Optimize Git repositories data";
};
Timer = {
OnCalendar = "Sun *-*-* 20:00:00";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
};
};
};
};
}

200
modules/base/home/helix.nix Normal file
View file

@ -0,0 +1,200 @@
{
flake.modules = {
nixos.base =
{
inputs,
pkgs,
...
}:
let
helix-pkg = inputs.helix.packages.${pkgs.stdenv.hostPlatform.system}.default;
in
{
environment = {
systemPackages = [
helix-pkg
];
};
};
homeManager.cholli =
{
inputs,
lib,
pkgs,
...
}:
let
helix-pkg = inputs.helix.packages.${pkgs.stdenv.hostPlatform.system}.default;
in
{
home.file.".config/helix/ignore".text = ''
.idea/
!**/appsettings.json
.direnv/
.devenv/
'';
catppuccin.helix.enable = true;
programs.helix = {
enable = true;
package = helix-pkg;
defaultEditor = true;
settings = {
editor = {
auto-format = true;
line-number = "relative";
file-picker = {
hidden = false;
};
lsp = {
display-inlay-hints = true;
display-messages = true;
};
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
indent-guides = {
render = true;
character = "|";
};
statusline = {
left = [
"mode"
"spinner"
];
center = [ "file-name" ];
right = [
"workspace-diagnostics"
"diagnostics"
"selections"
"position"
"total-line-numbers"
"spacer"
"file-encoding"
"file-line-ending"
"file-type"
];
separator = "";
};
};
keys = {
normal = {
esc = [
"collapse_selection"
"keep_primary_selection"
];
space = {
space = "file_picker";
};
C-j = (builtins.genList (_: "move_line_down") 5) ++ [ "align_view_center" ];
C-k = (builtins.genList (_: "move_line_up") 5) ++ [ "align_view_center" ];
};
};
};
languages = {
language = [
{
name = "nix";
auto-format = true;
formatter.command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
language-servers = [
"nixd"
"nil"
"harper-ls"
];
}
{
# Provided by the dev environment in the rust shell
name = "rust";
auto-format = true;
formatter.command = "cargo fmt";
language-servers = [
"rust-analyzer"
"harper-ls"
];
}
{
name = "zig";
language-servers = [
"zls"
"harper-ls"
];
}
];
language-server = {
nixd = {
command = "${pkgs.nixd}/bin/nixd";
args = [ "--semantic-tokens=true" ];
config.nixd =
let
myFlake = "(builtins.getFlake (toString /home/cholli/projects/config))";
nixosOpts = "${myFlake}.nixosConfigurations.manin.options";
in
{
nixpkgs.expr = "import ${myFlake}.inputs.nixpkgs { }";
formatting.command = [ "nixfmt" ];
options = {
nixos.expr = nixosOpts;
home-manager.expr = "${nixosOpts}.home-manager.users.type.getSubOptions []";
};
};
};
marksman = {
command = "${pkgs.marksman}/bin/marksman";
};
vscode-json-language-server = {
command = "${pkgs.vscode-langservers-extracted}/bin/vscode-json-language-server";
args = [ "--stdio" ];
config.provideFormatter = true;
config.json.validate.enable = true;
};
vscode-html-language-server = {
command = "${pkgs.vscode-langservers-extracted}/bin/vscode-html-language-server";
args = [ "--stdio" ];
config.provideFormatter = true;
};
vscode-css-language-server = {
command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server";
args = [ "--stdio" ];
config.provideFormatter = true;
};
vscode-eslint-language-server = {
command = "${pkgs.vscode-langservers-extracted}/bin/vscode-eslint-language-server";
args = [ "--stdio" ];
config.provideFormatter = true;
};
harper-ls = {
command = "${lib.getExe pkgs.harper}";
args = [ "--stdio" ];
config = {
linters = {
long_sentences = false;
};
};
};
};
};
};
};
};
}

View file

@ -0,0 +1,49 @@
{
flake.modules = {
homeManager.cholli =
{ pkgs, ... }:
{
catppuccin.kitty.enable = true;
home.packages = [
pkgs.kitty
];
home.sessionVariables.TERMINAL = "kitty";
home.file.".config/Thunar/uca.xml".text = ''
<?xml version="1.0" encoding="UTF-8"?>
<actions>
<action>
<icon>kitty</icon>
<name>Open Kitty here</name>
<submenu></submenu>
<unique-id>1726095927116900-1</unique-id>
<command>${pkgs.kitty}/bin/kitty %f</command>
<description>Example for a custom action</description>
<range></range>
<patterns>*</patterns>
<startup-notify/>
<directories/>
</action>
</actions>
'';
programs.kitty = {
enable = true;
# themeFile = "tokyo_night_night";
font = {
name = "FiraCode Nerd Font";
size = 15;
};
shellIntegration.enableFishIntegration = true;
settings = {
"background_opacity" = "0.90";
"shell" = "fish";
"confirm_os_window_close" = "0";
};
};
};
};
}

View file

@ -0,0 +1,56 @@
{
flake.modules.homeManager.cholli =
{ ... }:
{
programs = {
starship = {
enable = true;
enableTransience = true;
settings = {
character = {
error_symbol = "[ ](bold red)";
};
time = {
disabled = false;
time_format = "%T";
utc_time_offset = "+2";
};
username = {
style_user = "#00de00";
style_root = "red";
format = "[$user]($style) ";
disabled = false;
show_always = true;
};
hostname = {
ssh_only = false;
format = "@ [$hostname](bold yellow) ";
disabled = false;
};
directory = {
home_symbol = "󰋞 ~";
read_only_style = "197";
read_only = " ";
format = "at [$path]($style)[$read_only]($read_only_style) ";
};
git_metrics = {
disabled = false;
added_style = "bold blue";
format = "[+$added]($added_style)/[-$deleted]($deleted_style) ";
};
git_status = {
format = "([$all_status$ahead_behind]($style) )";
ahead = "[$count](bold green)";
behind = "[$count](bold red)";
diverged = "[$ahead_count$behind_count](red)";
deleted = "[$count](red) ";
modified = "[!$count](yellow) ";
staged = "[+$count](green) ";
renamed = "[$count](green) ";
untracked = "[?$count](blue) ";
};
};
};
};
};
}