Compare commits

..

No commits in common. "b542ff21622086dbd443971a9a8a231c2757fd7f" and "e4ec3df115be2d0e69ccc6b387a03805891e360a" have entirely different histories.

19 changed files with 117 additions and 139 deletions

View file

@ -2,7 +2,7 @@
This is my repository for my NixOS configurations for each of my devices, most of which share the majority of their code. This is my repository for my NixOS configurations for each of my devices, most of which share the majority of their code.
## Screenshot (`toki-fire`) ## Screenshot (Laptop)
![screenshot](/assets/screenshot.png) ![screenshot](/assets/screenshot.png)

View file

@ -1,5 +1,5 @@
{ config, lib, ... }: { config, lib, ... }:
lib.mkIf (config.machine == "fire") { lib.mkIf (config.platform == "laptop") {
services.upower = { services.upower = {
enable = true; enable = true;

View file

@ -1,15 +1,15 @@
{ config, pkgs, lib, username, fullname, ... }: { config, pkgs, lib, username, fullname, ... }:
let let
inherit (config) machine; inherit (config) platform;
isMobile = machine == "air"; isMobile = platform == "mobile";
hashedPassword = hashedPassword =
if machine == "earth" then if platform == "desktop" then
"$y$j9T$rpQs/Fnsxh4DNw4qDSvTu.$nzA1EskOnWrYM.Iba7q73O.QPEn3DFWrX2.KY8mKza." "$6$HYibiGhDN.JgLtw6$cecU7NjfumTUJSkFNFQG4uVgdd3tTPLGxK0zHAwYn3un/V43IUlyVBNKoRMLCQk65RckbD/.AjsLFVFKUUHVA/"
else if machine == "fire" then else if platform == "laptop" then
"$y$j9T$EXc0TFu9LQhQ9YGrOkb7u0$LpwNG0XpUIVSltLqUw7CAOLSsI2rZr1RTBnJai5dkM7" "$6$y3eb1phxFWnParRT$w1LNfxJ2ByHoiBa5ywh4STGuIK/r4Tnyxx2Xe/nlovrE6LuuLAVdKRFAroUTtUI/d2BNGI9ErjZ2z2Dl7w/t00"
else # if machine == "air" else # if platform == "mobile"
"$y$j9T$zF34p.W/HFKrWde5Rb1nq/$1Q5IN9IT.IQ6SLg8InUZM5L27.jQV.cRtNENnUPp0ZC"; "$6$vmmMT7pEY1W0Bj9R$Kb6nuwdg/KzCrGcUPkEo2jJ6a2NJRikiOeN8/I8ObU1K6rVYvgYqPVgPg9NkLaUScdh1PWcabuvaHCFLMw14A0";
in in
{ {
nix.package = pkgs.nixFlakes; nix.package = pkgs.nixFlakes;
@ -24,7 +24,7 @@ in
boot.loader.systemd-boot.enable = !isMobile; boot.loader.systemd-boot.enable = !isMobile;
boot.loader.efi.canTouchEfiVariables = !isMobile; boot.loader.efi.canTouchEfiVariables = !isMobile;
networking.hostName = "toki-${machine}"; networking.hostName = "kiana-${platform}";
networking.wireless.enable = false; networking.wireless.enable = false;
networking.networkmanager.enable = true; networking.networkmanager.enable = true;

View file

@ -10,7 +10,7 @@ let
mv * $out/share/sddm/themes/tokyo-night-sddm mv * $out/share/sddm/themes/tokyo-night-sddm
''; '';
}; };
in lib.mkIf (config.machine != "air") { in lib.mkIf (config.platform != "mobile") {
environment.systemPackages = with pkgs.libsForQt5; [ environment.systemPackages = with pkgs.libsForQt5; [
tokyo-night-sddm # Theme tokyo-night-sddm # Theme
qtbase qtbase

View file

@ -31,51 +31,52 @@ outputs = { self,
moduleArgs = { inherit username fullname email; } // inputs; moduleArgs = { inherit username fullname email; } // inputs;
mkConfig = mkConfig =
{ machine, { platform,
system ? "x86_64-linux", system ? "x86_64-linux",
configModules ? [ ./config ], configModules ? [ ./config ],
configExtraModules ? [], configExtraModules ? [],
homeModules ? [ ./home-manager ], homeModules ? [ ./home-manager ],
homeExtraModules ? [] homeExtraModules ? []
}: }:
{ nixpkgs.lib.nixosSystem {
"toki-${machine}" = nixpkgs.lib.nixosSystem { inherit system;
inherit system; modules =
modules = configModules ++
configModules ++ configExtraModules ++
configExtraModules ++ [
[ ./platform.nix
./machine.nix { _module.args = moduleArgs;
{ _module.args = moduleArgs; inherit platform; }
inherit machine; } ./hardware-configuration/${platform}.nix
./hardware-configuration/${machine}.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = moduleArgs;
home-manager.sharedModules = [ ./machine.nix { inherit machine; } ]; home-manager.nixosModules.home-manager
home-manager.users.${username} = { {
imports = homeModules ++ homeExtraModules; home-manager.useGlobalPkgs = true;
}; home-manager.useUserPackages = true;
} home-manager.extraSpecialArgs = moduleArgs;
];
}; home-manager.sharedModules = [ ./platform.nix { inherit platform; } ];
home-manager.users.${username} = {
imports = homeModules ++ homeExtraModules;
};
}
];
}; };
in { in {
nixosConfigurations = nixosConfigurations = {
mkConfig { "${username}-desktop" = mkConfig {
machine = "earth"; platform = "desktop";
} // };
mkConfig {
machine = "fire"; "${username}-laptop" = mkConfig {
platform = "laptop";
configExtraModules = [ configExtraModules = [
nixos-hardware.nixosModules.microsoft-surface-pro-intel nixos-hardware.nixosModules.microsoft-surface-pro-intel
]; ];
} // };
mkConfig {
machine = "air"; "${username}-mobile" = mkConfig {
platform = "mobile";
system = "aarch64-linux"; system = "aarch64-linux";
configExtraModules = [ configExtraModules = [
./mobile/config.nix ./mobile/config.nix
@ -88,5 +89,6 @@ outputs = { self,
./mobile/home-manager.nix ./mobile/home-manager.nix
]; ];
}; };
};
}; };
} }

View file

@ -21,7 +21,7 @@ $accent: #f6a8cf;
background-color: $background; background-color: $background;
font-family: "Quicksand Medium"; font-family: "Quicksand Medium";
color: $foreground; color: $foreground;
font-size: 13px; font-size: 13;
padding: 3px 10px; padding: 3px 10px;
} }
@ -30,18 +30,18 @@ $accent: #f6a8cf;
tooltip { tooltip {
background-color: rgba(0,0,0,0.8); background-color: rgba(0,0,0,0.8);
font-family: "JetBrains Mono"; font-family: "JetBrains Mono";
font-size: 12px; font-size: 12;
} }
.detail { .detail {
font-size: 10px; font-size: 10;
color: $foreground-alt; color: $foreground-alt;
} }
.bar-sep { .bar-sep {
margin: 0px 4px; margin: 0px 4px;
color: $background-alt; color: $background-alt;
font-size: 22px; font-size: 22;
} }
.bar-window { .bar-window {
@ -59,12 +59,12 @@ tooltip {
.bar-time { .bar-time {
@include segment; @include segment;
font-size: 15px; font-size: 15;
padding: 0px 10px; padding: 0px 10px;
.bar-date { .bar-date {
margin-top: 1px; margin-top: 1px;
font-size: 11px; font-size: 11;
color: #a9b1d6; color: #a9b1d6;
} }
} }
@ -87,12 +87,12 @@ tooltip {
} }
.symbol.paused { .symbol.paused {
font-size: 12px; font-size: 12;
margin-left: 2px; margin-left: 2px;
} }
.symbol.playing { .symbol.playing {
font-size: 15px; font-size: 15;
margin-top: 1px; margin-top: 1px;
} }
@ -186,7 +186,7 @@ scale trough {
.symbol { .symbol {
margin-right: 7px; margin-right: 7px;
font-size: 14px; font-size: 14;
} }
} }
@ -195,20 +195,20 @@ scale trough {
margin-right: 9px; margin-right: 9px;
font-family: "JetBrains Mono"; font-family: "JetBrains Mono";
color: #bb9af7; color: #bb9af7;
font-size: 12px; font-size: 12;
&.disabled { &.disabled {
color: $disabled; color: $disabled;
} }
.symbol { .symbol {
font-size: 15px; font-size: 15;
} }
} }
.bar-bluetooth { .bar-bluetooth {
margin: 0px 3px; margin: 0px 3px;
font-size: 15px; font-size: 15;
color: #7aa2f7; color: #7aa2f7;
&.disabled { &.disabled {
@ -219,7 +219,7 @@ scale trough {
.bar-circular { .bar-circular {
margin: 0px 3px; margin: 0px 3px;
font-size: 15px; font-size: 15;
.back { .back {
color: $background-scale; color: $background-scale;

View file

@ -249,7 +249,7 @@
;; Bar Layout ;; Bar Layout
(defwidget fire_bar_left_edge [] (defwidget laptop_bar_left_edge []
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:halign "start" :halign "start"
@ -257,17 +257,17 @@
(bar_window :class-limit 60 (bar_window :class-limit 60
:title-limit 50))) :title-limit 50)))
(defwidget fire_bar_left_wing [] (defwidget laptop_bar_left_wing []
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:halign "end" :halign "end"
:hexpand true :hexpand true
(bar_time :width 175))) (bar_time :width 175)))
(defwidget fire_bar_center [] (defwidget laptop_bar_center []
(bar_workspaces)) (bar_workspaces))
(defwidget fire_bar_right_wing [] (defwidget laptop_bar_right_wing []
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:hexpand true :hexpand true
@ -275,7 +275,7 @@
:artist-limit 30 :artist-limit 30
:title-limit 25))) :title-limit 25)))
(defwidget fire_bar_right_edge [] (defwidget laptop_bar_right_edge []
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:halign "end" :halign "end"
@ -292,22 +292,22 @@
(bar_sep) (bar_sep)
(bar_idleinhibit))) (bar_idleinhibit)))
(defwidget fire_bar_layout [] (defwidget laptop_bar_layout []
(centerbox :class "bar" (centerbox :class "bar"
:orientation "h" :orientation "h"
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:hexpand true :hexpand true
(fire_bar_left_edge) (laptop_bar_left_edge)
(fire_bar_left_wing)) (laptop_bar_left_wing))
(fire_bar_center) (laptop_bar_center)
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
(fire_bar_right_wing) (laptop_bar_right_wing)
(fire_bar_right_edge)))) (laptop_bar_right_edge))))
(defwidget earth_bar_left_edge [] (defwidget desktop_bar_left_edge []
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:halign "start" :halign "start"
@ -315,17 +315,17 @@
(bar_window :class-limit 90 (bar_window :class-limit 90
:title-limit 80))) :title-limit 80)))
(defwidget earth_bar_left_wing [] (defwidget desktop_bar_left_wing []
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:halign "end" :halign "end"
:hexpand true :hexpand true
(bar_time :width 175))) (bar_time :width 175)))
(defwidget earth_bar_center [] (defwidget desktop_bar_center []
(bar_workspaces)) (bar_workspaces))
(defwidget earth_bar_right_wing [] (defwidget desktop_bar_right_wing []
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:hexpand true :hexpand true
@ -333,7 +333,7 @@
:artist-limit 30 :artist-limit 30
:title-limit 25))) :title-limit 25)))
(defwidget earth_bar_right_edge [] (defwidget desktop_bar_right_edge []
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:halign "end" :halign "end"
@ -348,22 +348,22 @@
(bar_sep) (bar_sep)
(bar_idleinhibit))) (bar_idleinhibit)))
(defwidget earth_bar_layout [] (defwidget desktop_bar_layout []
(centerbox :class "bar" (centerbox :class "bar"
:orientation "h" :orientation "h"
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
:hexpand true :hexpand true
(earth_bar_left_edge) (desktop_bar_left_edge)
(earth_bar_left_wing)) (desktop_bar_left_wing))
(earth_bar_center) (desktop_bar_center)
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
(earth_bar_right_wing) (desktop_bar_right_wing)
(earth_bar_right_edge)))) (desktop_bar_right_edge))))
(defwindow fire_bar (defwindow laptop_bar
:monitor 0 :monitor 0
:geometry (geometry :width "100%" :geometry (geometry :width "100%"
:height "3%" :height "3%"
@ -372,9 +372,9 @@
:stacking "fg" :stacking "fg"
:exclusive true :exclusive true
:focusable false :focusable false
(fire_bar_layout)) (laptop_bar_layout))
(defwindow earth_bar (defwindow desktop_bar
:monitor 0 :monitor 0
:geometry (geometry :width "100%" :geometry (geometry :width "100%"
:height "3%" :height "3%"
@ -383,4 +383,4 @@
:stacking "fg" :stacking "fg"
:exclusive true :exclusive true
:focusable false :focusable false
(earth_bar_layout)) (desktop_bar_layout))

View file

@ -2,8 +2,8 @@
workspaces() { workspaces() {
hyprctl workspaces -j | jaq -c 'map({key: .id | tostring, value: .windows}) | from_entries hyprctl workspaces -j | jaq -c 'map({key: .id | tostring, value: .windows}) | from_entries
| . as $windows | [range(1;11) | {id: tostring, windows: $windows[tostring] // 0, | . as $windows | [range(1;11) | {id: tostring, windows: $windows[tostring] // 0,
previous: $windows[.-1|tostring] // 0, next: $windows[.+1|tostring] // 0}]' previous: $windows[.-1|tostring] // 0, next: $windows[.+1|tostring] // 0 }]'
} }
workspaces workspaces

View file

@ -4,6 +4,11 @@ let
modifier = "SUPER"; modifier = "SUPER";
terminal = "alacritty"; terminal = "alacritty";
in { in {
home.packages = with pkgs; [
swaybg
swayidle
];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
systemd.enable = true; systemd.enable = true;
@ -23,6 +28,10 @@ in {
"$terminal" = terminal; "$terminal" = terminal;
"$menu" = "rofi -show drun"; "$menu" = "rofi -show drun";
exec-once = [
"background=${../../assets/background.png} platform=${config.platform} ${scripts}/autostart"
];
general = { general = {
layout = "hy3"; layout = "hy3";

View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
# Background
swaybg -o '*' -i "$background" -m fill &
# Status Bar
eww open "$platform"_bar --screen 0

View file

@ -15,7 +15,7 @@
modules-center = [ "hyprland/window" ]; modules-center = [ "hyprland/window" ];
modules-right = modules-right =
if config.machine == "fire" then if config.platform == "laptop" then
[ "battery" "pulseaudio" "backlight" "network" "clock" "idle_inhibitor" ] [ "battery" "pulseaudio" "backlight" "network" "clock" "idle_inhibitor" ]
else else
[ "pulseaudio" "network" "clock" "idle_inhibitor" ]; [ "pulseaudio" "network" "clock" "idle_inhibitor" ];
@ -217,7 +217,7 @@
#pulseaudio { #pulseaudio {
background-color: @altblend; background-color: @altblend;
${ ${
if config.machine == "fire" then if config.platform == "laptop" then
'' ''
margin: 3px 0px 3px 2px; margin: 3px 0px 3px 2px;
padding-right: 5px; padding-right: 5px;

View file

@ -60,25 +60,6 @@
]; ];
}; };
# Swaybg
systemd.user.services.swaybg = {
Install.WantedBy = [ "graphical-session.target" ];
Unit = {
Description = "Sway background manager";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
ConditionEnvironment = "WAYLAND_DISPLAY";
};
Service = {
ExecStart = "${lib.getExe pkgs.swaybg} -o '*' -i ${../../assets/background.png} -m fill";
Restart = "always";
RestartSec = "5";
};
};
# Rofi # Rofi
programs.rofi.enable = true; programs.rofi.enable = true;
@ -91,27 +72,6 @@
programs.eww.enable = true; programs.eww.enable = true;
programs.eww.configDir = ./eww; programs.eww.configDir = ./eww;
systemd.user.services.eww =
let eww = lib.getExe config.programs.eww.package;
in {
Install.WantedBy = [ "graphical-session.target" ];
Unit = {
Description = "GTK-based custom widgets";
Documentation = "https://github.com/elkowar/eww";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
ConditionEnvironment = "WAYLAND_DISPLAY";
};
Service = {
ExecStart = "${eww} daemon --no-daemonize";
ExecStartPost = "${eww} open ${config.machine}_bar --screen 0";
Restart = "always";
RestartSec = "5";
};
};
# Mako # Mako
services.mako = { services.mako = {
@ -183,7 +143,7 @@
# WLuma # WLuma
# systemd.user.services.wluma = lib.mkIf (config.machine== "fire") { # systemd.user.services.wluma = lib.mkIf (config.platform == "laptop") {
# Install.WantedBy = [ "graphical-session.target" ]; # Install.WantedBy = [ "graphical-session.target" ];
# Unit = { # Unit = {

View file

@ -18,7 +18,7 @@ in {
# Org Roam Protocol # Org Roam Protocol
home.packages = [ org-protocol ]; home.packages = [ org-protocol ];
xdg.mimeApps = { xdg.mimeApps = {
enable = false; enable = true;
defaultApplications."x-scheme-handler/org-protocol" = [ "org-protocol.desktop" ]; defaultApplications."x-scheme-handler/org-protocol" = [ "org-protocol.desktop" ];
}; };
} }

View file

@ -1,7 +0,0 @@
{ lib, ... }:
{
options.machine = lib.mkOption {
description = "The machine hostname to configure for";
type = lib.types.enum [ "earth" "fire" "air" "water" ];
};
}

View file

@ -1,4 +1,4 @@
{ config, pkgs, username, fullname, email, ... }: { config, pkgs, username, fullname, ... }:
{ {
home.username = username; home.username = username;
home.homeDirectory = "/home/" + username; home.homeDirectory = "/home/" + username;
@ -13,7 +13,7 @@
programs.git = { programs.git = {
enable = true; enable = true;
userName = fullname; userName = fullname;
userEmail = email; userEmail = "kiana.a.sheibani@gmail.com";
extraConfig = { extraConfig = {
credential.helper = "store"; credential.helper = "store";

7
platform.nix Normal file
View file

@ -0,0 +1,7 @@
{ lib, ... }:
{
options.platform = lib.mkOption {
description = "The platform to configure for";
type = lib.types.str;
};
}