Compare commits
5 commits
e4ec3df115
...
b542ff2162
Author | SHA1 | Date | |
---|---|---|---|
Kiana Sheibani | b542ff2162 | ||
Kiana Sheibani | ea6c17cc74 | ||
Kiana Sheibani | af0e27630f | ||
Kiana Sheibani | 5f95f0ffba | ||
Kiana Sheibani | fb7b45f98d |
|
@ -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)
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ config, lib, ... }:
|
||||
lib.mkIf (config.platform == "laptop") {
|
||||
lib.mkIf (config.machine == "fire") {
|
||||
services.upower = {
|
||||
enable = true;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
36
flake.nix
36
flake.nix
|
@ -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 {
|
||||
{
|
||||
"toki-${machine}" = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
modules =
|
||||
configModules ++
|
||||
configExtraModules ++
|
||||
[
|
||||
./platform.nix
|
||||
./machine.nix
|
||||
{ _module.args = moduleArgs;
|
||||
inherit platform; }
|
||||
./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.sharedModules = [ ./platform.nix { inherit platform; } ];
|
||||
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";
|
||||
in {
|
||||
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
|
||||
|
@ -90,5 +89,4 @@ outputs = { self,
|
|||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
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 }]'
|
||||
previous: $windows[.-1|tostring] // 0, next: $windows[.+1|tostring] // 0}]'
|
||||
}
|
||||
|
||||
workspaces
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Background
|
||||
swaybg -o '*' -i "$background" -m fill &
|
||||
|
||||
# Status Bar
|
||||
eww open "$platform"_bar --screen 0
|
|
@ -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;
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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
7
machine.nix
Normal 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" ];
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
options.platform = lib.mkOption {
|
||||
description = "The platform to configure for";
|
||||
type = lib.types.str;
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue