font config & assorted goodies
This commit is contained in:
parent
68f969ec59
commit
045f346d3c
10 changed files with 236 additions and 9 deletions
33
README
33
README
|
|
@ -5,6 +5,14 @@ another user level package management method was baffling. Obviously I understan
|
||||||
it can be useful (so I do use it). But where possible I will instead use the functionality
|
it can be useful (so I do use it). But where possible I will instead use the functionality
|
||||||
of Nix rather than Home Manager.
|
of Nix rather than Home Manager.
|
||||||
|
|
||||||
|
###### Structuring Modules
|
||||||
|
Modules are organised into groups (ie "Core"), from here a module is structured as either:
|
||||||
|
1. a single `.nix` file (ie bluetooth.nix). I do this when I won't implement an alternative
|
||||||
|
2. a directory (ie `sound`) containing a set of alternative implementations and a `default.nix`
|
||||||
|
that simply imports one of the implementations. For the `sound` example I currently have it structured
|
||||||
|
to default to `pipewire.nix`. I haven't made alternatives yet but the idea is that it is HIGHLY likely
|
||||||
|
I do in future.
|
||||||
|
|
||||||
|
|
||||||
### TODO
|
### TODO
|
||||||
There are a lot of `TODO` items in this repository. To improve these dotfiles
|
There are a lot of `TODO` items in this repository. To improve these dotfiles
|
||||||
|
|
@ -13,7 +21,32 @@ recommendation I left behind :)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### Small Explanation of Fonts
|
||||||
|
There are four types of fonts (to my knowledge at least):
|
||||||
|
1. serif (funny squigles / small elegant strokes included)
|
||||||
|
2. sans-serif (meaning "without serifs")
|
||||||
|
3. monospace (all glyphs are of a uniform size)
|
||||||
|
4. emoji (cute lil faces)
|
||||||
|
|
||||||
|
Fun fact: on Android, the emojis you are seeing are part of the noto-emoji font :)
|
||||||
|
|
||||||
|
For finding a font for programming I highly recommend trying https://www.codingfont.com/
|
||||||
|
|
||||||
|
|
||||||
|
### My config
|
||||||
|
|
||||||
|
Font:
|
||||||
|
Iosevka nerd font set as default/prefered font
|
||||||
|
Terminal uses IosevkaTerm nerd font
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Credits
|
### Credits
|
||||||
1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles
|
1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles
|
||||||
The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured.
|
The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured.
|
||||||
|
2. https://github.com/Misterio77/nix-starter-configs
|
||||||
|
Really great starter config for learning how parts interact and how to generally structure flakes
|
||||||
|
3. https://nixos.wiki/wiki/Fonts
|
||||||
|
Wiki page explaining how to install fonts and nerd fonts on NixOS
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,9 @@
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
|
|
||||||
#config = {
|
config = {
|
||||||
# allowUnfree = true;
|
allowUnfree = false;
|
||||||
#};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# this is just something I'm experimenting with
|
# this is just something I'm experimenting with
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
./home/emile # ./home/me
|
./home/me
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
123
homes/me/home.nix
Normal file
123
homes/me/home.nix
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./nvim.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config.allowUnfree = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = "me";
|
||||||
|
homeDirectory = "/home/me";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
# Required for home-manager
|
||||||
|
home-manager.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
|
||||||
|
# The terminal I use
|
||||||
|
# TODO: this is dependent on nvim being installed
|
||||||
|
# TODO: make this into a module with a configurable editor option
|
||||||
|
rio = {
|
||||||
|
enable = true;
|
||||||
|
# Rio Config Docs: https://raphamorim.io/rio/docs/config
|
||||||
|
settings = {
|
||||||
|
theme = "dracula";
|
||||||
|
hide-mouse-cursor-when-typing = true;
|
||||||
|
|
||||||
|
use-fork = true; # fork (dont spawn) Rio
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
size = 18;
|
||||||
|
features = [];
|
||||||
|
|
||||||
|
regular = {
|
||||||
|
family = "IosevkaTerm";
|
||||||
|
style = "normal";
|
||||||
|
weight = 400;
|
||||||
|
};
|
||||||
|
|
||||||
|
bold = {
|
||||||
|
family = "IosevkaTerm";
|
||||||
|
style = "normal";
|
||||||
|
weight = 800;
|
||||||
|
};
|
||||||
|
|
||||||
|
italic = {
|
||||||
|
family = "IosevkaTerm";
|
||||||
|
style = "italic";
|
||||||
|
weight = 400;
|
||||||
|
};
|
||||||
|
|
||||||
|
bold-italic = {
|
||||||
|
family = "IosevkaTerm";
|
||||||
|
style = "italic";
|
||||||
|
weight = 800;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Run when the `OpenConfigEditor` keybinding is triggered
|
||||||
|
editor = {
|
||||||
|
program = "nvim";
|
||||||
|
args = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Nicely reload system units when changing configs
|
||||||
|
systemd.user.startServices = "sd-switch";
|
||||||
|
|
||||||
|
home.stateVersion = "24.05"; # don't change this
|
||||||
|
|
||||||
|
/*
|
||||||
|
services = {
|
||||||
|
# Change monitor positions
|
||||||
|
# TODO: find a way to make this modular (ie put something different for my laptop)
|
||||||
|
# my idea is to have a "monitors" module and use kanshi for wayland
|
||||||
|
kanshi = {
|
||||||
|
enable = true;
|
||||||
|
systemdTarget = "hyprland-session.target";
|
||||||
|
# You can find your monitors in hyprland by using `hyprctl monitors all`
|
||||||
|
settings = [
|
||||||
|
{ # 1920x1080@144 gaming monitor
|
||||||
|
output.criteria = "HDMI-A-1";
|
||||||
|
output.mode = "1920x1080@119.98Hz";
|
||||||
|
output.scale = 1.0;
|
||||||
|
output.adaptiveSync = false; # Variable Refresh Rate (this can be changed for gaming)
|
||||||
|
}
|
||||||
|
{ # 4k side monitor
|
||||||
|
output.criteria = "DP-2";
|
||||||
|
output.mode = "3840x2160@60.00Hz";
|
||||||
|
output.scale = 2.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
{ # This is my default setup
|
||||||
|
profile.name = "default";
|
||||||
|
profile.outputs = [
|
||||||
|
{
|
||||||
|
criteria = "DP-2";
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria = "HDMI-A-1";
|
||||||
|
position = "3840,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
@ -78,8 +78,8 @@
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
nitch
|
nitch
|
||||||
|
starfetch
|
||||||
tldr
|
tldr
|
||||||
tree
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -89,7 +89,6 @@
|
||||||
extraGroups = [ "wheel" ];
|
extraGroups = [ "wheel" ];
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
tree
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -99,7 +98,6 @@
|
||||||
extraGroups = [ "wheel" ];
|
extraGroups = [ "wheel" ];
|
||||||
shell = pkgs.fish;
|
shell = pkgs.fish;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
tree
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -108,10 +106,16 @@
|
||||||
|
|
||||||
# ---- SYSTEM PACKAGES -----
|
# ---- SYSTEM PACKAGES -----
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
vim
|
# Personally I think these
|
||||||
wget
|
|
||||||
kitty
|
kitty
|
||||||
|
|
||||||
|
# Pretty necessary
|
||||||
|
#vim
|
||||||
git
|
git
|
||||||
|
|
||||||
|
# Super duper necessary
|
||||||
|
wget
|
||||||
|
tree
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -120,8 +124,45 @@
|
||||||
hyprland.enable = true;
|
hyprland.enable = true;
|
||||||
fish.enable = true;
|
fish.enable = true;
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
|
|
||||||
|
neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
configure = {
|
||||||
|
customRC = ''
|
||||||
|
set number
|
||||||
|
set tabstop=4
|
||||||
|
set shiftwidth=4
|
||||||
|
'';
|
||||||
|
# set cc=80
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# ----- FONTS -----
|
||||||
|
fonts = {
|
||||||
|
enableDefaultPackages = true; # no clue what this line does tbh
|
||||||
|
fonts = with pkgs; [
|
||||||
|
(nerdfonts.override { fonts = [ "Cousine" "Iosevka" "IosevkaTerm" ]; })
|
||||||
|
|
||||||
|
# texlive maintains a noto-emoji flake
|
||||||
|
texlivePackages.noto-emoji
|
||||||
|
];
|
||||||
|
|
||||||
|
fontconfig = {
|
||||||
|
defaultFonts = {
|
||||||
|
serif = [ "Iosevka" ]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font
|
||||||
|
sansSerif = [ "Iosevka "];
|
||||||
|
monospace = [ "Cousine" ];
|
||||||
|
emoji = [ "Noto Emoji" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
# Enable the new CLI commands and the flakes as experimental features
|
# Enable the new CLI commands and the flakes as experimental features
|
||||||
nix.settings.experimental-features = [
|
nix.settings.experimental-features = [
|
||||||
"nix-command"
|
"nix-command"
|
||||||
|
|
|
||||||
0
modules/core/bootloader/default.nix
Normal file
0
modules/core/bootloader/default.nix
Normal file
0
modules/core/bootloader/grub.nix
Normal file
0
modules/core/bootloader/grub.nix
Normal file
0
modules/core/bootloader/systemd-boot.nix
Normal file
0
modules/core/bootloader/systemd-boot.nix
Normal file
0
modules/core/sound/default.nix
Normal file
0
modules/core/sound/default.nix
Normal file
30
modules/hyprland/default.nix
Normal file
30
modules/hyprland/default.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
options.hyprland = {
|
||||||
|
enable = lib.mkEnableOption "Hyprland";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.hyprland.enable {
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
#package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||||
|
xwayland.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: finish this (I didn't like the dotfiles I was getting inspo from and stopped)
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue