From 6aaa5993e4c1cfb205ed555d958702f9bba1770d Mon Sep 17 00:00:00 2001 From: adikro Date: Wed, 24 Dec 2025 16:21:00 +0100 Subject: a bunch of changes, renames sys to os and refactored some of the logic --- hm/env/theme.nix | 5 +- hm/soft/browser.nix | 11 +-- hm/soft/easyeffects.nix | 12 --- hm/soft/email.nix | 8 +- hm/soft/media.nix | 40 +------- hm/soft/mpv.nix | 63 ++++++++++++ hm/soft/nixcord.nix | 212 ++++++++++++++++++++-------------------- hm/soft/soft.nix | 3 +- hm/soft/vpn.nix | 6 +- hm/soft/yt-dlp.nix | 16 +++ hosts/desktop/configuration.nix | 2 +- hosts/laptop/configuration.nix | 4 +- hosts/laptop/home.nix | 7 +- os/core/audio.nix | 30 ++++++ os/core/bootloader.nix | 42 ++++++++ os/core/core.nix | 46 +++++++++ os/core/drivers.nix | 47 +++++++++ os/core/fonts.nix | 22 +++++ os/core/greet.nix | 29 ++++++ os/core/home-manager.nix | 36 +++++++ os/core/localization.nix | 41 ++++++++ os/core/memory.nix | 41 ++++++++ os/core/networking.nix | 20 ++++ os/core/power.nix | 18 ++++ os/core/security.nix | 38 +++++++ os/core/storage.nix | 36 +++++++ os/core/users.nix | 24 +++++ os/default.nix | 8 ++ os/srv/autoclicker.nix | 12 +++ os/srv/compat.nix | 24 +++++ os/srv/docker.nix | 14 +++ os/srv/files.nix | 46 +++++++++ os/srv/gaming.nix | 50 ++++++++++ os/srv/kvm.nix | 18 ++++ os/srv/nix-helper.nix | 23 +++++ os/srv/ollama.nix | 28 ++++++ os/srv/srv.nix | 13 +++ os/wm/niri.nix | 21 ++++ os/wm/wm.nix | 20 ++++ sys/core/audio.nix | 32 ------ sys/core/bootloader.nix | 42 -------- sys/core/core.nix | 46 --------- sys/core/drivers.nix | 47 --------- sys/core/fonts.nix | 22 ----- sys/core/greet.nix | 29 ------ sys/core/home-manager.nix | 36 ------- sys/core/localization.nix | 41 -------- sys/core/memory.nix | 41 -------- sys/core/networking.nix | 20 ---- sys/core/power.nix | 18 ---- sys/core/security.nix | 39 -------- sys/core/storage.nix | 36 ------- sys/core/users.nix | 23 ----- sys/default.nix | 8 -- sys/srv/compat.nix | 24 ----- sys/srv/docker.nix | 14 --- sys/srv/files.nix | 46 --------- sys/srv/gaming.nix | 50 ---------- sys/srv/kvm.nix | 18 ---- sys/srv/nix-helper.nix | 23 ----- sys/srv/ollama.nix | 28 ------ sys/srv/srv.nix | 12 --- sys/wm/niri.nix | 21 ---- sys/wm/wm.nix | 20 ---- 64 files changed, 952 insertions(+), 920 deletions(-) delete mode 100644 hm/soft/easyeffects.nix create mode 100644 hm/soft/mpv.nix create mode 100644 hm/soft/yt-dlp.nix create mode 100644 os/core/audio.nix create mode 100644 os/core/bootloader.nix create mode 100644 os/core/core.nix create mode 100644 os/core/drivers.nix create mode 100644 os/core/fonts.nix create mode 100644 os/core/greet.nix create mode 100644 os/core/home-manager.nix create mode 100644 os/core/localization.nix create mode 100644 os/core/memory.nix create mode 100644 os/core/networking.nix create mode 100644 os/core/power.nix create mode 100644 os/core/security.nix create mode 100644 os/core/storage.nix create mode 100644 os/core/users.nix create mode 100644 os/default.nix create mode 100644 os/srv/autoclicker.nix create mode 100644 os/srv/compat.nix create mode 100644 os/srv/docker.nix create mode 100644 os/srv/files.nix create mode 100644 os/srv/gaming.nix create mode 100644 os/srv/kvm.nix create mode 100644 os/srv/nix-helper.nix create mode 100644 os/srv/ollama.nix create mode 100644 os/srv/srv.nix create mode 100644 os/wm/niri.nix create mode 100644 os/wm/wm.nix delete mode 100644 sys/core/audio.nix delete mode 100644 sys/core/bootloader.nix delete mode 100644 sys/core/core.nix delete mode 100644 sys/core/drivers.nix delete mode 100644 sys/core/fonts.nix delete mode 100644 sys/core/greet.nix delete mode 100644 sys/core/home-manager.nix delete mode 100644 sys/core/localization.nix delete mode 100644 sys/core/memory.nix delete mode 100644 sys/core/networking.nix delete mode 100644 sys/core/power.nix delete mode 100644 sys/core/security.nix delete mode 100644 sys/core/storage.nix delete mode 100644 sys/core/users.nix delete mode 100644 sys/default.nix delete mode 100644 sys/srv/compat.nix delete mode 100644 sys/srv/docker.nix delete mode 100644 sys/srv/files.nix delete mode 100644 sys/srv/gaming.nix delete mode 100644 sys/srv/kvm.nix delete mode 100644 sys/srv/nix-helper.nix delete mode 100644 sys/srv/ollama.nix delete mode 100644 sys/srv/srv.nix delete mode 100644 sys/wm/niri.nix delete mode 100644 sys/wm/wm.nix diff --git a/hm/env/theme.nix b/hm/env/theme.nix index 761e394..0915024 100644 --- a/hm/env/theme.nix +++ b/hm/env/theme.nix @@ -4,11 +4,10 @@ let in { options.hm.env.themes = { - enable = lib.mkEnableOption "enables global theming"; gtk.enable = lib.mkEnableOption "GTK theming"; qt.enable = lib.mkEnableOption "QT theming"; }; - config = lib.mkIf cfg.enable (lib.mkMerge [ + config = lib.mkMerge [ (lib.mkIf cfg.gtk.enable { gtk = { enable = true; @@ -30,5 +29,5 @@ in platformTheme.name = "adwaita"; }; }) - ]); + ]; } diff --git a/hm/soft/browser.nix b/hm/soft/browser.nix index 023dce8..8b9e6dc 100644 --- a/hm/soft/browser.nix +++ b/hm/soft/browser.nix @@ -4,23 +4,16 @@ let in { options.hm.soft.browser = { - enable = lib.mkEnableOption "browser configs"; - librewolf.enable = lib.mkEnableOption "LibreWolf browser"; - firefox.enable = lib.mkEnableOption "Firefox browser"; brave.enable = lib.mkEnableOption "Brave browser"; }; - config = lib.mkIf cfg.enable (lib.mkMerge [ + config = lib.mkMerge [ (lib.mkIf cfg.librewolf.enable { programs.librewolf.enable = true; }) - (lib.mkIf cfg.firefox.enable { - programs.firefox.enable = true; - }) - (lib.mkIf cfg.brave.enable { home.packages = [ pkgs.brave ]; }) - ]); + ]; } diff --git a/hm/soft/easyeffects.nix b/hm/soft/easyeffects.nix deleted file mode 100644 index ab16736..0000000 --- a/hm/soft/easyeffects.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.hm.soft.easyeffects; -in -{ - options.hm.soft.easyeffects.enable = lib.mkEnableOption "EasyEffects audio equalizer"; - config = lib.mkIf cfg.enable { - services.easyeffects = { - enable = true; - }; - }; -} diff --git a/hm/soft/email.nix b/hm/soft/email.nix index d7ec9ea..d60f802 100644 --- a/hm/soft/email.nix +++ b/hm/soft/email.nix @@ -4,18 +4,16 @@ let in { options.hm.soft.email = { - enable = lib.mkEnableOption "email configs"; - thunderbird.enable = lib.mkEnableOption "thunderbird config"; evolution.enable = lib.mkEnableOption "evolution config"; }; - config = lib.mkIf cfg.enable (lib.mkMerge [ + config = lib.mkMerge [ (lib.mkIf cfg.thunderbird.enable { - programs.librewolf.enable = true; + programs.thunderbird.enable = true; }) (lib.mkIf cfg.evolution.enable { home.packages = [ pkgs.evolution ]; }) - ]); + ]; } diff --git a/hm/soft/media.nix b/hm/soft/media.nix index 5b4b06f..b330908 100644 --- a/hm/soft/media.nix +++ b/hm/soft/media.nix @@ -3,47 +3,13 @@ let cfg = config.hm.soft.media; in { - options.hm.soft.media.enable = lib.mkEnableOption "media playback and processing tools"; + options.hm.soft.media.enable = lib.mkEnableOption "media cli tools"; config = lib.mkIf cfg.enable { - programs.mpv = { - enable = true; - config = { - profile = "gpu-hq"; - vo = "gpu-next"; - hwdec = "auto-safe"; - save-position-on-quit = true; - keep-open = "yes"; - sub-auto = "fuzzy"; - volume-max = "200"; - }; - scripts = with pkgs.mpvScripts; [ - webtorrent-mpv-hook - visualizer - videoclip - thumbfast - reload - mpv-subtitle-lines - mpv-notify-send - mpv-cheatsheet - modernz - # modernx - memo - # builtins.autoload - autosubsync-mpv - autosub - ]; - }; - programs.yt-dlp = { - enable = true; - package = pkgs.yt-dlp_git; - }; - home.packages = with pkgs; [ - anime4k - syncplay-nogui ffmpeg imagemagick - exiftool + syncplay-nogui ]; }; } + diff --git a/hm/soft/mpv.nix b/hm/soft/mpv.nix new file mode 100644 index 0000000..8df73e7 --- /dev/null +++ b/hm/soft/mpv.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.hm.soft.mpv; + shim_dir = "${pkgs.mpv-shim-default-shaders}/share/mpv-shim-default-shaders/shaders"; + anime4k_dir = "${pkgs.anime4k}" +in +{ + options.hm.soft.mpv.enable = lib.mkEnableOption "mpv media player"; + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + anime4k + mpv-shim-default-shaders + ]; + programs.mpv = { + enable = true; + config = { + # general stuff + save-position-on-quit = true; + keep-open = "yes"; + + # video + profile = "gpu-hq"; + gpu-api = "vulkan"; + vo = "gpu-next"; + hwdec = "auto"; + + # audio + ao = "pipewire"; + sub-auto = "fuzzy"; + volume-max = "200"; + + # network streaming + demuxer-max-back-bytes = "50Mib"; + demuxer-max-bytes = "600Mib"; + demuxer-readahead-secs = 300; + force-seekable = "yes"; + + # screenshotting + screenshot-format = "png"; + screenshot-directory = "~/${config.hm.conf.xdg-dirs.mediaPath}/pics/ss"; + screenshot-template = "mpv-%f-%wH.%wM.%wS-#%#00n"; + }; + scripts = with pkgs.mpvScripts; [ + webtorrent-mpv-hook + visualizer + videoclip + thumbfast + reload + mpv-subtitle-lines + mpv-notify-send + mpv-cheatsheet + modernx + memo + autosubsync-mpv + autosub + ]; + }; + hm.soft = { + media.enable = true; + yt-dlp.enable = true; + }; + }; +} diff --git a/hm/soft/nixcord.nix b/hm/soft/nixcord.nix index d31f807..7021f7c 100644 --- a/hm/soft/nixcord.nix +++ b/hm/soft/nixcord.nix @@ -18,112 +18,112 @@ in }; config = { frameless = true; - # plugins = { - # alwaysExpandRoles = { enable = true; hideArrow = true; }; - # alwaysTrust = { enable = true; domain = false; }; - # anammox.enable = true; - # betterAudioPlayer.enable = true; - # betterGifAltText.enable = true; - # betterGifPicker.enable = true; - # betterInvites.enable = true; - # betterNotesBox = { enable = true; hide = true; }; - # betterQuickReact = { enable = true; columns = 6.0; rows = 1.0; compactMode = true; }; - # betterRoleContext.enable = true; - # betterUploadButton.enable = true; - # biggerStreamPreview.enable = true; - # callTimer.enable = true; - # characterCounter = { enable = true; colorEffects = false; }; - # cleanChannelName.enable = true; - # clearUrLs.enable = true; - # copyFileContents.enable = true; - # copyStickerLinks.enable = true; - # crashHandler.enable = true; - # customTimestamps.enable = true; - # disableCallIdle.enable = true; - # disableDeepLinks.enable = true; - # dontRoundMyTimestamps.enable = true; - # equicordHelper = { enable = true; noMirroredCamera = true; }; - # expressionCloner.enable = true; - # fakeNitro = { enable = true; enableEmojiBypass = false; enableStickerBypass = false; }; - # favoriteEmojiFirst.enable = true; - # fixCodeblockGap.enable = true; - # fixFileExtensions.enable = true; - # fixImagesQuality.enable = true; - # fixSpotifyEmbeds.enable = true; - # fixYoutubeEmbeds.enable = true; - # forceOwnerCrown.enable = true; - # friendsSince.enable = true; - # fullSearchContext.enable = true; - # fullUserInChatbox.enable = true; - # gifCollections = { enable = true; preventDuplicates = true; showCopyImageLink = true; }; - # gifRoulette = { enable = true; pingOwnerChance = true; }; - # guildTagSettings.enable = true; - # homeTyping.enable = true; - # ignoreTerms.enable = true; - # iLoveSpam.enable = true; - # imageFilename.enable = true; - # imageLink.enable = true; - # imageZoom = { enable = true; nearestNeighbour = true; saveZoomValues = true; square = true; }; - # imgToGif.enable = true; - # inRole.enable = true; - # inviteDefaults.enable = true; - # memberCount.enable = true; - # mentionAvatars = { enable = true; showAtSymbol = true; }; - # messageLinkEmbeds.enable = true; - # messageLogger = { enable = true; ignoreSelf = true; }; - # moyai.enable = true; - # musicControls.enable = true; - # neverPausePreviews.enable = true; - # newGuildSettings = { enable = true; messages = 1; }; - # newPluginsManager.enable = true; - # noF1.enable = true; - # noMaskedUrlPaste.enable = true; - # noModalAnimation.enable = true; - # noNitroUpsell.enable = true; - # noOnboardingDelay.enable = true; - # noMosaic.enable = true; - # noProfileThemes.enable = true; - # noSystemBadge.enable = true; - # noTypingAnimation.enable = true; - # overrideForumDefaults = { enable = true; defaultLayout = 2; }; - # onePingPerDm.enable = true; - # openInApp.enable = true; - # pauseInvitesForever.enable = true; - # permissionFreeWill = { enable = true; lockout = false; }; - # permissionsViewer.enable = true; - # pinDMs = { enable = true; canCollapseDmSection = true; }; - # pinIcon.enable = true; - # platformIndicators.enable = true; - # quoter.enable = true; - # relationshipNotifier.enable = true; - # roleColorEverywhere.enable = true; - # saveFavoriteGiFs.enable = true; - # sendTimestamps.enable = true; - # serverInfo.enable = true; - # showConnections.enable = true; - # showHiddenChannels = { enable = true; }; - # showHiddenThings.enable = true; - # showResourceChannels.enable = true; - # showTimeoutDuration.enable = true; - # spotifyCrack = { enable = true; noSpotifyAutoPause = false; }; - # streamerModeOnStream.enable = true; - # typingIndicator = { enable = true; indicatorMode = 2; }; - # typingTweaks.enable = true; - # unindent.enable = true; - # universalMention = { enable = true; globalMention = true; }; - # unlimitedAccounts.enable = true; - # unlockedAvatarZoom.enable = true; - # userVoiceShow.enable = true; - # validReply.enable = true; - # validUser.enable = true; - # viewIcons = { enable = true; format = "png"; }; - # voiceMessages.enable = true; - # volumeBooster.enable = true; - # whoReacted.enable = true; - # whosWatching.enable = true; - # youtubeAdblock.enable = true; - # youtubeDescription.enable = true; - # }; + plugins = { + alwaysExpandRoles = { enable = true; hideArrow = true; }; + alwaysTrust = { enable = true; domain = false; }; + anammox.enable = true; + betterAudioPlayer.enable = true; + betterGifAltText.enable = true; + betterGifPicker.enable = true; + betterInvites.enable = true; + betterNotesBox = { enable = true; hide = true; }; + betterQuickReact = { enable = true; columns = 6.0; rows = 1.0; compactMode = true; }; + betterRoleContext.enable = true; + betterUploadButton.enable = true; + biggerStreamPreview.enable = true; + callTimer.enable = true; + characterCounter = { enable = true; colorEffects = false; }; + cleanChannelName.enable = true; + clearUrLs.enable = true; + copyFileContents.enable = true; + copyStickerLinks.enable = true; + crashHandler.enable = true; + customTimestamps.enable = true; + disableCallIdle.enable = true; + disableDeepLinks.enable = true; + dontRoundMyTimestamps.enable = true; + equicordHelper = { enable = true; noMirroredCamera = true; }; + expressionCloner.enable = true; + fakeNitro = { enable = true; enableEmojiBypass = false; enableStickerBypass = false; }; + favoriteEmojiFirst.enable = true; + fixCodeblockGap.enable = true; + fixFileExtensions.enable = true; + fixImagesQuality.enable = true; + fixSpotifyEmbeds.enable = true; + fixYoutubeEmbeds.enable = true; + forceOwnerCrown.enable = true; + friendsSince.enable = true; + fullSearchContext.enable = true; + fullUserInChatbox.enable = true; + gifCollections = { enable = true; preventDuplicates = true; showCopyImageLink = true; }; + gifRoulette = { enable = true; pingOwnerChance = true; }; + guildTagSettings.enable = true; + homeTyping.enable = true; + ignoreTerms.enable = true; + iLoveSpam.enable = true; + imageFilename.enable = true; + imageLink.enable = true; + imageZoom = { enable = true; nearestNeighbour = true; saveZoomValues = true; square = true; }; + imgToGif.enable = true; + inRole.enable = true; + inviteDefaults.enable = true; + memberCount.enable = true; + mentionAvatars = { enable = true; showAtSymbol = true; }; + messageLinkEmbeds.enable = true; + messageLogger = { enable = true; ignoreSelf = true; }; + moyai.enable = true; + musicControls.enable = true; + neverPausePreviews.enable = true; + newGuildSettings = { enable = true; messages = 1; }; + newPluginsManager.enable = true; + noF1.enable = true; + noMaskedUrlPaste.enable = true; + noModalAnimation.enable = true; + noNitroUpsell.enable = true; + noOnboardingDelay.enable = true; + noMosaic.enable = true; + noProfileThemes.enable = true; + noSystemBadge.enable = true; + noTypingAnimation.enable = true; + overrideForumDefaults = { enable = true; defaultLayout = 2; }; + onePingPerDm.enable = true; + openInApp.enable = true; + pauseInvitesForever.enable = true; + permissionFreeWill = { enable = true; lockout = false; }; + permissionsViewer.enable = true; + pinDMs = { enable = true; canCollapseDmSection = true; }; + pinIcon.enable = true; + platformIndicators.enable = true; + quoter.enable = true; + relationshipNotifier.enable = true; + roleColorEverywhere.enable = true; + saveFavoriteGiFs.enable = true; + sendTimestamps.enable = true; + serverInfo.enable = true; + showConnections.enable = true; + showHiddenChannels = { enable = true; }; + showHiddenThings.enable = true; + showResourceChannels.enable = true; + showTimeoutDuration.enable = true; + spotifyCrack = { enable = true; noSpotifyAutoPause = false; }; + streamerModeOnStream.enable = true; + typingIndicator = { enable = true; indicatorMode = 2; }; + typingTweaks.enable = true; + unindent.enable = true; + universalMention = { enable = true; globalMention = true; }; + unlimitedAccounts.enable = true; + unlockedAvatarZoom.enable = true; + userVoiceShow.enable = true; + validReply.enable = true; + validUser.enable = true; + viewIcons = { enable = true; format = "png"; }; + voiceMessages.enable = true; + volumeBooster.enable = true; + whoReacted.enable = true; + whosWatching.enable = true; + youtubeAdblock.enable = true; + youtubeDescription.enable = true; + }; }; }; }; diff --git a/hm/soft/soft.nix b/hm/soft/soft.nix index 191ada7..bb5018a 100644 --- a/hm/soft/soft.nix +++ b/hm/soft/soft.nix @@ -2,12 +2,12 @@ { imports = [ ./browser.nix - ./easyeffects.nix ./email.nix ./kdeconnect.nix ./kdenlive.nix ./mangohud.nix ./media.nix + ./mpv.nix ./nixcord.nix ./obs.nix ./obsidian.nix @@ -15,5 +15,6 @@ ./spicetify.nix ./torrent.nix ./vpn.nix + ./yt-dlp.nix ]; } diff --git a/hm/soft/vpn.nix b/hm/soft/vpn.nix index 7b83d57..47bd959 100644 --- a/hm/soft/vpn.nix +++ b/hm/soft/vpn.nix @@ -4,12 +4,10 @@ let in { options.hm.soft.vpn = { - enable = lib.mkEnableOption "enables vpn clients"; - protonvpn.enable = lib.mkEnableOption "protonvpn"; mullvad.enable = lib.mkEnableOption "mullvad vpn"; }; - config = lib.mkIf cfg.enable (lib.mkMerge [ + config = lib.mkMerge [ (lib.mkIf cfg.mullvad.enable { programs.mullvad-vpn = { enable = true; @@ -18,5 +16,5 @@ in (lib.mkIf cfg.protonvpn.enable { home.packages = [ pkgs.protonvpn-gui ]; }) - ]); + ]; } diff --git a/hm/soft/yt-dlp.nix b/hm/soft/yt-dlp.nix new file mode 100644 index 0000000..4773464 --- /dev/null +++ b/hm/soft/yt-dlp.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.hm.soft.yt-dlp; +in +{ + options.hm.soft.yt-dlp.enable = lib.mkEnableOption "youtube content downloading tool"; + config = lib.mkIf cfg.enable { + programs.yt-dlp = { + enable = true; + package = pkgs.yt-dlp_git; + settings = { + + }; + }; + }; +} diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index 0482f23..434565e 100644 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -6,7 +6,7 @@ inputs.disko.nixosModules.disko ./hardware-configuration.nix - ../../sys/default.nix + ../../os/default.nix ]; boot.kernelParams = [ diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix index d9f458a..2862021 100644 --- a/hosts/laptop/configuration.nix +++ b/hosts/laptop/configuration.nix @@ -1,10 +1,10 @@ -{ username, inputs, ... }: +{ username, ... }: { system.stateVersion = "25.05"; imports = [ ./hardware-configuration.nix - ../../sys/default.nix + ../../os/default.nix ]; sys = { diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index b56a4de..244e1f6 100644 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -23,7 +23,6 @@ waybar.enable = true; themes = { - enable = true; gtk.enable = true; qt.enable = true; }; @@ -36,16 +35,16 @@ }; soft = { browser = { - enable = true; librewolf.enable = true; }; email = { - enable = true; thunderbird.enable = false; - evolution.enable = true; + evolution.enable = false; }; kdeconnect.enable = true; + mpv.enable = true; media.enable = true; + yt-dlp.enable = true; nixcord.enable = true; obsidian.enable = true; spicetify.enable = true; diff --git a/os/core/audio.nix b/os/core/audio.nix new file mode 100644 index 0000000..4868c7d --- /dev/null +++ b/os/core/audio.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, username, ... }: +let + cfg = config.sys.core.audio; +in +{ + options.sys.core.audio.enable = lib.mkEnableOption "audio support"; + config = lib.mkIf cfg.enable { + services = { + pipewire = { + enable = true; + audio.enable = true; + pulse.enable = true; + alsa.enable = true; + alsa.support32Bit = true; + jack.enable = true; + wireplumber.enable = true; + }; + playerctld.enable = true; + spotifyd.enable = true; + }; + + security.rtkit.enable = true; + hardware.enableAllFirmware = true; + + environment.systemPackages = with pkgs; [ + helvum + alsa-utils + ]; + }; +} diff --git a/os/core/bootloader.nix b/os/core/bootloader.nix new file mode 100644 index 0000000..ff0aad5 --- /dev/null +++ b/os/core/bootloader.nix @@ -0,0 +1,42 @@ +{ config, lib, ... }: +let + cfg = config.sys.core.bootloader; +in +{ + options.sys.core.bootloader = lib.mkOption { + type = lib.types.enum [ "systemd-boot" "grub" "none" ]; + default = "systemd-boot"; + description = "which bootloader to use"; + }; + config = lib.mkMerge [ + { + boot.loader.efi.canTouchEfiVariables = true; + boot.supportedFilesystems = [ "ntfs" ]; + boot.kernelParams = [ "quiet" "splash" ]; + } + + (lib.mkIf (cfg == "systemd-boot") { + boot.consoleLogLevel = 0; + boot.loader = { + systemd-boot.enable = true; + systemd-boot.editor = false; + timeout = 0; + }; + }) + + (lib.mkIf (cfg == "grub") { + boot.loader = { + timeout = 3; + efi.efiSysMountPoint = "/boot"; + grub = { + enable = true; + device = "nodev"; + efiSupport = true; + useOSProber = true; + + default = 2; + }; + }; + }) + ]; +} diff --git a/os/core/core.nix b/os/core/core.nix new file mode 100644 index 0000000..428d7ea --- /dev/null +++ b/os/core/core.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.core; +in +{ + imports = [ + ./audio.nix + ./bootloader.nix + ./drivers.nix + ./fonts.nix + ./greet.nix + ./home-manager.nix + ./localization.nix + ./memory.nix + ./networking.nix + ./power.nix + ./security.nix + ./storage.nix + ./users.nix + ]; + + options.sys.core = { + allowUnfree.enable = lib.mkEnableOption "unfree software"; + + flatpak.enable = lib.mkEnableOption "Flatpak support"; + + hardwareTools = { + enable = lib.mkEnableOption "peripheral and thermal tools"; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf cfg.allowUnfree.enable { + nixpkgs.config.allowUnfree = true; + }) + + (lib.mkIf cfg.flatpak.enable { + services.flatpak.enable = true; + }) + + (lib.mkIf cfg.hardwareTools.enable { + programs.coolercontrol.enable = true; + environment.systemPackages = [ pkgs.rivalcfg ]; + }) + ]; +} diff --git a/os/core/drivers.nix b/os/core/drivers.nix new file mode 100644 index 0000000..c769786 --- /dev/null +++ b/os/core/drivers.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.core.drivers; +in +{ + options.sys.core.drivers = { + enable = lib.mkEnableOption "enables hardware drivers"; + amd.enable = lib.mkEnableOption "AMD specific drivers and microcode"; + stability = lib.mkOption { + type = lib.types.enum [ "stable" "unstable" ]; + default = "stable"; + }; + }; + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + services.smartd.enable = true; + hardware.sensor.iio.enable = true; + hardware.enableAllFirmware = true; + hardware.cpu.amd.updateMicrocode = true; + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + } + + (lib.mkIf cfg.amd.enable { + services.xserver.videoDrivers = [ "amdgpu" ]; + hardware.amdgpu = { + initrd.enable = true; + overdrive.enable = true; + }; + }) + + (lib.mkIf (cfg.amd.enable && cfg.stability == "unstable") { + services.lact.enable = true; + boot.kernelPackages = pkgs.linuxPackages_cachyos-lto-znver4; + chaotic.mesa-git = { + enable = true; + extraPackages = [ pkgs.mesa_git.opencl ]; + }; + }) + + (lib.mkIf (cfg.amd.enable && cfg.stability == "stable") { + boot.kernelPackages = pkgs.linuxPackages_latest; + }) + ]); +} diff --git a/os/core/fonts.nix b/os/core/fonts.nix new file mode 100644 index 0000000..1173439 --- /dev/null +++ b/os/core/fonts.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.core.fonts; +in +{ + options.sys.core.fonts.enable = lib.mkEnableOption "system-wide font and console configuration"; + + config = lib.mkIf cfg.enable { + console = { + keyMap = "pl"; + earlySetup = true; + font = "ter-v32n"; + packages = with pkgs; [ terminus_font ]; + }; + + fonts.packages = with pkgs; [ + nerd-fonts.jetbrains-mono + nerd-fonts.fira-mono + nerd-fonts.fira-code + ]; + }; +} diff --git a/os/core/greet.nix b/os/core/greet.nix new file mode 100644 index 0000000..95603e8 --- /dev/null +++ b/os/core/greet.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.core.greet; +in +{ + options.sys.core.greet.enable = lib.mkEnableOption "enables greetd daemon with tuigreet"; + config = lib.mkIf cfg.enable { + services.greetd = { + enable = true; + settings = { + default_session = { + user = "greeter"; + command = '' + ${pkgs.tuigreet}/bin/tuigreet \ + --sessions ${config.services.displayManager.sessionData.desktops}/share/xsessions:${config.services.displayManager.sessionData.desktops}/share/wayland-sessions \ + --remember \ + --remember-user-session \ + --asterisks \ + --greeting 'Welcome to NixOS!' \ + --time + ''; + }; + }; + }; + security.pam.services.greetd.enableGnomeKeyring = true; + + environment.systemPackages = with pkgs; [ tuigreet ]; + }; +} diff --git a/os/core/home-manager.nix b/os/core/home-manager.nix new file mode 100644 index 0000000..7bc4b18 --- /dev/null +++ b/os/core/home-manager.nix @@ -0,0 +1,36 @@ +{ inputs, config, lib, username, ... }: +let + cfg = config.sys.core.home-manager; +in +{ + imports = [ inputs.home-manager.nixosModules.home-manager ]; + + options.sys.core.home-manager = { + enable = lib.mkEnableOption "home Manager configuration"; + + users = lib.mkOption { + default = {}; + description = "Attribute set of users and their home-manager configurations"; + type = lib.types.attrsOf (lib.types.submodule { + options = { + path = lib.mkOption { + type = lib.types.path; + description = "Path to the user's home.nix file"; + }; + }; + }); + }; + }; + config = lib.mkIf cfg.enable { + home-manager = { + extraSpecialArgs = { inherit inputs username; }; + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "bak"; + + users = lib.mapAttrs (name: userCfg: { + imports = [ userCfg.path ]; + }) cfg.users; + }; + }; +} diff --git a/os/core/localization.nix b/os/core/localization.nix new file mode 100644 index 0000000..4d45b75 --- /dev/null +++ b/os/core/localization.nix @@ -0,0 +1,41 @@ +{ config, lib, ... }: +let + cfg = config.sys.core.locale; +in +{ + options.sys.core.locale = { + enable = lib.mkEnableOption "system localization (timezone and language)"; + + timeZone = lib.mkOption { + type = lib.types.str; + default = "Europe/Warsaw"; + description = "the system timezone."; + }; + + format = lib.mkOption { + type = lib.types.str; + default = "pl_PL.UTF-8"; + description = "the locale used for numbers, time, and measurements."; + }; + }; + config = lib.mkIf cfg.enable { + time.timeZone = cfg.timeZone; + + i18n = { + defaultLocale = "en_US.UTF-8"; + + extraLocaleSettings = { + LC_TIME = cfg.format; + LC_NUMERIC = cfg.format; + LC_MONETARY = cfg.format; + LC_PAPER = cfg.format; + LC_MEASUREMENT = cfg.format; + LC_COLLATE = cfg.format; + LC_NAME = cfg.format; + LC_ADDRESS = cfg.format; + LC_TELEPHONE = cfg.format; + LC_IDENTIFICATION = cfg.format; + }; + }; + }; +} diff --git a/os/core/memory.nix b/os/core/memory.nix new file mode 100644 index 0000000..956cc73 --- /dev/null +++ b/os/core/memory.nix @@ -0,0 +1,41 @@ +{ config, lib, ... }: +let + cfg = config.sys.core.memory; +in +{ + options.sys.core.memory = { + zram = { + enable = lib.mkEnableOption "enables zram compression"; + percent = lib.mkOption { + type = lib.types.int; + default = 25; + }; + }; + + swapfile = { + enable = lib.mkEnableOption "enables a swapfile"; + size = lib.mkOption { + type = lib.types.int; + default = 8; + }; + }; + }; + config = lib.mkMerge [ + (lib.mkIf cfg.zram.enable { + zramSwap = { + enable = true; + algorithm = "zstd"; + memoryPercent = cfg.zram.percent; + priority = 100; + }; + }) + + (lib.mkIf cfg.swapfile.enable { + swapDevices = [ { + device = "/.swapvol/swapfile"; + size = cfg.swapfile.size * 1024; + priority = 0; + } ]; + }) + ]; +} diff --git a/os/core/networking.nix b/os/core/networking.nix new file mode 100644 index 0000000..314feb7 --- /dev/null +++ b/os/core/networking.nix @@ -0,0 +1,20 @@ +{ config, lib, ... }: +let + cfg = config.sys.core.network; +in +{ + options.sys.core.network.enable = lib.mkEnableOption "system-wide networking setup"; + config = lib.mkIf cfg.enable { + networking = { + networkmanager = { + enable = true; + wifi.macAddress = "stable-ssid"; + ethernet.macAddress = "stable-ssid"; + }; + firewall = { + enable = true; + }; + }; + systemd.services."NetworkManager-wait-online".enable = false; + }; +} diff --git a/os/core/power.nix b/os/core/power.nix new file mode 100644 index 0000000..f67665e --- /dev/null +++ b/os/core/power.nix @@ -0,0 +1,18 @@ +{ config, lib, ... }: +let + cfg = config.sys.core.power; +in +{ + options.sys.core.power.enable = lib.mkEnableOption "enables AMD-optimized power management"; + config = lib.mkIf cfg.enable { + services.power-profiles-daemon.enable = true; + + boot.kernelParams = [ + "amd_pstate=active" + "nvme_core.default_ps_max_latency_us=0" + ]; + + powerManagement.powertop.enable = true; + services.thermald.enable = true; + }; +} diff --git a/os/core/security.nix b/os/core/security.nix new file mode 100644 index 0000000..cfc8bf6 --- /dev/null +++ b/os/core/security.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.core.security; +in +{ + options.sys.core.security.enable = lib.mkEnableOption "core security services"; + config = lib.mkIf cfg.enable { + services.gnome.gnome-keyring.enable = true; + + security = { + polkit.enable = true; + rtkit.enable = true; + }; + + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-curses; + }; + + systemd.user.services.polkit-gnome-authentication-agent-1 = { + description = "gnome-polkit-authentication-agent-1"; + wantedBy = [ "graphical-session.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; + + environment.systemPackages = with pkgs; [ + veracrypt + bitwarden-desktop + ]; + }; +} diff --git a/os/core/storage.nix b/os/core/storage.nix new file mode 100644 index 0000000..693e5e7 --- /dev/null +++ b/os/core/storage.nix @@ -0,0 +1,36 @@ +{ config, lib, ... }: +let + cfg = config.sys.core.storage; +in +{ + options.sys.core.storage = { + enable = lib.mkEnableOption "enables storage management"; + + keepDays = lib.mkOption { + type = lib.types.int; + default = 14; + description = "Number of days to keep old Nix generations before GC"; + }; + }; + config = lib.mkIf cfg.enable { + nix.settings.auto-optimise-store = true; + + programs.nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-days ${toString cfg.keepDays} --keep 5"; + }; + + services.fstrim.enable = true; + + services.btrfs.autoScrub = { + enable = true; + fileSystems = [ "/" ]; + }; + + boot.tmp = { + useTmpfs = true; + tmpfsSize = "50%"; + }; + }; +} diff --git a/os/core/users.nix b/os/core/users.nix new file mode 100644 index 0000000..d0af69f --- /dev/null +++ b/os/core/users.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, username, ... }: +let + cfg = config.sys.core.users; +in +{ + options.sys.core.users.enable = lib.mkEnableOption "enables user accounts"; + config = lib.mkIf cfg.enable { + programs.fish.enable = true; + users.users.${username} = { + isNormalUser = true; + shell = pkgs.fish; + + extraGroups = lib.mkMerge [ + [ "wheel" ] + + (lib.mkIf (config.sys.core.drivers.amd.enable or false) [ "video" "render" ]) + (lib.mkIf (config.sys.core.network.enable or false) [ "networkmanager" ]) + (lib.mkIf (config.sys.srv.kvm.enable or false) [ "libvirtd" ]) + (lib.mkIf (config.sys.srv.docker.enable or false) [ "docker" ]) + (lib.mkIf (config.sys.srv.autoclicker.enable or false) [ "input" ]) + ]; + }; + }; +} diff --git a/os/default.nix b/os/default.nix new file mode 100644 index 0000000..225c08f --- /dev/null +++ b/os/default.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + imports = [ + ./core/core.nix + ./srv/srv.nix + ./wm/wm.nix + ]; +} diff --git a/os/srv/autoclicker.nix b/os/srv/autoclicker.nix new file mode 100644 index 0000000..84cba2e --- /dev/null +++ b/os/srv/autoclicker.nix @@ -0,0 +1,12 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.srv.autoclicker; +in +{ + options.sys.srv.autoclicker.enable = lib.mkEnableOption "enables wl-autoclicker"; + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + wl-autoclicker + ]; + }; +} diff --git a/os/srv/compat.nix b/os/srv/compat.nix new file mode 100644 index 0000000..ab9560f --- /dev/null +++ b/os/srv/compat.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.srv.compat; +in +{ + options.sys.srv.compat.enable = lib.mkEnableOption "enables compatibility with windows & x11"; + config = lib.mkIf cfg.enable { + programs.xwayland = { + enable = true; + package = pkgs.xwayland-satellite; + }; + + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; + ELECTRON_ENABLE_WAYLAND = "1"; + WINE_RT_PRIO = "1"; + }; + + environment.systemPackages = with pkgs; [ + winetricks + wineWowPackages.waylandFull + ]; + }; +} diff --git a/os/srv/docker.nix b/os/srv/docker.nix new file mode 100644 index 0000000..0ed1541 --- /dev/null +++ b/os/srv/docker.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, username, ... }: +let + cfg = config.sys.srv.docker; +in +{ + options.sys.srv.docker.enable = lib.mkEnableOption "enables the docker container engine"; + config = lib.mkIf cfg.enable { + virtualisation.docker.enable = true; + + environment.systemPackages = [ pkgs.docker-compose ]; + + users.users.${username}.extraGroups = [ "docker" ]; + }; +} diff --git a/os/srv/files.nix b/os/srv/files.nix new file mode 100644 index 0000000..9b5759e --- /dev/null +++ b/os/srv/files.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.srv.files; +in +{ + options.sys.srv.files = { + thunar.enable = lib.mkEnableOption "enables the thunar file manager"; + utils.enable = lib.mkEnableOption "enables compression and trash utilities"; + }; + config = lib.mkMerge [ + { + sys.srv.files.utils.enable = lib.mkDefault cfg.thunar.enable; + } + + (lib.mkIf cfg.thunar.enable { + programs.thunar = { + enable = true; + plugins = with pkgs.xfce; [ + thunar-volman + thunar-archive-plugin + thunar-vcs-plugin + ]; + }; + services = { + tumbler.enable = true; + gnome.gnome-keyring.enable = true; + }; + environment.systemPackages = with pkgs; [ file-roller ]; + }) + + (lib.mkIf cfg.utils.enable { + services.gvfs.enable = true; + + environment.systemPackages = with pkgs; [ + trashy + gdu + + unzip + p7zip + unrar + pxz + pigz + ]; + }) + ]; +} diff --git a/os/srv/gaming.nix b/os/srv/gaming.nix new file mode 100644 index 0000000..ee7f608 --- /dev/null +++ b/os/srv/gaming.nix @@ -0,0 +1,50 @@ +{ config, lib, pkgs, username, ... }: +let + cfg = config.sys.srv.gaming; +in +{ + options.sys.srv.gaming = { + enable = lib.mkEnableOption "enables gaming utilities"; + steam.enable = lib.mkEnableOption "enables steam utilities"; + vr.enable = lib.mkEnableOption "enables vr support"; + }; + config = lib.mkMerge [ + (lib.mkIf cfg.enable { + programs.gamescope.enable = true; + + programs.gamemode = { + enable = true; + enableRenice = true; + }; + + environment.systemPackages = with pkgs; [ + heroic + prismlauncher + ]; + + home-manager.users.${username}.hm.soft.mangohud.enable = true; + }) + + (lib.mkIf cfg.steam.enable { + programs.steam = { + enable = true; + localNetworkGameTransfers.openFirewall = true; + dedicatedServer.openFirewall = true; + remotePlay.openFirewall = false; + extest.enable = true; + protontricks.enable = true; + + extraCompatPackages = with pkgs; [ + proton-ge-custom + ]; + }; + }) + + (lib.mkIf cfg.vr.enable { + programs.alvr = { + enable = true; + openFirewall = true; + }; + }) + ]; +} diff --git a/os/srv/kvm.nix b/os/srv/kvm.nix new file mode 100644 index 0000000..2cf8c26 --- /dev/null +++ b/os/srv/kvm.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.srv.kvm; +in +{ + options.sys.srv.kvm.enable = lib.mkEnableOption "KVM/QEMU virtualization with Virt-Manager"; + config = lib.mkIf cfg.enable { + virtualisation.libvirtd = { + enable = true; + qemu.package = pkgs.qemu_kvm; + qemu.swtpm.enable = true; + }; + + programs.virt-manager.enable = true; + + boot.initrd.kernelModules = lib.optional (config.sys.core.drivers.amd.enable or false) "kvm-amd"; + }; +} diff --git a/os/srv/nix-helper.nix b/os/srv/nix-helper.nix new file mode 100644 index 0000000..6a64201 --- /dev/null +++ b/os/srv/nix-helper.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, username, ... }: +let + cfg = config.sys.srv.nix-helper; +in +{ + options.sys.srv.nix-helper.enable = lib.mkEnableOption "enables nix-helper"; + config = lib.mkIf cfg.enable { + nix.settings = { + trusted-users = [ "root" "${username}" ]; + experimental-features = [ "nix-command" "flakes" ]; + }; + + programs.nh = { + enable = true; + flake = "/etc/nixos"; + }; + + environment.systemPackages = with pkgs; [ + nix-output-monitor + nvd + ]; + }; +} diff --git a/os/srv/ollama.nix b/os/srv/ollama.nix new file mode 100644 index 0000000..11babd6 --- /dev/null +++ b/os/srv/ollama.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.srv.ollama; +in +{ + options.sys.srv.ollama.enable = lib.mkEnableOption "Ollama AI service"; + config = lib.mkIf cfg.enable { + fileSystems."/models" = { + device = "/home/ollama"; + fsType = "none"; + options = [ "bind" ]; + }; + + services.ollama = { + enable = true; + package = pkgs.ollama-rocm; + + user = "ollama"; + models = "/models"; + + syncModels = true; + loadModels = [ + "deepseek-r1:14b" + "qwen3:14b" + ]; + }; + }; +} diff --git a/os/srv/srv.nix b/os/srv/srv.nix new file mode 100644 index 0000000..2da7d50 --- /dev/null +++ b/os/srv/srv.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + imports = [ + ./autoclicker + ./compat.nix + ./docker.nix + ./files.nix + ./gaming.nix + ./kvm.nix + ./nix-helper.nix + ./ollama.nix + ]; +} diff --git a/os/wm/niri.nix b/os/wm/niri.nix new file mode 100644 index 0000000..c92b068 --- /dev/null +++ b/os/wm/niri.nix @@ -0,0 +1,21 @@ +{ inputs, config, lib, pkgs, username, ... }: +let + cfg = config.sys.wm.niri; +in +{ + imports = [ inputs.niri.nixosModules.niri ]; + + options.sys.wm.niri.enable = lib.mkEnableOption "Niri"; + + config = lib.mkIf cfg.enable { + nixpkgs.overlays = [ inputs.niri.overlays.niri ]; + + programs.niri = { + enable = true; + package = pkgs.niri-unstable; + }; + + sys.srv.compat.enable = true; + home-manager.users.${username}.hm.env.niri.enable = true; + }; +} diff --git a/os/wm/wm.nix b/os/wm/wm.nix new file mode 100644 index 0000000..5374264 --- /dev/null +++ b/os/wm/wm.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.sys.wm; +in +{ + imports = [ + ./niri.nix + ]; + + options.sys.wm.enable = lib.mkEnableOption "enables shared wm features"; + config = lib.mkIf cfg.enable { + services.dbus.enable = true; + + xdg.portal = { + enable = true; + xdgOpenUsePortal = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + }; + }; +} diff --git a/sys/core/audio.nix b/sys/core/audio.nix deleted file mode 100644 index 234b6bd..0000000 --- a/sys/core/audio.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ config, lib, pkgs, username, ... }: -let - cfg = config.sys.core.audio; -in -{ - options.sys.core.audio.enable = lib.mkEnableOption "audio support"; - config = lib.mkIf cfg.enable { - services = { - pipewire = { - enable = true; - audio.enable = true; - pulse.enable = true; - alsa.enable = true; - alsa.support32Bit = true; - jack.enable = true; - wireplumber.enable = true; - }; - playerctld.enable = true; - spotifyd.enable = true; - }; - - security.rtkit.enable = true; - hardware.enableAllFirmware = true; - - environment.systemPackages = with pkgs; [ - helvum - alsa-utils - ]; - - home-manager.users.${username}.hm.soft.easyeffects.enable = true; - }; -} diff --git a/sys/core/bootloader.nix b/sys/core/bootloader.nix deleted file mode 100644 index ff0aad5..0000000 --- a/sys/core/bootloader.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.sys.core.bootloader; -in -{ - options.sys.core.bootloader = lib.mkOption { - type = lib.types.enum [ "systemd-boot" "grub" "none" ]; - default = "systemd-boot"; - description = "which bootloader to use"; - }; - config = lib.mkMerge [ - { - boot.loader.efi.canTouchEfiVariables = true; - boot.supportedFilesystems = [ "ntfs" ]; - boot.kernelParams = [ "quiet" "splash" ]; - } - - (lib.mkIf (cfg == "systemd-boot") { - boot.consoleLogLevel = 0; - boot.loader = { - systemd-boot.enable = true; - systemd-boot.editor = false; - timeout = 0; - }; - }) - - (lib.mkIf (cfg == "grub") { - boot.loader = { - timeout = 3; - efi.efiSysMountPoint = "/boot"; - grub = { - enable = true; - device = "nodev"; - efiSupport = true; - useOSProber = true; - - default = 2; - }; - }; - }) - ]; -} diff --git a/sys/core/core.nix b/sys/core/core.nix deleted file mode 100644 index 428d7ea..0000000 --- a/sys/core/core.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.core; -in -{ - imports = [ - ./audio.nix - ./bootloader.nix - ./drivers.nix - ./fonts.nix - ./greet.nix - ./home-manager.nix - ./localization.nix - ./memory.nix - ./networking.nix - ./power.nix - ./security.nix - ./storage.nix - ./users.nix - ]; - - options.sys.core = { - allowUnfree.enable = lib.mkEnableOption "unfree software"; - - flatpak.enable = lib.mkEnableOption "Flatpak support"; - - hardwareTools = { - enable = lib.mkEnableOption "peripheral and thermal tools"; - }; - }; - - config = lib.mkMerge [ - (lib.mkIf cfg.allowUnfree.enable { - nixpkgs.config.allowUnfree = true; - }) - - (lib.mkIf cfg.flatpak.enable { - services.flatpak.enable = true; - }) - - (lib.mkIf cfg.hardwareTools.enable { - programs.coolercontrol.enable = true; - environment.systemPackages = [ pkgs.rivalcfg ]; - }) - ]; -} diff --git a/sys/core/drivers.nix b/sys/core/drivers.nix deleted file mode 100644 index c769786..0000000 --- a/sys/core/drivers.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.core.drivers; -in -{ - options.sys.core.drivers = { - enable = lib.mkEnableOption "enables hardware drivers"; - amd.enable = lib.mkEnableOption "AMD specific drivers and microcode"; - stability = lib.mkOption { - type = lib.types.enum [ "stable" "unstable" ]; - default = "stable"; - }; - }; - config = lib.mkIf cfg.enable (lib.mkMerge [ - { - services.smartd.enable = true; - hardware.sensor.iio.enable = true; - hardware.enableAllFirmware = true; - hardware.cpu.amd.updateMicrocode = true; - hardware.graphics = { - enable = true; - enable32Bit = true; - }; - } - - (lib.mkIf cfg.amd.enable { - services.xserver.videoDrivers = [ "amdgpu" ]; - hardware.amdgpu = { - initrd.enable = true; - overdrive.enable = true; - }; - }) - - (lib.mkIf (cfg.amd.enable && cfg.stability == "unstable") { - services.lact.enable = true; - boot.kernelPackages = pkgs.linuxPackages_cachyos-lto-znver4; - chaotic.mesa-git = { - enable = true; - extraPackages = [ pkgs.mesa_git.opencl ]; - }; - }) - - (lib.mkIf (cfg.amd.enable && cfg.stability == "stable") { - boot.kernelPackages = pkgs.linuxPackages_latest; - }) - ]); -} diff --git a/sys/core/fonts.nix b/sys/core/fonts.nix deleted file mode 100644 index 1173439..0000000 --- a/sys/core/fonts.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.core.fonts; -in -{ - options.sys.core.fonts.enable = lib.mkEnableOption "system-wide font and console configuration"; - - config = lib.mkIf cfg.enable { - console = { - keyMap = "pl"; - earlySetup = true; - font = "ter-v32n"; - packages = with pkgs; [ terminus_font ]; - }; - - fonts.packages = with pkgs; [ - nerd-fonts.jetbrains-mono - nerd-fonts.fira-mono - nerd-fonts.fira-code - ]; - }; -} diff --git a/sys/core/greet.nix b/sys/core/greet.nix deleted file mode 100644 index 95603e8..0000000 --- a/sys/core/greet.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.core.greet; -in -{ - options.sys.core.greet.enable = lib.mkEnableOption "enables greetd daemon with tuigreet"; - config = lib.mkIf cfg.enable { - services.greetd = { - enable = true; - settings = { - default_session = { - user = "greeter"; - command = '' - ${pkgs.tuigreet}/bin/tuigreet \ - --sessions ${config.services.displayManager.sessionData.desktops}/share/xsessions:${config.services.displayManager.sessionData.desktops}/share/wayland-sessions \ - --remember \ - --remember-user-session \ - --asterisks \ - --greeting 'Welcome to NixOS!' \ - --time - ''; - }; - }; - }; - security.pam.services.greetd.enableGnomeKeyring = true; - - environment.systemPackages = with pkgs; [ tuigreet ]; - }; -} diff --git a/sys/core/home-manager.nix b/sys/core/home-manager.nix deleted file mode 100644 index 7bc4b18..0000000 --- a/sys/core/home-manager.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ inputs, config, lib, username, ... }: -let - cfg = config.sys.core.home-manager; -in -{ - imports = [ inputs.home-manager.nixosModules.home-manager ]; - - options.sys.core.home-manager = { - enable = lib.mkEnableOption "home Manager configuration"; - - users = lib.mkOption { - default = {}; - description = "Attribute set of users and their home-manager configurations"; - type = lib.types.attrsOf (lib.types.submodule { - options = { - path = lib.mkOption { - type = lib.types.path; - description = "Path to the user's home.nix file"; - }; - }; - }); - }; - }; - config = lib.mkIf cfg.enable { - home-manager = { - extraSpecialArgs = { inherit inputs username; }; - useGlobalPkgs = true; - useUserPackages = true; - backupFileExtension = "bak"; - - users = lib.mapAttrs (name: userCfg: { - imports = [ userCfg.path ]; - }) cfg.users; - }; - }; -} diff --git a/sys/core/localization.nix b/sys/core/localization.nix deleted file mode 100644 index 4d45b75..0000000 --- a/sys/core/localization.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.sys.core.locale; -in -{ - options.sys.core.locale = { - enable = lib.mkEnableOption "system localization (timezone and language)"; - - timeZone = lib.mkOption { - type = lib.types.str; - default = "Europe/Warsaw"; - description = "the system timezone."; - }; - - format = lib.mkOption { - type = lib.types.str; - default = "pl_PL.UTF-8"; - description = "the locale used for numbers, time, and measurements."; - }; - }; - config = lib.mkIf cfg.enable { - time.timeZone = cfg.timeZone; - - i18n = { - defaultLocale = "en_US.UTF-8"; - - extraLocaleSettings = { - LC_TIME = cfg.format; - LC_NUMERIC = cfg.format; - LC_MONETARY = cfg.format; - LC_PAPER = cfg.format; - LC_MEASUREMENT = cfg.format; - LC_COLLATE = cfg.format; - LC_NAME = cfg.format; - LC_ADDRESS = cfg.format; - LC_TELEPHONE = cfg.format; - LC_IDENTIFICATION = cfg.format; - }; - }; - }; -} diff --git a/sys/core/memory.nix b/sys/core/memory.nix deleted file mode 100644 index 956cc73..0000000 --- a/sys/core/memory.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.sys.core.memory; -in -{ - options.sys.core.memory = { - zram = { - enable = lib.mkEnableOption "enables zram compression"; - percent = lib.mkOption { - type = lib.types.int; - default = 25; - }; - }; - - swapfile = { - enable = lib.mkEnableOption "enables a swapfile"; - size = lib.mkOption { - type = lib.types.int; - default = 8; - }; - }; - }; - config = lib.mkMerge [ - (lib.mkIf cfg.zram.enable { - zramSwap = { - enable = true; - algorithm = "zstd"; - memoryPercent = cfg.zram.percent; - priority = 100; - }; - }) - - (lib.mkIf cfg.swapfile.enable { - swapDevices = [ { - device = "/.swapvol/swapfile"; - size = cfg.swapfile.size * 1024; - priority = 0; - } ]; - }) - ]; -} diff --git a/sys/core/networking.nix b/sys/core/networking.nix deleted file mode 100644 index 314feb7..0000000 --- a/sys/core/networking.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.sys.core.network; -in -{ - options.sys.core.network.enable = lib.mkEnableOption "system-wide networking setup"; - config = lib.mkIf cfg.enable { - networking = { - networkmanager = { - enable = true; - wifi.macAddress = "stable-ssid"; - ethernet.macAddress = "stable-ssid"; - }; - firewall = { - enable = true; - }; - }; - systemd.services."NetworkManager-wait-online".enable = false; - }; -} diff --git a/sys/core/power.nix b/sys/core/power.nix deleted file mode 100644 index f67665e..0000000 --- a/sys/core/power.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.sys.core.power; -in -{ - options.sys.core.power.enable = lib.mkEnableOption "enables AMD-optimized power management"; - config = lib.mkIf cfg.enable { - services.power-profiles-daemon.enable = true; - - boot.kernelParams = [ - "amd_pstate=active" - "nvme_core.default_ps_max_latency_us=0" - ]; - - powerManagement.powertop.enable = true; - services.thermald.enable = true; - }; -} diff --git a/sys/core/security.nix b/sys/core/security.nix deleted file mode 100644 index bf43577..0000000 --- a/sys/core/security.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.core.security; -in -{ - options.sys.core.security.enable = lib.mkEnableOption "core security services"; - config = lib.mkIf cfg.enable { - services.gnome.gnome-keyring.enable = true; - - security = { - polkit.enable = true; - rtkit.enable = true; - }; - - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - pinentryPackage = pkgs.pinentry-curses; - }; - - systemd.user.services.polkit-gnome-authentication-agent-1 = { - description = "gnome-polkit-authentication-agent-1"; - wantedBy = [ "graphical-session.target" ]; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; - Restart = "on-failure"; - RestartSec = 1; - TimeoutStopSec = 10; - }; - }; - - environment.systemPackages = with pkgs; [ - veracrypt - bitwarden-desktop - hello - ]; - }; -} diff --git a/sys/core/storage.nix b/sys/core/storage.nix deleted file mode 100644 index 693e5e7..0000000 --- a/sys/core/storage.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.sys.core.storage; -in -{ - options.sys.core.storage = { - enable = lib.mkEnableOption "enables storage management"; - - keepDays = lib.mkOption { - type = lib.types.int; - default = 14; - description = "Number of days to keep old Nix generations before GC"; - }; - }; - config = lib.mkIf cfg.enable { - nix.settings.auto-optimise-store = true; - - programs.nh = { - enable = true; - clean.enable = true; - clean.extraArgs = "--keep-days ${toString cfg.keepDays} --keep 5"; - }; - - services.fstrim.enable = true; - - services.btrfs.autoScrub = { - enable = true; - fileSystems = [ "/" ]; - }; - - boot.tmp = { - useTmpfs = true; - tmpfsSize = "50%"; - }; - }; -} diff --git a/sys/core/users.nix b/sys/core/users.nix deleted file mode 100644 index fb4e7f0..0000000 --- a/sys/core/users.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, pkgs, username, ... }: -let - cfg = config.sys.core.users; -in -{ - options.sys.core.users.enable = lib.mkEnableOption "enables user accounts"; - config = lib.mkIf cfg.enable { - programs.fish.enable = true; - users.users.${username} = { - isNormalUser = true; - shell = pkgs.fish; - - extraGroups = lib.mkMerge [ - [ "wheel" ] - - (lib.mkIf (config.sys.core.drivers.amd.enable or false) [ "video" "render" ]) - (lib.mkIf (config.sys.core.network.enable or false) [ "networkmanager" ]) - (lib.mkIf (config.sys.srv.kvm.enable or false) [ "libvirtd" ]) - (lib.mkIf (config.sys.srv.docker.enable or false) [ "docker" ]) - ]; - }; - }; -} diff --git a/sys/default.nix b/sys/default.nix deleted file mode 100644 index 225c08f..0000000 --- a/sys/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ ... }: -{ - imports = [ - ./core/core.nix - ./srv/srv.nix - ./wm/wm.nix - ]; -} diff --git a/sys/srv/compat.nix b/sys/srv/compat.nix deleted file mode 100644 index ab9560f..0000000 --- a/sys/srv/compat.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.srv.compat; -in -{ - options.sys.srv.compat.enable = lib.mkEnableOption "enables compatibility with windows & x11"; - config = lib.mkIf cfg.enable { - programs.xwayland = { - enable = true; - package = pkgs.xwayland-satellite; - }; - - environment.sessionVariables = { - NIXOS_OZONE_WL = "1"; - ELECTRON_ENABLE_WAYLAND = "1"; - WINE_RT_PRIO = "1"; - }; - - environment.systemPackages = with pkgs; [ - winetricks - wineWowPackages.waylandFull - ]; - }; -} diff --git a/sys/srv/docker.nix b/sys/srv/docker.nix deleted file mode 100644 index 0ed1541..0000000 --- a/sys/srv/docker.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, lib, pkgs, username, ... }: -let - cfg = config.sys.srv.docker; -in -{ - options.sys.srv.docker.enable = lib.mkEnableOption "enables the docker container engine"; - config = lib.mkIf cfg.enable { - virtualisation.docker.enable = true; - - environment.systemPackages = [ pkgs.docker-compose ]; - - users.users.${username}.extraGroups = [ "docker" ]; - }; -} diff --git a/sys/srv/files.nix b/sys/srv/files.nix deleted file mode 100644 index 9b5759e..0000000 --- a/sys/srv/files.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.srv.files; -in -{ - options.sys.srv.files = { - thunar.enable = lib.mkEnableOption "enables the thunar file manager"; - utils.enable = lib.mkEnableOption "enables compression and trash utilities"; - }; - config = lib.mkMerge [ - { - sys.srv.files.utils.enable = lib.mkDefault cfg.thunar.enable; - } - - (lib.mkIf cfg.thunar.enable { - programs.thunar = { - enable = true; - plugins = with pkgs.xfce; [ - thunar-volman - thunar-archive-plugin - thunar-vcs-plugin - ]; - }; - services = { - tumbler.enable = true; - gnome.gnome-keyring.enable = true; - }; - environment.systemPackages = with pkgs; [ file-roller ]; - }) - - (lib.mkIf cfg.utils.enable { - services.gvfs.enable = true; - - environment.systemPackages = with pkgs; [ - trashy - gdu - - unzip - p7zip - unrar - pxz - pigz - ]; - }) - ]; -} diff --git a/sys/srv/gaming.nix b/sys/srv/gaming.nix deleted file mode 100644 index ee7f608..0000000 --- a/sys/srv/gaming.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ config, lib, pkgs, username, ... }: -let - cfg = config.sys.srv.gaming; -in -{ - options.sys.srv.gaming = { - enable = lib.mkEnableOption "enables gaming utilities"; - steam.enable = lib.mkEnableOption "enables steam utilities"; - vr.enable = lib.mkEnableOption "enables vr support"; - }; - config = lib.mkMerge [ - (lib.mkIf cfg.enable { - programs.gamescope.enable = true; - - programs.gamemode = { - enable = true; - enableRenice = true; - }; - - environment.systemPackages = with pkgs; [ - heroic - prismlauncher - ]; - - home-manager.users.${username}.hm.soft.mangohud.enable = true; - }) - - (lib.mkIf cfg.steam.enable { - programs.steam = { - enable = true; - localNetworkGameTransfers.openFirewall = true; - dedicatedServer.openFirewall = true; - remotePlay.openFirewall = false; - extest.enable = true; - protontricks.enable = true; - - extraCompatPackages = with pkgs; [ - proton-ge-custom - ]; - }; - }) - - (lib.mkIf cfg.vr.enable { - programs.alvr = { - enable = true; - openFirewall = true; - }; - }) - ]; -} diff --git a/sys/srv/kvm.nix b/sys/srv/kvm.nix deleted file mode 100644 index 2cf8c26..0000000 --- a/sys/srv/kvm.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.srv.kvm; -in -{ - options.sys.srv.kvm.enable = lib.mkEnableOption "KVM/QEMU virtualization with Virt-Manager"; - config = lib.mkIf cfg.enable { - virtualisation.libvirtd = { - enable = true; - qemu.package = pkgs.qemu_kvm; - qemu.swtpm.enable = true; - }; - - programs.virt-manager.enable = true; - - boot.initrd.kernelModules = lib.optional (config.sys.core.drivers.amd.enable or false) "kvm-amd"; - }; -} diff --git a/sys/srv/nix-helper.nix b/sys/srv/nix-helper.nix deleted file mode 100644 index 5eb3353..0000000 --- a/sys/srv/nix-helper.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.srv.nix-helper; -in -{ - options.sys.srv.nix-helper.enable = lib.mkEnableOption "enables nix-helper"; - config = lib.mkIf cfg.enable { - nix.settings = { - trusted-users = [ "root" "adam" ]; - experimental-features = [ "nix-command" "flakes" ]; - }; - - programs.nh = { - enable = true; - flake = "/etc/nixos"; - }; - - environment.systemPackages = with pkgs; [ - nix-output-monitor - nvd - ]; - }; -} diff --git a/sys/srv/ollama.nix b/sys/srv/ollama.nix deleted file mode 100644 index 11babd6..0000000 --- a/sys/srv/ollama.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.srv.ollama; -in -{ - options.sys.srv.ollama.enable = lib.mkEnableOption "Ollama AI service"; - config = lib.mkIf cfg.enable { - fileSystems."/models" = { - device = "/home/ollama"; - fsType = "none"; - options = [ "bind" ]; - }; - - services.ollama = { - enable = true; - package = pkgs.ollama-rocm; - - user = "ollama"; - models = "/models"; - - syncModels = true; - loadModels = [ - "deepseek-r1:14b" - "qwen3:14b" - ]; - }; - }; -} diff --git a/sys/srv/srv.nix b/sys/srv/srv.nix deleted file mode 100644 index 19e959e..0000000 --- a/sys/srv/srv.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ ... }: -{ - imports = [ - ./compat.nix - ./docker.nix - ./files.nix - ./gaming.nix - ./kvm.nix - ./nix-helper.nix - ./ollama.nix - ]; -} diff --git a/sys/wm/niri.nix b/sys/wm/niri.nix deleted file mode 100644 index c92b068..0000000 --- a/sys/wm/niri.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ inputs, config, lib, pkgs, username, ... }: -let - cfg = config.sys.wm.niri; -in -{ - imports = [ inputs.niri.nixosModules.niri ]; - - options.sys.wm.niri.enable = lib.mkEnableOption "Niri"; - - config = lib.mkIf cfg.enable { - nixpkgs.overlays = [ inputs.niri.overlays.niri ]; - - programs.niri = { - enable = true; - package = pkgs.niri-unstable; - }; - - sys.srv.compat.enable = true; - home-manager.users.${username}.hm.env.niri.enable = true; - }; -} diff --git a/sys/wm/wm.nix b/sys/wm/wm.nix deleted file mode 100644 index 5374264..0000000 --- a/sys/wm/wm.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.sys.wm; -in -{ - imports = [ - ./niri.nix - ]; - - options.sys.wm.enable = lib.mkEnableOption "enables shared wm features"; - config = lib.mkIf cfg.enable { - services.dbus.enable = true; - - xdg.portal = { - enable = true; - xdgOpenUsePortal = true; - extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - }; - }; -} -- cgit v1.3