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.
## Screenshot (Laptop)
## Screenshot (`toki-fire`)
![screenshot](/assets/screenshot.png)

View file

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

View file

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

View file

@ -10,7 +10,7 @@ let
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; [
tokyo-night-sddm # Theme
qtbase

View file

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

View file

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

View file

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

View file

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

View file

@ -4,11 +4,6 @@ let
modifier = "SUPER";
terminal = "alacritty";
in {
home.packages = with pkgs; [
swaybg
swayidle
];
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = true;
@ -28,10 +23,6 @@ in {
"$terminal" = terminal;
"$menu" = "rofi -show drun";
exec-once = [
"background=${../../assets/background.png} platform=${config.platform} ${scripts}/autostart"
];
general = {
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-right =
if config.platform == "laptop" then
if config.machine == "fire" then
[ "battery" "pulseaudio" "backlight" "network" "clock" "idle_inhibitor" ]
else
[ "pulseaudio" "network" "clock" "idle_inhibitor" ];
@ -217,7 +217,7 @@
#pulseaudio {
background-color: @altblend;
${
if config.platform == "laptop" then
if config.machine == "fire" then
''
margin: 3px 0px 3px 2px;
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
programs.rofi.enable = true;
@ -72,6 +91,27 @@
programs.eww.enable = true;
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
services.mako = {
@ -143,7 +183,7 @@
# WLuma
# systemd.user.services.wluma = lib.mkIf (config.platform == "laptop") {
# systemd.user.services.wluma = lib.mkIf (config.machine== "fire") {
# Install.WantedBy = [ "graphical-session.target" ];
# Unit = {

View file

@ -18,7 +18,7 @@ in {
# Org Roam Protocol
home.packages = [ org-protocol ];
xdg.mimeApps = {
enable = true;
enable = false;
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.homeDirectory = "/home/" + username;
@ -13,7 +13,7 @@
programs.git = {
enable = true;
userName = fullname;
userEmail = "kiana.a.sheibani@gmail.com";
userEmail = email;
extraConfig = {
credential.helper = "store";

View file

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