From 1a2040271229f85bba3b71eefe329c1a3f5db05c Mon Sep 17 00:00:00 2001 From: Lumpiasty Date: Fri, 4 Jul 2025 00:32:17 +0200 Subject: [PATCH] init config --- TODO.md | 58 ++ flake.lock | 83 +++ flake.nix | 25 + home-modules/default.nix | 9 + home-modules/dev.nix | 49 ++ home-modules/gpg.nix | 20 + home-modules/pc.nix | 43 ++ home-modules/ssh/config | 8 + home-modules/vesktop/settings.json | 15 + home-modules/vesktop/settings/settings.json | 637 +++++++++++++++++ .../vencord-settings-backup-2024-12-03.json | 640 ++++++++++++++++++ hosts/acer.nix | 89 +++ hosts/x260.nix | 59 ++ lib/mkHome.nix | 12 + lib/mkNixosSystem.nix | 15 + lib/mkUser.nix | 4 + modules/default.nix | 18 + modules/desktop/gnome.nix | 37 + modules/desktop/plasma.nix | 37 + modules/desktop/pulseaudio.nix | 60 ++ modules/desktop/system76-scheduler.nix | 195 ++++++ modules/hardware/intel-cpu.nix | 11 + modules/hardware/no-mitigations.nix | 11 + modules/system/location.nix | 18 + modules/system/nixpkgs.nix | 11 + modules/system/roles.nix | 5 + modules/system/shell.nix | 15 + modules/system/ssh.nix | 15 + modules/system/users.nix | 40 ++ overlays/pkgs.nix | 14 + pkgs/ddccontrol/default.nix | 64 ++ users/drugi/config.nix | 4 + users/drugi/home.nix | 39 ++ users/user/config.nix | 10 + users/user/home.nix | 13 + 35 files changed, 2383 insertions(+) create mode 100644 TODO.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home-modules/default.nix create mode 100644 home-modules/dev.nix create mode 100644 home-modules/gpg.nix create mode 100644 home-modules/pc.nix create mode 100644 home-modules/ssh/config create mode 100644 home-modules/vesktop/settings.json create mode 100644 home-modules/vesktop/settings/settings.json create mode 100644 home-modules/vesktop/vencord-settings-backup-2024-12-03.json create mode 100644 hosts/acer.nix create mode 100644 hosts/x260.nix create mode 100644 lib/mkHome.nix create mode 100644 lib/mkNixosSystem.nix create mode 100644 lib/mkUser.nix create mode 100644 modules/default.nix create mode 100644 modules/desktop/gnome.nix create mode 100644 modules/desktop/plasma.nix create mode 100644 modules/desktop/pulseaudio.nix create mode 100644 modules/desktop/system76-scheduler.nix create mode 100644 modules/hardware/intel-cpu.nix create mode 100644 modules/hardware/no-mitigations.nix create mode 100644 modules/system/location.nix create mode 100644 modules/system/nixpkgs.nix create mode 100644 modules/system/roles.nix create mode 100644 modules/system/shell.nix create mode 100644 modules/system/ssh.nix create mode 100644 modules/system/users.nix create mode 100644 overlays/pkgs.nix create mode 100644 pkgs/ddccontrol/default.nix create mode 100644 users/drugi/config.nix create mode 100644 users/drugi/home.nix create mode 100644 users/user/config.nix create mode 100644 users/user/home.nix diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..9a08b65 --- /dev/null +++ b/TODO.md @@ -0,0 +1,58 @@ +1. [*] Pozbyć się conditional importów +1. https://github.com/nix-community/plasma-manager + - pasek zadań + - zmienić na ikonowo-tekstowy + - Ikonki na pasku zadań, które mają być ukryte, pokazane + - ukryć spotify + - pokazać baterię, wifi, jasność, dźwięk, muzyka + - reguły okien: + - minimalny rozmiar discord + - nie wyłączaj głądzika przy pisaniu + - prędkość przewijania na gładziku + - domyślne programy + - wskaźnik myszy +2. https://github.com/gmodena/nix-flatpak +3. https://github.com/NixOS/nixos-hardware + - dla acera +5. [*] Przenieść programy desktop do home-manager +6. librewolf + - native messaging + - kde integration + - dodatki + - zakładki? synchronizacja? +7. firewall? +8. zramswap writeback +9. Drukarka +10. [*] Usunąć system-wide users? +11. Deklaratywne dodawanie klucza yubikey do gpg? +12. Flatpaki deklaratwynie +13. Yubikey rozblokowywanie PAM, blokowanie ekranu? +14. home-manager moduły: + - vesktop - jakiś wrapper / paczka aby kopiował ustawienia przy starcie vesktopa bo głupie linki wywalają program bo readonly + - spotify + - język + - uruchamianie zminimalizowany + - zamknij aby zminimalizować do paska + - wyłączyć powiadomienia na pulpicie przy zmianie utworu + - easyeffects presety + - ts3? + - qtpass + - używaj pass zamiast gpg native + - używaj git + - autokopiowanie + - minimalizowanie do paska stanu przy zamknięciu + - autostart zminimalizowany +15. system76-scheduler + kde integracja +16. Rozpisać przywracanie danych, gdzie są najważniejsze dane + - przeglądarka + - hasła + - discord + - spotify + - ts3 + - prismlauncher + - kube + - docker + - networkmanager połączenia +17. Vscodium + - Auto Detect Color Scheme + - dodatki diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..02037b0 --- /dev/null +++ b/flake.lock @@ -0,0 +1,83 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1749526396, + "narHash": "sha256-UL9F76abAk87llXOrcQRjhd5OaOclUd6MIltsqcUZmo=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "427c96044f11a5da50faf6adaf38c9fa47e6d044", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "nix-flatpak": { + "locked": { + "lastModified": 1739444422, + "narHash": "sha256-iAVVHi7X3kWORftY+LVbRiStRnQEob2TULWyjMS6dWg=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "5e54c3ca05a7c7d968ae1ddeabe01d2a9bc1e177", + "type": "github" + }, + "original": { + "owner": "gmodena", + "ref": "latest", + "repo": "nix-flatpak", + "type": "github" + } + }, + "nixos-hardware": { + "locked": { + "lastModified": 1749195551, + "narHash": "sha256-W5GKQHgunda/OP9sbKENBZhMBDNu2QahoIPwnsF6CeM=", + "owner": "NixOS", + "repo": "nixos-hardware", + "rev": "4602f7e1d3f197b3cb540d5accf5669121629628", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1749285348, + "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nix-flatpak": "nix-flatpak", + "nixos-hardware": "nixos-hardware", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..c384393 --- /dev/null +++ b/flake.nix @@ -0,0 +1,25 @@ +{ + description = "NixOS flake"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + home-manager = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest"; + }; + + outputs = { self, nixos-hardware, ... }@inputs: + { + nixosConfigurations = + let + mkNixosSystem = import lib/mkNixosSystem.nix inputs; + in + with nixos-hardware.nixosModules; { + x260 = mkNixosSystem lenovo-thinkpad-x260 hosts/x260.nix; + acer = mkNixosSystem {} hosts/acer.nix; + }; + }; +} \ No newline at end of file diff --git a/home-modules/default.nix b/home-modules/default.nix new file mode 100644 index 0000000..bb57de7 --- /dev/null +++ b/home-modules/default.nix @@ -0,0 +1,9 @@ +{ flake, pkgs, lib, ... }: + +{ + imports = [ + ./gpg.nix + ./pc.nix + ./dev.nix + ]; +} \ No newline at end of file diff --git a/home-modules/dev.nix b/home-modules/dev.nix new file mode 100644 index 0000000..1658310 --- /dev/null +++ b/home-modules/dev.nix @@ -0,0 +1,49 @@ +{ config, lib, pkgs, osConfig, ... }: + +{ + options.lumpiastyHome.dev = lib.mkEnableOption "Dev account"; + + config = lib.mkIf (config.lumpiastyHome.dev && osConfig.lumpiasty.pc) { + programs.git = { + enable = true; + lfs.enable = true; + userName = "Lumpiasty"; + userEmail = "arek.dzski@gmail.com"; + }; + + programs.vscode = { + enable = true; + package = pkgs.vscode; + profiles.default.extensions = [ + pkgs.vscode-extensions.github.copilot + pkgs.vscode-extensions.github.copilot-chat + pkgs.vscode-extensions.arrterian.nix-env-selector + pkgs.vscode-extensions.jnoortheen.nix-ide + ]; + }; + + home.packages = with pkgs; [ + python312 + python312Packages.python-lsp-server + nil + kubectl + kubectx + k9s + kubectl + kubernetes-helm + xonsh + gnumake + docker + docker-buildx + protonvpn-gui + ]; + + # SSH config + home.file.sshconfig = { + enable = true; + executable = false; + source = ssh/config; + target = ".ssh/config"; + }; + }; +} \ No newline at end of file diff --git a/home-modules/gpg.nix b/home-modules/gpg.nix new file mode 100644 index 0000000..00faa98 --- /dev/null +++ b/home-modules/gpg.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, osConfig, ... }: + +{ + options.lumpiastyHome.gpg = lib.mkEnableOption "Enable GPG with SSH"; + + config = lib.mkIf config.lumpiastyHome.gpg { + services.gpg-agent = { + enable = true; + enableSshSupport = true; + pinentryPackage = pkgs.pinentry-qt; + extraConfig = '' + listen-backlog 256 + ''; + }; + + programs.gpg.enable = true; + + programs.bash.enable = lib.mkDefault true; + }; +} \ No newline at end of file diff --git a/home-modules/pc.nix b/home-modules/pc.nix new file mode 100644 index 0000000..1386fdd --- /dev/null +++ b/home-modules/pc.nix @@ -0,0 +1,43 @@ +{ config, lib, pkgs, osConfig, ... }: + +{ + options.lumpiastyHome.enablePcApps = lib.mkEnableOption "Enable desktop apps for this account"; + + config = lib.mkIf (config.lumpiastyHome.enablePcApps && osConfig.lumpiasty.pc) { + home.packages = with pkgs; [ + vesktop + spotify + pass + qtpass + teamspeak_client + teamspeak6-client + easyeffects + prismlauncher + libreoffice-qt6-fresh + ]; + programs.librewolf.enable = true; + services.easyeffects.enable = true; + + services.flatpak.remotes = [{ + name = "flathub"; location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; + }]; + services.flatpak.packages = [ + # "org.onlyoffice.desktopeditors" + ]; + + # Vesktop settings + # Nope, TODO + # home.file.vesktop = { + # enable = true; + # executable = false; + # source = ./Vencord/settings.json; + # target = ".config/Vencord/settings.json"; + # }; + # home.file.vesktopPlugins = { + # enable = true; + # executable = false; + # source = ./Vencord/settings/settings.json; + # target = ".config/vesktop/settings/settings.json"; + # }; + }; +} \ No newline at end of file diff --git a/home-modules/ssh/config b/home-modules/ssh/config new file mode 100644 index 0000000..c6ce356 --- /dev/null +++ b/home-modules/ssh/config @@ -0,0 +1,8 @@ +User root +ServerAliveInterval 20 +ControlMaster auto +ControlPersist 3600 +ControlPath /run/user/%i/ssh-socket-%r@%h:%p + +Host github.com + User git diff --git a/home-modules/vesktop/settings.json b/home-modules/vesktop/settings.json new file mode 100644 index 0000000..bfaa62e --- /dev/null +++ b/home-modules/vesktop/settings.json @@ -0,0 +1,15 @@ +{ + "minimizeToTray": "on", + "discordBranch": "stable", + "splashColor": "oklab(0.89908 -0.00192907 -0.0048306)", + "splashBackground": "oklab(0.321044 -0.000249296 -0.00927344)", + "customTitleBar": false, + "appBadge": true, + "disableMinSize": true, + "clickTrayToShowHide": true, + "staticTitle": false, + "spellCheckLanguages": [ + "pl", + "pl-PL" + ] +} \ No newline at end of file diff --git a/home-modules/vesktop/settings/settings.json b/home-modules/vesktop/settings/settings.json new file mode 100644 index 0000000..9cd633f --- /dev/null +++ b/home-modules/vesktop/settings/settings.json @@ -0,0 +1,637 @@ +{ + "autoUpdate": true, + "autoUpdateNotification": true, + "useQuickCss": true, + "themeLinks": [], + "enabledThemes": [], + "enableReactDevtools": false, + "frameless": false, + "transparent": false, + "winCtrlQ": false, + "disableMinSize": false, + "winNativeTitleBar": false, + "plugins": { + "ChatInputButtonAPI": { + "enabled": true + }, + "CommandsAPI": { + "enabled": true + }, + "MemberListDecoratorsAPI": { + "enabled": false + }, + "MessageAccessoriesAPI": { + "enabled": true + }, + "MessageDecorationsAPI": { + "enabled": false + }, + "MessageEventsAPI": { + "enabled": true + }, + "MessagePopoverAPI": { + "enabled": false + }, + "MessageUpdaterAPI": { + "enabled": true + }, + "ServerListAPI": { + "enabled": false + }, + "UserSettingsAPI": { + "enabled": true + }, + "AccountPanelServerProfile": { + "enabled": false + }, + "AlwaysAnimate": { + "enabled": false + }, + "AlwaysExpandRoles": { + "enabled": false + }, + "AlwaysTrust": { + "enabled": false + }, + "AnonymiseFileNames": { + "enabled": false + }, + "AppleMusicRichPresence": { + "enabled": false + }, + "WebRichPresence (arRPC)": { + "enabled": false + }, + "BANger": { + "enabled": false + }, + "BetterFolders": { + "enabled": false + }, + "BetterGifAltText": { + "enabled": false + }, + "BetterGifPicker": { + "enabled": false + }, + "BetterNotesBox": { + "enabled": false + }, + "BetterRoleContext": { + "enabled": false + }, + "BetterRoleDot": { + "enabled": false + }, + "BetterSessions": { + "enabled": true, + "backgroundCheck": false + }, + "BetterSettings": { + "enabled": false + }, + "BetterUploadButton": { + "enabled": false + }, + "BiggerStreamPreview": { + "enabled": false + }, + "BlurNSFW": { + "enabled": false, + "blurAmount": 10 + }, + "CallTimer": { + "enabled": false + }, + "ClearURLs": { + "enabled": true + }, + "ClientTheme": { + "enabled": false + }, + "ColorSighted": { + "enabled": false + }, + "ConsoleJanitor": { + "enabled": false + }, + "ConsoleShortcuts": { + "enabled": false + }, + "CopyEmojiMarkdown": { + "enabled": false + }, + "CopyFileContents": { + "enabled": false + }, + "CopyUserURLs": { + "enabled": false + }, + "CrashHandler": { + "enabled": true + }, + "CtrlEnterSend": { + "enabled": false + }, + "CustomRPC": { + "enabled": false + }, + "CustomIdle": { + "enabled": false, + "idleTimeout": 10, + "remainInIdle": true + }, + "Dearrow": { + "enabled": false + }, + "Decor": { + "enabled": false + }, + "DisableCallIdle": { + "enabled": false + }, + "DontRoundMyTimestamps": { + "enabled": false + }, + "EmoteCloner": { + "enabled": false + }, + "Experiments": { + "enabled": false + }, + "F8Break": { + "enabled": false + }, + "FakeNitro": { + "enabled": false + }, + "FakeProfileThemes": { + "enabled": false + }, + "FavoriteEmojiFirst": { + "enabled": false + }, + "FavoriteGifSearch": { + "enabled": false + }, + "FixCodeblockGap": { + "enabled": false + }, + "FixSpotifyEmbeds": { + "enabled": false + }, + "FixYoutubeEmbeds": { + "enabled": false + }, + "ForceOwnerCrown": { + "enabled": false + }, + "FriendInvites": { + "enabled": false + }, + "FriendsSince": { + "enabled": true + }, + "FullSearchContext": { + "enabled": false + }, + "GameActivityToggle": { + "enabled": false + }, + "GifPaste": { + "enabled": false + }, + "GreetStickerPicker": { + "enabled": false + }, + "HideAttachments": { + "enabled": false + }, + "iLoveSpam": { + "enabled": true + }, + "IgnoreActivities": { + "enabled": false, + "listMode": 0, + "idsList": "", + "ignorePlaying": false, + "ignoreStreaming": false, + "ignoreListening": false, + "ignoreWatching": false, + "ignoreCompeting": false + }, + "ImageLink": { + "enabled": false + }, + "ImageZoom": { + "enabled": true, + "saveZoomValues": true, + "invertScroll": true, + "nearestNeighbour": false, + "square": false, + "zoom": 2, + "size": 100, + "zoomSpeed": 0.5 + }, + "ImplicitRelationships": { + "enabled": false + }, + "InvisibleChat": { + "enabled": false + }, + "KeepCurrentChannel": { + "enabled": false + }, + "LastFMRichPresence": { + "enabled": false + }, + "LoadingQuotes": { + "enabled": false + }, + "MemberCount": { + "enabled": true, + "memberList": true, + "toolTip": true + }, + "MentionAvatars": { + "enabled": true, + "showAtSymbol": false + }, + "MessageClickActions": { + "enabled": false + }, + "MessageLatency": { + "enabled": true, + "latency": 2, + "detectDiscordKotlin": true, + "showMillis": false + }, + "MessageLinkEmbeds": { + "enabled": false, + "automodEmbeds": "never", + "listMode": "blacklist", + "idList": "" + }, + "MessageLogger": { + "enabled": true, + "collapseDeleted": true, + "deleteStyle": "text", + "ignoreBots": false, + "ignoreSelf": false, + "ignoreUsers": "", + "ignoreChannels": "", + "ignoreGuilds": "", + "logEdits": true, + "logDeletes": true, + "inlineEdits": 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 + }, + "NoMaskedUrlPaste": { + "enabled": false + }, + "NoMosaic": { + "enabled": false, + "inlineVideo": true + }, + "NoOnboardingDelay": { + "enabled": false + }, + "NoPendingCount": { + "enabled": false + }, + "NoProfileThemes": { + "enabled": true + }, + "NoReplyMention": { + "enabled": false + }, + "NoScreensharePreview": { + "enabled": true + }, + "NoServerEmojis": { + "enabled": false, + "shownEmojis": "onlyUnicode" + }, + "NoTypingAnimation": { + "enabled": true + }, + "NoUnblockToJump": { + "enabled": false + }, + "NormalizeMessageLinks": { + "enabled": false + }, + "NotificationVolume": { + "enabled": false + }, + "NSFWGateBypass": { + "enabled": true + }, + "OnePingPerDM": { + "enabled": false, + "channelToAffect": "both_dms", + "allowMentions": false, + "allowEveryone": false + }, + "oneko": { + "enabled": false + }, + "OpenInApp": { + "enabled": false + }, + "OverrideForumDefaults": { + "enabled": false + }, + "PartyMode": { + "enabled": false + }, + "PauseInvitesForever": { + "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 + }, + "QuickMention": { + "enabled": false + }, + "QuickReply": { + "enabled": false + }, + "ReactErrorDecoder": { + "enabled": false + }, + "ReadAllNotificationsButton": { + "enabled": false + }, + "RelationshipNotifier": { + "enabled": false + }, + "ReplaceGoogleSearch": { + "enabled": false + }, + "ReplyTimestamp": { + "enabled": false + }, + "RevealAllSpoilers": { + "enabled": true + }, + "ReverseImageSearch": { + "enabled": false + }, + "ReviewDB": { + "enabled": false + }, + "RoleColorEverywhere": { + "enabled": false + }, + "SecretRingToneEnabler": { + "enabled": false + }, + "Summaries": { + "enabled": false + }, + "SendTimestamps": { + "enabled": false + }, + "ServerInfo": { + "enabled": true + }, + "ServerListIndicators": { + "enabled": false + }, + "ShikiCodeblocks": { + "enabled": true, + "theme": "https://raw.githubusercontent.com/shikijs/shiki/0b28ad8ccfbf2615f2d9d38ea8255416b8ac3043/packages/shiki/themes/dark-plus.json", + "tryHljs": "SECONDARY", + "useDevIcon": "GREYSCALE", + "bgOpacity": 100 + }, + "ShowAllMessageButtons": { + "enabled": false + }, + "ShowConnections": { + "enabled": false + }, + "ShowHiddenChannels": { + "enabled": true, + "showMode": 0, + "hideUnreads": true, + "defaultAllowedUsersAndRolesDropdownState": true + }, + "ShowHiddenThings": { + "enabled": true, + "showTimeouts": true, + "showInvitesPaused": true, + "showModView": true, + "disableDiscoveryFilters": true, + "disableDisallowedDiscoveryFilters": true + }, + "ShowMeYourName": { + "enabled": false, + "mode": "user-nick", + "displayNames": false, + "inReplies": false + }, + "ShowTimeoutDuration": { + "enabled": false + }, + "SilentMessageToggle": { + "enabled": false + }, + "SilentTyping": { + "enabled": true, + "isEnabled": true, + "showIcon": true, + "contextMenu": true + }, + "SortFriendRequests": { + "enabled": false + }, + "SpotifyControls": { + "enabled": false + }, + "SpotifyCrack": { + "enabled": false + }, + "SpotifyShareCommands": { + "enabled": false + }, + "StartupTimings": { + "enabled": false + }, + "StickerPaste": { + "enabled": false + }, + "StreamerModeOnStream": { + "enabled": false + }, + "SuperReactionTweaks": { + "enabled": false + }, + "TextReplace": { + "enabled": false + }, + "ThemeAttributes": { + "enabled": false + }, + "Translate": { + "enabled": false + }, + "TypingIndicator": { + "enabled": true, + "includeCurrentChannel": true, + "includeMutedChannels": false, + "includeBlockedUsers": false, + "indicatorMode": 3 + }, + "TypingTweaks": { + "enabled": false + }, + "Unindent": { + "enabled": true + }, + "UnlockedAvatarZoom": { + "enabled": false + }, + "UnsuppressEmbeds": { + "enabled": false + }, + "UserVoiceShow": { + "enabled": false + }, + "USRBG": { + "enabled": false + }, + "ValidReply": { + "enabled": true + }, + "ValidUser": { + "enabled": true + }, + "VoiceChatDoubleClick": { + "enabled": false + }, + "VcNarrator": { + "enabled": false + }, + "VencordToolbox": { + "enabled": false + }, + "ViewIcons": { + "enabled": false + }, + "ViewRaw": { + "enabled": false + }, + "VoiceDownload": { + "enabled": false + }, + "VoiceMessages": { + "enabled": false + }, + "VolumeBooster": { + "enabled": false + }, + "WebKeybinds": { + "enabled": true + }, + "WebScreenShareFixes": { + "enabled": true + }, + "WhoReacted": { + "enabled": true + }, + "XSOverlay": { + "enabled": false + }, + "YoutubeAdblock": { + "enabled": true + }, + "NoTrack": { + "enabled": true, + "disableAnalytics": true + }, + "WebContextMenus": { + "enabled": true, + "addBack": true + }, + "Settings": { + "enabled": true, + "settingsLocation": "aboveNitro" + }, + "SupportHelper": { + "enabled": true + }, + "UserMessagesPronouns": { + "enabled": false + }, + "DynamicImageModalAPI": { + "enabled": true + }, + "FixImagesQuality": { + "enabled": false + } + }, + "notifications": { + "timeout": 5000, + "position": "bottom-right", + "useNative": "not-focused", + "logLimit": 50 + }, + "cloud": { + "authenticated": false, + "url": "https://api.vencord.dev/", + "settingsSync": false, + "settingsSyncVersion": 1732045751816 + } +} \ No newline at end of file diff --git a/home-modules/vesktop/vencord-settings-backup-2024-12-03.json b/home-modules/vesktop/vencord-settings-backup-2024-12-03.json new file mode 100644 index 0000000..227d50c --- /dev/null +++ b/home-modules/vesktop/vencord-settings-backup-2024-12-03.json @@ -0,0 +1,640 @@ +{ + "settings": { + "autoUpdate": true, + "autoUpdateNotification": true, + "useQuickCss": true, + "themeLinks": [], + "enabledThemes": [], + "enableReactDevtools": false, + "frameless": false, + "transparent": false, + "winCtrlQ": false, + "disableMinSize": false, + "winNativeTitleBar": false, + "plugins": { + "ChatInputButtonAPI": { + "enabled": true + }, + "CommandsAPI": { + "enabled": true + }, + "MemberListDecoratorsAPI": { + "enabled": false + }, + "MessageAccessoriesAPI": { + "enabled": true + }, + "MessageDecorationsAPI": { + "enabled": false + }, + "MessageEventsAPI": { + "enabled": true + }, + "MessagePopoverAPI": { + "enabled": false + }, + "MessageUpdaterAPI": { + "enabled": true + }, + "ServerListAPI": { + "enabled": false + }, + "UserSettingsAPI": { + "enabled": true + }, + "AccountPanelServerProfile": { + "enabled": false + }, + "AlwaysAnimate": { + "enabled": false + }, + "AlwaysExpandRoles": { + "enabled": false + }, + "AlwaysTrust": { + "enabled": false + }, + "AnonymiseFileNames": { + "enabled": false + }, + "AppleMusicRichPresence": { + "enabled": false + }, + "WebRichPresence (arRPC)": { + "enabled": false + }, + "BANger": { + "enabled": false + }, + "BetterFolders": { + "enabled": false + }, + "BetterGifAltText": { + "enabled": false + }, + "BetterGifPicker": { + "enabled": false + }, + "BetterNotesBox": { + "enabled": false + }, + "BetterRoleContext": { + "enabled": false + }, + "BetterRoleDot": { + "enabled": false + }, + "BetterSessions": { + "enabled": true, + "backgroundCheck": false + }, + "BetterSettings": { + "enabled": false + }, + "BetterUploadButton": { + "enabled": false + }, + "BiggerStreamPreview": { + "enabled": false + }, + "BlurNSFW": { + "enabled": false, + "blurAmount": 10 + }, + "CallTimer": { + "enabled": false + }, + "ClearURLs": { + "enabled": true + }, + "ClientTheme": { + "enabled": false + }, + "ColorSighted": { + "enabled": false + }, + "ConsoleJanitor": { + "enabled": false + }, + "ConsoleShortcuts": { + "enabled": false + }, + "CopyEmojiMarkdown": { + "enabled": false + }, + "CopyFileContents": { + "enabled": false + }, + "CopyUserURLs": { + "enabled": false + }, + "CrashHandler": { + "enabled": true + }, + "CtrlEnterSend": { + "enabled": false + }, + "CustomRPC": { + "enabled": false + }, + "CustomIdle": { + "enabled": false, + "idleTimeout": 10, + "remainInIdle": true + }, + "Dearrow": { + "enabled": false + }, + "Decor": { + "enabled": false + }, + "DisableCallIdle": { + "enabled": false + }, + "DontRoundMyTimestamps": { + "enabled": false + }, + "EmoteCloner": { + "enabled": false + }, + "Experiments": { + "enabled": false + }, + "F8Break": { + "enabled": false + }, + "FakeNitro": { + "enabled": false + }, + "FakeProfileThemes": { + "enabled": false + }, + "FavoriteEmojiFirst": { + "enabled": false + }, + "FavoriteGifSearch": { + "enabled": false + }, + "FixCodeblockGap": { + "enabled": false + }, + "FixSpotifyEmbeds": { + "enabled": false + }, + "FixYoutubeEmbeds": { + "enabled": false + }, + "ForceOwnerCrown": { + "enabled": false + }, + "FriendInvites": { + "enabled": false + }, + "FriendsSince": { + "enabled": true + }, + "FullSearchContext": { + "enabled": false + }, + "GameActivityToggle": { + "enabled": false + }, + "GifPaste": { + "enabled": false + }, + "GreetStickerPicker": { + "enabled": false + }, + "HideAttachments": { + "enabled": false + }, + "iLoveSpam": { + "enabled": true + }, + "IgnoreActivities": { + "enabled": false, + "listMode": 0, + "idsList": "", + "ignorePlaying": false, + "ignoreStreaming": false, + "ignoreListening": false, + "ignoreWatching": false, + "ignoreCompeting": false + }, + "ImageLink": { + "enabled": false + }, + "ImageZoom": { + "enabled": true, + "saveZoomValues": true, + "invertScroll": true, + "nearestNeighbour": false, + "square": false, + "zoom": 2, + "size": 100, + "zoomSpeed": 0.5 + }, + "ImplicitRelationships": { + "enabled": false + }, + "InvisibleChat": { + "enabled": false + }, + "KeepCurrentChannel": { + "enabled": false + }, + "LastFMRichPresence": { + "enabled": false + }, + "LoadingQuotes": { + "enabled": false + }, + "MemberCount": { + "enabled": true, + "memberList": true, + "toolTip": true + }, + "MentionAvatars": { + "enabled": true, + "showAtSymbol": false + }, + "MessageClickActions": { + "enabled": false + }, + "MessageLatency": { + "enabled": true, + "latency": 2, + "detectDiscordKotlin": true, + "showMillis": false + }, + "MessageLinkEmbeds": { + "enabled": false, + "automodEmbeds": "never", + "listMode": "blacklist", + "idList": "" + }, + "MessageLogger": { + "enabled": true, + "collapseDeleted": true, + "deleteStyle": "text", + "ignoreBots": false, + "ignoreSelf": false, + "ignoreUsers": "", + "ignoreChannels": "", + "ignoreGuilds": "", + "logEdits": true, + "logDeletes": true, + "inlineEdits": 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 + }, + "NoMaskedUrlPaste": { + "enabled": false + }, + "NoMosaic": { + "enabled": false, + "inlineVideo": true + }, + "NoOnboardingDelay": { + "enabled": false + }, + "NoPendingCount": { + "enabled": false + }, + "NoProfileThemes": { + "enabled": true + }, + "NoReplyMention": { + "enabled": false + }, + "NoScreensharePreview": { + "enabled": true + }, + "NoServerEmojis": { + "enabled": false, + "shownEmojis": "onlyUnicode" + }, + "NoTypingAnimation": { + "enabled": true + }, + "NoUnblockToJump": { + "enabled": false + }, + "NormalizeMessageLinks": { + "enabled": false + }, + "NotificationVolume": { + "enabled": false + }, + "NSFWGateBypass": { + "enabled": true + }, + "OnePingPerDM": { + "enabled": false, + "channelToAffect": "both_dms", + "allowMentions": false, + "allowEveryone": false + }, + "oneko": { + "enabled": false + }, + "OpenInApp": { + "enabled": false + }, + "OverrideForumDefaults": { + "enabled": false + }, + "PartyMode": { + "enabled": false + }, + "PauseInvitesForever": { + "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 + }, + "QuickMention": { + "enabled": false + }, + "QuickReply": { + "enabled": false + }, + "ReactErrorDecoder": { + "enabled": false + }, + "ReadAllNotificationsButton": { + "enabled": false + }, + "RelationshipNotifier": { + "enabled": false + }, + "ReplaceGoogleSearch": { + "enabled": false + }, + "ReplyTimestamp": { + "enabled": false + }, + "RevealAllSpoilers": { + "enabled": true + }, + "ReverseImageSearch": { + "enabled": false + }, + "ReviewDB": { + "enabled": false + }, + "RoleColorEverywhere": { + "enabled": false + }, + "SecretRingToneEnabler": { + "enabled": false + }, + "Summaries": { + "enabled": false + }, + "SendTimestamps": { + "enabled": false + }, + "ServerInfo": { + "enabled": true + }, + "ServerListIndicators": { + "enabled": false + }, + "ShikiCodeblocks": { + "enabled": true, + "theme": "https://raw.githubusercontent.com/shikijs/shiki/0b28ad8ccfbf2615f2d9d38ea8255416b8ac3043/packages/shiki/themes/dark-plus.json", + "tryHljs": "SECONDARY", + "useDevIcon": "GREYSCALE", + "bgOpacity": 100 + }, + "ShowAllMessageButtons": { + "enabled": false + }, + "ShowConnections": { + "enabled": false + }, + "ShowHiddenChannels": { + "enabled": true, + "showMode": 0, + "hideUnreads": true, + "defaultAllowedUsersAndRolesDropdownState": true + }, + "ShowHiddenThings": { + "enabled": true, + "showTimeouts": true, + "showInvitesPaused": true, + "showModView": true, + "disableDiscoveryFilters": true, + "disableDisallowedDiscoveryFilters": true + }, + "ShowMeYourName": { + "enabled": false, + "mode": "user-nick", + "displayNames": false, + "inReplies": false + }, + "ShowTimeoutDuration": { + "enabled": false + }, + "SilentMessageToggle": { + "enabled": false + }, + "SilentTyping": { + "enabled": true, + "isEnabled": true, + "showIcon": true, + "contextMenu": true + }, + "SortFriendRequests": { + "enabled": false + }, + "SpotifyControls": { + "enabled": false + }, + "SpotifyCrack": { + "enabled": false + }, + "SpotifyShareCommands": { + "enabled": false + }, + "StartupTimings": { + "enabled": false + }, + "StickerPaste": { + "enabled": false + }, + "StreamerModeOnStream": { + "enabled": false + }, + "SuperReactionTweaks": { + "enabled": false + }, + "TextReplace": { + "enabled": false + }, + "ThemeAttributes": { + "enabled": false + }, + "Translate": { + "enabled": false + }, + "TypingIndicator": { + "enabled": true, + "includeCurrentChannel": true, + "includeMutedChannels": false, + "includeBlockedUsers": false, + "indicatorMode": 3 + }, + "TypingTweaks": { + "enabled": false + }, + "Unindent": { + "enabled": true + }, + "UnlockedAvatarZoom": { + "enabled": false + }, + "UnsuppressEmbeds": { + "enabled": false + }, + "UserVoiceShow": { + "enabled": false + }, + "USRBG": { + "enabled": false + }, + "ValidReply": { + "enabled": true + }, + "ValidUser": { + "enabled": true + }, + "VoiceChatDoubleClick": { + "enabled": false + }, + "VcNarrator": { + "enabled": false + }, + "VencordToolbox": { + "enabled": false + }, + "ViewIcons": { + "enabled": false + }, + "ViewRaw": { + "enabled": false + }, + "VoiceDownload": { + "enabled": false + }, + "VoiceMessages": { + "enabled": false + }, + "VolumeBooster": { + "enabled": false + }, + "WebKeybinds": { + "enabled": true + }, + "WebScreenShareFixes": { + "enabled": true + }, + "WhoReacted": { + "enabled": true + }, + "XSOverlay": { + "enabled": false + }, + "YoutubeAdblock": { + "enabled": true + }, + "NoTrack": { + "enabled": true, + "disableAnalytics": true + }, + "WebContextMenus": { + "enabled": true, + "addBack": true + }, + "Settings": { + "enabled": true, + "settingsLocation": "aboveNitro" + }, + "SupportHelper": { + "enabled": true + }, + "UserMessagesPronouns": { + "enabled": false + }, + "DynamicImageModalAPI": { + "enabled": true + }, + "FixImagesQuality": { + "enabled": false + } + }, + "notifications": { + "timeout": 5000, + "position": "bottom-right", + "useNative": "not-focused", + "logLimit": 50 + }, + "cloud": { + "authenticated": false, + "url": "https://api.vencord.dev/", + "settingsSync": false, + "settingsSyncVersion": 1732045751816 + } + }, + "quickCss": "" +} \ No newline at end of file diff --git a/hosts/acer.nix b/hosts/acer.nix new file mode 100644 index 0000000..8435b65 --- /dev/null +++ b/hosts/acer.nix @@ -0,0 +1,89 @@ +{ lib, pkgs, ... }: + +{ + # Identity + networking.hostName = "acer"; # Define your hostname. + networking.hostId = "fc9583ce"; + + # Hardware + hardware.enableRedistributableFirmware = true; + services.hardware.bolt.enable = true; + hardware.bluetooth.enable = true; + + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Kernel + # boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_12; + + # Swap + zramSwap = { + enable = true; + memoryPercent = 100; + }; + + # Storage + fileSystems."/" = + { + device = "acer-ssd/root"; + fsType = "zfs"; + options = [ "zfsutil" ]; + }; + fileSystems."/nix" = + { + device = "acer-ssd/nix"; + fsType = "zfs"; + options = [ "zfsutil" ]; + }; + fileSystems."/var" = + { + device = "acer-ssd/var"; + fsType = "zfs"; + options = [ "zfsutil" ]; + }; + fileSystems."/home" = + { + device = "acer-ssd/home"; + fsType = "zfs"; + options = [ "zfsutil" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/72EF-7CD3"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + # Config modules + lumpiasty = { + pc = true; + enablePlasma = true; + intelCpu = false; + noMitigations = false; + enablePulseaudio = true; + sshd = true; + users.user = true; + # users.drugi = true; + }; + + virtualisation.vmVariant = { + virtualisation = { + memorySize = 2048; + cores = 2; + }; + }; + + # For dev vm stuff + networking.firewall.trustedInterfaces = [ "br0" ]; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "24.05"; # Did you read the comment? +} \ No newline at end of file diff --git a/hosts/x260.nix b/hosts/x260.nix new file mode 100644 index 0000000..4dade46 --- /dev/null +++ b/hosts/x260.nix @@ -0,0 +1,59 @@ +{ lib, pkgs, ... }: + +{ + # Identity + networking.hostName = "x260"; # Define your hostname. + + # Hardware + hardware.enableRedistributableFirmware = true; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Kernel + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.kernelPackages = pkgs.linuxPackages_latest; + + # Swap + zramSwap.enable = true; + + # Storage + fileSystems."/" = + { device = "/dev/disk/by-uuid/700cbbf6-b2c6-4bff-9d5f-374e39874a03"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/E82E-7726"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + # Config modules + lumpiasty = { + pc = true; + enablePlasma = true; + intelCpu = true; + noMitigations = true; + enablePulseaudio = true; + sshd = true; + users.user = true; + # users.drugi = true; + }; + + virtualisation.vmVariant = { + virtualisation = { + memorySize = 2048; + cores = 2; + }; + }; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "24.05"; # Did you read the comment? +} \ No newline at end of file diff --git a/lib/mkHome.nix b/lib/mkHome.nix new file mode 100644 index 0000000..d70b278 --- /dev/null +++ b/lib/mkHome.nix @@ -0,0 +1,12 @@ +{ lib, nix-flatpak }: +condition: home: + +lib.mkIf condition ( + { ... }: { + imports = [ + nix-flatpak.homeManagerModules.nix-flatpak + ../home-modules + home + ]; + } +) diff --git a/lib/mkNixosSystem.nix b/lib/mkNixosSystem.nix new file mode 100644 index 0000000..cef58b7 --- /dev/null +++ b/lib/mkNixosSystem.nix @@ -0,0 +1,15 @@ +{ self, nixpkgs, home-manager, nix-flatpak, ... }: +hardwareConfig: hostConfig: + +nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + nix-flatpak = nix-flatpak; + }; + modules = [ + hardwareConfig + home-manager.nixosModules.home-manager + ../modules + hostConfig + ]; +} diff --git a/lib/mkUser.nix b/lib/mkUser.nix new file mode 100644 index 0000000..d967b65 --- /dev/null +++ b/lib/mkUser.nix @@ -0,0 +1,4 @@ +{ lib }: +condition: user: + +lib.mkIf condition (import user) diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..5a4ee57 --- /dev/null +++ b/modules/default.nix @@ -0,0 +1,18 @@ +{ ... }: + +{ + imports = [ + hardware/intel-cpu.nix + hardware/no-mitigations.nix + + system/roles.nix + system/nixpkgs.nix + system/location.nix + system/shell.nix + system/users.nix + system/ssh.nix + + desktop/plasma.nix + desktop/pulseaudio.nix + ]; +} \ No newline at end of file diff --git a/modules/desktop/gnome.nix b/modules/desktop/gnome.nix new file mode 100644 index 0000000..0fdbf8a --- /dev/null +++ b/modules/desktop/gnome.nix @@ -0,0 +1,37 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + options.lumpiasty.enableGnome = lib.mkEnableOption "Enable Gnome desktop"; + + config = lib.mkIf config.lumpiasty.enableGnome { + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "pl"; + variant = ""; + }; + + # Configure console keymap + console.keyMap = "pl2"; + + # Enable external monitor brightness control + hardware.i2c.enable = true; + + # Network + networking.useDHCP = lib.mkDefault false; + networking.networkmanager.enable = lib.mkDefault true; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Use wayland in electron apps + environment.sessionVariables.NIXOS_OZONE_WL = "1"; + }; + +} \ No newline at end of file diff --git a/modules/desktop/plasma.nix b/modules/desktop/plasma.nix new file mode 100644 index 0000000..7be2038 --- /dev/null +++ b/modules/desktop/plasma.nix @@ -0,0 +1,37 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + options.lumpiasty.enablePlasma = lib.mkEnableOption "Enable Plasma6 desktop"; + + config = lib.mkIf config.lumpiasty.enablePlasma { + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "pl"; + variant = ""; + }; + + # Configure console keymap + console.keyMap = "pl2"; + + # Enable external monitor brightness control + hardware.i2c.enable = true; + + # Network + networking.useDHCP = lib.mkDefault false; + networking.networkmanager.enable = lib.mkDefault true; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Use wayland in electron apps + environment.sessionVariables.NIXOS_OZONE_WL = "1"; + }; + +} \ No newline at end of file diff --git a/modules/desktop/pulseaudio.nix b/modules/desktop/pulseaudio.nix new file mode 100644 index 0000000..6b97377 --- /dev/null +++ b/modules/desktop/pulseaudio.nix @@ -0,0 +1,60 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + + options.lumpiasty.enablePulseaudio = lib.mkEnableOption "Enable Plasma6 desktop"; + + config = lib.mkIf config.lumpiasty.enablePulseaudio { + # Enable sound with pipewire. Dont forget after 24.05 + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + + wireplumber.configPackages = [ + (pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/99-alsa-nova-3.conf" '' + monitor.alsa.rules = [ + { + matches = [ + { + node.name = "alsa_output.usb-SteelSeries_Arctis_Nova_3-00.analog-stereo" + } + ] + actions = { + update-props = { + audio.format = "S24LE" + audio.rate = 96000 + api.alsa.period-size = 1024 + api.alsa.period-num = 4 + api.alsa.disable-batch = false + } + } + } + ] + '') + ]; + }; + + # hardware.pulseaudio = { + # enable = true; + # support32Bit = true; + # extraConfig = '' + # unload-module module-role-cork + # ''; + # }; + + # hardware.alsa.enablePersistence = true; # not implemented in 24.05 + + # Remove me after 24.05 + # sound.enable = true; + }; +} \ No newline at end of file diff --git a/modules/desktop/system76-scheduler.nix b/modules/desktop/system76-scheduler.nix new file mode 100644 index 0000000..92ff7a1 --- /dev/null +++ b/modules/desktop/system76-scheduler.nix @@ -0,0 +1,195 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + + # Enable system76-scheduler + # Config basically rewrite of stock, a bit tuned + services.system76-scheduler = { + enable = true; + useStockConfig = false; + settings = { + processScheduler = { + pipewireBoost = { + enable = true; + profile = { + nice = -6; + ioClass = "best-effort"; + ioPrio = 0; + }; + }; + foregroundBoost = { + enable = true; + foreground = { + nice = 0; + ioClass = "best-effort"; + ioPrio = 0; + }; + background = { + nice = 6; + ioClass = "idle"; + }; + }; + }; + }; + assignments = { + sound-server = { + nice = -15; + ioClass = "realtime"; + ioPrio = 0; + matchers = [ + # original config matches on /usr/bin/..., but this is NixOS + "pipewire" + "pipewire-pulse" + "jackd" + ]; + }; + recording = { + nice = -9; + ioClass = "best-effort"; + ioPrio = 0; + matchers = [ + "amsynth" + "jamesdsp" + "jitsi" + "mumble" + "obs" + "teams" + "wireplumber" + "zoom" + "bitwig-studio" + "include name=\"Bitwig*\"" + ]; + }; + games = { + nice = -5; + ioClass = "best-effort"; + ioPrio = 0; + matchers = [ + "lutris" + "steam" + "heroic" + "itch" + "vrcompositor" + "vrdashboard" + "vrmonitor" + "vrserver" + "include descends=\"steam\"" + "include descends=\"lutris\"" + "include descends=\"heroic\"" + "include descends=\"itch\"" + ]; + }; + desktop-environment = { + nice = -3; + ioClass = "best-effort"; + ioPrio = 0; + matchers = [ + "cosmic-comp" + "gnome-shell" + "i3wm" + "kwin" + "kwin_wayland" + "Xwayland" + "sway" + "Hyprland" + "gamescope" + "Xorg" + ]; + }; + session-services = { + nice = 9; + ioClass = "idle"; + matchers = [ + "include parent=\"gnome-session-binary\"" + "include parent=\"gvfsd\"" + "include cgroup=\"/user.slice/*.service\" parent=\"systemd\"" + "include cgroup=\"/user.slice/*/session.slice/*\" parent=\"systemd\"" + "exclude cgroup=\"/user.slice/*/app.slice/*\"" + "exclude cgroup=\"/user.slice/*/session.slice/*\"" + "exclude cgroup=\"/user.slice/*app-dbus*\"" + ]; + }; + system-services = { + nice = 12; + ioClass = "idle"; + matchers = [ + "include cgroup=\"/system.slice/*\"" + ]; + }; + package-manager = { + nice = 15; + class = "batch"; + ioClass = "idle"; + matchers = [ + "include name=\"apt-*\"" + "include name=\"dpkg-*\"" + "apt" + "dpkg" + "flatpak" + "fwupd" + "packagekitd" + "update-initramfs" + "nix" + ]; + }; + batch = { + nice = 19; + class = "idle"; + ioClass = "idle"; + matchers = [ + "include name=\"sbuild-*\"" + "\"7z\"" + "\"7za\"" + "\"7zr\"" + "ar" + "boinc" + "c++" + "cargo" + "clang" + "cmake" + "cpp" + "FAHClient" + "FAHCoreWrapper" + "fossilize-replay" + "g++" + "gcc" + "gradle" + "javac" + "ld" + "lld" + "make" + "mold" + "mvn" + "ninja" + "rust-analyzer" + "rustc" + "sbuild" + "tar" + "tracker-miner-fs-3" + "unrar" + "zip" + ]; + }; + }; + exceptions = [ + "include descends=\"chrt\"" + "include descends=\"gamemoderun\"" + "include descends=\"ionice\"" + "include descends=\"nice\"" + "include descends=\"taskset\"" + "include descends=\"schedtool\"" + "chrt" + "dbus" + "dbus-broker" + "gamemoderun" + "ionice" + "nice" + "rtkit-daemon" + "systemd" + "taskset" + "schedtool" + "/etc/profiles/per-user/user/bin/easyeffects*" + ]; + }; + # Add https://github.com/maxiberta/kwin-system76-scheduler-integration kwin script +} \ No newline at end of file diff --git a/modules/hardware/intel-cpu.nix b/modules/hardware/intel-cpu.nix new file mode 100644 index 0000000..1af3b8f --- /dev/null +++ b/modules/hardware/intel-cpu.nix @@ -0,0 +1,11 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + options.lumpiasty.intelCpu = lib.mkEnableOption "Enable intel CPU"; + + config = lib.mkIf config.lumpiasty.intelCpu { + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + # hardware.cpu.intel.updateMicrocode = true; + boot.kernelModules = [ "kvm-intel" ]; + }; +} \ No newline at end of file diff --git a/modules/hardware/no-mitigations.nix b/modules/hardware/no-mitigations.nix new file mode 100644 index 0000000..c53ce78 --- /dev/null +++ b/modules/hardware/no-mitigations.nix @@ -0,0 +1,11 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + options.lumpiasty.noMitigations = lib.mkEnableOption "Disable mitigations"; + + config = lib.mkIf config.lumpiasty.noMitigations { + boot.kernelParams = [ + "mitigations=off" + ]; + }; +} \ No newline at end of file diff --git a/modules/system/location.nix b/modules/system/location.nix new file mode 100644 index 0000000..ff3325f --- /dev/null +++ b/modules/system/location.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + # Time zone / Internalisation + time.timeZone = "Europe/Warsaw"; + i18n.defaultLocale = "pl_PL.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "pl_PL.UTF-8"; + LC_IDENTIFICATION = "pl_PL.UTF-8"; + LC_MEASUREMENT = "pl_PL.UTF-8"; + LC_MONETARY = "pl_PL.UTF-8"; + LC_NAME = "pl_PL.UTF-8"; + LC_NUMERIC = "pl_PL.UTF-8"; + LC_PAPER = "pl_PL.UTF-8"; + LC_TELEPHONE = "pl_PL.UTF-8"; + LC_TIME = "pl_PL.UTF-8"; + }; +} \ No newline at end of file diff --git a/modules/system/nixpkgs.nix b/modules/system/nixpkgs.nix new file mode 100644 index 0000000..d4e01dd --- /dev/null +++ b/modules/system/nixpkgs.nix @@ -0,0 +1,11 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # Overlay different packages on top of nixpkgs + nixpkgs.overlays = [ + (import ../../overlays/pkgs.nix) + ]; +} \ No newline at end of file diff --git a/modules/system/roles.nix b/modules/system/roles.nix new file mode 100644 index 0000000..3779565 --- /dev/null +++ b/modules/system/roles.nix @@ -0,0 +1,5 @@ +{config, lib, pkgs, modulesPath, ... }: + +{ + options.lumpiasty.pc = lib.mkEnableOption "Enable options specific to personal computers"; +} \ No newline at end of file diff --git a/modules/system/shell.nix b/modules/system/shell.nix new file mode 100644 index 0000000..182ccf9 --- /dev/null +++ b/modules/system/shell.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, modulesPath, ... }: +{ + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + wget + htop + tree + ]; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + +} \ No newline at end of file diff --git a/modules/system/ssh.nix b/modules/system/ssh.nix new file mode 100644 index 0000000..bd39637 --- /dev/null +++ b/modules/system/ssh.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + options.lumpiasty.sshd = lib.mkEnableOption "Enable intel CPU"; + + config = lib.mkIf config.lumpiasty.sshd { + services.openssh = { + enable = true; + settings = { + PasswordAuthentication = false; + AllowUsers = [ "user" ]; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/system/users.nix b/modules/system/users.nix new file mode 100644 index 0000000..819c256 --- /dev/null +++ b/modules/system/users.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, modulesPath, nix-flatpak, ... }: + +let + cfg = config.lumpiasty.users; + mkHome = import ../../lib/mkHome.nix { lib = lib; nix-flatpak = nix-flatpak; }; + mkUser = import ../../lib/mkUser.nix { lib = lib; }; +in +{ + options.lumpiasty.users = { + user = lib.mkEnableOption "Create user \"user\""; + drugi = lib.mkEnableOption "Create user \"drugi\""; + }; + + + config = { + # Docker rootless user service, only if pc + # Unfortunately, not implemented in home-manager yet + virtualisation.docker.rootless = { + enable = config.lumpiasty.pc; + setSocketVariable = true; + }; + + # Flatpak + services.flatpak.enable = true; + + # Users + users.mutableUsers = false; + + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + # User user + users.users.user = mkUser cfg.user ../../users/user/config.nix; + home-manager.users.user = mkHome cfg.user ../../users/user/home.nix; + + # User drugi + users.users.drugi = mkUser cfg.drugi ../../users/drugi/config.nix; + home-manager.users.drugi = mkHome cfg.drugi ../../users/drugi/home.nix; + }; +} \ No newline at end of file diff --git a/overlays/pkgs.nix b/overlays/pkgs.nix new file mode 100644 index 0000000..917d919 --- /dev/null +++ b/overlays/pkgs.nix @@ -0,0 +1,14 @@ +self: super: +{ + ddccontrol = super.callPackage ../pkgs/ddccontrol {}; + # Pin some kde packages to 6.3.1, 6.3.2 breaks thunderbolt + # kdePackages = super.kdePackages.overrideScope(kdeFinal: kdePrev: { + # kwin = kdePrev.kwin.overrideAttrs (prevAttrs: { + # src = super.fetchurl { + # url = "mirror://kde/stable/plasma/6.3.1/kwin-6.3.1.tar.xz"; + # hash = "sha256-mlC6DqpiCXg73vu2aOV9DL36cc6Ov70X/kRtttdz8kI="; + # }; + # version = "6.3.1"; + # }); + # }); +} \ No newline at end of file diff --git a/pkgs/ddccontrol/default.nix b/pkgs/ddccontrol/default.nix new file mode 100644 index 0000000..4d4ce69 --- /dev/null +++ b/pkgs/ddccontrol/default.nix @@ -0,0 +1,64 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchpatch, + autoreconfHook, + intltool, + libxml2, + pciutils, + pkg-config, + gtk2, + ddccontrol-db, +}: + +stdenv.mkDerivation rec { + pname = "ddccontrol"; + version = "1.0.3"; + + src = fetchFromGitHub { + owner = "ddccontrol"; + repo = "ddccontrol"; + rev = version; + sha256 = "sha256-qyD6i44yH3EufIW+LA/LBMW20Tejb49zvsDfv6YFD6c="; + }; + + nativeBuildInputs = [ + autoreconfHook + intltool + pkg-config + ]; + + buildInputs = [ + libxml2 + pciutils + gtk2 + ddccontrol-db + ]; + + configureFlags = [ + "--with-systemdsystemunitdir=${placeholder "out"}/etc/systemd/system" + ]; + + prePatch = '' + substituteInPlace configure.ac \ + --replace \ + "\$""{datadir}/ddccontrol-db" \ + "${ddccontrol-db}/share/ddccontrol-db" + + substituteInPlace src/ddcpci/Makefile.am \ + --replace "chmod 4711" "chmod 0711" + ''; + + preConfigure = '' + intltoolize --force + ''; + + meta = with lib; { + description = "Program used to control monitor parameters by software"; + homepage = "https://github.com/ddccontrol/ddccontrol"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with lib.maintainers; [ pakhfn ]; + }; +} \ No newline at end of file diff --git a/users/drugi/config.nix b/users/drugi/config.nix new file mode 100644 index 0000000..15ab257 --- /dev/null +++ b/users/drugi/config.nix @@ -0,0 +1,4 @@ +{ + isNormalUser = true; + hashedPassword = "$y$j9T$x0BP7o0Dr1qkzvCpJlZxO1$bnq3.AJZIA.a.gt3saC7mijDtSPhUP2vGcrvLK4wPtA"; +} \ No newline at end of file diff --git a/users/drugi/home.nix b/users/drugi/home.nix new file mode 100644 index 0000000..a846ad6 --- /dev/null +++ b/users/drugi/home.nix @@ -0,0 +1,39 @@ +{ config, pkgs, ... }: + +{ + home.username = "drugi"; + # home.homeDirectory = "/home/user/"; + + home.packages = with pkgs; [ + spotify + vesktop + yubikey-personalization + pass + qtpass + kubectl + kubectx + prismlauncher + k9s + kubectl + kubernetes-helm + xonsh + gnumake + python312 + python312Packages.python-lsp-server + nil + docker + docker-buildx + teamspeak_client + easyeffects + ]; + + programs.git = { + enable = true; + userName = "Lumpiasty"; + userEmail = "arek.dzski@gmail.com"; + }; + + home.stateVersion = "24.05"; + + programs.home-manager.enable = true; +} \ No newline at end of file diff --git a/users/user/config.nix b/users/user/config.nix new file mode 100644 index 0000000..870306f --- /dev/null +++ b/users/user/config.nix @@ -0,0 +1,10 @@ +{ + isNormalUser = true; + description = "User"; + extraGroups = [ "networkmanager" "wheel" "kvm" "audio" ]; + hashedPassword = "$y$j9T$x0BP7o0Dr1qkzvCpJlZxO1$bnq3.AJZIA.a.gt3saC7mijDtSPhUP2vGcrvLK4wPtA"; + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCresbDFZijI+rZMgd3LdciPjpb4x4S5B7y0U+EoYPaz6hILT72fyz3QdcgKJJv8JUJI6g0811/yFRuOzCXgWaA922c/S/t6HMUrorh7mPVQMTN2dc/SVBvMa7S2M9NYBj6z1X2LRHs+g1JTMCtL202PIjes/E9qu0as0Vx6n/6HHNmtmA9LrpiAmurbeKXDmrYe2yWg/FA6cX5d86SJb21Dj8WqdCd3Hz0Pi6FzMKXhpWvs5Hfei1htsjsRzCxkpSTjlgFEFVfmHIXPfB06Sa6aCnkxAFnE7N+xNa9RIWeZmOXdA74LsfSKQ9eAXSrsC/IRxo2ce8cBzXJy+Itxw24fUqGYXBiCgx8i3ZA9IdwI1u71xYo9lyNjav5VykzKnAHRAYnDm9UsCf8k04reBevcLdtxL11vPCtind3xn76Nhy2b45dcp/MdYFANGsCcXJOMb6Aisb03HPGhs/aU3tCAQbTVe195mL9FWhGqIK2wBmF1SKW+4ssX2bIU6YaCYc= cardno:23_671_999" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCZJwudslkEZUE904xWWBawMgh5FRIJG82zdC2lPU12x2IVyqKN24+jW6QGyzKsNZCJ+ZLBLziWtrbQI/44Et1pTmCNaFaRUOPCDwqVTZV41I5mLLy3nUy432CqgBzcVFgpKqfLUnKzXK2BGI5pPw92+45AvT7eU0wjnqg1WB/WORZWyLhHOqjst6j4xX5KgRc00NRhRTv373rpoZ2BEp6+kXMUgBPEj/OOzUBUtVek4YTy3Wb2EGzVSSF0b1cPiKk6+04PfDXtPU3q0k+oCkyZqIIWmUXhgjPazSoYQnX2/RvjvXeJNYMDovT3eBvpnBdRvLu3y+qwx6UAyFBWvdToZTJzHRyTP98QfT6O7Ye8fssYj7BWp8hisfbN7ap8LkHsQU56sUDuKKZSz3tsHuN08bUQ4BcN98C+J6lk4FAmTMqvlxb2ZkVViVPLzg+y9/BG5q/NJ4VOptUqqG3Qn1vtuJvNhxVf5X9RL77PLUyL6fApuZTNeVL61BNW7/fhNf8= qubes" + ]; +} \ No newline at end of file diff --git a/users/user/home.nix b/users/user/home.nix new file mode 100644 index 0000000..e61ccd7 --- /dev/null +++ b/users/user/home.nix @@ -0,0 +1,13 @@ +{ config, pkgs, osConfig, ... }: + +{ + home.username = "user"; + + lumpiastyHome = { + gpg = osConfig.lumpiasty.pc; + enablePcApps = osConfig.lumpiasty.pc; + dev = osConfig.lumpiasty.pc; + }; + + home.stateVersion = "24.05"; +} \ No newline at end of file