uhhh
uhhh the 2nd rendition
This commit is contained in:
parent
132a109da8
commit
565aac949c
37 changed files with 2606 additions and 36 deletions
BIN
assets/lockscreen.png
Normal file
BIN
assets/lockscreen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 MiB |
BIN
assets/wallpaper.png
Normal file
BIN
assets/wallpaper.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 MiB |
64
config/dunst.conf
Normal file
64
config/dunst.conf
Normal 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
27
config/nwg-drawer.css
Normal 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
98
config/rofi.rasi
Normal 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
101
config/waybar.css
Normal 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;
|
||||
}
|
44
default.nix
44
default.nix
|
@ -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
670
flake.lock
generated
Normal 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
|
||||
}
|
19
flake.nix
19
flake.nix
|
@ -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
0
packages/.gitkeep → goop.lua
Executable file → Normal 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;
|
||||
|
|
|
@ -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
7
lib/options.nix
Normal 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;};
|
||||
}
|
47
modules/desktop/default.nix
Normal file
47
modules/desktop/default.nix
Normal 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
17
modules/desktop/dunst.nix
Normal 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
117
modules/desktop/fonts.nix
Normal 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
|
||||
];
|
||||
});
|
||||
}
|
43
modules/desktop/hypridle.nix
Normal file
43
modules/desktop/hypridle.nix
Normal 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
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
201
modules/desktop/hyprland.nix
Normal file
201
modules/desktop/hyprland.nix
Normal 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
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
72
modules/desktop/hyprlock.nix
Normal file
72
modules/desktop/hyprlock.nix
Normal 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; };
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
28
modules/desktop/hyprpaper.nix
Normal file
28
modules/desktop/hyprpaper.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
18
modules/desktop/nwg-drawer.nix
Normal file
18
modules/desktop/nwg-drawer.nix
Normal 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
22
modules/desktop/rofi.nix
Normal 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
30
modules/desktop/sddm.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
69
modules/desktop/themes/catppuccin/default.nix
Normal file
69
modules/desktop/themes/catppuccin/default.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
}
|
88
modules/desktop/themes/default.nix
Normal file
88
modules/desktop/themes/default.nix
Normal 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
199
modules/desktop/waybar.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
23
modules/hardware/pipewire.nix
Normal file
23
modules/hardware/pipewire.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
51
modules/software/dev/git.nix
Normal file
51
modules/software/dev/git.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
43
modules/software/distractions/discord.nix
Normal file
43
modules/software/distractions/discord.nix
Normal 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 ];
|
||||
})
|
||||
]);
|
||||
}
|
64
modules/software/editors/micro.nix
Normal file
64
modules/software/editors/micro.nix
Normal 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}"
|
||||
'';
|
||||
};
|
||||
}
|
59
modules/software/editors/vscode.nix
Normal file
59
modules/software/editors/vscode.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
30
modules/software/system/fish.nix
Normal file
30
modules/software/system/fish.nix
Normal 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?
|
||||
};
|
||||
};
|
||||
}
|
42
modules/software/system/wezterm.nix
Normal file
42
modules/software/system/wezterm.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
28
packages/atkinson-hyperlegible-pro/default.nix
Normal file
28
packages/atkinson-hyperlegible-pro/default.nix
Normal 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;
|
||||
};
|
||||
}
|
175
packages/catppuccin-sddm-corners/default.nix
Normal file
175
packages/catppuccin-sddm-corners/default.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -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???
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue