Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles

This commit is contained in:
Lennart J. Kurzweg (Nx2)
2024-09-09 16:18:48 +02:00
18 changed files with 568 additions and 493 deletions

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Lennart J. Kurzweg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

46
README.md Normal file
View File

@@ -0,0 +1,46 @@
# ❄️ NixOS Dotfiles
![Screenshot of my desktop](splash.png)
## Information
- Using stable + unstable via flakes
- Multi-host config (Desktop, Laptop, Server)
- Using home-manager for home-configuration
- Using sops-nix with GPG + git-crypt for secrets
## Features:
- The WM Hyperland extended to more or less full a DE with
- automounting
- notifications
- a bar
- gesture control
- runner
- ...
- Virtualization support
- docker
- virt-manager
- Multilingual typing with Fcitx5
- Fully functioning Nvidia/Nvidia Prime support
- Fully customized editor `helix`
- Locally running LLM-server with tools written around it
- Fully themed ("riced") via a custom, intentionally semi-automatic, adaptive system responding to wallpaper color
- as can be seen in `flake-modules/rice.nix`
- Next-Gen shell experience with
- fish
- starship
- zoxide
- yazi
- direnv
- lazygit + lazydocker
## Thanks to
- [LibrePhoenix](https://www.youtube.com/@librephoenix) for getting me started
- [VimJoyer](https://www.youtube.com/@vimjoyer) for making quick NixOS tutorials on many topics
- Everyone that talks about NixOS in NixOS-forums and rooms instead of politics
- [Everyone that put up their code on Github](https://github.com/search?type=code&auto_enroll=true&q=language%3Anix) for me to reference
## Licensing
- The code found in this Repository is Licensed under the MIT-license
- I've decided against the GPLv3, since I am not going to sue anyone over this, but
- I encourage everyone to open source their work for anyone to at least reference

View File

@@ -11,26 +11,33 @@
./system-modules/fonts.nix
./system-modules/boot.nix
./system-modules/gc.nix
./system-modules/boot.nix
./system-modules/dm.nix
./system-modules/networking.nix
./system-modules/virtualisation.nix
./system-modules/sshd.nix
./system-modules/gpg.nix
./system-modules/sops.nix
./system-modules/syncthing.nix
./system-modules/hsmw.nix
./system-modules/docker.nix
./system-modules/fcitx5.nix
./system-modules/fonts.nix
./system-modules/fuse.nix
./system-modules/gc.nix
./system-modules/gpg.nix
./system-modules/hardware-configuration.nix
./system-modules/health_reminder.nix
./system-modules/ydotool.nix
./system-modules/ollama.nix
./system-modules/nx2site.nix
./system-modules/hsmw.nix
./system-modules/kanata.nix
./system-modules/kodi.nix
./system-modules/networking.nix
./system-modules/nvidia.nix
./system-modules/nx2site.nix
./system-modules/ollama.nix
./system-modules/qmk.nix
./system-modules/sops.nix
./system-modules/sound.nix
./system-modules/sshd.nix
./system-modules/syncthing.nix
./system-modules/users.nix
./system-modules/virtualisation.nix
./system-modules/ydotool.nix
];
# Set your time zone.
time.timeZone = "Europe/Berlin";
@@ -70,8 +77,8 @@
# $ nix search wget
environment.systemPackages = with pkgs; ([
git
lazygit # home-manager module is bugged
git-crypt
lazygit # home-manager module is bugged
wget
curl
zip
@@ -79,7 +86,6 @@
p7zip
unar
nano
micro
htop
direnv
openssl

13
flake-modules/colors.json Normal file
View File

@@ -0,0 +1,13 @@
{
"base": {
"foreground": "#eedce2",
"background": "#221016"
},
"to_alter": {
"accent": "#ac5271",
"secondary": "#f20c5b",
"tertiary": "#d5a287",
"special": "#51ac8d",
"weird": "#0cf2a3"
}
}

View File

@@ -12,30 +12,34 @@ pkgs: rec {
bright = (0.5);
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
alter = let f = lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
# ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json));
ccolor = builtins.mapAttrs alter-set {
black = "#000022"; # "#111111" "#001100";
white = "#ddddff"; # "#dddddd" "#66dd66";
blue = "#4422ff"; # "#3333dd" "#003300";
cyan = "#11dddd"; # "#11dddd" "#00dd55";
green = "#11dd44"; # "#11dd11" "#11dd11";
magenta = "#6622dd"; # "#dd11dd" "#005500";
red = "#dd1166"; # "#dd1111" "#00aa00";
yellow = "#dd6611"; # "#dddd11" "#ffff00";
black = "#111111"; # "#111111" "#001100";
white = "#dddddd"; # "#dddddd" "#66dd66";
blue = "#4444dd"; # "#3333dd" "#003300";
cyan = "#44dddd"; # "#11dddd" "#00dd55";
green = "#44dd44"; # "#11dd11" "#11dd11";
magenta = "#dd44dd"; # "#dd11dd" "#005500";
red = "#dd4444"; # "#dd1111" "#00aa00";
yellow = "#dd4444"; # "#dddd11" "#ffff00";
};
xcolor = with ccolor; rec {
background = black.dark;
foreground = white.base;
border = red.base;
border2 = blue.base;
accent = blue;
secondary = cyan;
tertiary = magenta;
special = yellow;
weird = green;
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
fcolor = facolor // fbcolor;
xcolor = with ccolor; with fcolor; rec {
background = "#000000";
# foreground = "#dddddd";
# accent = blue;
# secondary = cyan;
# tertiary = magenta;
# special = yellow;
# weird = green;
positive = alter "#00dd00";
negative = alter "#dd0000";
border = accent.base;
border2 = secondary.base;
};
in ccolor // xcolor;
in ccolor // fcolor // xcolor;
font = {
code = {
name = "JetBrainsMono-NF";

37
flake.lock generated
View File

@@ -576,6 +576,22 @@
"type": "indirect"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1724479785,
"narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks-nix": {
"inputs": {
"flake-compat": [
@@ -618,7 +634,8 @@
"nixpkgs": "nixpkgs_4",
"nixpkgs-latest": "nixpkgs-latest",
"nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix"
"sops-nix": "sops-nix",
"zen-browser": "zen-browser"
}
},
"rust-overlay": {
@@ -726,6 +743,24 @@
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
},
"zen-browser": {
"inputs": {
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1724745035,
"narHash": "sha256-WhTJaCw0XDR9gAQ6uEIMkT7bKsHXBafj1GJnRsWXHpk=",
"owner": "MarceColl",
"repo": "zen-browser-flake",
"rev": "723039271547eb4c648e5bd774e2f7bc73564b16",
"type": "github"
},
"original": {
"owner": "MarceColl",
"repo": "zen-browser-flake",
"type": "github"
}
}
},
"root": "root",

View File

@@ -15,6 +15,7 @@
hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
# firefox-addons = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; inputs.nixpkgs.follows = "nixpkgs"; };
zen-browser.url = "github:MarceColl/zen-browser-flake";
};
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-latest, home-manager, ... }@inputs: let

View File

@@ -6,8 +6,7 @@ lib.mkIf (host != "NxACE")
vesktop
];
file.".config/vesktop/settings/settings.json".text = ''
{
file.".config/vesktop/settings/settings.json".text = /* json */ ''{
"notifyAboutUpdates": true,
"autoUpdate": false,
"autoUpdateNotification": true,
@@ -24,455 +23,160 @@ lib.mkIf (host != "NxACE")
"disableMinSize": false,
"winNativeTitleBar": false,
"plugins": {
"BadgeAPI": {
"enabled": true
},
"CommandsAPI": {
"enabled": true
},
"ContextMenuAPI": {
"enabled": true
},
"MemberListDecoratorsAPI": {
"enabled": false
},
"MessageAccessoriesAPI": {
"enabled": false
},
"MessageDecorationsAPI": {
"enabled": false
},
"MessageEventsAPI": {
"enabled": false
},
"MessagePopoverAPI": {
"enabled": false
},
"NoticesAPI": {
"enabled": true
},
"ServerListAPI": {
"enabled": false
},
"NoTrack": {
"enabled": true
},
"BadgeAPI": { "enabled": true },
"CommandsAPI": { "enabled": true },
"ContextMenuAPI": { "enabled": true },
"MemberListDecoratorsAPI": { "enabled": false },
"MessageAccessoriesAPI": { "enabled": false },
"MessageDecorationsAPI": { "enabled": false },
"MessageEventsAPI": { "enabled": false },
"MessagePopoverAPI": { "enabled": false },
"NoticesAPI": { "enabled": true },
"ServerListAPI": { "enabled": false },
"NoTrack": { "enabled": true },
"Settings": {
"enabled": true,
"settingsLocation": "aboveActivity"
},
"SupportHelper": {
"enabled": true
},
"ChatInputButtonAPI": {
"enabled": false
},
"AlwaysAnimate": {
"enabled": true
},
"AlwaysTrust": {
"enabled": true
},
"AnonymiseFileNames": {
"enabled": false
},
"WebRichPresence (arRPC)": {
"enabled": false
},
"BANger": {
"enabled": false
},
"BetterFolders": {
"enabled": false
},
"BetterGifAltText": {
"enabled": false
},
"BetterGifPicker": {
"enabled": false
},
"BetterNotesBox": {
"enabled": false
},
"BetterRoleDot": {
"enabled": false
},
"BetterUploadButton": {
"enabled": false
},
"BiggerStreamPreview": {
"enabled": false
},
"BlurNSFW": {
"enabled": false
},
"CallTimer": {
"enabled": false
},
"ClearURLs": {
"enabled": false
},
"ClientTheme": {
"enabled": false
},
"ColorSighted": {
"enabled": false
},
"ConsoleShortcuts": {
"enabled": false
},
"CopyUserURLs": {
"enabled": false
},
"CrashHandler": {
"enabled": true
},
"CustomRPC": {
"enabled": false
},
"Dearrow": {
"enabled": false
},
"Decor": {
"enabled": false
},
"DisableCallIdle": {
"enabled": false
},
"EmoteCloner": {
"enabled": false
},
"Experiments": {
"enabled": false
},
"F8Break": {
"enabled": false
},
"FakeNitro": {
"enabled": false
},
"FakeProfileThemes": {
"enabled": true
},
"FavoriteEmojiFirst": {
"enabled": false
},
"FavoriteGifSearch": {
"enabled": false
},
"FixCodeblockGap": {
"enabled": false
},
"FixSpotifyEmbeds": {
"enabled": false
},
"FixYoutubeEmbeds": {
"enabled": false
},
"ForceOwnerCrown": {
"enabled": false
},
"FriendInvites": {
"enabled": false
},
"GameActivityToggle": {
"enabled": false
},
"GifPaste": {
"enabled": false
},
"GreetStickerPicker": {
"enabled": false
},
"HideAttachments": {
"enabled": false
},
"iLoveSpam": {
"enabled": false
},
"IgnoreActivities": {
"enabled": false
},
"ImageZoom": {
"enabled": false
},
"InvisibleChat": {
"enabled": false
},
"KeepCurrentChannel": {
"enabled": false
},
"LastFMRichPresence": {
"enabled": false
},
"LoadingQuotes": {
"enabled": false
},
"MemberCount": {
"enabled": false
},
"MessageClickActions": {
"enabled": false
},
"MessageLinkEmbeds": {
"enabled": false
},
"MessageLogger": {
"enabled": false
},
"MessageTags": {
"enabled": false
},
"MoreCommands": {
"enabled": false
},
"MoreKaomoji": {
"enabled": false
},
"MoreUserTags": {
"enabled": false
},
"Moyai": {
"enabled": false
},
"MutualGroupDMs": {
"enabled": false
},
"NewGuildSettings": {
"enabled": false
},
"NoBlockedMessages": {
"enabled": false
},
"NoDevtoolsWarning": {
"enabled": false
},
"NoF1": {
"enabled": false
},
"NoMosaic": {
"enabled": false
},
"NoPendingCount": {
"enabled": false
},
"NoProfileThemes": {
"enabled": false
},
"NoReplyMention": {
"enabled": false
},
"NoScreensharePreview": {
"enabled": false
},
"NoTypingAnimation": {
"enabled": false
},
"NoUnblockToJump": {
"enabled": false
},
"NormalizeMessageLinks": {
"enabled": false
},
"NotificationVolume": {
"enabled": false
},
"NSFWGateBypass": {
"enabled": false
},
"OnePingPerDM": {
"enabled": false
},
"oneko": {
"enabled": false
},
"OpenInApp": {
"enabled": false
},
"Party mode 🎉": {
"enabled": false
},
"PermissionFreeWill": {
"enabled": false
},
"PermissionsViewer": {
"enabled": false
},
"petpet": {
"enabled": false
},
"PictureInPicture": {
"enabled": false
},
"PinDMs": {
"enabled": false
},
"PlainFolderIcon": {
"enabled": false
},
"PlatformIndicators": {
"enabled": false
},
"PreviewMessage": {
"enabled": false
},
"PronounDB": {
"enabled": false
},
"QuickMention": {
"enabled": false
},
"QuickReply": {
"enabled": false
},
"ReactErrorDecoder": {
"enabled": false
},
"ReadAllNotificationsButton": {
"enabled": false
},
"RelationshipNotifier": {
"enabled": false
},
"RevealAllSpoilers": {
"enabled": false
},
"ReverseImageSearch": {
"enabled": false
},
"ReviewDB": {
"enabled": false
},
"RoleColorEverywhere": {
"enabled": true
},
"SearchReply": {
"enabled": false
},
"SecretRingToneEnabler": {
"enabled": false
},
"SendTimestamps": {
"enabled": false
},
"ServerListIndicators": {
"enabled": false
},
"ServerProfile": {
"enabled": false
},
"ShikiCodeblocks": {
"enabled": false
},
"ShowAllMessageButtons": {
"enabled": false
},
"ShowConnections": {
"enabled": false
},
"ShowHiddenChannels": {
"enabled": false
},
"ShowMeYourName": {
"enabled": false
},
"ShowTimeouts": {
"enabled": false
},
"SilentMessageToggle": {
"enabled": false
},
"SilentTyping": {
"enabled": false
},
"SortFriendRequests": {
"enabled": false
},
"SpotifyControls": {
"enabled": false
},
"SpotifyCrack": {
"enabled": false
},
"SpotifyShareCommands": {
"enabled": false
},
"StartupTimings": {
"enabled": false
},
"SuperReactionTweaks": {
"enabled": false
},
"TextReplace": {
"enabled": false
},
"ThemeAttributes": {
"enabled": false
},
"TimeBarAllActivities": {
"enabled": false
},
"Translate": {
"enabled": false
},
"TypingIndicator": {
"enabled": false
},
"TypingTweaks": {
"enabled": false
},
"Unindent": {
"enabled": false
},
"UnsuppressEmbeds": {
"enabled": false
},
"UrbanDictionary": {
"enabled": false
},
"UserVoiceShow": {
"enabled": false
},
"USRBG": {
"enabled": false
},
"ValidUser": {
"enabled": false
},
"VoiceChatDoubleClick": {
"enabled": false
},
"VcNarrator": {
"enabled": false
},
"VencordToolbox": {
"enabled": false
},
"ViewIcons": {
"enabled": false
},
"ViewRaw": {
"enabled": false
},
"VoiceMessages": {
"enabled": false
},
"SupportHelper": { "enabled": true },
"ChatInputButtonAPI": { "enabled": false },
"AlwaysAnimate": { "enabled": true },
"AlwaysTrust": { "enabled": true },
"AnonymiseFileNames": { "enabled": false },
"WebRichPresence (arRPC)": { "enabled": false },
"BANger": { "enabled": false },
"BetterFolders": { "enabled": false },
"BetterGifAltText": { "enabled": false },
"BetterGifPicker": { "enabled": false },
"BetterNotesBox": { "enabled": false },
"BetterRoleDot": { "enabled": false },
"BetterUploadButton": { "enabled": false },
"BiggerStreamPreview": { "enabled": false },
"BlurNSFW": { "enabled": false },
"CallTimer": { "enabled": false },
"ClearURLs": { "enabled": false },
"ClientTheme": { "enabled": false },
"ColorSighted": { "enabled": false },
"ConsoleShortcuts": { "enabled": false },
"CopyUserURLs": { "enabled": false },
"CrashHandler": { "enabled": true },
"CustomRPC": { "enabled": false },
"Dearrow": { "enabled": false },
"Decor": { "enabled": false },
"DisableCallIdle": { "enabled": false },
"EmoteCloner": { "enabled": false },
"Experiments": { "enabled": false },
"F8Break": { "enabled": false },
"FakeNitro": { "enabled": false },
"FakeProfileThemes": { "enabled": true },
"FavoriteEmojiFirst": { "enabled": false },
"FavoriteGifSearch": { "enabled": false },
"FixCodeblockGap": { "enabled": false },
"FixSpotifyEmbeds": { "enabled": false },
"FixYoutubeEmbeds": { "enabled": false },
"ForceOwnerCrown": { "enabled": false },
"FriendInvites": { "enabled": false },
"GameActivityToggle": { "enabled": false },
"GifPaste": { "enabled": false },
"GreetStickerPicker": { "enabled": false },
"HideAttachments": { "enabled": false },
"iLoveSpam": { "enabled": false },
"IgnoreActivities": { "enabled": false },
"ImageZoom": { "enabled": false },
"InvisibleChat": { "enabled": false },
"KeepCurrentChannel": { "enabled": false },
"LastFMRichPresence": { "enabled": false },
"LoadingQuotes": { "enabled": false },
"MemberCount": { "enabled": false },
"MessageClickActions": { "enabled": false },
"MessageLinkEmbeds": { "enabled": false },
"MessageLogger": { "enabled": false },
"MessageTags": { "enabled": false },
"MoreCommands": { "enabled": false },
"MoreKaomoji": { "enabled": false },
"MoreUserTags": { "enabled": false },
"Moyai": { "enabled": false },
"MutualGroupDMs": { "enabled": false },
"NewGuildSettings": { "enabled": false },
"NoBlockedMessages": { "enabled": false },
"NoDevtoolsWarning": { "enabled": false },
"NoF1": { "enabled": false },
"NoMosaic": { "enabled": false },
"NoPendingCount": { "enabled": false },
"NoProfileThemes": { "enabled": false },
"NoReplyMention": { "enabled": false },
"NoScreensharePreview": { "enabled": false },
"NoTypingAnimation": { "enabled": false },
"NoUnblockToJump": { "enabled": false },
"NormalizeMessageLinks": { "enabled": false },
"NotificationVolume": { "enabled": false },
"NSFWGateBypass": { "enabled": false },
"OnePingPerDM": { "enabled": false },
"oneko": { "enabled": false },
"OpenInApp": { "enabled": false },
"Party mode 🎉": { "enabled": false },
"PermissionFreeWill": { "enabled": false },
"PermissionsViewer": { "enabled": false },
"petpet": { "enabled": false },
"PictureInPicture": { "enabled": false },
"PinDMs": { "enabled": false },
"PlainFolderIcon": { "enabled": false },
"PlatformIndicators": { "enabled": false },
"PreviewMessage": { "enabled": false },
"PronounDB": { "enabled": false },
"QuickMention": { "enabled": false },
"QuickReply": { "enabled": false },
"ReactErrorDecoder": { "enabled": false },
"ReadAllNotificationsButton": { "enabled": false },
"RelationshipNotifier": { "enabled": false },
"RevealAllSpoilers": { "enabled": false },
"ReverseImageSearch": { "enabled": false },
"ReviewDB": { "enabled": false },
"RoleColorEverywhere": { "enabled": true },
"SearchReply": { "enabled": false },
"SecretRingToneEnabler": { "enabled": false },
"SendTimestamps": { "enabled": false },
"ServerListIndicators": { "enabled": false },
"ServerProfile": { "enabled": false },
"ShikiCodeblocks": { "enabled": false },
"ShowAllMessageButtons": { "enabled": false },
"ShowConnections": { "enabled": false },
"ShowHiddenChannels": { "enabled": false },
"ShowMeYourName": { "enabled": false },
"ShowTimeouts": { "enabled": false },
"SilentMessageToggle": { "enabled": false },
"SilentTyping": { "enabled": false },
"SortFriendRequests": { "enabled": false },
"SpotifyControls": { "enabled": false },
"SpotifyCrack": { "enabled": false },
"SpotifyShareCommands": { "enabled": false },
"StartupTimings": { "enabled": false },
"SuperReactionTweaks": { "enabled": false },
"TextReplace": { "enabled": false },
"ThemeAttributes": { "enabled": false },
"TimeBarAllActivities": { "enabled": false },
"Translate": { "enabled": false },
"TypingIndicator": { "enabled": false },
"TypingTweaks": { "enabled": false },
"Unindent": { "enabled": false },
"UnsuppressEmbeds": { "enabled": false },
"UrbanDictionary": { "enabled": false },
"UserVoiceShow": { "enabled": false },
"USRBG": { "enabled": false },
"ValidUser": { "enabled": false },
"VoiceChatDoubleClick": { "enabled": false },
"VcNarrator": { "enabled": false },
"VencordToolbox": { "enabled": false },
"ViewIcons": { "enabled": false },
"ViewRaw": { "enabled": false },
"VoiceMessages": { "enabled": false },
"WebContextMenus": {
"enabled": true,
"addBack": true
},
"WebKeybinds": {
"enabled": true
},
"WhoReacted": {
"enabled": false
},
"Wikisearch": {
"enabled": false
},
"XSOverlay": {
"enabled": false
}
"addBack": true },
"WebKeybinds": { "enabled": true },
"WhoReacted": { "enabled": false },
"Wikisearch": { "enabled": false },
"XSOverlay": { "enabled": false }
},
"notifications": {
"timeout": 5000,
@@ -484,7 +188,7 @@ lib.mkIf (host != "NxACE")
"authenticated": false,
"url": "https://api.vencord.dev/",
"settingsSync": false,
"settingsSyncVersion": 1710459223618
"settingsSyncVersion": 1725386648445
}
}
'';

View File

@@ -51,10 +51,12 @@ lib.mkIf (user != "tv")
nf = "neofetch";
nxf = "nxfetch";
nn = "nano";
m = "micro";
hxx = "hx .";
p = "python";
ipy = "ipython";
c = "codium";
cc = "codium .";
code = "codium";
g = "git";
lzg = "lazygit";
# gst = "git status";
@@ -81,7 +83,6 @@ lib.mkIf (user != "tv")
dcmp = "docker compose";
nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}'';
code = "codium";
# ya = "yazi"; # function
# nxfiglet = "figlet";
};

View File

@@ -60,7 +60,14 @@
};
};
keys.normal = {
C-g = [":new" ":insert-output lazygit" ":buffer-close!" ":redraw"];
"C-g" = [":new" ":insert-output lazygit" ":buffer-close!" ":redraw"];
"A-`" = [ "no_op" ];
"`" = [ "no_op" ];
};
keys.normal."ö" = {
"s" = [ "switch_case" ];
"u" = [ "switch_to_uppercase" ];
"l" = [ "switch_to_lowercase" ];
};
};
languages = {
@@ -115,7 +122,7 @@
command = lib.getExe pkgs.vale-ls;
};
"language-tool" = {
command = lib.getExe pkgs.ltex-ls;
command = "${pkgs.ltex-ls}/bin/ltex-ls";
};
"ruff" = {
command = "ruff-lsp";

View File

@@ -243,16 +243,15 @@ lib.mkIf (user != "tv")
};
exec-once = [
"hyprpm reload -n "
"waybar"
"hyprpaper -n "
"swww-daemon"
"hyprland-autoname-workspaces"
"/usr/lib/polkit-kde-authentication-agent-1 "
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"syncthing -no-browser"
"mako"
"ibus engine xkb:de::deu"
"fcitx5"
# "ibus engine xkb:de::deu"
"libinput-gestures"
# "hyprswitch --daemon"
];
@@ -334,7 +333,7 @@ lib.mkIf (user != "tv")
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
# "SUPER, F6,"
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120''
# "SUPER, F9, hyprload,reload"
"SUPER, F9, exec, change_colors_json $(swww query | sed -n 2p | sed -e 's-.*image: --g') && kitty -e sh -c 'nh home switch'"
# "SUPER, F10, hyprload,update"
"SUPER, F11, exec, waybar"
"SUPER SHIFT, F11, exec, pkill waybar "

37
home-modules/ollama.nix Normal file
View File

@@ -0,0 +1,37 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(writers.writePython3Bin "ooo" {
libraries = [ pkgs.python3Packages.ollama ];
flakeIgnore = [ "E501" "E305" "E701" "E704" "E302" "E114" "F841" "E121" ];
} /* python */ ''
import sys
import ollama
if len(sys.argv) < 2:
print("Usage: ./ooo.py <system_message>")
sys.exit(1)
system_message = sys.argv[1]
input_text = sys.stdin.read()
try:
response = ollama.chat(model='llama3.1:8b', messages=[
{
'role': 'system',
'content': "You are a text transformer. Follow the folling instruction:\n\n" + system_message + "\n\nOnly output the transformed text. Do not add any addidional conversation around the output. Just the result.",
},
{
'role': 'user',
'content': input_text,
},
])
print(response['message']['content'])
sys.exit(0)
except Exception as e:
print(f"An error occurred: {e}", file=sys.stderr)
sys.exit(1)
'')
];
}

View File

@@ -0,0 +1,152 @@
{ pkgs-unstable, ... }:
{
home.packages = with pkgs-unstable; [
(writers.writePython3Bin "change_colors_json" {
libraries = with python3Packages; [ numpy pillow scikit-learn ];
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /*python */ ''
from colorsys import hls_to_rgb, rgb_to_hls
import json
import sys
from typing import Literal, cast
from numpy.typing import NDArray
from sklearn.cluster import KMeans
import numpy as np
from PIL import Image
def fc(c: int) -> str:
assert c < 256
s = str(hex(c))[2:]
if c < 16:
return "0" + s
elif len(s) == 1:
return s + s
else:
return s
class Color(object):
def __init__(self, rgb: tuple[int, ...], frequency: float):
assert len(rgb) == 3, "RGB values must be a tuple of length 3"
self.rgb = cast(tuple[int, int, int], rgb)
self.freq: float = frequency
def __lt__(self, other: "Color") -> bool:
return self.freq < other.freq
@property
def hls(self) -> tuple[float, float, float]:
return rgb_to_hls(r=self.rgb[0] / 255, g=self.rgb[1] / 255, b=self.rgb[2] / 255)
@property
def luminance(self) -> float:
return np.dot(np.array([0.2126, 0.7152, 0.0722]), self.rgb)
def k_means_extraction(arr: NDArray[float], height: int, width: int, palette_size: int) -> list[Color]:
arr = np.reshape(arr, (width * height, -1))
model = KMeans(n_clusters=palette_size, n_init="auto", init="k-means++", random_state=2024)
labels = model.fit_predict(arr)
palette = np.array(model.cluster_centers_, dtype=int)
color_count = np.bincount(labels)
color_frequency = color_count / float(np.sum(color_count))
colors = []
for color, freq in zip(palette, color_frequency):
colors.append(Color(color, freq))
return colors
class Palette:
def __init__(self, colors: list[Color]):
self.colors = colors
self.frequencies = [c.freq for c in colors]
def __getitem__(self, item: int) -> Color:
return self.colors[item]
def __len__(self) -> int:
return self.number_of_colors
def ensure_color(c: Color, alter_sat: bool) -> list[int]:
hue, lum, sat = c.hls
if alter_sat:
new_sat = min(max(sat, 0.6) + 0.3, 1)
else:
new_sat = sat
new_lum = max(lum, 0.5)
r, g, b = hls_to_rgb(h=hue, l=new_lum, s=new_sat)
return [int(r*255), int(g*255), int(b*255)]
def list_to_hex(ilist: list[int]) -> str:
return f"#{fc(ilist[0])}{fc(ilist[1])}{fc(ilist[2])}"
def alter_hue(ilist: list[int], hue: int) -> list[int]:
assert hue >= 0 and hue <= 360
r, g, b = ilist
h, l, s = rgb_to_hls((r/255), (g/255), (b/255))
new_hue = (((h*360) + hue) % 360) / 360
r, g, b = hls_to_rgb(h=new_hue, l=l, s=s)
return [int(r*255), int(g*255), int(b*255)]
def alter_l(ilist: list[int], l_in_1_0: float) -> list[int]:
assert l_in_1_0 >= 0 and l_in_1_0 <= 1
r, g, b = ilist
h, _, s = rgb_to_hls((r/255), (g/255), (b/255))
r, g, b = hls_to_rgb(h=h, l=l_in_1_0, s=s)
return [int(r*255), int(g*255), int(b*255)]
def extract_colors(
image: str,
palette_size: int = 5,
resize: bool = True,
sort_mode: Literal["luminance", "frequency"] | None = None,
) -> Palette:
img = Image.open(image).convert("RGB")
# open the image
img = img.resize((256, 256))
width, height = img.size
arr = np.asarray(img)
colors = k_means_extraction(arr, height, width, palette_size)
if sort_mode == "luminance":
colors.sort(key=lambda c: c.luminance, reverse=False)
else:
colors.sort(reverse=True)
return Palette(colors)
if __name__ == "__main__":
try:
img = sys.argv[1]
except IndexError:
img = "/home/nx2/Pictures/wallpapers/absolute-cinema-acid.png"
palette = extract_colors(image=img, palette_size=3)
accent = ensure_color(c=palette[0], alter_sat=False)
secondary = ensure_color(c=palette[1], alter_sat=True)
tertiary = ensure_color(c=palette[2], alter_sat=False)
weird = alter_hue(ilist=secondary, hue=180)
special = alter_hue(ilist=accent, hue=180)
foreground = alter_l(accent, 0.9)
background = alter_l(accent, 0.1)
d = {
"base": {
"foreground": list_to_hex(foreground),
"background": list_to_hex(background)
},
"to_alter": {
"accent": list_to_hex(accent),
"secondary": list_to_hex(secondary),
"tertiary": list_to_hex(tertiary),
"special": list_to_hex(special),
"weird": list_to_hex(weird)
}
}
with open("/home/nx2/nix-dots/flake-modules/colors.json", "w") as f:
f.write(json.dumps(d, indent=4))
'')
];
}

View File

@@ -1,4 +1,4 @@
{ pkgs, pkgs-unstable, lib, host, user, ... }:
{ pkgs, pkgs-unstable, lib, host, user, inputs, ... }:
{
imports = [
./home-modules/auto-mount.nix
@@ -29,6 +29,7 @@
./home-modules/nx-gcal-event.nix
./home-modules/obs.nix
./home-modules/office.nix
./home-modules/ollama.nix
./home-modules/pandoc.nix
./home-modules/pnx.nix
./home-modules/programming/c.nix
@@ -44,6 +45,7 @@
./home-modules/vale.nix
./home-modules/virt-manager.nix
./home-modules/vscode.nix
./home-modules/wallpaper-to-colors.nix
./home-modules/waybar.nix
./home-modules/wlogout.nix
./home-modules/yazi.nix
@@ -83,6 +85,9 @@
wl-clipboard
xclip
xournal
inputs.zen-browser.packages."${system}".default
] ++ (with pkgs-unstable; [
obsidian
firefox

BIN
splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

28
system-modules/fcitx5.nix Normal file
View File

@@ -0,0 +1,28 @@
{ pkgs-unstable, ... }:
{
i18n.inputMethod = {
enabled = "fcitx5";
# type = "fcitx5"; # for later than 24.05
# enable = true;
fcitx5 = {
waylandFrontend = true;
addons = with pkgs-unstable; [
rime-data
fcitx5-rime
fcitx5-gtk
fcitx5-chinese-addons
fcitx5-catppuccin
];
};
};
services.xserver.desktopManager.runXdgAutostartIfNone = true;
environment.variables = {
GLFW_IM_MODULE = "fcitx";
GTK_IM_MODULE = "fcitx";
INPUT_METHOD = "fcitx";
XMODIFIERS = "@im=fcitx";
IMSETTINGS_MODULE = "fcitx";
QT_IM_MODULE = "fcitx";
SDL_IM_MODULE = "fcitx";
};
}

View File

@@ -16,7 +16,7 @@
fileSystems = if host != "NxACE" then {
"/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; };
"/boot" = { device = "/dev/disk/by-label/EFI"; fsType = "vfat"; };
"/home/${user}/shared" = { device = "/dev/disk/by-label/shared"; fsType = "ntfs"; };
"/home/${user}/shared" = { device = "/dev/disk/by-label/shared"; fsType = "ntfs"; options = [ "uid:1000" "gid:100" ]; };
} else {
"/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; };
"/boot" = { device = "/dev/disk/by-label/EFI"; fsType = "vfat"; };

16
system-modules/kanata.nix Normal file
View File

@@ -0,0 +1,16 @@
{ pkgs, ... }:
{
services.kanata = {
enable = true;
package = pkgs.kanata;
keyboards.default.config = ''
(defsrc
caps
)
(deflayer default
esc
)
'';
};
}