Compare commits

...

5 commits

Author SHA1 Message Date
Kiana Sheibani b542ff2162
tweak!: disable xdg user config for now 2024-10-15 03:32:26 -04:00
Kiana Sheibani ea6c17cc74
fix(eww): add unit to font sizes in eww.scss
This quiets a few warning messages.
2024-10-15 03:31:24 -04:00
Kiana Sheibani af0e27630f
refactor: use systemd services instead of start script
This is probably what I should've done from the beginning, but I didn't
really know how `systemd` worked when I started writing this config.
2024-10-15 03:30:13 -04:00
Kiana Sheibani 5f95f0ffba
refactor: use email special arg 2024-10-15 03:28:56 -04:00
Kiana Sheibani fb7b45f98d
feat!: change machine hostnames
Instead of merely naming my systems "laptop", "desktop", etc. (boring),
I now have them named after Aristotelian elements (cool).

This also gives me an excuse to refactor my flake file.
2024-10-15 03:25:56 -04:00
19 changed files with 139 additions and 117 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 (Laptop) ## Screenshot (`toki-fire`)
![screenshot](/assets/screenshot.png) ![screenshot](/assets/screenshot.png)

View file

@ -1,5 +1,5 @@
{ config, lib, ... }: { config, lib, ... }:
lib.mkIf (config.platform == "laptop") { lib.mkIf (config.machine == "fire") {
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) platform; inherit (config) machine;
isMobile = platform == "mobile"; isMobile = machine == "air";
hashedPassword = hashedPassword =
if platform == "desktop" then if machine == "earth" then
"$6$HYibiGhDN.JgLtw6$cecU7NjfumTUJSkFNFQG4uVgdd3tTPLGxK0zHAwYn3un/V43IUlyVBNKoRMLCQk65RckbD/.AjsLFVFKUUHVA/" "$y$j9T$rpQs/Fnsxh4DNw4qDSvTu.$nzA1EskOnWrYM.Iba7q73O.QPEn3DFWrX2.KY8mKza."
else if platform == "laptop" then else if machine == "fire" then
"$6$y3eb1phxFWnParRT$w1LNfxJ2ByHoiBa5ywh4STGuIK/r4Tnyxx2Xe/nlovrE6LuuLAVdKRFAroUTtUI/d2BNGI9ErjZ2z2Dl7w/t00" "$y$j9T$EXc0TFu9LQhQ9YGrOkb7u0$LpwNG0XpUIVSltLqUw7CAOLSsI2rZr1RTBnJai5dkM7"
else # if platform == "mobile" else # if machine == "air"
"$6$vmmMT7pEY1W0Bj9R$Kb6nuwdg/KzCrGcUPkEo2jJ6a2NJRikiOeN8/I8ObU1K6rVYvgYqPVgPg9NkLaUScdh1PWcabuvaHCFLMw14A0"; "$y$j9T$zF34p.W/HFKrWde5Rb1nq/$1Q5IN9IT.IQ6SLg8InUZM5L27.jQV.cRtNENnUPp0ZC";
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 = "kiana-${platform}"; networking.hostName = "toki-${machine}";
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.platform != "mobile") { in lib.mkIf (config.machine != "air") {
environment.systemPackages = with pkgs.libsForQt5; [ environment.systemPackages = with pkgs.libsForQt5; [
tokyo-night-sddm # Theme tokyo-night-sddm # Theme
qtbase qtbase

View file

@ -31,52 +31,51 @@ outputs = { self,
moduleArgs = { inherit username fullname email; } // inputs; moduleArgs = { inherit username fullname email; } // inputs;
mkConfig = mkConfig =
{ platform, { machine,
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 { {
inherit system; "toki-${machine}" = nixpkgs.lib.nixosSystem {
modules = inherit system;
configModules ++ modules =
configExtraModules ++ configModules ++
[ configExtraModules ++
./platform.nix [
{ _module.args = moduleArgs; ./machine.nix
inherit platform; } { _module.args = moduleArgs;
./hardware-configuration/${platform}.nix inherit machine; }
./hardware-configuration/${machine}.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = moduleArgs;
home-manager.nixosModules.home-manager home-manager.sharedModules = [ ./machine.nix { inherit machine; } ];
{ home-manager.users.${username} = {
home-manager.useGlobalPkgs = true; imports = homeModules ++ homeExtraModules;
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 =
"${username}-desktop" = mkConfig { mkConfig {
platform = "desktop"; machine = "earth";
}; } //
mkConfig {
"${username}-laptop" = mkConfig { machine = "fire";
platform = "laptop";
configExtraModules = [ configExtraModules = [
nixos-hardware.nixosModules.microsoft-surface-pro-intel nixos-hardware.nixosModules.microsoft-surface-pro-intel
]; ];
}; } //
mkConfig {
"${username}-mobile" = mkConfig { machine = "air";
platform = "mobile";
system = "aarch64-linux"; system = "aarch64-linux";
configExtraModules = [ configExtraModules = [
./mobile/config.nix ./mobile/config.nix
@ -89,6 +88,5 @@ 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: 13; font-size: 13px;
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: 12; font-size: 12px;
} }
.detail { .detail {
font-size: 10; font-size: 10px;
color: $foreground-alt; color: $foreground-alt;
} }
.bar-sep { .bar-sep {
margin: 0px 4px; margin: 0px 4px;
color: $background-alt; color: $background-alt;
font-size: 22; font-size: 22px;
} }
.bar-window { .bar-window {
@ -59,12 +59,12 @@ tooltip {
.bar-time { .bar-time {
@include segment; @include segment;
font-size: 15; font-size: 15px;
padding: 0px 10px; padding: 0px 10px;
.bar-date { .bar-date {
margin-top: 1px; margin-top: 1px;
font-size: 11; font-size: 11px;
color: #a9b1d6; color: #a9b1d6;
} }
} }
@ -87,12 +87,12 @@ tooltip {
} }
.symbol.paused { .symbol.paused {
font-size: 12; font-size: 12px;
margin-left: 2px; margin-left: 2px;
} }
.symbol.playing { .symbol.playing {
font-size: 15; font-size: 15px;
margin-top: 1px; margin-top: 1px;
} }
@ -186,7 +186,7 @@ scale trough {
.symbol { .symbol {
margin-right: 7px; margin-right: 7px;
font-size: 14; font-size: 14px;
} }
} }
@ -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: 12; font-size: 12px;
&.disabled { &.disabled {
color: $disabled; color: $disabled;
} }
.symbol { .symbol {
font-size: 15; font-size: 15px;
} }
} }
.bar-bluetooth { .bar-bluetooth {
margin: 0px 3px; margin: 0px 3px;
font-size: 15; font-size: 15px;
color: #7aa2f7; color: #7aa2f7;
&.disabled { &.disabled {
@ -219,7 +219,7 @@ scale trough {
.bar-circular { .bar-circular {
margin: 0px 3px; margin: 0px 3px;
font-size: 15; font-size: 15px;
.back { .back {
color: $background-scale; color: $background-scale;

View file

@ -249,7 +249,7 @@
;; Bar Layout ;; Bar Layout
(defwidget laptop_bar_left_edge [] (defwidget fire_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 laptop_bar_left_wing [] (defwidget fire_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 laptop_bar_center [] (defwidget fire_bar_center []
(bar_workspaces)) (bar_workspaces))
(defwidget laptop_bar_right_wing [] (defwidget fire_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 laptop_bar_right_edge [] (defwidget fire_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 laptop_bar_layout [] (defwidget fire_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
(laptop_bar_left_edge) (fire_bar_left_edge)
(laptop_bar_left_wing)) (fire_bar_left_wing))
(laptop_bar_center) (fire_bar_center)
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
(laptop_bar_right_wing) (fire_bar_right_wing)
(laptop_bar_right_edge)))) (fire_bar_right_edge))))
(defwidget desktop_bar_left_edge [] (defwidget earth_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 desktop_bar_left_wing [] (defwidget earth_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 desktop_bar_center [] (defwidget earth_bar_center []
(bar_workspaces)) (bar_workspaces))
(defwidget desktop_bar_right_wing [] (defwidget earth_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 desktop_bar_right_edge [] (defwidget earth_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 desktop_bar_layout [] (defwidget earth_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
(desktop_bar_left_edge) (earth_bar_left_edge)
(desktop_bar_left_wing)) (earth_bar_left_wing))
(desktop_bar_center) (earth_bar_center)
(box :orientation "h" (box :orientation "h"
:space-evenly false :space-evenly false
(desktop_bar_right_wing) (earth_bar_right_wing)
(desktop_bar_right_edge)))) (earth_bar_right_edge))))
(defwindow laptop_bar (defwindow fire_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
(laptop_bar_layout)) (fire_bar_layout))
(defwindow desktop_bar (defwindow earth_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
(desktop_bar_layout)) (earth_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,11 +4,6 @@ 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;
@ -28,10 +23,6 @@ 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

@ -1,7 +0,0 @@
#!/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.platform == "laptop" then if config.machine == "fire" 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.platform == "laptop" then if config.machine == "fire" then
'' ''
margin: 3px 0px 3px 2px; margin: 3px 0px 3px 2px;
padding-right: 5px; padding-right: 5px;

View file

@ -60,6 +60,25 @@
]; ];
}; };
# 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;
@ -72,6 +91,27 @@
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 = {
@ -143,7 +183,7 @@
# WLuma # WLuma
# systemd.user.services.wluma = lib.mkIf (config.platform == "laptop") { # systemd.user.services.wluma = lib.mkIf (config.machine== "fire") {
# 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 = true; enable = false;
defaultApplications."x-scheme-handler/org-protocol" = [ "org-protocol.desktop" ]; defaultApplications."x-scheme-handler/org-protocol" = [ "org-protocol.desktop" ];
}; };
} }

7
machine.nix Normal file
View file

@ -0,0 +1,7 @@
{ 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, ... }: { config, pkgs, username, fullname, email, ... }:
{ {
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 = "kiana.a.sheibani@gmail.com"; userEmail = email;
extraConfig = { extraConfig = {
credential.helper = "store"; credential.helper = "store";

View file

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