diff --git a/TODO.md b/TODO.md index 9243974..f98dba1 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,5 @@ * [ ] Simplify config * [x] Organize most common apps with modules -* [ ] Migrate from pywal + apple-fonts to Stylix (theme, cursor, fonts, ...) +* [x] Migrate from pywal + apple-fonts to Stylix (theme, cursor, fonts, ...) * [x] Remove clutter * [x] Fix DDT4ALL derivation/shell diff --git a/flake.lock b/flake.lock index 57a8b33..bedee84 100644 --- a/flake.lock +++ b/flake.lock @@ -3,7 +3,9 @@ "ags": { "inputs": { "astal": "astal", - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1744557573, @@ -28,11 +30,11 @@ ] }, "locked": { - "lastModified": 1745871622, - "narHash": "sha256-HhQPekt/yPlNiHw1CwQBamDRMDHopGYx7vgYaAQuKmQ=", + "lastModified": 1746130764, + "narHash": "sha256-LlLFj8cBY0HbTLh8iuQlql+c92UbfrUG5Tyn4SDmueM=", "owner": "tadfisher", "repo": "android-nixpkgs", - "rev": "2277d844349f0f520f8637ac80f7ae233ad1e700", + "rev": "8aea0b21e93910389026e20a34f39e98ac328334", "type": "github" }, "original": { @@ -43,7 +45,7 @@ }, "apple-emoji": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1711624089, @@ -61,7 +63,7 @@ }, "apple-fonts": { "inputs": { - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "ny": "ny", "sf-arabic": "sf-arabic", "sf-armenian": "sf-armenian", @@ -148,11 +150,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1732200724, - "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", + "lastModified": 1745523430, + "narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "153d52373b0fb2d343592871009a286ec8837aec", + "rev": "58bfe2553d937d8af0564f79d5b950afbef69717", "type": "github" }, "original": { @@ -233,9 +235,7 @@ }, "fingerprint-sensor": { "inputs": { - "nixpkgs": [ - "nixpkgs" - ] + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1734692513, @@ -255,11 +255,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1743774811, - "narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=", + "lastModified": 1744642301, + "narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e", + "rev": "59e3de00f01e5adb851d824cf7911bd90c31083a", "type": "github" }, "original": { @@ -471,16 +471,15 @@ ] }, "locked": { - "lastModified": 1744743431, - "narHash": "sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg=", + "lastModified": 1746191891, + "narHash": "sha256-cfSp/uR6AlzhnoAW1cz1WkxBwH5zs2yhrwy48Fr7/6k=", "owner": "nix-community", "repo": "home-manager", - "rev": "c61bfe3ae692f42ce688b5865fac9e0de58e1387", + "rev": "c5cad190ba252eb94540ee06955a53c7807963f8", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-24.11", "repo": "home-manager", "type": "github" } @@ -493,11 +492,11 @@ ] }, "locked": { - "lastModified": 1743869639, - "narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=", + "lastModified": 1746040799, + "narHash": "sha256-osgPX/SzIpkR50vev/rqoTEAVkEcOWXoQXmbzsaI4KU=", "owner": "nix-community", "repo": "home-manager", - "rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836", + "rev": "5f217e5a319f6c186283b530f8c975e66c028433", "type": "github" }, "original": { @@ -810,22 +809,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1743583204, - "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { "locked": { "lastModified": 1711523803, "narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=", @@ -841,7 +824,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_2": { "locked": { "lastModified": 1740828860, "narHash": "sha256-cjbHI+zUzK5CPsQZqMhE3npTyYFt9tJ3+ohcfaOF/WM=", @@ -857,6 +840,21 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1746055187, + "narHash": "sha256-3dqArYSMP9hM7Qpy5YWhnSjiqniSaT2uc5h2Po7tmg0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e362ce63e16b9572d8c2297c04f7c19ab6725a5", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-24.11", + "type": "indirect" + } + }, "nixpkgs_4": { "locked": { "lastModified": 1739020877, @@ -875,27 +873,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1745487689, - "narHash": "sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw=", + "lastModified": 1746141548, + "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5630cf13cceac06cefe9fc607e8dfa8fb342dde3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1743583204, - "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", + "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", "type": "github" }, "original": { @@ -915,11 +897,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1743884191, - "narHash": "sha256-foVcginhVvjg8ZnTzY5wwMeZ4wjJ8yX66PW5kgyivPE=", + "lastModified": 1746056780, + "narHash": "sha256-/emueQGaoT4vu0QjU9LDOG5roxRSfdY0K2KkxuzazcM=", "owner": "nix-community", "repo": "NUR", - "rev": "fde90f5f52e13eed110a0e53a2818a2b09e4d37c", + "rev": "d476cd0972dd6242d76374fcc277e6735715c167", "type": "github" }, "original": { @@ -1073,7 +1055,9 @@ "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_6", + "nixpkgs": [ + "nixpkgs" + ], "nur": "nur", "systems": "systems_3", "tinted-foot": "tinted-foot", @@ -1083,11 +1067,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1744910471, - "narHash": "sha256-HItOUMA2whFnPMJuyN2XHq9TZttgrgOAZcoUXsaD4Js=", + "lastModified": 1746158690, + "narHash": "sha256-Pe2emz36QL8GOILXvvmH/agqkspZFrcOrQxv6uufaEc=", "owner": "danth", "repo": "stylix", - "rev": "8d5cd725ad591890c0cd804bf68cc842b8afca51", + "rev": "bc38629511dd9cc78c5ca37a6e546fa66330d50e", "type": "github" }, "original": { @@ -1178,11 +1162,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1742851696, - "narHash": "sha256-sR4K+OVFKeUOvNIqcCr5Br7NLxOBEwoAgsIyjsZmb8s=", + "lastModified": 1744974599, + "narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=", "owner": "tinted-theming", "repo": "schemes", - "rev": "c37771c4ae8ff1667e27ddcf24991ebeb94a4e77", + "rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd", "type": "github" }, "original": { @@ -1194,11 +1178,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1743296873, - "narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=", + "lastModified": 1745111349, + "narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a", + "rev": "e009f18a01182b63559fb28f1c786eb027c3dee9", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index aef0405..3ad0e99 100644 --- a/flake.nix +++ b/flake.nix @@ -1,26 +1,25 @@ { inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; - android-nixpkgs.url = "github:tadfisher/android-nixpkgs"; - android-nixpkgs.inputs.nixpkgs.follows = "nixpkgs"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + home-manager.url = "github:nix-community/home-manager"; - home-manager.url = "github:nix-community/home-manager/release-24.11"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - - stylix.url = "github:danth/stylix"; apple-fonts.url = "github:Lyndeno/apple-fonts.nix"; apple-emoji.url = "github:oxcl/apple-emoji-nix"; + stylix.url = "github:danth/stylix"; ags.url = "github:Aylur/ags"; fingerprint-sensor.url = "github:ahbnr/nixos-06cb-009a-fingerprint-sensor/24.11"; - fingerprint-sensor.inputs.nixpkgs.follows = "nixpkgs"; - + android-nixpkgs.url = "github:tadfisher/android-nixpkgs"; hyprspace.url = "github:KZDKM/Hyprspace"; + + android-nixpkgs.inputs.nixpkgs.follows = "nixpkgs"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + stylix.inputs.nixpkgs.follows = "nixpkgs"; + ags.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = - { self, nixpkgs, android-nixpkgs, ... }: + outputs = { self, nixpkgs, android-nixpkgs, ... }: let forAllSystems = nixpkgs.lib.genAttrs [ "aarch64-linux" @@ -30,16 +29,12 @@ in { nixosConfigurations = import ./hosts { inherit self; }; - devShells = forAllSystems ( - system: - let - pkgs = nixpkgs.legacyPackages.${system}; - in - { - ddt4all = import ./shells/ddt4all.nix { inherit pkgs; }; - android = import ./shells/android.nix { inherit pkgs android-nixpkgs; }; - rust = import ./shells/rust.nix { inherit pkgs; }; - } - ); + devShells = forAllSystems (system: + let pkgs = nixpkgs.legacyPackages.${system}; + in { + ddt4all = import ./shells/ddt4all.nix { inherit pkgs; }; + android = import ./shells/android.nix { inherit pkgs android-nixpkgs; }; + rust = import ./shells/rust.nix { inherit pkgs; }; + }); }; } diff --git a/hosts/base-configuration.nix b/hosts/base-configuration.nix index 3ab5245..d7eb085 100644 --- a/hosts/base-configuration.nix +++ b/hosts/base-configuration.nix @@ -13,16 +13,6 @@ trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; - nixpkgs.config = { - allowInsecurePredicate = - pkg: - builtins.elem (pkgs.lib.getName pkg) [ - "android-sdk-cmdline-tools" - "fluffychat-linux" - "olm" - ]; - }; - environment.systemPackages = with pkgs; [ alacritty vim diff --git a/hosts/default.nix b/hosts/default.nix index 3fc7956..8bae380 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -2,6 +2,8 @@ let inherit (self) inputs; + + lib = inputs.nixpkgs.lib; homeDir = self + /profiles; mkSystem = @@ -10,24 +12,16 @@ let hostname, useHomeManager ? true, modules ? [ ], - }: - inputs.nixpkgs.lib.nixosSystem { + }: lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ ./base-configuration.nix ./${hostname} homeDir - ] - ++ ( - if useHomeManager then - [ - inputs.home-manager.nixosModules.home-manager - ] - else - [ ] - ) - ++ modules; + ] + ++ lib.lists.optionals useHomeManager [ inputs.home-manager.nixosModules.default ] + ++ modules; }; in { diff --git a/hosts/hulk/default.nix b/hosts/hulk/default.nix index 2e6f9bb..d8bbe01 100644 --- a/hosts/hulk/default.nix +++ b/hosts/hulk/default.nix @@ -1,3 +1,5 @@ +{ pkgs, ... }: + { imports = [ ./hardware-configuration.nix @@ -17,7 +19,16 @@ options = "--delete-older-than 7d"; }; - nixpkgs.config.allowUnfree = true; + nixpkgs.config = { + allowUnfreePredicate = + pkg: + builtins.elem (pkgs.lib.getName pkg) [ + "nvidia-settings" + "nvidia-x11" + "nordvpn" + "hplip" + ]; + }; swapDevices = [ { diff --git a/hosts/hulk/modules.nix b/hosts/hulk/modules.nix index 3dbb747..b9eb1db 100644 --- a/hosts/hulk/modules.nix +++ b/hosts/hulk/modules.nix @@ -5,19 +5,17 @@ # Utilities ../../modules/nixos/nvidia-support.nix ../../modules/nixos/fingerprint.nix - ../../modules/nixos/apple-style.nix ../../modules/nixos/bluetooth.nix ../../modules/nixos/greetd.nix ../../modules/nixos/audio.nix - # Apps/services - ../../modules/nixos/nordvpn.nix + # Apps + services + ../../modules/nixos/nordvpn.nix ]; - modules.apple-style.enable = true; modules.bluetooth.enable = true; + modules.nordvpn.enable = true; modules.nvidia.enable = true; - modules.nordvpn.enable = true; modules.audio.enable = true; modules.fingerprint-fix = { enable = true; @@ -40,8 +38,8 @@ }; udev.extraRules = '' - SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness" - ''; + SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness" + ''; }; programs = { diff --git a/modules/home-manager/ags.nix b/modules/home-manager/ags.nix new file mode 100644 index 0000000..59ddbd5 --- /dev/null +++ b/modules/home-manager/ags.nix @@ -0,0 +1,53 @@ +{ config, pkgs, lib, inputs, ... }: + +{ + options.modules.ags = { + enable = lib.mkEnableOption "Aylur's GTK Shell with optional Stylix support"; + full = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable all components (AstalBattery, AstalPowerProfiles etc.)"; + }; + }; + + config = lib.mkIf config.modules.ags.enable { + programs.ags = { + enable = true; + extraPackages = if config.modules.ags.full then + with inputs.ags.packages.${pkgs.system}; + [ + apps + battery + bluetooth + greet + hyprland + mpris + network + notifd + powerprofiles + tray + wireplumber + ] else []; + }; + + home.file.".config/theme_colors.scss".text = if config.modules.stylix.enable + then with config.lib.stylix.colors; '' + $base00: #${base00}; + $base01: #${base01}; + $base02: #${base02}; + $base03: #${base03}; + $base04: #${base04}; + $base05: #${base05}; + $base06: #${base06}; + $base07: #${base07}; + $base08: #${base08}; + $base09: #${base09}; + $base0A: #${base0A}; + $base0B: #${base0B}; + $base0C: #${base0C}; + $base0D: #${base0D}; + $base0E: #${base0E}; + $base0F: #${base0F}; + '' else null; + }; +} diff --git a/modules/home-manager/apple-style.nix b/modules/home-manager/apple-style.nix new file mode 100644 index 0000000..161c82b --- /dev/null +++ b/modules/home-manager/apple-style.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: + +{ + options.modules.apple-style.enable = lib.mkEnableOption "Enable Apple fonts and emojis"; + + config = lib.mkIf (config.modules.apple-style.enable && config.modules.stylix.enable) { + stylix.fonts = { + serif = { + package = inputs.apple-fonts.packages.${pkgs.system}.sf-pro-nerd; + name = "SFProDisplay Nerd Font"; + }; + + sansSerif = { + package = inputs.apple-fonts.packages.${pkgs.system}.sf-pro-nerd; + name = "SFProText Nerd Font"; + }; + + monospace = { + package = inputs.apple-fonts.packages.${pkgs.system}.sf-mono-nerd; + name = "SFMono Nerd Font"; + }; + + emoji = { + package = inputs.apple-emoji.packages.${pkgs.system}.apple-emoji-nix; + name = "Apple Color Emoji"; + }; + }; + }; +} diff --git a/modules/home-manager/darkman.nix b/modules/home-manager/darkman.nix index 9faa5a5..820a090 100644 --- a/modules/home-manager/darkman.nix +++ b/modules/home-manager/darkman.nix @@ -5,44 +5,58 @@ ... }: -{ +let + inherit (pkgs.lib) optionalAttrs; + + home-manager = "${pkgs.home-manager}/bin/home-manager"; + grep = lib.getExe' pkgs.toybox "grep"; + head = lib.getExe' pkgs.toybox "head"; + find = lib.getExe' pkgs.toybox "find"; + + find-generation = '' + for line in $(${home-manager} generations | ${grep} -o '/.*') + do + res=$(${find} $line | ${grep} specialisation | ${head} -1) + output=$? + + if [[ $output -eq 0 ]] && [[ $res != "" ]]; then + echo $res + exit + fi + done + ''; + + switch-theme = theme: "$(${find-generation})/${theme}/activate"; +in { options.modules.darkman = { enable = lib.mkEnableOption "Darkman service and integration"; customLightModeScript = lib.mkOption { - type = lib.types.str; + type = lib.types.nullOr lib.types.str; + default = null; description = "Path to custom light mode script"; }; customDarkModeScript = lib.mkOption { - type = lib.types.str; + type = lib.types.nullOr lib.types.str; + default = null; description = "Path to custom dark mode script"; }; }; config = lib.mkIf config.modules.darkman.enable { - home.packages = with pkgs; [ dconf ]; - services.darkman = { enable = true; - darkModeScripts = { - theme = '' - ${pkgs.dconf}/bin/dconf write\ - /org/gnome/desktop/interface/color-scheme "'prefer-dark'" - ''; + darkModeScripts = optionalAttrs (config.modules.darkman.customDarkModeScript != null) { + custom = config.modules.darkman.customDarkModeScript; + } // optionalAttrs (config.modules.stylix.enable) { + stylix = switch-theme "dark"; + }; - custom = config.modules.darkman.customDarkModeScript; - pywalfox = "command -v pywalfox &>/dev/null && pywalfox dark && pywalfox update"; - }; - - lightModeScripts = { - theme = '' - ${pkgs.dconf}/bin/dconf write\ - /org/gnome/desktop/interface/color-scheme "'prefer-light'" - ''; - - custom = config.modules.darkman.customLightModeScript; - pywalfox = "command -v pywalfox &>/dev/null && pywalfox light && pywalfox update"; - }; + lightModeScripts = optionalAttrs (config.modules.darkman.customLightModeScript != null) { + custom = config.modules.darkman.customLightModeScript; + } // optionalAttrs (config.modules.stylix.enable) { + stylix = switch-theme "light"; + }; settings.usegeoclue = true; }; diff --git a/modules/home-manager/fish.nix b/modules/home-manager/fish.nix index d1ff0bf..b889138 100644 --- a/modules/home-manager/fish.nix +++ b/modules/home-manager/fish.nix @@ -34,10 +34,7 @@ programs.fish = { enable = true; - interactiveShellInit = '' - set fish_greeting - cat ~/.cache/wal/sequences - ''; + interactiveShellInit = "set fish_greeting"; shellAliases = lib.mkIf config.modules.fish.enableDefaultAliases { ".." = "cd .."; diff --git a/modules/home-manager/stylix.nix b/modules/home-manager/stylix.nix new file mode 100644 index 0000000..fd8616a --- /dev/null +++ b/modules/home-manager/stylix.nix @@ -0,0 +1,62 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: + +{ + options.modules.stylix = { + enable = lib.mkEnableOption "Whether to enable Stylix, a theme manager for NixOS"; + setupCursors = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Whether to setup cursors by default"; + }; + + lightWallpaper = lib.mkOption { + type = lib.types.path; + description = "Path to light theme desktop wallpaper"; + }; + + darkWallpaper = lib.mkOption { + type = lib.types.path; + description = "Path to dark theme desktop wallpaper"; + }; + }; + + imports = [ + inputs.stylix.homeManagerModules.stylix + ]; + + config = lib.mkIf config.modules.stylix.enable { + stylix = { + enable = true; + polarity = lib.mkDefault "light"; + + image = lib.mkDefault config.modules.stylix.lightWallpaper; + base16Scheme = lib.mkDefault "${pkgs.base16-schemes}/share/themes/atelier-cave.yaml"; + + cursor = lib.mkIf config.modules.stylix.setupCursors { + name = "Bibata-Modern-Classic"; + package = pkgs.bibata-cursors; + size = 24; + }; + }; + + specialisation = { + light.configuration.stylix = { + polarity = "light"; + image = config.modules.stylix.lightWallpaper; + base16Scheme = "${pkgs.base16-schemes}/share/themes/atelier-cave-light.yaml"; + }; + + dark.configuration.stylix = { + polarity = "dark"; + image = config.modules.stylix.darkWallpaper; + base16Scheme = "${pkgs.base16-schemes}/share/themes/atelier-cave.yaml"; + }; + }; + }; +} diff --git a/modules/nixos/apple-style.nix b/modules/nixos/apple-style.nix deleted file mode 100644 index c8c6093..0000000 --- a/modules/nixos/apple-style.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: - -{ - options.modules.apple-style.enable = lib.mkEnableOption "Enable Apple fonts and emojis"; - - config = lib.mkIf config.modules.apple-style.enable { - fonts.fontDir.enable = true; - fonts.packages = [ - inputs.apple-emoji.packages.${pkgs.system}.apple-emoji-nix - inputs.apple-fonts.packages.${pkgs.system}.sf-pro-nerd - inputs.apple-fonts.packages.${pkgs.system}.sf-mono-nerd - ]; - - fonts.fontconfig.enable = true; - fonts.enableDefaultPackages = false; - fonts.fontconfig.defaultFonts = { - sansSerif = [ - "SFProText Nerd Font" - "SFProDisplay Nerd Font" - ]; - serif = [ - "SFProText Nerd Font" - "SFProDisplay Nerd Font" - ]; - monospace = [ "SFMono Nerd Font" ]; - emoji = [ "Apple Color Emoji" ]; - }; - }; -} diff --git a/modules/nixos/fingerprint.nix b/modules/nixos/fingerprint.nix index 1cef15a..fb1507e 100644 --- a/modules/nixos/fingerprint.nix +++ b/modules/nixos/fingerprint.nix @@ -6,7 +6,9 @@ ... }: -{ +let + module = inputs.fingerprint-sensor.nixosModules."06cb-009a-fingerprint-sensor"; +in { options.modules.fingerprint-fix = { enable = lib.mkEnableOption "Enable support for fingerprint for P51S-like ThinkPads."; calibDataFile = lib.mkOption { @@ -14,10 +16,7 @@ }; }; - imports = [ - inputs.fingerprint-sensor.nixosModules."06cb-009a-fingerprint-sensor" - ]; - + imports = [ module ]; config = lib.mkIf config.modules.fingerprint-fix.enable { # Needed because we're getting TLS error with open-fprintd-resume systemd.services.validity-restart = @@ -42,7 +41,7 @@ calib-data-file = config.modules.fingerprint-fix.calibDataFile; }; - security.pam.services.su.fprintAuth = true; + security.pam.services.su.fprintAuth = true; security.pam.services.sudo.fprintAuth = true; security.pam.services.login.fprintAuth = true; security.pam.services.greetd.fprintAuth = true; diff --git a/modules/nixos/nvidia-support.nix b/modules/nixos/nvidia-support.nix index d1a49d7..24b5078 100644 --- a/modules/nixos/nvidia-support.nix +++ b/modules/nixos/nvidia-support.nix @@ -4,14 +4,21 @@ options.modules.nvidia.enable = lib.mkEnableOption "Enable NVIDIA kernel and modprobe configurations."; config = lib.mkIf config.modules.nvidia.enable { - boot.kernelModules = [ - "nvidia" - "nvidia_modeset" - "nvidia_uvm" - "nvidia_drm" - ]; - boot.extraModprobeConfig = '' - options nvidia NVreg_OpenRmEnableUnsupportedGpus=1 - ''; - }; + hardware.graphics = { + enable = true; + }; + + services.xserver.videoDrivers = ["nvidia"]; + + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + + open = false; + nvidiaSettings = true; + + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + }; } diff --git a/profiles/default.nix b/profiles/default.nix index 003d057..3272be2 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -1,13 +1,12 @@ { self, - impurity, inputs, + impurity, ... }: + { home-manager = { - useGlobalPkgs = true; - useUserPackages = true; backupFileExtension = "bak"; extraSpecialArgs = { inherit inputs self impurity; diff --git a/profiles/hulk/default.nix b/profiles/hulk/default.nix index 1f02662..8bf4b46 100644 --- a/profiles/hulk/default.nix +++ b/profiles/hulk/default.nix @@ -1,24 +1,36 @@ -{ pkgs, ... }: +{ pkgs, inputs, ... }: let username = "sadorowo"; homeDirectory = "/home/${username}"; in { - imports = [ - ./packages.nix - ./programs.nix - ./theme.nix - ]; + imports = [ ./modules.nix ]; home = { inherit username homeDirectory; - sessionVariables = { + + packages = import ./packages.nix { inherit pkgs inputs; }; + sessionVariables = { NIXOS_OZONE_WL = "1"; TZ = "Europe/Warsaw"; }; }; + nixpkgs.config = { + permittedInsecurePackages = [ + "fluffychat-linux-1.26.0" + "olm-3.2.16" + ]; + + allowUnfreePredicate = + pkg: + builtins.elem (pkgs.lib.getName pkg) [ + "davinci-resolve" + "anydesk" + ]; + }; + programs.home-manager.enable = true; home.stateVersion = "24.11"; } diff --git a/profiles/hulk/fish-functions.nix b/profiles/hulk/fish-functions.nix index c92eef5..13ff673 100644 --- a/profiles/hulk/fish-functions.nix +++ b/profiles/hulk/fish-functions.nix @@ -1,32 +1,32 @@ { webcopy = '' - set -l domain (string trim $argv) - get --recursive \ - --level 5 \ - --no-clobber \ - --page-requisites \ - --adjust-extension \ - --span-hosts \ - --convert-links \ - --domains $domain \ - --no-parent \ - $domain - ''; + set -l domain (string trim $argv) + get --recursive \ + --level 5 \ + --no-clobber \ + --page-requisites \ + --adjust-extension \ + --span-hosts \ + --convert-links \ + --domains $domain \ + --no-parent \ + $domain + ''; venv = '' - if [ -d .venv ]; then - source .venv/bin/activate.fish - else - python -m venv .venv - source .venv/bin/activate.fish - fi - ''; + if [ -d .venv ]; then + source .venv/bin/activate.fish + else + python -m venv .venv + source .venv/bin/activate.fish + fi + ''; thunderbird = '' - if pgrep -x birdtray > /dev/null - birdtray -s - else - birdtray & - end - ''; + if pgrep -x birdtray > /dev/null + birdtray -s + else + birdtray & + end + ''; } diff --git a/profiles/hulk/programs.nix b/profiles/hulk/modules.nix similarity index 68% rename from profiles/hulk/programs.nix rename to profiles/hulk/modules.nix index a32799e..4e8b104 100644 --- a/profiles/hulk/programs.nix +++ b/profiles/hulk/modules.nix @@ -2,12 +2,15 @@ { imports = [ - # DEs + # DE + style ../../modules/desktop-environments/hyprland.nix + ../../modules/home-manager/apple-style.nix + ../../modules/home-manager/stylix.nix # Utilities + apps ../../modules/home-manager/darkman.nix ../../modules/home-manager/fish.nix + ../../modules/home-manager/ags.nix # Home Manager modules inputs.ags.homeManagerModules.default @@ -38,11 +41,21 @@ }; }; - modules.darkman = { - enable = true; - customLightModeScript = "$HOME/.config/hypr/scripts/random-wallpaper.sh"; - customDarkModeScript = "$HOME/.config/hypr/scripts/random-wallpaper.sh"; - }; + modules.stylix = { + enable = true; + lightWallpaper = ./wallpapers/light.jpg; + darkWallpaper = ./wallpapers/dark.jpg; + }; + + stylix.targets.firefox.profileNames = ["default"]; + + modules.ags = { + enable = true; + full = true; + }; + + modules.darkman.enable = true; + modules.apple-style.enable = true; modules.fish = { enable = true; @@ -50,31 +63,6 @@ functions = import ./fish-functions.nix; }; - programs.pywal.enable = true; - programs.ags = { - enable = true; - extraPackages = - with inputs.ags.packages.${pkgs.system}; - [ - apps - battery - bluetooth - greet - hyprland - mpris - network - notifd - powerprofiles - tray - wireplumber - ] - ++ [ - pkgs.dart-sass - pkgs.fzf - pkgs.icon-library - ]; - }; - programs.obs-studio = { enable = true; plugins = with pkgs.obs-studio-plugins; [ @@ -91,7 +79,7 @@ programs.vscode = { enable = true; package = pkgs.vscodium; - extensions = with pkgs.vscode-extensions; [ + profiles.default.extensions = with pkgs.vscode-extensions; [ rust-lang.rust-analyzer bbenoist.nix ]; diff --git a/profiles/hulk/packages.nix b/profiles/hulk/packages.nix index 410534a..c2b426d 100644 --- a/profiles/hulk/packages.nix +++ b/profiles/hulk/packages.nix @@ -1,40 +1,34 @@ { pkgs, inputs, ... }: -{ - home.packages = with pkgs; [ - pywal - pywalfox-native +with pkgs; [ + (python3.withPackages ( + py: with py; [ + pywayland + ] + )) - (python3.withPackages ( - py: with py; [ - pywayland - ] - )) + (birdtray.overrideAttrs (_: { + cmakeFlags = [ "-DOPT_THUNDERBIRD_CMDLINE=${thunderbird}/bin/thunderbird" ]; + })) - (birdtray.overrideAttrs (_: { - cmakeFlags = [ "-DOPT_THUNDERBIRD_CMDLINE=${thunderbird}/bin/thunderbird" ]; - })) - - jq - starship - firefox - fluffychat - thunderbird-bin - youtube-music - libreoffice-qt6-fresh - gimp - git - fprintd - cups - anydesk - fastfetch - playerctl - adwaita-icon-theme - android-tools - filezilla - bitwarden-desktop - davinci-resolve - mpv - sshfs - ]; -} + jq + starship + firefox + fluffychat + thunderbird-bin + youtube-music + libreoffice-qt6-fresh + gimp + git + cups + anydesk + fastfetch + playerctl + adwaita-icon-theme + android-tools + filezilla + bitwarden-desktop + davinci-resolve + mpv + sshfs +] diff --git a/profiles/hulk/theme.nix b/profiles/hulk/theme.nix deleted file mode 100644 index 0a5e564..0000000 --- a/profiles/hulk/theme.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ pkgs, inputs, ... }: - -let - nerdfonts = ( - pkgs.nerdfonts.override { - fonts = [ - "CascadiaCode" - "JetBrainsMono" - "FiraCode" - "SpaceMono" - ]; - } - ); - - cursor-theme = "Bibata-Modern-Classic"; - cursor-pkg = pkgs.bibata-cursors; -in -{ - home = { - packages = with pkgs; [ - material-symbols - noto-fonts - noto-fonts-cjk-sans - bibata-cursors - ]; - - sessionVariables = { - XCURSOR_THEME = cursor-theme; - XCURSOR_SIZE = "24"; - }; - - pointerCursor = { - package = cursor-pkg; - name = cursor-theme; - size = 24; - gtk.enable = true; - }; - }; -} diff --git a/profiles/hulk/wallpapers/dark.jpg b/profiles/hulk/wallpapers/dark.jpg new file mode 100644 index 0000000..5428afb Binary files /dev/null and b/profiles/hulk/wallpapers/dark.jpg differ diff --git a/profiles/hulk/wallpapers/light.jpg b/profiles/hulk/wallpapers/light.jpg new file mode 100644 index 0000000..abcae47 Binary files /dev/null and b/profiles/hulk/wallpapers/light.jpg differ