feat: migrate to Stylix (WIP)

This commit is contained in:
Franek 2025-05-02 22:02:50 +02:00
parent f5e7a09123
commit 9a29bd9449
23 changed files with 402 additions and 344 deletions

View File

@ -1,5 +1,5 @@
* [ ] Simplify config * [ ] Simplify config
* [x] Organize most common apps with modules * [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] Remove clutter
* [x] Fix DDT4ALL derivation/shell * [x] Fix DDT4ALL derivation/shell

126
flake.lock generated
View File

@ -3,7 +3,9 @@
"ags": { "ags": {
"inputs": { "inputs": {
"astal": "astal", "astal": "astal",
"nixpkgs": "nixpkgs" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1744557573, "lastModified": 1744557573,
@ -28,11 +30,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1745871622, "lastModified": 1746130764,
"narHash": "sha256-HhQPekt/yPlNiHw1CwQBamDRMDHopGYx7vgYaAQuKmQ=", "narHash": "sha256-LlLFj8cBY0HbTLh8iuQlql+c92UbfrUG5Tyn4SDmueM=",
"owner": "tadfisher", "owner": "tadfisher",
"repo": "android-nixpkgs", "repo": "android-nixpkgs",
"rev": "2277d844349f0f520f8637ac80f7ae233ad1e700", "rev": "8aea0b21e93910389026e20a34f39e98ac328334",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -43,7 +45,7 @@
}, },
"apple-emoji": { "apple-emoji": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1711624089, "lastModified": 1711624089,
@ -61,7 +63,7 @@
}, },
"apple-fonts": { "apple-fonts": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_2",
"ny": "ny", "ny": "ny",
"sf-arabic": "sf-arabic", "sf-arabic": "sf-arabic",
"sf-armenian": "sf-armenian", "sf-armenian": "sf-armenian",
@ -148,11 +150,11 @@
"fromYaml": "fromYaml" "fromYaml": "fromYaml"
}, },
"locked": { "locked": {
"lastModified": 1732200724, "lastModified": 1745523430,
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", "narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=",
"owner": "SenchoPens", "owner": "SenchoPens",
"repo": "base16.nix", "repo": "base16.nix",
"rev": "153d52373b0fb2d343592871009a286ec8837aec", "rev": "58bfe2553d937d8af0564f79d5b950afbef69717",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -233,9 +235,7 @@
}, },
"fingerprint-sensor": { "fingerprint-sensor": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": "nixpkgs_3"
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1734692513, "lastModified": 1734692513,
@ -255,11 +255,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1743774811, "lastModified": 1744642301,
"narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=", "narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e", "rev": "59e3de00f01e5adb851d824cf7911bd90c31083a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -471,16 +471,15 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1744743431, "lastModified": 1746191891,
"narHash": "sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg=", "narHash": "sha256-cfSp/uR6AlzhnoAW1cz1WkxBwH5zs2yhrwy48Fr7/6k=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "c61bfe3ae692f42ce688b5865fac9e0de58e1387", "rev": "c5cad190ba252eb94540ee06955a53c7807963f8",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -493,11 +492,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1743869639, "lastModified": 1746040799,
"narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=", "narHash": "sha256-osgPX/SzIpkR50vev/rqoTEAVkEcOWXoQXmbzsaI4KU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836", "rev": "5f217e5a319f6c186283b530f8c975e66c028433",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -810,22 +809,6 @@
} }
}, },
"nixpkgs": { "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": { "locked": {
"lastModified": 1711523803, "lastModified": 1711523803,
"narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=", "narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=",
@ -841,7 +824,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1740828860, "lastModified": 1740828860,
"narHash": "sha256-cjbHI+zUzK5CPsQZqMhE3npTyYFt9tJ3+ohcfaOF/WM=", "narHash": "sha256-cjbHI+zUzK5CPsQZqMhE3npTyYFt9tJ3+ohcfaOF/WM=",
@ -857,6 +840,21 @@
"type": "github" "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": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1739020877, "lastModified": 1739020877,
@ -875,27 +873,11 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1745487689, "lastModified": 1746141548,
"narHash": "sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw=", "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5630cf13cceac06cefe9fc607e8dfa8fb342dde3", "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78",
"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",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -915,11 +897,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1743884191, "lastModified": 1746056780,
"narHash": "sha256-foVcginhVvjg8ZnTzY5wwMeZ4wjJ8yX66PW5kgyivPE=", "narHash": "sha256-/emueQGaoT4vu0QjU9LDOG5roxRSfdY0K2KkxuzazcM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "fde90f5f52e13eed110a0e53a2818a2b09e4d37c", "rev": "d476cd0972dd6242d76374fcc277e6735715c167",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1073,7 +1055,9 @@
"git-hooks": "git-hooks", "git-hooks": "git-hooks",
"gnome-shell": "gnome-shell", "gnome-shell": "gnome-shell",
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_6", "nixpkgs": [
"nixpkgs"
],
"nur": "nur", "nur": "nur",
"systems": "systems_3", "systems": "systems_3",
"tinted-foot": "tinted-foot", "tinted-foot": "tinted-foot",
@ -1083,11 +1067,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1744910471, "lastModified": 1746158690,
"narHash": "sha256-HItOUMA2whFnPMJuyN2XHq9TZttgrgOAZcoUXsaD4Js=", "narHash": "sha256-Pe2emz36QL8GOILXvvmH/agqkspZFrcOrQxv6uufaEc=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "8d5cd725ad591890c0cd804bf68cc842b8afca51", "rev": "bc38629511dd9cc78c5ca37a6e546fa66330d50e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1178,11 +1162,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1742851696, "lastModified": 1744974599,
"narHash": "sha256-sR4K+OVFKeUOvNIqcCr5Br7NLxOBEwoAgsIyjsZmb8s=", "narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "c37771c4ae8ff1667e27ddcf24991ebeb94a4e77", "rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1194,11 +1178,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1743296873, "lastModified": 1745111349,
"narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=", "narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a", "rev": "e009f18a01182b63559fb28f1c786eb027c3dee9",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -1,26 +1,25 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
android-nixpkgs.url = "github:tadfisher/android-nixpkgs"; home-manager.url = "github:nix-community/home-manager";
android-nixpkgs.inputs.nixpkgs.follows = "nixpkgs";
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-fonts.url = "github:Lyndeno/apple-fonts.nix";
apple-emoji.url = "github:oxcl/apple-emoji-nix"; apple-emoji.url = "github:oxcl/apple-emoji-nix";
stylix.url = "github:danth/stylix";
ags.url = "github:Aylur/ags"; ags.url = "github:Aylur/ags";
fingerprint-sensor.url = "github:ahbnr/nixos-06cb-009a-fingerprint-sensor/24.11"; 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"; 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 = outputs = { self, nixpkgs, android-nixpkgs, ... }:
{ self, nixpkgs, android-nixpkgs, ... }:
let let
forAllSystems = nixpkgs.lib.genAttrs [ forAllSystems = nixpkgs.lib.genAttrs [
"aarch64-linux" "aarch64-linux"
@ -30,16 +29,12 @@
in in
{ {
nixosConfigurations = import ./hosts { inherit self; }; nixosConfigurations = import ./hosts { inherit self; };
devShells = forAllSystems ( devShells = forAllSystems (system:
system: let pkgs = nixpkgs.legacyPackages.${system};
let in {
pkgs = nixpkgs.legacyPackages.${system};
in
{
ddt4all = import ./shells/ddt4all.nix { inherit pkgs; }; ddt4all = import ./shells/ddt4all.nix { inherit pkgs; };
android = import ./shells/android.nix { inherit pkgs android-nixpkgs; }; android = import ./shells/android.nix { inherit pkgs android-nixpkgs; };
rust = import ./shells/rust.nix { inherit pkgs; }; rust = import ./shells/rust.nix { inherit pkgs; };
} });
);
}; };
} }

View File

@ -13,16 +13,6 @@
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; 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; [ environment.systemPackages = with pkgs; [
alacritty alacritty
vim vim

View File

@ -2,6 +2,8 @@
let let
inherit (self) inputs; inherit (self) inputs;
lib = inputs.nixpkgs.lib;
homeDir = self + /profiles; homeDir = self + /profiles;
mkSystem = mkSystem =
@ -10,8 +12,7 @@ let
hostname, hostname,
useHomeManager ? true, useHomeManager ? true,
modules ? [ ], modules ? [ ],
}: }: lib.nixosSystem {
inputs.nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
modules = modules =
[ [
@ -19,14 +20,7 @@ let
./${hostname} ./${hostname}
homeDir homeDir
] ]
++ ( ++ lib.lists.optionals useHomeManager [ inputs.home-manager.nixosModules.default ]
if useHomeManager then
[
inputs.home-manager.nixosModules.home-manager
]
else
[ ]
)
++ modules; ++ modules;
}; };
in in

View File

@ -1,3 +1,5 @@
{ pkgs, ... }:
{ {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
@ -17,7 +19,16 @@
options = "--delete-older-than 7d"; 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 = [ swapDevices = [
{ {

View File

@ -5,19 +5,17 @@
# Utilities # Utilities
../../modules/nixos/nvidia-support.nix ../../modules/nixos/nvidia-support.nix
../../modules/nixos/fingerprint.nix ../../modules/nixos/fingerprint.nix
../../modules/nixos/apple-style.nix
../../modules/nixos/bluetooth.nix ../../modules/nixos/bluetooth.nix
../../modules/nixos/greetd.nix ../../modules/nixos/greetd.nix
../../modules/nixos/audio.nix ../../modules/nixos/audio.nix
# Apps/services # Apps + services
../../modules/nixos/nordvpn.nix ../../modules/nixos/nordvpn.nix
]; ];
modules.apple-style.enable = true;
modules.bluetooth.enable = true; modules.bluetooth.enable = true;
modules.nvidia.enable = true;
modules.nordvpn.enable = true; modules.nordvpn.enable = true;
modules.nvidia.enable = true;
modules.audio.enable = true; modules.audio.enable = true;
modules.fingerprint-fix = { modules.fingerprint-fix = {
enable = true; enable = true;

View File

@ -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;
};
}

View File

@ -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";
};
};
};
}

View File

@ -5,43 +5,57 @@
... ...
}: }:
{ 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 = { options.modules.darkman = {
enable = lib.mkEnableOption "Darkman service and integration"; enable = lib.mkEnableOption "Darkman service and integration";
customLightModeScript = lib.mkOption { customLightModeScript = lib.mkOption {
type = lib.types.str; type = lib.types.nullOr lib.types.str;
default = null;
description = "Path to custom light mode script"; description = "Path to custom light mode script";
}; };
customDarkModeScript = lib.mkOption { customDarkModeScript = lib.mkOption {
type = lib.types.str; type = lib.types.nullOr lib.types.str;
default = null;
description = "Path to custom dark mode script"; description = "Path to custom dark mode script";
}; };
}; };
config = lib.mkIf config.modules.darkman.enable { config = lib.mkIf config.modules.darkman.enable {
home.packages = with pkgs; [ dconf ];
services.darkman = { services.darkman = {
enable = true; enable = true;
darkModeScripts = { darkModeScripts = optionalAttrs (config.modules.darkman.customDarkModeScript != null) {
theme = ''
${pkgs.dconf}/bin/dconf write\
/org/gnome/desktop/interface/color-scheme "'prefer-dark'"
'';
custom = config.modules.darkman.customDarkModeScript; custom = config.modules.darkman.customDarkModeScript;
pywalfox = "command -v pywalfox &>/dev/null && pywalfox dark && pywalfox update"; } // optionalAttrs (config.modules.stylix.enable) {
stylix = switch-theme "dark";
}; };
lightModeScripts = { lightModeScripts = optionalAttrs (config.modules.darkman.customLightModeScript != null) {
theme = ''
${pkgs.dconf}/bin/dconf write\
/org/gnome/desktop/interface/color-scheme "'prefer-light'"
'';
custom = config.modules.darkman.customLightModeScript; custom = config.modules.darkman.customLightModeScript;
pywalfox = "command -v pywalfox &>/dev/null && pywalfox light && pywalfox update"; } // optionalAttrs (config.modules.stylix.enable) {
stylix = switch-theme "light";
}; };
settings.usegeoclue = true; settings.usegeoclue = true;

View File

@ -34,10 +34,7 @@
programs.fish = { programs.fish = {
enable = true; enable = true;
interactiveShellInit = '' interactiveShellInit = "set fish_greeting";
set fish_greeting
cat ~/.cache/wal/sequences
'';
shellAliases = lib.mkIf config.modules.fish.enableDefaultAliases { shellAliases = lib.mkIf config.modules.fish.enableDefaultAliases {
".." = "cd .."; ".." = "cd ..";

View File

@ -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";
};
};
};
}

View File

@ -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" ];
};
};
}

View File

@ -6,7 +6,9 @@
... ...
}: }:
{ let
module = inputs.fingerprint-sensor.nixosModules."06cb-009a-fingerprint-sensor";
in {
options.modules.fingerprint-fix = { options.modules.fingerprint-fix = {
enable = lib.mkEnableOption "Enable support for fingerprint for P51S-like ThinkPads."; enable = lib.mkEnableOption "Enable support for fingerprint for P51S-like ThinkPads.";
calibDataFile = lib.mkOption { calibDataFile = lib.mkOption {
@ -14,10 +16,7 @@
}; };
}; };
imports = [ imports = [ module ];
inputs.fingerprint-sensor.nixosModules."06cb-009a-fingerprint-sensor"
];
config = lib.mkIf config.modules.fingerprint-fix.enable { config = lib.mkIf config.modules.fingerprint-fix.enable {
# Needed because we're getting TLS error with open-fprintd-resume # Needed because we're getting TLS error with open-fprintd-resume
systemd.services.validity-restart = systemd.services.validity-restart =

View File

@ -4,14 +4,21 @@
options.modules.nvidia.enable = lib.mkEnableOption "Enable NVIDIA kernel and modprobe configurations."; options.modules.nvidia.enable = lib.mkEnableOption "Enable NVIDIA kernel and modprobe configurations.";
config = lib.mkIf config.modules.nvidia.enable { config = lib.mkIf config.modules.nvidia.enable {
boot.kernelModules = [ hardware.graphics = {
"nvidia" enable = true;
"nvidia_modeset" };
"nvidia_uvm"
"nvidia_drm" services.xserver.videoDrivers = ["nvidia"];
];
boot.extraModprobeConfig = '' hardware.nvidia = {
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1 modesetting.enable = true;
''; powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
}; };
} }

View File

@ -1,13 +1,12 @@
{ {
self, self,
impurity,
inputs, inputs,
impurity,
... ...
}: }:
{ {
home-manager = { home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "bak"; backupFileExtension = "bak";
extraSpecialArgs = { extraSpecialArgs = {
inherit inputs self impurity; inherit inputs self impurity;

View File

@ -1,24 +1,36 @@
{ pkgs, ... }: { pkgs, inputs, ... }:
let let
username = "sadorowo"; username = "sadorowo";
homeDirectory = "/home/${username}"; homeDirectory = "/home/${username}";
in in
{ {
imports = [ imports = [ ./modules.nix ];
./packages.nix
./programs.nix
./theme.nix
];
home = { home = {
inherit username homeDirectory; inherit username homeDirectory;
packages = import ./packages.nix { inherit pkgs inputs; };
sessionVariables = { sessionVariables = {
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
TZ = "Europe/Warsaw"; 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; programs.home-manager.enable = true;
home.stateVersion = "24.11"; home.stateVersion = "24.11";
} }

View File

@ -2,12 +2,15 @@
{ {
imports = [ imports = [
# DEs # DE + style
../../modules/desktop-environments/hyprland.nix ../../modules/desktop-environments/hyprland.nix
../../modules/home-manager/apple-style.nix
../../modules/home-manager/stylix.nix
# Utilities + apps # Utilities + apps
../../modules/home-manager/darkman.nix ../../modules/home-manager/darkman.nix
../../modules/home-manager/fish.nix ../../modules/home-manager/fish.nix
../../modules/home-manager/ags.nix
# Home Manager modules # Home Manager modules
inputs.ags.homeManagerModules.default inputs.ags.homeManagerModules.default
@ -38,43 +41,28 @@
}; };
}; };
modules.darkman = { modules.stylix = {
enable = true; enable = true;
customLightModeScript = "$HOME/.config/hypr/scripts/random-wallpaper.sh"; lightWallpaper = ./wallpapers/light.jpg;
customDarkModeScript = "$HOME/.config/hypr/scripts/random-wallpaper.sh"; 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 = { modules.fish = {
enable = true; enable = true;
enableStarship = true; enableStarship = true;
functions = import ./fish-functions.nix; 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 = { programs.obs-studio = {
enable = true; enable = true;
plugins = with pkgs.obs-studio-plugins; [ plugins = with pkgs.obs-studio-plugins; [
@ -91,7 +79,7 @@
programs.vscode = { programs.vscode = {
enable = true; enable = true;
package = pkgs.vscodium; package = pkgs.vscodium;
extensions = with pkgs.vscode-extensions; [ profiles.default.extensions = with pkgs.vscode-extensions; [
rust-lang.rust-analyzer rust-lang.rust-analyzer
bbenoist.nix bbenoist.nix
]; ];

View File

@ -1,10 +1,6 @@
{ pkgs, inputs, ... }: { pkgs, inputs, ... }:
{ with pkgs; [
home.packages = with pkgs; [
pywal
pywalfox-native
(python3.withPackages ( (python3.withPackages (
py: with py; [ py: with py; [
pywayland pywayland
@ -24,7 +20,6 @@
libreoffice-qt6-fresh libreoffice-qt6-fresh
gimp gimp
git git
fprintd
cups cups
anydesk anydesk
fastfetch fastfetch
@ -36,5 +31,4 @@
davinci-resolve davinci-resolve
mpv mpv
sshfs sshfs
]; ]
}

View File

@ -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;
};
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB