uhhh the 2nd rendition
This commit is contained in:
Reid 2024-03-28 20:45:53 -07:00
parent 132a109da8
commit 565aac949c
37 changed files with 2606 additions and 36 deletions

BIN
assets/lockscreen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

BIN
assets/wallpaper.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

64
config/dunst.conf Normal file
View file

@ -0,0 +1,64 @@
# https://github.com/catppuccin/dunst/blob/main/src/mocha.conf
[global]
frame_color = "#89B4FA"
separator_color= frame
follow = none
width = 300
height = 145
origin = top-right
alignment = "left"
vertical_alignment = "center"
ellipsize = "middle"
offset = "15x15"
padding = 15
horizontal_padding = 15
text_icon_padding = 15
icon_position = "left"
min_icon_size = 48
max_icon_size = 64
progress_bar = true
progress_bar_height = 8
progress_bar_frame_width = 1
progress_bar_min_width = 150
progress_bar_max_width = 300
separator_height = 2
frame_width = 2
corner_radius = 8
transparency = 0
gap_size = 8
line_height = 0
notification_limit = 0
idle_threshold = 120
history_length = 20
show_age_threshold = 60
markup = "full"
font = "Atkinson Hyperlegible Pro 10"
word_wrap = "yes"
sort = "yes"
shrink = "no"
indicate_hidden = "yes"
sticky_history = "yes"
ignore_newline = "no"
show_indicators = "no"
stack_duplicates = true
always_run_script = true
hide_duplicate_count = false
ignore_dbusclose = false
mouse_left_click = "do_action"
mouse_middle_click = "close_all"
mouse_right_click = "close_current"
[urgency_low]
background = "#1E1E2E"
foreground = "#CDD6F4"
[urgency_normal]
background = "#1E1E2E"
foreground = "#CDD6F4"
[urgency_critical]
background = "#1E1E2E"
foreground = "#CDD6F4"
frame_color = "#FAB387"

27
config/nwg-drawer.css Normal file
View file

@ -0,0 +1,27 @@
window {
/*background: @base;*/
background: alpha(@base, 0.3);
color: @text;
font-family: 'Atkinson Hyperlegible Pro', 'Atkinson Hyperlegible', FontAwesome, Noto Sans CJK;
font-size: 14px;
font-style: normal;
}
/* search entry */
entry {
background-color: alpha(@surface0, 0.5);
}
button, image {
background: none;
border: none
}
button {
padding: 1em 0.5em;
border-radius: 1em;
}
button:hover {
background-color: alpha(@surface0, 0.5);
}

98
config/rofi.rasi Normal file
View file

@ -0,0 +1,98 @@
* {
bg-col: #24273a;
bg-col-light: #313244;
border-col: #363a4f;
selected-col: #45475a;
pink: #f5c2e7;
fg-col: #cdd6f4;
fg-col2: @pink;
grey: #bac2de;
width: 450px;
}
element-text, element-icon , mode-switcher {
background-color: inherit;
text-color: inherit;
}
window {
height: 500px;
border: 2px;
border-radius: 1em;
border-color: @pink;
background-color: @bg-col;
}
mainbox {background-color: @bg-col;}
inputbar {
margin: 10px 5px 5px 5px;
children: [prompt, entry];
background-color: @bg-col;
padding: 1px;
}
prompt {
background-color: transparent;
padding: 1px;
text-color: @fg-col;
border-radius: 1.5em;
}
textbox-prompt-colon {
expand: true;
str: ":";
}
entry {
padding: 1px;
margin: 0px;
text-color: @fg-col;
background-color: @bg-col;
}
listview {
border: 0px 0px 0px;
margin: 5px 0px 0px 10px;
columns: 1;
lines: 10;
background-color: @bg-col;
}
element {
padding: 1px;
background-color: @bg-col;
text-color: @fg-col;
}
element-icon {size: 12px;}
element.selected {
background-color: @selected-col;
text-color: @fg-col2;
}
scrollbar {
width: 4px ;
border: 0;
handle-color: @fg-col;
handle-width: 8px ;
padding: 0;
}
mode-switcher {spacing: 0;}
button {
spacing: 0;
background-color: @bg-col-light;
text-color: @grey;
vertical-align: 0.5;
horizontal-align: 0.5;
}
button.selected {
background-color: @bg-col;
text-color: @pink;
}

101
config/waybar.css Normal file
View file

@ -0,0 +1,101 @@
* {
border: none;
border-radius: 0px;
min-height: 0;
}
window#waybar {
color: @text;
/*background: alpha(@base, 0.6);*/
background: @base;
border-radius: 1em;
/*font-family: VictorMono, Iosevka Nerd Font, Noto Sans CJK;*/
/*font-family: 'Atkinson Hyperlegible', FontAwesome, Noto Sans CJK;*/
font-family: CozetteVector, FontAwesome, Noto Sans CJK;
font-size: 13px;
font-style: normal;
}
box.module, .modules-right box {
background-color: @surface0;
margin: 0 0.25em;
padding: 0.15em 0.25em;
border-radius: 1em;
}
.modules-right label.module {
margin: 0 0.5em;
}
.modules-right box {
padding: 0.15em 0.4em;
}
.modules-left, .modules-right {
margin: 0.4em 0.5em;
}
#workspaces {
background-color: @surface0;
padding: 0;
}
#workspaces button {
background-color: transparent;
color: @text;
padding: 0 0.4em;
}
#workspaces button:nth-child(1) {
border-top-left-radius: 1em;
border-bottom-left-radius: 1em;
}
#workspaces button:nth-last-child(1) {
border-top-right-radius: 1em;
border-bottom-right-radius: 1em;
}
#workspaces button.empty {
color: @overlay0;
}
#workspaces button.visible {
background: @surface1;
}
#workspaces button.active {
background: @pink;
color: @surface0;
}
#workspaces button.urgent {
background: @red;
color: @surface0;
}
#window {
background: transparent;
}
window#waybar.floating #window {
color: @pink;
}
#clock {
color: @lavender;
}
#network {
color: @sapphire;
}
#pulseaudio {
color: @pink;
}
#custom-power {
color: @red;
}
tooltip {
color: @text;
background: @base;
border: 1px solid @pink;
}

View file

@ -2,16 +2,28 @@
let
inherit (builtins) toString;
inherit (lib.modules) mkDefault mkIf;
inherit (lib.modules) mkDefault mkIf mkAliasOptionModule;
inherit (lib.my) mapModulesRec';
in {
imports =
[
inputs.home-manager.nixosModules.home-manager
(mkAliasOptionModule ["hm"] ["home-manager" "users" config.user.name])
inputs.nix-colors.homeManagerModules.default
inputs.hyprland.nixosModules.default
]
++ (mapModulesRec' (toString ./modules) import);
hm.imports = [
inputs.hyprlock.homeManagerModules.hyprlock
inputs.hypridle.homeManagerModules.hypridle
inputs.hyprland.homeManagerModules.default
];
environment.variables = {
NIXPKGS_ALLOW_UNFREE = "1";
};
nix = {
package = pkgs.nix;
@ -27,19 +39,36 @@ in {
keep-derivations = true;
substituters = [
"https://nix-community.cachix.org"
"https://nixpkgs-wayland.cachix.org"
"https://hyprland.cachix.org"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
};
};
# set our git revision inside `nixos-version`
system.stateVersion = mkDefault "23.11";
system.configurationRevision = with inputs; mkIf (self ? rev) self.rev;
# set home stateversion to system stateversion. Just Makes Sense
hm.home.stateVersion = config.system.stateVersion;
boot = {
kernelPackages = pkgs.linuxPackages_latest;
kernelParams=["pci_aspm.policy=performance"];
};
# configure keymap in x11
services.xserver.xkb = {
layout = "us";
# i need to learn this sometime
# variant = "workman";
};
console = {
useXkbConfig = mkDefault true;
};
time.timeZone = mkDefault "America/Los_Angeles";
i18n.defaultLocale = mkDefault "en_US.UTF-8";
@ -50,10 +79,11 @@ in {
unrar unzip
micro
curl wget
# im pretty sure removing this breaks nixos-rebuild
# have fun
desktop-file-utils
shared-mime-info
xdg-user-dirs
xdg-utils
git
];
system.stateVersion = mkDefault "23.11";
}

670
flake.lock generated Normal file
View file

@ -0,0 +1,670 @@
{
"nodes": {
"base16-schemes": {
"flake": false,
"locked": {
"lastModified": 1696158499,
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
"owner": "tinted-theming",
"repo": "base16-schemes",
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-schemes",
"type": "github"
}
},
"catppuccin-vsc": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1710544781,
"narHash": "sha256-nkxihb3D85k1nZV1CzlB3seMKtTEeKb688sblIGp/Bs=",
"owner": "catppuccin",
"repo": "vscode",
"rev": "d7b96ccac36fd29929bd97bc9357413cc4e0240c",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "vscode",
"type": "github"
}
},
"hardware": {
"locked": {
"lastModified": 1711352745,
"narHash": "sha256-luvqik+i3HTvCbXQZgB6uggvEcxI9uae0nmrgtXJ17U=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "9a763a7acc4cfbb8603bb0231fec3eda864f81c0",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixos-hardware",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1711604890,
"narHash": "sha256-vbI/gxRTq/gHW1Q8z6D/7JG/qGNl3JTimUDX+MwnC3A=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3142bdcc470e1e291e1fbe942fd69e06bd00c5df",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"hyprcursor": {
"inputs": {
"hyprlang": "hyprlang_2",
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1711466786,
"narHash": "sha256-sArxGyUBiCA1in+q6t0QqT+ZJiZ1PyBp7cNPKLmREM0=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "d3876f34779cc03ee51e4aafc0d00a4f187c7544",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprcursor",
"type": "github"
}
},
"hypridle": {
"inputs": {
"hyprlang": "hyprlang",
"nixpkgs": "nixpkgs_2",
"systems": "systems"
},
"locked": {
"lastModified": 1710180874,
"narHash": "sha256-ZSn3wXQuRz36Ta/L+UCFKuUVG6QpwK2QmRkPjpQprU4=",
"owner": "hyprwm",
"repo": "hypridle",
"rev": "4395339a2dc410bcf49f3e24f9ed3024fdb25b0a",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hypridle",
"type": "github"
}
},
"hyprland": {
"inputs": {
"hyprcursor": "hyprcursor",
"hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang_3",
"nixpkgs": "nixpkgs_3",
"systems": "systems_3",
"wlroots": "wlroots",
"xdph": "xdph"
},
"locked": {
"lastModified": 1711673030,
"narHash": "sha256-atpS9c2LR56DIURlDLmuKHGmVQj9Xky2aETGhdTwMKg=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "fcd9d77b642c0cd45cae61cf10ed1924f2e7945b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "Hyprland",
"type": "github"
}
},
"hyprland-catppuccin": {
"flake": false,
"locked": {
"lastModified": 1702668781,
"narHash": "sha256-9BhZq9J1LmHfAPBqOr64chiAEzS+YV6zqe9ma95V3no=",
"owner": "catppuccin",
"repo": "hyprland",
"rev": "fc228737d3d0c12e34a7fa155a0fc3192e5e4017",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "hyprland",
"type": "github"
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1691753796,
"narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"nixpkgs": [
"hypridle",
"nixpkgs"
]
},
"locked": {
"lastModified": 1708212860,
"narHash": "sha256-nW3Zrhh9RJcMTvOcXAaKADnJM/g6tDf3121lJtTHnYo=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "11d5ccda071c153dfdc18ef65338956a51cef96a",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprlang_2": {
"inputs": {
"nixpkgs": [
"hyprland",
"hyprcursor",
"nixpkgs"
],
"systems": "systems_2"
},
"locked": {
"lastModified": 1709914708,
"narHash": "sha256-bR4o3mynoTa1Wi4ZTjbnsZ6iqVcPGriXp56bZh5UFTk=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "a685493fdbeec01ca8ccdf1f3655c044a8ce2fe2",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprlang_3": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1711250455,
"narHash": "sha256-LSq1ZsTpeD7xsqvlsepDEelWRDtAhqwetp6PusHXJRo=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "b3e430f81f3364c5dd1a3cc9995706a4799eb3fa",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprlang_4": {
"inputs": {
"nixpkgs": [
"hyprlock",
"nixpkgs"
],
"systems": "systems_4"
},
"locked": {
"lastModified": 1711250455,
"narHash": "sha256-LSq1ZsTpeD7xsqvlsepDEelWRDtAhqwetp6PusHXJRo=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "b3e430f81f3364c5dd1a3cc9995706a4799eb3fa",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprlang_5": {
"inputs": {
"nixpkgs": "nixpkgs_5",
"systems": "systems_6"
},
"locked": {
"lastModified": 1711250455,
"narHash": "sha256-LSq1ZsTpeD7xsqvlsepDEelWRDtAhqwetp6PusHXJRo=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "b3e430f81f3364c5dd1a3cc9995706a4799eb3fa",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprlock": {
"inputs": {
"hyprlang": "hyprlang_4",
"nixpkgs": "nixpkgs_4",
"systems": "systems_5"
},
"locked": {
"lastModified": 1711622429,
"narHash": "sha256-JwHbbmAzX1Kfq1XAs06lKbk2TZL7mH/yLczG4BaiuTs=",
"owner": "hyprwm",
"repo": "hyprlock",
"rev": "7f8c9b6addce5174af78acaf1eb1d726fc4133b5",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlock",
"type": "github"
}
},
"hyprpaper": {
"inputs": {
"hyprlang": "hyprlang_5",
"nixpkgs": "nixpkgs_6",
"systems": "systems_7"
},
"locked": {
"lastModified": 1711556036,
"narHash": "sha256-z+ZgMjGC8540k3Z6Z49ZnEvbWyLGXtWPSCagMOrmuXk=",
"owner": "hyprwm",
"repo": "hyprpaper",
"rev": "5838c90cd29374935930281f62bc131d8bcf2295",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprpaper",
"type": "github"
}
},
"nix-colors": {
"inputs": {
"base16-schemes": "base16-schemes",
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1707825078,
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
"owner": "misterio77",
"repo": "nix-colors",
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
"type": "github"
},
"original": {
"owner": "misterio77",
"repo": "nix-colors",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1707268954,
"narHash": "sha256-2en1kvde3cJVc3ZnTy8QeD2oKcseLFjYPLKhIGDanQ0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f8e2ebd66d097614d51a56a755450d4ae1632df1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1697935651,
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1708475490,
"narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0e74ca98a74bc7270d28838369593635a5db3260",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1711523803,
"narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2726f127c15a4cc9810843b96cad73c7eb39e443",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1711523803,
"narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2726f127c15a4cc9810843b96cad73c7eb39e443",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1708475490,
"narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0e74ca98a74bc7270d28838369593635a5db3260",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1711163522,
"narHash": "sha256-YN/Ciidm+A0fmJPWlHBGvVkcarYWSC+s3NTPk/P+q3c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "44d0940ea560dee511026a53f0e2e2cde489b4d4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1711523803,
"narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "2726f127c15a4cc9810843b96cad73c7eb39e443",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"catppuccin-vsc": "catppuccin-vsc",
"hardware": "hardware",
"home-manager": "home-manager",
"hypridle": "hypridle",
"hyprland": "hyprland",
"hyprland-catppuccin": "hyprland-catppuccin",
"hyprlock": "hyprlock",
"hyprpaper": "hyprpaper",
"nix-colors": "nix-colors",
"nixpkgs": "nixpkgs_7",
"waybar-catppuccin": "waybar-catppuccin"
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_5": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_6": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_7": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"waybar-catppuccin": {
"flake": false,
"locked": {
"lastModified": 1678438606,
"narHash": "sha256-WLJMA2X20E5PCPg0ZPtSop0bfmu+pLImP9t8A8V4QK8=",
"owner": "catppuccin",
"repo": "waybar",
"rev": "f74ab1eecf2dcaf22569b396eed53b2b2fbe8aff",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "waybar",
"type": "github"
}
},
"wlroots": {
"flake": false,
"locked": {
"host": "gitlab.freedesktop.org",
"lastModified": 1709983277,
"narHash": "sha256-wXWIJLd4F2JZeMaihWVDW/yYXCLEC8OpeNJZg9a9ly8=",
"owner": "wlroots",
"repo": "wlroots",
"rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b",
"type": "gitlab"
},
"original": {
"host": "gitlab.freedesktop.org",
"owner": "wlroots",
"repo": "wlroots",
"rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b",
"type": "gitlab"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": [
"hyprland",
"hyprland-protocols"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1709299639,
"narHash": "sha256-jYqJM5khksLIbqSxCLUUcqEgI+O2LdlSlcMEBs39CAU=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "2d2fb547178ec025da643db57d40a971507b82fe",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View file

@ -4,8 +4,25 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
hardware.url = "github:nixos/nixos-hardware";
nix-colors.url = "github:misterio77/nix-colors";
hyprland.url = "github:hyprwm/Hyprland";
hyprlock.url = "github:hyprwm/hyprlock";
hypridle.url = "github:hyprwm/hypridle";
hyprpaper.url = "github:hyprwm/hyprpaper";
waybar-catppuccin.url = "github:catppuccin/waybar";
waybar-catppuccin.flake = false;
hyprland-catppuccin.url = "github:catppuccin/hyprland";
hyprland-catppuccin.flake = false;
catppuccin-vsc.url = "github:catppuccin/vscode";
};
outputs = inputs @ { self, nixpkgs, ... }:
@ -20,7 +37,7 @@
config.allowAliases = false;
overlays = extraOverlays ++ (lib.attrValues self.overlays);
};
pkgs = mkPkgs nixpkgs [ self.overlays.default ];
pkgs = mkPkgs nixpkgs [ self.overlays.default inputs.catppuccin-vsc.overlays.default ];
lib = nixpkgs.lib.extend (final: prev: {
my = import ./lib {

0
packages/.gitkeep → goop.lua Executable file → Normal file
View file

View file

@ -1,6 +1,6 @@
{ config, lib, pkgs, ... }:
in {
{
imports = [
./hardware.nix
];
@ -9,19 +9,60 @@ in {
# archives
zip xz unzip p7zip
# utils
ripgrep jq
ripgrep jq libqalculate
# nix
nix-output-monitor
# system
btop duf killall
btop duf lm_sensors ethtool pciutils usbutils powertop killall
# debug
strace ltrace lsof
# apps
firefox mpv qalculate-gtk
# misc
file which tree
bat file which tree yt-dlp
] ++ (with pkgs.my; [
# none yet
]) ++ (with pkgs.gnome; [
# yay gnomeware!!!!!!!!!!!!!! yum
nautilus gnome-disk-utility pkgs.gedit file-roller gnome-system-monitor loupe
]);
modules = {
security.useDoas = false;
security.useDoas = true;
hardware = {
pipewire.enable = true;
};
desktop = {
envProto = "wayland";
hyprland.enable = true;
hyprlock.enable = true;
hypridle.enable = true;
hyprpaper.enable = true;
dunst.enable = true;
rofi.enable = true;
nwg-drawer.enable = true;
waybar.enable = true;
sddm.enable = true;
themes.active = "catppuccin";
};
software = {
# system
system.wezterm.enable = true;
system.fish.enable = true;
# editors
editors.micro.enable = true;
editors.vscode.enable = true;
# distractions
distractions.discord.enable = true;
distractions.discord.armcord = true;
# dev
dev.git.enable = true;
};
};
networking.networkmanager.enable = true;

View file

@ -1,32 +1,68 @@
{ config, lib, pkgs, modulesPath, ... }:
{ inputs, config, lib, pkgs, modulesPath, ... }:
{
imports =
[
inputs.hardware.nixosModules.common-cpu-intel
inputs.hardware.nixosModules.common-gpu-nvidia
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
initrd.kernelModules = [ ];
kernelModules = [ ];
extraModulePackages = [ ];
# TODO: move bootloader, networking, boot speed to another file?
kernelPackages = pkgs.linuxPackages_latest;
loader = {
# use u-boot over grub
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.loader = {
# use systemd-boot over grub
grub.enable = lib.mkForce false;
generic-extlinux-compatible.enable = true;
};
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
# nvidia bullshit. Wow
# i really, *really* wish i had an AMD card rn
hardware.nvidia = {
# this will cause problems down the line, but man i need that explicit sync ASAP
package = config.boot.kernelPackages.nvidiaPackages.beta;
modesetting.enable = true;
# powermanagement breaks suspend i guess??
#
# im about to suspend lets see if turning it off fixed it
#
# it did not !! this time our computer actually shut off fully but..
# hyprland turned into an eldrich horror then crashed. Lets just not for now!
# powerManagement.enable = false;
prime = {
offload = {
enable = true;
};
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
};
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
fileSystems."/" =
{ device = "/dev/disk/by-uuid/08cfbb11-5943-4627-a2fc-fd41ce578027";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/C321-2746";
fsType = "vfat";
};
swapDevices =
[ ];
[ { device = "/dev/disk/by-uuid/04eddb76-4925-4192-a472-1c2c7e4ac9f7"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
@ -36,6 +72,6 @@
# networking.interfaces.end0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlan0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

7
lib/options.nix Normal file
View file

@ -0,0 +1,7 @@
{lib, ...}: let
inherit (lib.options) mkOption;
in {
mkOpt = type: default: mkOption {inherit type default;};
mkOpt' = type: default: description: mkOption {inherit type default description;};
}

View file

@ -0,0 +1,47 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop;
in {
options.modules.desktop = {
envProto = mkOption {
type = types.nullOr (types.enum ["x11" "wayland"]);
description = "What display protocol to use";
};
};
config = mkMerge [
{
qt = {
enable = true;
platformTheme = "gnome";
style = "adwaita-dark";
};
modules.desktop.fonts.enable = builtins.trace "enabling fonts" true;
modules.desktop.fonts.baseFonts = builtins.trace "enabling basefonts" true;
}
(mkIf (cfg.envProto == "wayland") {
hm.home.packages = with pkgs; [ wl-clipboard-x11 ];
environment.sessionVariables = {
# magic, dont ask
NIXOS_OZONE_WL = "1";
_JAVA_AWT_WM_NONEREPARENTING = "1";
GDK_BACKEND = "wayland,x11";
ANKI_WAYLAND = "1";
XDG_SESSION_TYPE = "wayland";
SDL_VIDEODRIVER = "wayland";
CLUTTER_BACKEND = "wayland";
# this fixes cursors on nvidia, maybe move all nvidia stuff to a module? or put this in hardware
WLR_NO_HARDWARE_CURSORS = "1";
};
})
(mkIf (cfg.envProto == "x11") {
hm.home.packages = with pkgs; [ xclip ];
services.xserver.excludePackages = [ pkgs.xterm ];
})
];
}

17
modules/desktop/dunst.nix Normal file
View file

@ -0,0 +1,17 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.desktop.dunst;
in {
options.modules.desktop.dunst = {
enable = mkEnableOption "Enable dunst, a lightweight replacement for the notification daemons provided by most desktop environments";
};
config = mkIf cfg.enable {
hm.services.dunst = {
enable = true;
configFile = ../../config/dunst.conf;
};
};
}

117
modules/desktop/fonts.nix Normal file
View file

@ -0,0 +1,117 @@
{ lib, config, pkgs, ... }:
with lib;
let
# ty https://github.com/Misterio77/nix-config/blob/main/modules/home-manager/fonts.nix
mkFontOption = kind: default: {
family = mkOption {
type = types.str;
default = default.family;
description = "Family name for ${kind} font profile";
example = "Fira Code";
};
package = mkOption {
type = types.package;
default = default.package;
description = "Package for ${kind} font profile";
example = "pkgs.fira-code";
};
size = mkOption {
type = types.number;
default = default.size;
description = "${kind} font profile size, px";
example = "11";
};
};
cfg = config.modules.desktop.fonts;
in {
options.modules.desktop.fonts = {
enable = mkEnableOption "Enable the font configuration module, containing system fonts";
baseFonts = mkEnableOption "Add an extra set of extra base fonts";
fonts = {
sans = mkFontOption "sans" {
package = pkgs.my.atkinson-hyperlegible-pro;
family = "Atkinson Hyperlegible Pro";
size = 11;
};
sansSerif = mkFontOption "sans-serif" {
package = pkgs.my.atkinson-hyperlegible-pro;
family = "Atkinson Hyperlegible Pro";
size = 11;
};
monospace = mkFontOption "monospace" {
package = pkgs.cozette;
family = "CozetteVector";
size = 10;
};
monospaceBitmap = mkFontOption "bitmap monospace" {
package = pkgs.cozette;
family = "Cozette";
size = 10;
};
emoji = mkFontOption "emoji" {
package = pkgs.twitter-color-emoji;
family = "Twitter Color Emoji";
size = 10; # not applicable, but whatever
};
};
};
config = mkIf cfg.enable {
fonts = {
fontDir.enable = true;
fontconfig.enable = true;
fontconfig.defaultFonts = {
sans = [ cfg.fonts.sans.family ];
sansSerif = [ cfg.fonts.sansSerif.family ];
monospace = [ cfg.fonts.monospace.family ];
emoji = [ cfg.fonts.emoji.family ];
};
enableGhostscriptFonts = true;
packages = with pkgs; [
corefonts
noto-fonts
noto-fonts-cjk-sans
liberation_ttf
] ++ [
cfg.fonts.sans.package
cfg.fonts.sansSerif.package
cfg.fonts.monospace.package
cfg.fonts.monospaceBitmap.package
cfg.fonts.emoji.package
];
};
hm.gtk.enable = true;
hm.gtk.font = {
inherit (cfg.fonts.sans) package name size;
};
hm.dconf.settings = {
"org/gnome/desktop/interface".font-name = with cfg.fonts.sans; "${family} ${toString size}";
"org/gnome/desktop/interface".document-font-name = with cfg.fonts.sansSerif; "${family} ${toString size}";
"org/gnome/desktop/interface".monospace-font-name = with cfg.fonts.monospace; "${family} ${toString size}";
};
} // (mkIf cfg.baseFonts {
fonts.enableDefaultPackages = true;
fonts.packages = with pkgs; [
fira-code
fira-code-symbols
mplus-outline-fonts.githubRelease
dina-font
proggyfonts
atkinson-hyperlegible
cozette
twemoji-color-font
noto-fonts-color-emoji
noto-fonts-monochrome-emoji
font-awesome
];
});
}

View file

@ -0,0 +1,43 @@
{ lib, config, pkgs, system, inputs , ... }:
with lib;
let
cfg = config.modules.desktop.hypridle;
in {
options.modules.desktop.hypridle = {
enable = mkEnableOption "Enable hypridle, hyprland's idle daemon";
package = mkOption {
type = types.package;
default = inputs.hypridle.packages.${system}.hypridle;
example = "pkgs.hypridle";
};
};
config = mkIf cfg.enable {
hm.services.hypridle = {
enable = true;
package = cfg.package;
lockCmd = "${lib.getExe config.modules.desktop.hyprlock.package}";
unlockCmd = "pkill -USR1 hyprlock";
listeners = let
hyprctl = "${config.modules.desktop.hyprland.package}/bin/hyprctl";
in [
{
timeout = 90; # 1.5 min
onTimeout = "${hyprctl} dispatch dpms off"; # turn off screen
onResume = "${hyprctl} dispatch dpms on"; # turn it back on
}
{
timeout = 60 * 2; # 2 min
onTimeout = "loginctl lock-session"; # lock computer
}
{
timeout = 60 * 30; # 15 min
onTimeout = "systemctl suspend"; # sleep/suspend
}
];
};
};
}

View file

@ -0,0 +1,201 @@
{ inputs, lib, config, system, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.hyprland;
hyprpkgs = inputs.hyprland.packages.${system};
in {
options.modules.desktop.hyprland = {
enable = mkEnableOption "Enable hyprland, a dynamic tiling wayland compositor based on wlroots that doesn't sacrifice on its looks";
package = mkOption {
type = types.package;
default = hyprpkgs.hyprland;
example = "pkgs.hyprland";
};
portalPackage = mkOption {
type = types.package;
default = hyprpkgs.xdg-desktop-portal-hyprland;
example = "pkgs.xdg-desktop-portal-hyprland";
};
};
config = mkIf cfg.enable {
services.xserver.displayManager.sessionPackages = [ cfg.package ];
xdg.portal = {
enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk cfg.portalPackage ];
config = {
common = {
default = [ "hyprland" "gtk" ];
};
};
};
hm.wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
package = cfg.package;
settings = {
source = [];
"$mod" = "SUPER";
bindm = [ # "bind mouse"
# move/resize windows with mod + lmb/rmb and dragging
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
bindel = [ # "bind held & locked"
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 10%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-"
];
bindl = [ # "bind locked"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
];
bindr = [ # "bind released"
"SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}"
];
bind = [
"$mod, R, exec, ${lib.getExe pkgs.rofi-wayland} -show run"
", print, exec, ${lib.getExe pkgs.grimblast} copy area"
"$mod, T, exec, ${lib.getExe pkgs.wezterm}"
"$mod, Q, killactive, "
"$mod, V, togglefloating, "
"$mod, P, pseudo, "
"$mod, J, togglesplit, "
# scroll through workspaces with mod + scroll
"$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1"
] ++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
]
)
10)
);
input = {
kb_layout = "us";
follow_mouse = 1;
};
monitor= [
"DVI-D-1, 1920x1080@60, 0x0, 1"
"DP-1, 1920x1080@60, 1920x0, 1"
];
exec-once = [ "${lib.getExe pkgs.networkmanagerapplet}" ];
env = [
"XCURSOR_THEME,${config.modules.desktop.themes.cursorTheme.name}"
"XCURSOR_SIZE,24"
];
general = {
gaps_in = 6;
gaps_out = 6;
border_size = 2;
no_border_on_floating = true;
layout = "dwindle";
resize_on_border = true;
};
windowrulev2 = [
# common popups
"float, class:file-roller"
"float, class:org.gnome.Loupe"
"float, initialTitle:^Open Folder$"
"float, initialTitle:^Open File$"
# fix focus
"stayfocused, class:^pinentry-"
"stayfocused, class:^rofi-"
# workspace moving
"workspace 1, class:^firefox"
"workspace 2, class:code-url-handler"
"workspace 4, class:ArmCord"
];
blurls = [
"gtk-layer-shell" # nwg-drawer
"waybar"
];
decoration = {
rounding = 10;
blur = {
enabled = true;
size = 4;
passes = 2;
# popups = true;
};
drop_shadow = false;
};
animations = {
enabled = true;
bezier = [
"outCubic, 0.33, 1, 0.68, 1"
"outExpo, 0.16, 1, 0.3, 1"
];
animation = [
"windows, 1, 5, outExpo, popin"
"windowsOut, 1, 5, outCubic, popin 80%"
"border, 1, 2, outExpo"
"fade, 1, 3, outCubic"
"workspaces, 1, 6, outExpo"
];
};
dwindle = {
pseudotile = "yes";
preserve_split = "yes";
};
master = {
new_is_master = true;
};
misc = {
force_default_wallpaper = 0;
disable_splash_rendering = true;
disable_hyprland_logo = true;
};
};
extraConfig = ''
general {
col.active_border=$pink
col.inactive_border=$surface0
}
decoration {
col.shadow=$surface0
col.shadow_inactive=$surface0
}
misc {
background_color=$crust
}
'';
};
};
}

View file

@ -0,0 +1,72 @@
{ lib, config, inputs, system, ... }:
with lib;
let
cfg = config.modules.desktop.hyprlock;
in {
options.modules.desktop.hyprlock = {
enable = mkEnableOption "Enable hyprlock, a simple, fast, multithreaded screen lock for hyprland";
package = mkOption {
type = types.package;
default = inputs.hyprlock.packages.${system}.hyprlock;
example = "pkgs.hyprlock";
};
};
config = mkIf cfg.enable {
security.pam.services.hyprlock.text = "auth include login";
powerManagement.resumeCommands = ''
${cfg.package}
'';
hm.programs.hyprlock = with config.colorScheme.palette; {
enable = true;
package = cfg.package;
general = {
hide_cursor = false;
no_fade_in = true;
no_fade_out = true;
};
backgrounds = [
{
path = toString ../../assets/lockscreen.png;
blur_passes = 3;
blur_size = 6;
}
];
labels = [
{
text = "cmd[update:1000] echo \"$(date +'%H:%M')\"";
font_size = 58;
color = "rgb(${base05})";
font_family = config.modules.desktop.fonts.fonts.sansSerif.family;
position = { x = 0; y = 30; };
}
{
text = "cmd[update:1000] echo \"$(date + '%A %B %e')\"";
font_size = 14;
color = "rgb(${base05})";
font_family = config.modules.desktop.fonts.fonts.sansSerif.family;
position = { x = 0; y = 10; };
}
];
input-fields = [
{
size = { width = 300; height = 28; };
outline_thickness = 2;
dots_size = 0.2;
fade_on_empty = false;
placeholder_text = "";
outer_color = "rgb(${base0E})";
inner_color = "rgb(${base00})";
font_color = "rgb(${base05})";
check_color = "rgb(${base02})";
fail_color = "rgb(${base08})";
capslock_color = "rgb(${base09})";
position = { x = 0; y = -30; };
}
];
};
};
}

View file

@ -0,0 +1,28 @@
{ lib, config, inputs, system, ... }:
with lib;
let
cfg = config.modules.desktop.hyprpaper;
in {
options.modules.desktop.hyprpaper = {
enable = mkEnableOption "Enable hyprpaper, a wayland wallpaper utility";
package = mkOption {
type = types.package;
default = inputs.hyprpaper.packages.${system}.hyprpaper;
example = "pkgs.hyperpaper";
};
};
config = mkIf cfg.enable {
hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe cfg.package}" ];
hm.xdg.configFile."hypr/hyprpaper.conf" = let
img = ../../assets/wallpaper.png;
in {
text = ''
preload = ${img}
wallpaper = ,${img}
splash = false
'';
};
};
}

View file

@ -0,0 +1,18 @@
{ lib, config, pkgs, inputs, ... }:
with lib;
let
cfg = config.modules.desktop.nwg-drawer;
in {
options.modules.desktop.nwg-drawer = {
enable = mkEnableOption "Enable nwg-drawer, a GTK based application launcher for wayland";
};
config = mkIf cfg.enable {
hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe pkgs.nwg-drawer} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus" ];
hm.xdg.configFile."nwg-drawer/drawer.css".text = builtins.concatStringsSep "\n" [
"@import \"${inputs.waybar-catppuccin}/themes/mocha.css\";"
(lib.readFile ../../config/nwg-drawer.css)
];
};
}

22
modules/desktop/rofi.nix Normal file
View file

@ -0,0 +1,22 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.rofi;
in {
options.modules.desktop.rofi = {
enable = mkEnableOption "Enable rofi, a window switcher, run dialog and dmenu replacement";
};
config = mkIf cfg.enable {
hm.programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
font = with config.modules.desktop.fonts.fonts.monospace; "${family} ${toString size}";
extraConfig = {
show-icons = true;
};
theme = ../../config/rofi.rasi;
};
};
}

30
modules/desktop/sddm.nix Normal file
View file

@ -0,0 +1,30 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.sddm;
in {
options.modules.desktop.sddm = {
enable = mkEnableOption "Enable SDDM, a display manager for X11 and Wayland windowing systems";
};
config = mkIf cfg.enable {
services.xserver.enable = true; # this is needed, unfortunately!
environment.systemPackages = with pkgs; [
config.modules.desktop.themes.sddmTheme.package
libsForQt5.qt5.qtsvg
libsForQt5.qt5.qtgraphicaleffects
libsForQt5.qt5.qtquickcontrols2
];
services.xserver.displayManager.sddm = {
enable = true;
wayland.enable = true;
theme = config.modules.desktop.themes.sddmTheme.name;
settings = {
Theme = {
CursorTheme = config.modules.desktop.themes.cursorTheme.name;
};
};
};
};
}

View file

@ -0,0 +1,69 @@
{ inputs, config, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.themes;
accent = "pink";
variant = "mocha";
in {
config = mkIf (cfg.active == "catppuccin") {
colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;
modules.desktop.themes = {
dark = true;
gtkTheme = {
name = "Catppuccin-Mocha-Compact-Pink-Dark"; # TODO: put accent in here
package = pkgs.catppuccin-gtk.override {
variant = variant;
accents = [ accent ];
tweaks = [ "rimless" ];
size = "compact";
};
};
iconTheme = {
name = "WhiteSur-dark";
package = pkgs.whitesur-icon-theme;
};
cursorTheme = {
name = "graphite-dark";
package = pkgs.graphite-cursors;
};
sddmTheme = {
name = "catppuccin-sddm-corners";
package = (pkgs.my.catppuccin-sddm-corners.override {
config.General = {
Background = ../../../../assets/lockscreen.png;
Font = config.modules.desktop.fonts.fonts.sansSerif.family;
};
});
};
editor = {
vscode = {
colorTheme = {
name = "Catppuccin Mocha";
extension = (pkgs.vscode-extensions.catppuccin.catppuccin-vsc.override {
accent = accent;
boldKeywords = false;
italicComments = false;
italicKeywords = false;
extraBordersEnabled = false;
workbenchMode = "flat";
bracketMode = "rainbow";
});
};
iconTheme = {
name = "material-icon-theme";
extension = pkgs.vscode-extensions.pkief.material-icon-theme;
};
};
};
hyprland = "${inputs.hyprland-catppuccin}/themes/${variant}.conf";
};
};
}

View file

@ -0,0 +1,88 @@
{ lib, config, ... }:
with lib;
with lib.my;
let
cfg = config.modules.desktop.themes;
in {
options.modules.desktop.themes = with types; {
active = mkOption {
type = types.nullOr types.str;
default = null;
description = "Name of the theme to apply; see modules/desktop/themes for a list of valid options";
};
dark = mkOpt bool false;
gtkTheme = {
name = mkOpt str "";
package = mkPackageOption pkgs "gtk" {};
};
iconTheme = {
name = mkOpt str "";
package = mkPackageOption pkgs "icon" {};
};
cursorTheme = {
name = mkOpt str "";
package = mkPackageOption pkgs "cursor" {};
};
sddmTheme = {
name = mkOpt str "";
package = mkPackageOption pkgs "sddm" {};
};
editor = {
vscode = {
colorTheme = {
name = mkOpt str "";
extension = mkPackageOption pkgs "extension" {};
};
iconTheme = {
name = mkOpt str "";
extension = mkPackageOption pkgs "extension" {};
};
};
};
hyprland = mkOpt (nullOr str) null;
};
config = mkIf (cfg.active != null) {
programs.dconf.enable = true;
hm.dconf = {
enable = true;
settings."org/gnome/desktop/interface".color-scheme = mkIf cfg.dark "prefer-dark";
settings."org/gnome/desktop/interface".gtk-theme = cfg.gtkTheme.name;
settings."org/gnome/desktop/interface".icon-theme = cfg.iconTheme.name;
settings."org/gnome/desktop/interface".cursor-theme = cfg.cursorTheme.name;
settings."org/gnome/shell/extensions/user-theme".name = cfg.gtkTheme.name;
};
hm.gtk = {
enable = true;
cursorTheme = cfg.cursorTheme;
iconTheme = cfg.iconTheme;
theme = cfg.gtkTheme;
};
hm.services.dunst.iconTheme = {
name = cfg.iconTheme.name;
package = cfg.iconTheme.package;
};
hm.programs.vscode = {
extensions = [
cfg.editor.vscode.colorTheme.extension
cfg.editor.vscode.iconTheme.extension
];
userSettings = {
"workbench.colorTheme" = cfg.editor.vscode.colorTheme.name;
"workbench.iconTheme" = cfg.editor.vscode.iconTheme.name;
};
};
hm.wayland.windowManager.hyprland.settings.source = mkIf (cfg.hyprland != null) [ cfg.hyprland ];
};
}

199
modules/desktop/waybar.nix Normal file
View file

@ -0,0 +1,199 @@
{ lib, config, pkgs, inputs, ... }:
with lib;
let
cfg = config.modules.desktop.waybar;
in {
options.modules.desktop.waybar = {
enable = mkEnableOption "Enable Waybar, a lightweight desktop environment based on GTK+";
};
config = mkIf cfg.enable {
hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe pkgs.waybar}" ];
hm.programs.waybar = {
enable = true;
style = builtins.concatStringsSep "\n" [
"@import \"${inputs.waybar-catppuccin}/themes/mocha.css\";"
(lib.readFile ../../config/waybar.css)
];
settings = {
mainBar = {
layer = "top";
position = "top";
#spacing = 4;
height = 30;
margin-top = 6;
margin-left = 6;
margin-right = 6;
margin-bottom = 0;
modules-left = [
"hyprland/workspaces"
"hyprland/window"
];
modules-center = [
"clock"
];
modules-right = [
"group/status"
"tray"
"group/power"
];
"group/status" = {
orientation = "inherit";
modules = [
"pulseaudio"
"cpu"
"memory"
#"network"
];
};
"group/power" = {
orientation = "inherit";
drawer = {
transition-duration = 200;
children-class = "not-power";
transition-left-to-right = false;
};
modules = [
"custom/power"
"custom/lock"
"custom/reboot"
"custom/quit"
];
};
"custom/quit" = {
format = "";
tooltip = true;
tooltip-format = "Exit Hyprland";
on-click = "${config.modules.desktop.hyprland.package}/bin/hyprctl dispatch exit";
};
"custom/lock" = {
format = "";
tooltip = true;
tooltip-format = "Lock the system";
on-click = "${lib.getExe config.modules.desktop.hyprlock.package}";
};
"custom/reboot" = {
format = "";
tooltip = true;
tooltip-format = "Reboot";
on-click = "reboot";
};
"custom/power" = {
format = "";
tooltip = true;
tooltip-format = "Power off";
on-click = "shutdown now";
};
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
urgent = "";
default = "";
};
persistent-workspaces = {
"1" = [];
"2" = [];
"3" = [];
"4" = [];
};
};
"hyprland/window" = {
format = "{}";
icon = true;
icon-size = 16;
rewrite = {
"(.*) - Mozilla Firefox" = "$1";
"(.*) - Visual Studio Code" = "$1";
#"(.*\\.nix\\s.*)" = "";
"(\\S+\\.js\\s.*)" = " $1";
"(\\S+\\.ts\\s.*)" = " $1";
"(\\S+\\.go\\s.*)" = " $1";
"(\\S+\\.lua\\s.*)" = " $1";
"(\\S+\\.java\\s.*)" = " $1";
"(\\S+\\.rb\\s.*)" = " $1";
"(\\S+\\.php\\s.*)" = " $1";
"(\\S+\\.jsonc?\\s.*)" = " $1";
"(\\S+\\.md\\s.*)" = " $1";
"(\\S+\\.txt\\s.*)" = " $1";
"(\\S+\\.cs\\s.*)" = " $1";
"(\\S+\\.c\\s.*)" = " $1";
"(\\S+\\.cpp\\s.*)" = " $1";
"(\\S+\\.hs\\s.*)" = " $1";
".*Discord | (.*) | .*" = "$1 - ArmCord";
#"(.*) - ArmCord" = "$1";
};
separate-outputs = true;
};
pulseaudio = {
format = "{icon} {volume}%";
format-bluetooth = "{icon} {volume}%";
format-muted = " {volume}%";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = ["" "" ""];
};
scroll-step = 1;
on-click = "${lib.getExe pkgs.pavucontrol}";
ignored-sinks = ["Easy Effects Sink"];
};
cpu = {
interval = 4;
format = " {usage}%";
};
memory = {
interval = 4;
format = " {percentage}%";
tooltip-format = "{used:0.1f}GiB/{avail:0.1f}GiB used\n{swapUsed:0.1f}GiB/{swapAvail:0.1f}GiB swap";
};
"network" = {
format = "";
format-ethernet = "";
format-wifi = " {signalStrength}%";
format-disconnected = "";
tooltip-format = "{ifname} via {gwaddr}";
tooltip-format-wifi = "connected to {essid}";
tooltip-format-ethernet = "{ifname}";
tooltip-format-disconnected = "Disconnected";
};
"clock" = {
format = "{:%H:%M}";
format-alt = "{:%a %b %d %R}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "year";
mode-mon-col = 3;
weeks-pos = "right";
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
};
actions = {
on-click-right = "mode";
on-click-forward = "tz_up";
on-click-backward = "tz_down";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
};
};
};
};
};
}

View file

@ -0,0 +1,23 @@
{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.modules.hardware.pipewire;
in {
options.modules.hardware.pipewire = {
enable = mkEnableOption "Enable pipewire, a modern audio server";
};
config = mkIf cfg.enable {
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
};
}

View file

@ -0,0 +1,51 @@
{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.modules.software.dev.git;
in {
options.modules.software.dev.git = {
enable = mkEnableOption "Enable git. You know what git is";
};
config = mkIf cfg.enable {
hm.programs.git = {
enable = true;
package = pkgs.gitFull;
userName = ''Reid "reidlab"'';
userEmail = "reidlab325@gmail.com";
ignores = [
# OS related
".DS_Store?"
".DS_Store"
".CFUserTextEncoding"
".Trash"
".Xauthority"
"thumbs.db"
"Thumbs.db"
"Icon?"
];
aliases = {
ranked-authors = "!git authors | sort | uniq -c | sort -n";
emails = ''
!git log --format="%aE" | sort -u
'';
email-domains = ''
!git log --format="%aE" | awk -F'@' '{print $2}' | sort -u
'';
graph = ''
log --graph --color --pretty=format:"%C(yellow)%H%C(green)%d%C(reset)%n%x20%cd%n%x20%cn%x20(%ce)%n%x20%s%n"
'';
};
extraConfig = {
push.autoSetupRemote = true;
pull.rebase = true;
init.defaltBranch = "main";
};
};
};
}

View file

@ -0,0 +1,43 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.software.distractions.discord;
in {
options.modules.software.distractions.discord = {
enable = mkEnableOption "Enable discord, a social messaging app";
armcord = mkEnableOption "Use armcord, an alternative discord client.";
};
config = mkIf cfg.enable (mkMerge [
(mkIf (!cfg.armcord) {
user.packages = let
flags =
[
"--flag-switches-begin"
"--flag-switches-end"
"--disable-gpu-memory-buffer-video-frames"
"--enable-accelerated-mjpeg-decode"
"--enable-accelerated-video"
"--enable-gpu-rasterization"
"--enable-native-gpu-memory-buffers"
"--enable-zero-copy"
"--ignore-gpu-blocklist"
"--disable-features=UseOzonePlatform"
"--enable-features=VaapiVideoDecoder"
];
discord = (pkgs.discord-canary.override {
withOpenASAR = true;
withVencord = true;
}).overrideAttrs (old: {
preInstall = ''
gappsWrapperArgs=+("--add-flags" "${concatStringsSep " " flags}")
'';
});
in [ discord ];
})
(mkIf cfg.armcord {
user.packages = with pkgs; [ armcord ];
})
]);
}

View file

@ -0,0 +1,64 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.software.editors.micro;
in {
options.modules.software.editors.micro = {
enable = mkEnableOption "Enable micro, a simple CLI code editor";
};
config = let
schemeName = "generated";
in mkIf cfg.enable {
environment.variables.EDITOR = "micro";
hm.programs.micro = {
enable = true;
settings = {
autosu = true;
clipboard = "external";
savecursor = true;
scrollbar = true;
tabsize = 2;
tabstospaces = true;
colorScheme = schemeName;
};
};
hm.home.file.".config/micro/colorschemes/${schemeName}.micro".text = with config.colorScheme.palette; ''
color-link default "#${base05},#${base00}"
color-link comment "#${base03},#${base00}"
color-link identifier "#${base0D},#${base00}"
color-link constant "#${base0E},#${base00}"
color-link constant.string "#E6DB74,#${base00}"
color-link constant.string.char "#BDE6AD,#${base00}"
color-link statement "#${base08},#${base00}"
color-link symbol.operator "#${base08},#${base00}"
color-link preproc "#CB4B16,#${base00}"
color-link type "#${base0D},#${base00}"
color-link special "#${base0B},#${base00}"
color-link underlined "#D33682,#${base00}"
color-link error "bold #CB4B16,#${base00}"
color-link todo "bold #D33682,#${base00}"
color-link hlsearch "#${base00},#E6DB74"
color-link statusline "#${base00},#${base05}"
color-link tabbar "#${base00},#${base05}"
color-link indent-char "#505050,#${base00}"
color-link line-number "#AAAAAA,#${base01}"
color-link current-line-number "#AAAAAA,#${base00}"
color-link diff-added "#00AF00"
color-link diff-modified "#FFAF00"
color-link diff-deleted "#D70000"
color-link gutter-error "#CB4B16,#${base00}"
color-link gutter-warning "#E6DB74,#${base00}"
color-link cursor-line "#${base01}"
color-link color-column "#${base01}"
#No extended types; Plain brackets.
color-link type.extended "default"
#color-link symbol.brackets "default"
color-link symbol.tag "#${base0E},#${base00}"
'';
};
}

View file

@ -0,0 +1,59 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.software.editors.vscode;
in {
options.modules.software.editors.vscode = {
enable = mkEnableOption "Enable visual studio code, microsoft's gui code editor + IDE";
};
config = mkIf cfg.enable {
hm.programs.vscode = {
enable = true;
extensions = with pkgs.vscode-extensions; [
jnoortheen.nix-ide
oderwat.indent-rainbow
usernamehw.errorlens
ms-vsliveshare.vsliveshare
];
mutableExtensionsDir = false;
enableExtensionUpdateCheck = false;
enableUpdateCheck = false;
userSettings = with config.modules.desktop.fonts.fonts; {
"editor.fontFamily" = "'${monospace.family}', monospace";
"editor.fontSize" = monospace.size + 3; # needed??
"terminal.integrated.fontFamily" = "\"${monospace.family}\"";
"terminal.integrated.fontSize" = monospace.size + 3; # needed??
"telemetry.telemetryLevel" = "off";
"editor.tabSize" = 4;
"editor.cursorSmoothCaretAnimation" = "on";
"window.dialogStyle" = "custom";
"window.titleBarStyle" = "custom";
"workbench.tips.enabled" = false;
"nix.enableLanguageServer" = true;
"nix.serverPath" = "${lib.getExe pkgs.nil}";
"security.workspace.trust.untrustedFiles" = "open";
"explorer.confirmDelete" = false;
"explorer.confirmDragAndDrop" = true;
"editor.smoothScrolling" = true;
"editor.wordWrap" = "on";
"editor.wrappingStrategy" = "advanced";
"editor.fontWeight" = "normal";
"editor.semanticHighlighting.enabled" = true;
# prevent vscode from modifying the terminal colors
"terminal.integrated.minimumContrastRatio" = 1;
};
};
};
}

View file

@ -0,0 +1,30 @@
{ config, lib, pkgs, inputs, ... }:
with lib;
let
cfg = config.modules.software.system.fish;
nix-colors-lib = inputs.nix-colors.lib.contrib { inherit pkgs; };
in {
options.modules.software.system.fish = {
enable = mkEnableOption "Enable fish, the friendly interpreted shell";
};
config = mkIf cfg.enable {
user.packages = [ pkgs.grc ];
environment.systemPackages = with pkgs.fishPlugins; [ fzf-fish tide ];
users.defaultUserShell = pkgs.fish;
programs.fish.enable = true;
hm.programs.fish = let
colorScript = nix-colors-lib.shellThemeFromScheme { scheme = config.colorScheme; };
in {
enable = true;
plugins = [ { name = "grc"; src = pkgs.fishPlugins.grc.src; } ];
interactiveShellInit = ''
sh ${colorScript}
'';
# TODO: add fish greeting?
};
};
}

View file

@ -0,0 +1,42 @@
{ lib, config, ... }:
with lib;
let
cfg = config.modules.software.system.wezterm;
in {
options.modules.software.system.wezterm = {
enable = mkEnableOption "Enable wezterm, a blazingly fast terminal emulator";
};
config = mkIf cfg.enable {
environment.variables.TERM = "wezterm";
hm.programs.wezterm = {
enable = true;
extraConfig = let
fonts = config.modules.desktop.fonts.fonts;
in ''
local wezterm = require 'wezterm'
local config = {}
config.font = wezterm.font '${fonts.monospaceBitmap.family}'
config.font_size = ${toString fonts.monospaceBitmap.size}
config.freetype_load_flags = 'MONOCHROME'
config.enable_wayland = false
config.color_scheme = 'Catppuccin Mocha'
config.use_fancy_tab_bar = false
config.use_resize_increments = true
config.initial_cols = 120
config.initial_rows = 40
config.window_frame = {
font = wezterm.font '${fonts.sans.family}',
font_size = ${toString fonts.sans.size}
}
return config
'';
};
};
}

View file

@ -10,7 +10,7 @@ with lib.my;
config = {
user = rec {
name = "reidlab";
description = "awesome guy";
description = "reid";
extraGroups = ["wheel" "input" "audio" "video" "storage"];
isNormalUser = true;
home = "/home/${name}";
@ -22,8 +22,16 @@ with lib.my;
users.users.${config.user.name} = mkAliasDefinitions options.user;
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
hm.home.username = config.user.name;
hm.home.homeDirectory = lib.mkForce config.user.home;
nix.settings = let
users = ["root" config.user.name];
in {
trusted-users = users;
allowed-users = users;
};
};
}

View file

@ -0,0 +1,28 @@
{ lib, stdenvNoCC, fetchFromGitHub }:
stdenvNoCC.mkDerivation {
pname = "atkinson-hyperlegible-pro";
version = "1.5.1-unstable";
src = fetchFromGitHub {
owner = "jacobxperez";
repo = "atkinson-hyperlegible-pro";
rev = "2576e71d09f57eac8d5e7d9d42b9e7ce49f759e1";
hash = lib.fakeHash;
};
installPhase = ''
runHook preInstall
install -Dm644 -t $out/share/fonts/opentype fonts/otf/*
runHook postInstall
'';
meta = with lib; {
description = "Maintained version of Atkinson Hyperlegible";
homepage = "https://jacobxperez.github.io/atkinson-hyperlegible-pro/";
license = licenses.ofl;
platforms = platforms.all;
};
}

View file

@ -0,0 +1,175 @@
{ lib
, stdenvNoCC
, fetchFromGitHub
, writeText
, config ? {}
}:
let
defaultConfig = {
General = {
### GENERAL
# path to the wallpaper. you can drop files in backgrounds/ to use a relative path, or you can just use an absolute path.
Background="backgrounds/flatppuccin_macchiato.png";
# the font to use throughout the theme. use the name of the font family.
Font="Liga SFMono Nerd Font";
# the distance that stuff should be from the screen edge.
Padding="50";
# specify how round corners should be, or set to 0 to disable rounded corners.
CornerRadius="5";
# the font size used for everything excluding the date and time.
GeneralFontSize="9";
# this allows you to adjust the relative scale of UI elements. you should probably keep the value below 1.
LoginScale="0.175";
### USER PICTURE
# the width of the outline around the user avatar. set to 0 to disable.
UserPictureBorderWidth="5";
# the color of the outline around the user avatar.
UserPictureBorderColor="#c0caf5";
# the color of the default, blank avatar. note that this isonly visible when you don't have a custom picture set.
UserPictureColor="#414868";
### TEXT FIELD (USER AND PASSWORD)
# the color of the text field background for the user and password fields.
TextFieldColor="#414868";
# the color of the text inside the user and password fields.
TextFieldTextColor="#c0caf5";
# the color of the border around the currently selected text field.
TextFieldHighlightColor="#c0caf5";
# the border width of the currently selected text field. set to 0 to disable the border.
TextFieldHighlightWidth="3";
# the placeholder text shown in the user field when nothing is typed.
UserFieldBgText="User";
# the placeholder text shown in the password field when nothing is typed.
PasswordFieldBgText="Password";
### LOGIN BUTTON
# the color of the login button text.
LoginButtonTextColor="#414868";
# the color of the login button background.
LoginButtonBgColor="#c0caf5";
# the text to be displayed on the login button.
LoginButtonText="Login";
### POPUP (POWER, SESSION, AND USER)
# the background color of the popup. this applies to the power panel, session panel, and user panel.
PopupBgColor="#c0caf5";
# the color of the currently selected entry in the popup. this applies to the power panel, session panel, and user panel.
PopupHighlightColor="#414868";
# the color of the text for the currently selectedoption. only applies to session and user popups.
PopupHighlightedTextColor="#c0caf5";
### SESSION BUTTON
# the color of the session button background.
SessionButtonColor="#c0caf5";
# the color of the icon inside the session button.
SessionIconColor="#414868";
### POWER BUTTON
# the color of the power button background.
PowerButtonColor="#c0caf5";
# the color of the power button background.
PowerIconColor="#414868";
### DATE
# the text color of the date.
DateColor="#c0caf5";
# the font size of the date.
DateSize="36";
# whether the date is bolded. accepts either `true` or `false`.
DateIsBold="false";
# whether the date is bolded. accepts either `true` or `false`.
DateOpacity="0.8";
# specify the formatting of the date.
DateFormat="dddd, MMMM d";
### TIME
# the text color of the time.
TimeColor="#c0caf5";
# the font size of the time.
TimeSize="48";
# whether the time is bolded. accepts either `true` or `false`.
TimeIsBold="true";
# the opacity of the time text. set to 1 to disable transparency.
TimeOpacity="0.8";
# specify the formatting of the time.
TimeFormat="hh:mm AP";
};
};
mergedConfig = lib.attrsets.recursiveUpdate defaultConfig config;
in stdenvNoCC.mkDerivation {
pname = "catppuccin-sddm-corners";
version = "unstable-2023-02-17";
src = fetchFromGitHub {
owner = "khaneliman";
repo = "catppuccin-sddm-corners";
rev = "7b7a86ee9a5a2905e7e6623d2af5922ce890ef79";
hash = "sha256-sTnt8RarNXz3RmYfmx4rD+nMlY8rr2n0EN3ntPzOurw=";
};
dontConfigure = true;
dontBuild = true;
installPhase = let
configFile = writeText "catppuccin-sddm-corners-theme-conf" (lib.generators.toINI {
# specifies how to format a key/value pair
mkKeyValue = lib.generators.mkKeyValueDefault {
mkValueString = v: ''"${builtins.toString v}"'';
} " = ";
} mergedConfig);
in ''
runHook preInstall
cp ${configFile} catppuccin/theme.conf
mkdir -p "$out/share/sddm/themes/"
cp -r catppuccin/ "$out/share/sddm/themes/catppuccin-sddm-corners"
runHook postInstall
'';
meta = {
description = "Soothing pastel theme for SDDM based on corners theme.";
homepage = "https://github.com/khaneliman/sddm-catppuccin-corners";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ khaneliman ];
platforms = lib.platforms.linux;
};
}

View file

@ -6,9 +6,14 @@ nix flake config! this is just used on my personal computer
this flake is built upon a single user system for all hosts, enforced by [`modules/user.nix`](./modules/user.nix). this makes it alot easier to make moduels that use nixos and `home-manager`
## hosts
each host should have these files:
- `default.nix`, contains everything relating to the basic system
- `hardware.nix`, hardware configuration.
## todo
- some weird perl error abt locales when building using doas - `keepEnv` might fix this
- move common config such as bootloader and networking settings to [`default.nix`](./default.nix)
- leverage nixos-hardware
- flake-parts (hopefully we can merge the 2 repositories once we find a user solution)
- GOD DAMNIT!!! fonts installed @ [here (line 76)](./modules/desktop/fonts.nix) dont fucking install???