initial commit

This commit is contained in:
Maddie H 2024-09-15 12:56:25 +01:00
commit cf17457181
107 changed files with 3560 additions and 0 deletions

448
flake.lock Normal file
View File

@ -0,0 +1,448 @@
{
"nodes": {
"anyrun": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1721135360,
"narHash": "sha256-ZhSA0e45UxiOAjEVqkym/aULh0Dt+KHJLNda7bjx9UI=",
"owner": "Kirottu",
"repo": "anyrun",
"rev": "c6101a31a80b51e32e96f6a77616b609770172e0",
"type": "github"
},
"original": {
"owner": "Kirottu",
"repo": "anyrun",
"type": "github"
}
},
"aquamarine": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1725753098,
"narHash": "sha256-/NO/h/qD/eJXAQr/fHA4mdDgYsNT9thHQ+oT6KPi2ac=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "e4a13203112a036fc7f437d391c7810f3dd5ab52",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"type": "github"
}
},
"crane": {
"inputs": {
"nixpkgs": [
"woomer",
"nixpkgs"
]
},
"locked": {
"lastModified": 1716745752,
"narHash": "sha256-8K1R9Yg4r08rYk86Yq+lu3E9L3uRUb4xMqYHgl0VGS0=",
"owner": "ipetkov",
"repo": "crane",
"rev": "19ca94ec2d288de334ae932107816b4a97736cd8",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"anyrun",
"nixpkgs"
]
},
"locked": {
"lastModified": 1717285511,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1726036828,
"narHash": "sha256-ZQHbpyti0jcAKnwQY1lwmooecLmSG6wX1JakQ/eZNeM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "8a1671642826633586d12ac3158e463c7a50a112",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"hyprcursor": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1722623071,
"narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "912d56025f03d41b1ad29510c423757b4379eb1c",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprcursor",
"type": "github"
}
},
"hyprland": {
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_2",
"xdph": "xdph"
},
"locked": {
"lastModified": 1726246604,
"narHash": "sha256-cScS34F71HzhIUeMScfKrT7iSZA0tr8pGIjOqHF+ue8=",
"ref": "refs/heads/main",
"rev": "d35e70a8c6599bb058cf86eb87c783ce1cf72471",
"revCount": 5218,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
},
"original": {
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hyprland",
"xdph",
"nixpkgs"
],
"systems": [
"hyprland",
"xdph",
"systems"
]
},
"locked": {
"lastModified": 1721326555,
"narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1725997860,
"narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1724966483,
"narHash": "sha256-WXDgKIbzjYKczxSZOsJplCS1i1yrTUpsDPuJV/xpYLo=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "8976e3f6a5357da953a09511d0c7f6a890fb6ec2",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprutils",
"type": "github"
}
},
"hyprwayland-scanner": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1721324119,
"narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1726032244,
"narHash": "sha256-3VvRGPkpBJobQrFD3slQzMAwZlo4/UwxT8933U5tRVM=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "f4f18f3d7229845e1c9d517457b7a0b90a38b728",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1725983898,
"narHash": "sha256-4b3A9zPpxAxLnkF9MawJNHDtOOl6ruL0r6Og1TEDGCE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1355a0cbfeac61d785b7183c0caaec1f97361b43",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"anyrun": "anyrun",
"home-manager": "home-manager",
"hyprland": "hyprland",
"nix-darwin": "nix-darwin",
"nixpkgs": "nixpkgs",
"woomer": "woomer"
}
},
"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": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"woomer": {
"inputs": {
"crane": "crane",
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1721099169,
"narHash": "sha256-KvE1tABLTS1/tPBTu4K6OTwsPhaKWdfSXSZL3bL79Xg=",
"owner": "coffeeispower",
"repo": "woomer",
"rev": "641bc98990e556aee0d084ee13dd76333bf6a9bc",
"type": "github"
},
"original": {
"owner": "coffeeispower",
"repo": "woomer",
"type": "github"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": "hyprland-protocols",
"hyprlang": [
"hyprland",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1726046979,
"narHash": "sha256-6SEsjurq9cdTkITA6d49ncAJe4O/8CgRG5/F//s6Xh8=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "e695669fd8e1d1be9eaae40f35e00f8bd8b64c18",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

199
flake.nix Normal file
View File

@ -0,0 +1,199 @@
{
description = "SpyHoodle Nix Configuration";
inputs = {
# Nixpkgs Unstable
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
# Home Manager
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# Nix Darwin
nix-darwin.url = "github:LnL7/nix-darwin";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
# Hyprland
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hyprland.inputs.nixpkgs.follows = "nixpkgs";
# Any Run
anyrun.url = "github:Kirottu/anyrun";
anyrun.inputs.nixpkgs.follows = "nixpkgs";
# Woomer
woomer.url = "github:coffeeispower/woomer";
woomer.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, home-manager, nix-darwin, ... } @ inputs:
let
username = "maddie";
nixpkgs_aarch64_darwin = import nixpkgs {
config.allowUnfree = true;
system = "aarch64-darwin";
};
nixpkgs_x86_64_linux = import nixpkgs {
config.allowUnfree = true;
config.chromium.enableWideVine = true;
system = "x86_64-linux";
overlays = import ./overlays.nix;
};
in
{
nixosConfigurations."desktop" = nixpkgs.lib.nixosSystem
{
specialArgs = { inherit username; inherit inputs; };
pkgs = nixpkgs_x86_64_linux;
system = "x86_64-linux";
modules = [
home-manager.nixosModules.home-manager
{
home-manager.users.${username}.imports = [
./homes/common/ssh
./homes/common/amfora.nix
./homes/common/btop.nix
./homes/common/eza.nix
./homes/common/fetch.nix
./homes/common/git.nix
./homes/common/helix.nix
./homes/common/htop.nix
./homes/common/kakoune
./homes/common/latex.nix
./homes/common/lf
./homes/common/media-tools.nix
./homes/common/python.nix
./homes/common/rust.nix
./homes/common/shell.nix
./homes/common/starship.nix
./homes/common/tmux.nix
./homes/common/wezterm.nix
./homes/common/xdg.nix
./homes/common/zsh.nix
./homes/desktop/alacritty.nix
./homes/desktop/anyrun.nix
./homes/desktop/audio.nix
./homes/desktop/chromium.nix
./homes/desktop/cider.nix
./homes/desktop/cursor.nix
./homes/desktop/discord.nix
./homes/desktop/dmenu.nix
./homes/desktop/element.nix
./homes/desktop/games.nix
./homes/desktop/gtk.nix
./homes/desktop/home.nix
./homes/desktop/hyprland.nix
./homes/desktop/hyprlock.nix
./homes/desktop/hyprpaper.nix
./homes/desktop/kdeconnect.nix
./homes/desktop/kitty.nix
./homes/desktop/librewolf.nix
./homes/desktop/minecraft.nix
./homes/desktop/mpv.nix
./homes/desktop/ncdu.nix
./homes/desktop/steam.nix
./homes/desktop/syncplay.nix
./homes/desktop/terminals.nix
./homes/desktop/tor-browser.nix
./homes/desktop/uxplay.nix
./homes/desktop/waybar.nix
./homes/desktop/wine.nix
./homes/desktop/wlogout.nix
./homes/desktop/xdg.nix
./homes/desktop/xorg.nix
./homes/desktop/zathura.nix
inputs.anyrun.homeManagerModules.default
];
home-manager.extraSpecialArgs = { inherit username; inherit inputs; pkgs = nixpkgs_x86_64_linux; };
}
./systems/desktop/audio.nix
./systems/desktop/avahi.nix
./systems/desktop/bluetooth.nix
./systems/desktop/boot.nix
./systems/desktop/clicks-tailscale.nix
./systems/desktop/cpu.nix
./systems/desktop/doas.nix
./systems/desktop/firewall.nix
./systems/desktop/fonts.nix
./systems/desktop/gpg.nix
./systems/desktop/hardware.nix
./systems/desktop/hyprland.nix
./systems/desktop/hyprlock.nix
./systems/desktop/locale.nix
./systems/desktop/ly.nix
./systems/desktop/man.nix
./systems/desktop/networking.nix
./systems/desktop/nix-ld.nix
./systems/desktop/nix.nix
./systems/desktop/nixos.nix
./systems/desktop/nvidia.nix
./systems/desktop/packages.nix
./systems/desktop/security.nix
./systems/desktop/ssh.nix
./systems/desktop/systemd.nix
./systems/desktop/tailscale.nix
./systems/desktop/users.nix
./systems/desktop/xdg.nix
./systems/desktop/xorg.nix
./systems/desktop/yubikey.nix
./systems/desktop/zsh.nix
];
};
darwinConfigurations."laptop" = nix-darwin.lib.darwinSystem {
pkgs = nixpkgs_aarch64_darwin;
system = "aarch64-darwin";
specialArgs = {
inherit username;
};
modules = [
# Home Manager Modules
home-manager.darwinModules.home-manager
{
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {
inherit username;
pkgs = nixpkgs_aarch64_darwin;
};
home-manager.users.${username}.imports = [
./homes/laptop/home.nix
./homes/laptop/ssh.nix
./homes/common/ssh
./homes/common/amfora.nix
./homes/common/btop.nix
./homes/common/eza.nix
./homes/common/fetch.nix
./homes/common/git.nix
./homes/common/helix.nix
./homes/common/htop.nix
./homes/common/kakoune
./homes/common/latex.nix
./homes/common/lf
./homes/common/media-tools.nix
./homes/common/python.nix
./homes/common/rust.nix
./homes/common/shell.nix
./homes/common/starship.nix
./homes/common/tmux.nix
./homes/common/wezterm.nix
./homes/common/xdg.nix
./homes/common/zsh.nix
];
}
# Nix Darwin Modules
./systems/laptop/fonts.nix
./systems/laptop/gpg.nix
./systems/laptop/nix.nix
./systems/laptop/packages.nix
./systems/laptop/ssh.nix
./systems/laptop/sudo.nix
./systems/laptop/zsh.nix
];
};
formatter.aarch64-darwin = nixpkgs_aarch64_darwin.legacyPackages.aarch64-darwin.nixpkgs-fmt;
};
}

7
homes/common/amfora.nix Normal file
View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
amfora
];
}

10
homes/common/btop.nix Normal file
View File

@ -0,0 +1,10 @@
{
programs.btop = {
enable = true;
settings = {
color_theme = "TTY";
theme_background = false;
truecolor = true;
};
};
}

13
homes/common/eza.nix Normal file
View File

@ -0,0 +1,13 @@
{
programs.eza = {
enable = true;
icons = true;
extraOptions = [
"--group-directories-first"
"--time-style=long-iso"
"--git"
"-h"
"-g"
];
};
}

9
homes/common/fetch.nix Normal file
View File

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
pridefetch
neofetch
pfetch
];
}

46
homes/common/git.nix Normal file
View File

@ -0,0 +1,46 @@
{ pkgs, ... }:
{
programs.git = {
enable = true;
lfs.enable = true;
userName = "Maddie H";
userEmail = "maddie@spyhoodle.me";
signing = {
key = "FA50688B9EB6D8AA070C8241C296DE8C9053683F";
signByDefault = true;
gpgPath = "/run/current-system/sw/bin/gpg";
};
aliases = {
graph = "log --graph --oneline --decorate";
unstage = "reset HEAD --";
co = "checkout";
br = "branch";
ci = "commit";
st = "status";
ps = "push";
};
extraConfig = {
init.defaultBranch = "development";
pull.rebase = "merges";
core.sshCommand = "/run/current-system/sw/bin/ssh";
};
ignores = [
"**/.DS_Store"
"**/._.DS_Store"
".DS_Store"
"._.DS_Store"
"**/*.swp"
"*.swp"
];
};
home.packages = with pkgs; [
gh
git-review
];
}

13
homes/common/helix.nix Normal file
View File

@ -0,0 +1,13 @@
{
programs.helix = {
enable = true;
settings = {
theme = "onedark";
keys.normal = {
space.space = "file_picker";
space.w = ":w";
space.q = ":q";
};
};
};
}

20
homes/common/htop.nix Normal file
View File

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
programs.htop = {
enable = true;
package = pkgs.htop-vim;
settings = {
hide_kernel_threads = 1;
hide_userland_threads = 1;
highlight_base_name = 1;
show_cpu_usage = 1;
show_cpu_frequency = 1;
show_cpu_temperature = 1;
degree_fahrenheit = 0;
enable_mouse = 1;
tree_view = 1;
};
};
}

View File

@ -0,0 +1,93 @@
# CODE
set-face global value yellow
set-face global type yellow
set-face global variable red
set-face global module yellow
set-face global function blue
set-face global string green
set-face global keyword magenta
set-face global operator white
set-face global attribute cyan
set-face global comment white+d
set-face global documentation white+d
set-face global meta cyan
set-face global builtin yellow
# MARKUP
set-face global title yellow
set-face global header green
set-face global mono cyan
set-face global block magenta
set-face global link blue
set-face global bullet yellow
set-face global list white
# BUILTIN
set-face global Default white
set-face global PrimarySelection black,blue
set-face global SecondarySelection black,green
set-face global PrimaryCursor black,white
set-face global SecondaryCursor black,cyan
set-face global PrimaryCursorEol black,red
set-face global SecondaryCursorEol black,red
set-face global LineNumbers white
set-face global LineNumberCursor yellow
set-face global LineNumbersWrapped black
set-face global MenuForeground blue
set-face global MenuBackground default
set-face global MenuInfo green
set-face global Information default
set-face global Error red
set-face global StatusLine default
set-face global StatusLineMode yellow
set-face global StatusLineInfo blue
set-face global StatusLineValue white
set-face global StatusCursor black,blue
set-face global Prompt blue
set-face global MatchingChar +bu
set-face global BufferPadding black
set-face global Whitespace white+d
# PLUGINS
# kak-lsp
set-face global InlayHint +d@type
set-face global parameter +i@variable
set-face global enum cyan
set-face global InlayDiagnosticError red
set-face global InlayDiagnosticWarning yellow
set-face global InlayDiagnosticInfo blue
set-face global InlayDiagnosticHint white
set-face global LineFlagError red
set-face global LineFlagWarning yellow
set-face global LineFlagInfo blue
set-face global LineFlagHint white
set-face global DiagnosticError +u
set-face global DiagnosticWarning +u
set-face global DiagnosticInfo +u
set-face global DiagnosticHint +u
# Infobox faces
set-face global InfoDefault Information
set-face global InfoBlock block
set-face global InfoBlockQuote block
set-face global InfoBullet bullet
set-face global InfoHeader header
set-face global InfoLink link
set-face global InfoLinkMono header
set-face global InfoMono mono
set-face global InfoRule comment
set-face global InfoDiagnosticError InlayDiagnosticError
set-face global InfoDiagnosticHint InlayDiagnosticHint
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
# kak-rainbower
try %{ set-option global rainbow_colors yellow magenta blue }
# For backwards compatibility
define-command -override -hidden one-enable-fancy-underlines %{
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
}

View File

@ -0,0 +1,117 @@
# One Dark
declare-option str fg "abb2bf"
declare-option str bg "282c34"
declare-option str subbg "373c47"
declare-option str lightred "e06c75"
declare-option str darkred "be5046"
declare-option str green "98c379"
declare-option str lightorange "e5c07b"
declare-option str darkorange "d19a66"
declare-option str blue "61afef"
declare-option str magenta "c678dd"
declare-option str cyan "56b6c2"
declare-option str comment "5c6370"
declare-option str hint "ffffff"
declare-option str cursoralpha "80"
declare-option str selectionalpha "40"
# Menus do not support transparency, so we must hardcode the selection + sub bg colors
declare-option str menuselection "405770"
# CODE
set-face global value "rgb:%opt{darkorange}"
set-face global type "rgb:%opt{lightorange}"
set-face global variable "rgb:%opt{lightred}"
set-face global module "rgb:%opt{lightorange}"
set-face global function "rgb:%opt{blue}"
set-face global string "rgb:%opt{green}"
set-face global keyword "rgb:%opt{magenta}"
set-face global operator "rgb:%opt{fg}"
set-face global attribute "rgb:%opt{cyan}"
set-face global comment "rgb:%opt{comment}"
set-face global documentation "rgb:%opt{comment}"
set-face global meta "rgb:%opt{cyan}"
set-face global builtin "rgb:%opt{lightorange}"
# MARKUP
set-face global title "rgb:%opt{darkorange}"
set-face global header "rgb:%opt{green}"
set-face global mono "rgb:%opt{cyan}"
set-face global block "rgb:%opt{magenta}"
set-face global link "rgb:%opt{blue}"
set-face global bullet "rgb:%opt{lightorange}"
set-face global list "rgb:%opt{fg}"
# BUILTIN
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}"
set-face global PrimarySelection "default,rgba:%opt{blue}%opt{selectionalpha}"
set-face global SecondarySelection "default,rgba:%opt{green}%opt{selectionalpha}"
set-face global PrimaryCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
set-face global SecondaryCursor "default,rgba:%opt{green}%opt{cursoralpha}"
set-face global PrimaryCursorEol "default,rgba:%opt{lightred}%opt{cursoralpha}"
set-face global SecondaryCursorEol "default,rgba:%opt{darkorange}%opt{cursoralpha}"
set-face global LineNumbers "rgb:%opt{comment}"
set-face global LineNumberCursor "rgb:%opt{darkorange}"
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}"
set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{menuselection}"
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global MenuInfo "rgb:%opt{green}"
set-face global Information "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global Error "rgb:%opt{lightred}"
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global StatusLineMode "rgb:%opt{darkorange}"
set-face global StatusLineInfo "rgb:%opt{blue}"
set-face global StatusLineValue "rgb:%opt{fg}"
set-face global StatusCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
set-face global Prompt "rgb:%opt{blue}"
set-face global MatchingChar "default,rgb:%opt{subbg}"
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}"
set-face global Whitespace "rgb:%opt{comment}"
# PLUGINS
# kak-lsp
set-face global InlayHint "+d@type"
set-face global parameter "+i@variable"
set-face global enum "rgb:%opt{cyan}"
set-face global InlayDiagnosticError "rgb:%opt{lightred}"
set-face global InlayDiagnosticWarning "rgb:%opt{lightorange}"
set-face global InlayDiagnosticInfo "rgb:%opt{blue}"
set-face global InlayDiagnosticHint "rgb:%opt{hint}"
set-face global LineFlagError "rgb:%opt{lightred}"
set-face global LineFlagWarning "rgb:%opt{lightorange}"
set-face global LineFlagInfo "rgb:%opt{blue}"
set-face global LineFlagHint "rgb:%opt{hint}"
set-face global DiagnosticError ",,rgb:%opt{lightred}+c"
set-face global DiagnosticWarning ",,rgb:%opt{lightorange}+c"
set-face global DiagnosticInfo ",,rgb:%opt{blue}+c"
set-face global DiagnosticHint ",,rgb:%opt{hint}+u"
# Infobox faces
set-face global InfoDefault Information
set-face global InfoBlock block
set-face global InfoBlockQuote block
set-face global InfoBullet bullet
set-face global InfoHeader header
set-face global InfoLink link
set-face global InfoLinkMono header
set-face global InfoMono mono
set-face global InfoRule comment
set-face global InfoDiagnosticError InlayDiagnosticError
set-face global InfoDiagnosticHint InlayDiagnosticHint
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
# kak-rainbower
try %{ set-option global rainbow_colors "rgb:%opt{lightorange}" "rgb:%opt{magenta}" "rgb:%opt{blue}" }
# For backwards compatibility
define-command -override -hidden one-enable-fancy-underlines %{
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
}

View File

@ -0,0 +1,101 @@
# CODE
set-face global value yellow
set-face global type yellow
set-face global variable white
set-face global module yellow
set-face global function blue
set-face global string green
set-face global keyword magenta
set-face global operator red
set-face global attribute cyan
set-face global comment white+d
set-face global documentation white+d
set-face global meta cyan
set-face global builtin yellow
# MARKUP
set-face global title yellow
set-face global header green
set-face global mono cyan
set-face global block magenta
set-face global link blue
set-face global bullet yellow
set-face global list white
# BUILTIN
set-face global Default white
set-face global PrimarySelection black,blue
set-face global SecondarySelection black,green
set-face global PrimaryCursor black,white
set-face global SecondaryCursor black,cyan
set-face global PrimaryCursorEol black,red
set-face global SecondaryCursorEol black,red
set-face global LineNumbers white
set-face global LineNumberCursor yellow
set-face global LineNumbersWrapped black
set-face global MenuForeground blue
set-face global MenuBackground default
set-face global MenuInfo green
set-face global Information default
set-face global Error red
set-face global StatusLine default
set-face global StatusLineMode yellow
set-face global StatusLineInfo blue
set-face global StatusLineValue white
set-face global StatusCursor black,blue
set-face global Prompt blue
set-face global MatchingChar +bu
set-face global BufferPadding black
set-face global Whitespace white+d
# PLUGINS
# kak-lsp
set-face global InlayHint +d@type
set-face global parameter +i@variable
set-face global enum cyan
set-face global InlayDiagnosticError red
set-face global InlayDiagnosticWarning yellow
set-face global InlayDiagnosticInfo blue
set-face global InlayDiagnosticHint white
set-face global LineFlagError red
set-face global LineFlagWarning yellow
set-face global LineFlagInfo blue
set-face global LineFlagHint white
set-face global DiagnosticError +u
set-face global DiagnosticWarning +u
set-face global DiagnosticInfo +u
set-face global DiagnosticHint +u
# Infobox faces
set-face global InfoDefault Information
set-face global InfoBlock block
set-face global InfoBlockQuote block
set-face global InfoBullet bullet
set-face global InfoHeader header
set-face global InfoLink link
set-face global InfoLinkMono header
set-face global InfoMono mono
set-face global InfoRule comment
set-face global InfoDiagnosticError InlayDiagnosticError
set-face global InfoDiagnosticHint InlayDiagnosticHint
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
# kak-rainbower
try %{ set-option global rainbow_colors yellow magenta blue }
# For backwards compatibility
define-command -override -hidden one-enable-fancy-underlines %{
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
}
# Hardcoded selection + bg colors
# set-face global PrimarySelection default,rgb:2a3f53
# set-face global SecondarySelection default,rgb:384435
# set-face global PrimaryCursor default,rgb:3c6487
# set-face global SecondaryCursor default,rgb:586e4c
# set-face global PrimaryCursorEol default,rgb:7c434a
# set-face global SecondaryCursorEol default,rgb:7c434a

View File

@ -0,0 +1,125 @@
# One Darker
# This theme is a personalized implementation of One Dark.
# Changes include:
# - Darker background color
# - Variables are white instead of red
# - Operators are red instead of white
# - Comments are more visible
# COLORS
declare-option str fg "abb2bf"
declare-option str bg "181a1f"
declare-option str subbg "272b33"
declare-option str lightred "e06c75"
declare-option str darkred "be5046"
declare-option str green "98c379"
declare-option str lightorange "e5c07b"
declare-option str darkorange "d19a66"
declare-option str blue "61afef"
declare-option str magenta "c678dd"
declare-option str cyan "56b6c2"
declare-option str comment "70798a"
declare-option str hint "ffffff"
declare-option str cursoralpha "80"
declare-option str selectionalpha "40"
# Menus do not support transparency, so we must hardcode the selection + sub bg colors
declare-option str menuselection "344b61"
# CODE
set-face global value "rgb:%opt{darkorange}"
set-face global type "rgb:%opt{lightorange}"
set-face global variable "rgb:%opt{fg}"
set-face global module "rgb:%opt{lightorange}"
set-face global function "rgb:%opt{blue}"
set-face global string "rgb:%opt{green}"
set-face global keyword "rgb:%opt{magenta}"
set-face global operator "rgb:%opt{lightred}"
set-face global attribute "rgb:%opt{cyan}"
set-face global comment "rgb:%opt{comment}"
set-face global documentation "rgb:%opt{comment}"
set-face global meta "rgb:%opt{cyan}"
set-face global builtin "rgb:%opt{lightorange}"
# MARKUP
set-face global title "rgb:%opt{darkorange}"
set-face global header "rgb:%opt{green}"
set-face global mono "rgb:%opt{cyan}"
set-face global block "rgb:%opt{magenta}"
set-face global link "rgb:%opt{blue}"
set-face global bullet "rgb:%opt{lightorange}"
set-face global list "rgb:%opt{fg}"
# BUILTIN
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}"
set-face global PrimarySelection "default,rgba:%opt{blue}%opt{selectionalpha}"
set-face global SecondarySelection "default,rgba:%opt{green}%opt{selectionalpha}"
set-face global PrimaryCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
set-face global SecondaryCursor "default,rgba:%opt{green}%opt{cursoralpha}"
set-face global PrimaryCursorEol "default,rgba:%opt{lightred}%opt{cursoralpha}"
set-face global SecondaryCursorEol "default,rgba:%opt{darkorange}%opt{cursoralpha}"
set-face global LineNumbers "rgb:%opt{comment}"
set-face global LineNumberCursor "rgb:%opt{darkorange}"
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}"
set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{menuselection}"
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global MenuInfo "rgb:%opt{green}"
set-face global Information "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global Error "rgb:%opt{lightred}"
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global StatusLineMode "rgb:%opt{darkorange}"
set-face global StatusLineInfo "rgb:%opt{blue}"
set-face global StatusLineValue "rgb:%opt{fg}"
set-face global StatusCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
set-face global Prompt "rgb:%opt{blue}"
set-face global MatchingChar "default,rgb:%opt{subbg}"
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}"
set-face global Whitespace "rgb:%opt{comment}"
# PLUGINS
# kak-lsp
set-face global InlayHint "+d@type"
set-face global parameter "+i@variable"
set-face global enum "rgb:%opt{cyan}"
set-face global InlayDiagnosticError "rgb:%opt{lightred}"
set-face global InlayDiagnosticWarning "rgb:%opt{lightorange}"
set-face global InlayDiagnosticInfo "rgb:%opt{blue}"
set-face global InlayDiagnosticHint "rgb:%opt{hint}"
set-face global LineFlagError "rgb:%opt{lightred}"
set-face global LineFlagWarning "rgb:%opt{lightorange}"
set-face global LineFlagInfo "rgb:%opt{blue}"
set-face global LineFlagHint "rgb:%opt{hint}"
set-face global DiagnosticError ",,rgb:%opt{lightred}+c"
set-face global DiagnosticWarning ",,rgb:%opt{lightorange}+c"
set-face global DiagnosticInfo ",,rgb:%opt{blue}+c"
set-face global DiagnosticHint ",,rgb:%opt{hint}+u"
# Infobox faces
set-face global InfoDefault Information
set-face global InfoBlock block
set-face global InfoBlockQuote block
set-face global InfoBullet bullet
set-face global InfoHeader header
set-face global InfoLink link
set-face global InfoLinkMono header
set-face global InfoMono mono
set-face global InfoRule comment
set-face global InfoDiagnosticError InlayDiagnosticError
set-face global InfoDiagnosticHint InlayDiagnosticHint
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
# kak-rainbower
try %{ set-option global rainbow_colors "rgb:%opt{lightorange}" "rgb:%opt{magenta}" "rgb:%opt{blue}" }
# For backwards compatibility
define-command -override -hidden one-enable-fancy-underlines %{
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
}

View File

@ -0,0 +1,93 @@
# CODE
set-face global value yellow
set-face global type yellow
set-face global variable red
set-face global module yellow
set-face global function blue
set-face global string green
set-face global keyword magenta
set-face global operator black
set-face global attribute cyan
set-face global comment black+d
set-face global documentation black+d
set-face global meta cyan
set-face global builtin yellow
# MARKUP
set-face global title yellow
set-face global header green
set-face global mono cyan
set-face global block magenta
set-face global link blue
set-face global bullet yellow
set-face global list white
# BUILTIN
set-face global Default black
set-face global PrimarySelection black,blue
set-face global SecondarySelection black,green
set-face global PrimaryCursor black,white
set-face global SecondaryCursor black,cyan
set-face global PrimaryCursorEol black,red
set-face global SecondaryCursorEol black,red
set-face global LineNumbers black
set-face global LineNumberCursor yellow
set-face global LineNumbersWrapped white
set-face global MenuForeground blue
set-face global MenuBackground default
set-face global MenuInfo green
set-face global Information default
set-face global Error red
set-face global StatusLine default
set-face global StatusLineMode yellow
set-face global StatusLineInfo blue
set-face global StatusLineValue white
set-face global StatusCursor black,blue
set-face global Prompt blue
set-face global MatchingChar +bu
set-face global BufferPadding white
set-face global Whitespace black+d
# PLUGINS
# kak-lsp
set-face global InlayHint +d@type
set-face global parameter +i@variable
set-face global enum cyan
set-face global InlayDiagnosticError red
set-face global InlayDiagnosticWarning yellow
set-face global InlayDiagnosticInfo blue
set-face global InlayDiagnosticHint white
set-face global LineFlagError red
set-face global LineFlagWarning yellow
set-face global LineFlagInfo blue
set-face global LineFlagHint white
set-face global DiagnosticError +u
set-face global DiagnosticWarning +u
set-face global DiagnosticInfo +u
set-face global DiagnosticHint +u
# Infobox faces
set-face global InfoDefault Information
set-face global InfoBlock block
set-face global InfoBlockQuote block
set-face global InfoBullet bullet
set-face global InfoHeader header
set-face global InfoLink link
set-face global InfoLinkMono header
set-face global InfoMono mono
set-face global InfoRule comment
set-face global InfoDiagnosticError InlayDiagnosticError
set-face global InfoDiagnosticHint InlayDiagnosticHint
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
# kak-rainbower
try %{ set-option global rainbow_colors yellow magenta blue }
# For backwards compatibility
define-command -override -hidden one-enable-fancy-underlines %{
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
}

View File

@ -0,0 +1,117 @@
# One Light
declare-option str fg "4b4c54"
declare-option str bg "fafafa"
declare-option str subbg "e6e6e6"
declare-option str lightred "e45649"
declare-option str darkred "ca1243"
declare-option str green "50a14f"
declare-option str lightorange "c18401"
declare-option str darkorange "986801"
declare-option str blue "4078f2"
declare-option str magenta "a626a4"
declare-option str cyan "0184bc"
declare-option str comment "a0a1a7"
declare-option str hint "000000"
declare-option str cursoralpha "80"
declare-option str selectionalpha "40"
# Menus do not support transparency, so we must hardcode the selection + sub bg colors
declare-option str menuselection "bbc9e8"
# CODE
set-face global value "rgb:%opt{darkorange}"
set-face global type "rgb:%opt{lightorange}"
set-face global variable "rgb:%opt{lightred}"
set-face global module "rgb:%opt{lightorange}"
set-face global function "rgb:%opt{blue}"
set-face global string "rgb:%opt{green}"
set-face global keyword "rgb:%opt{magenta}"
set-face global operator "rgb:%opt{fg}"
set-face global attribute "rgb:%opt{cyan}"
set-face global comment "rgb:%opt{comment}"
set-face global documentation "rgb:%opt{comment}"
set-face global meta "rgb:%opt{cyan}"
set-face global builtin "rgb:%opt{lightorange}"
# MARKUP
set-face global title "rgb:%opt{darkorange}"
set-face global header "rgb:%opt{green}"
set-face global mono "rgb:%opt{cyan}"
set-face global block "rgb:%opt{magenta}"
set-face global link "rgb:%opt{blue}"
set-face global bullet "rgb:%opt{lightorange}"
set-face global list "rgb:%opt{fg}"
# BUILTIN
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}"
set-face global PrimarySelection "default,rgba:%opt{blue}%opt{selectionalpha}"
set-face global SecondarySelection "default,rgba:%opt{green}%opt{selectionalpha}"
set-face global PrimaryCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
set-face global SecondaryCursor "default,rgba:%opt{green}%opt{cursoralpha}"
set-face global PrimaryCursorEol "default,rgba:%opt{lightred}%opt{cursoralpha}"
set-face global SecondaryCursorEol "default,rgba:%opt{darkorange}%opt{cursoralpha}"
set-face global LineNumbers "rgb:%opt{comment}"
set-face global LineNumberCursor "rgb:%opt{darkorange}"
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}"
set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{menuselection}"
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global MenuInfo "rgb:%opt{green}"
set-face global Information "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global Error "rgb:%opt{lightred}"
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{subbg}"
set-face global StatusLineMode "rgb:%opt{darkorange}"
set-face global StatusLineInfo "rgb:%opt{blue}"
set-face global StatusLineValue "rgb:%opt{fg}"
set-face global StatusCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
set-face global Prompt "rgb:%opt{blue}"
set-face global MatchingChar "default,rgb:%opt{subbg}"
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}"
set-face global Whitespace "rgb:%opt{comment}"
# PLUGINS
# kak-lsp
set-face global InlayHint "+d@type"
set-face global parameter "+i@variable"
set-face global enum "rgb:%opt{cyan}"
set-face global InlayDiagnosticError "rgb:%opt{lightred}"
set-face global InlayDiagnosticWarning "rgb:%opt{lightorange}"
set-face global InlayDiagnosticInfo "rgb:%opt{blue}"
set-face global InlayDiagnosticHint "rgb:%opt{hint}"
set-face global LineFlagError "rgb:%opt{lightred}"
set-face global LineFlagWarning "rgb:%opt{lightorange}"
set-face global LineFlagInfo "rgb:%opt{blue}"
set-face global LineFlagHint "rgb:%opt{hint}"
set-face global DiagnosticError ",,rgb:%opt{lightred}+c"
set-face global DiagnosticWarning ",,rgb:%opt{lightorange}+c"
set-face global DiagnosticInfo ",,rgb:%opt{blue}+c"
set-face global DiagnosticHint ",,rgb:%opt{hint}+u"
# Infobox faces
set-face global InfoDefault Information
set-face global InfoBlock block
set-face global InfoBlockQuote block
set-face global InfoBullet bullet
set-face global InfoHeader header
set-face global InfoLink link
set-face global InfoLinkMono header
set-face global InfoMono mono
set-face global InfoRule comment
set-face global InfoDiagnosticError InlayDiagnosticError
set-face global InfoDiagnosticHint InlayDiagnosticHint
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
# kak-rainbower
try %{ set-option global rainbow_colors "rgb:%opt{lightorange}" "rgb:%opt{magenta}" "rgb:%opt{blue}" }
# For backwards compatibility
define-command -override -hidden one-enable-fancy-underlines %{
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
}

View File

@ -0,0 +1,76 @@
{ pkgs, ... }:
{
programs.kakoune = {
enable = true;
config = {
colorScheme = "one-dark";
showWhitespace.enable = false;
scrollOff.lines = 3;
tabStop = 4;
numberLines = {
enable = true;
relative = true;
};
ui = {
statusLine = "top";
assistant = "cat";
enableMouse = true;
setTitle = true;
};
hooks = [
{
name = "WinSetOption";
option = "filetype=nix";
commands = ''
set-option window indentwidth 2
set-option window formatcmd nixpkgs-fmt
'';
}
];
};
plugins = with pkgs.kakounePlugins; [
kakoune-rainbow
powerline-kak
auto-pairs-kak
pkgs.kak-lsp
];
extraConfig = ''
# Tabs
hook global InsertChar \t %{ exec -draft h@ }
add-highlighter global/ show-whitespaces -tab '' -tabpad ''
# Kak-LSP
eval %sh{kak-lsp --kakoune -s $kak_session}
lsp-enable
# Modeline
declare-option bool lsp_enabled false
declare-option -hidden str lsp_modeline_progress ""
define-command -hidden -params 6 -override lsp-handle-progress %{
set-option global lsp_modeline_progress %sh{
if ! "$6"; then
echo "$2\$\{5:+" ($5%)"}\$\{4:+": $4"}"
fi
}
}
declare-option -hidden str modeline_git_branch
hook global WinDisplay .* %{
set-option window modeline_git_branch %sh{
branch=$(git -C "\$\{kak_buffile%/*}" rev-parse --abbrev-ref HEAD 2>/dev/null)
if [ -n "$branch" ]; then
printf "$branch "
fi
}
}
set-option global modelinefmt '%opt{lsp_modeline_progress} {StatusLine}{string}%opt{modeline_git_branch}{type}%sh{ [ -n "$kak_opt_filetype" ] && echo "$kak_opt_filetype " }{default}%val{bufname}{{context_info}}{default} {{mode_info}} {meta}%val{cursor_line}:%val{cursor_char_column}'
'';
};
xdg.configFile."kak/colors" = {
source = ./colors;
recursive = true;
};
}

7
homes/common/latex.nix Normal file
View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
texlive.combined.scheme-full
];
}

View File

@ -0,0 +1,26 @@
{ pkgs, ... }:
{
programs.lf = {
enable = true;
previewer.source = ./scope;
settings = {
relativenumber = true;
number = true;
hidden = false;
preview = true;
icons = true;
};
};
xdg.configFile = {
"lf/icons" = {
source = ./icons;
};
};
home.packages = with pkgs; [
ueberzug
file
];
}

93
homes/common/lf/icons Normal file
View File

@ -0,0 +1,93 @@
di 
fi 
tw 
ow 
ln 
or 
ex 
*.txt 
*.mom 
*.me 
*.ms 
*.avif 
*.png 
*.webp 
*.ico 
*.gif 
*.tif 
*.tiff 
*.jpg 
*.jpe 
*.jpeg 
*.heif 
*.svg 
*.xcf 
*.gpg 
*.pdf 
*.djvu 
*.epub 
*.csv 
*.xlsx 
*.tex 
*.md 
*.mp3 
*.opus 
*.ogg 
*.m4a 
*.flac 
*.wav 
*.mkv 
*.mp4 
*.webm 
*.mpeg 
*.avi 
*.mov 
*.mpg 
*.wmv 
*.m4b 
*.flv 
*.zip 
*.rar 
*.7z 
*.tar 
*.gz 
*.z64 󰺷
*.v64 󰺷
*.n64 󰺷
*.gdi 󰺷
*.gba 󱎓
*.nes 󰺶
*.exe 
*.1 
*.nfo 
*.info 
*.log 
*.iso 
*.img 
*.bib 
*.part 󰋮
*.torrent 
*.gitignore 
*.jar 
*.java 
*.r 
*.R 
*.rmd 
*.Rmd 
*.m 
*.rs 
*.go 
*.c 
*.cpp 
*.h 
*.py 
*.js 
*.json 
*.ts 󰛦
*.sh 
*.html 
*.css 
*.xml 
*.php 
*.nix 
*.vim 

40
homes/common/lf/scope Executable file
View File

@ -0,0 +1,40 @@
#!/usr/bin/env sh
# File preview handler for lf.
set -C -f
IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
# Note that the cache file name is a function of file information, meaning if
# an image appears in multiple places across the machine, it will not have to
# be regenerated once seen.
case "$(file --dereference --brief --mime-type -- "$1")" in
image/avif) CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
[ ! -f "$CACHE" ] && convert "$1" "$CACHE.jpg"
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" ;;
image/*) lsix "$1" ;;
text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
text/troff) man ./ "$1" | col -b ;;
text/* | */xml | application/json) bat --terminal-width "$(($4-2))" -f "$1" ;;
audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
video/* )
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
[ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
image "$CACHE" "$2" "$3" "$4" "$5" "$1"
;;
*/pdf)
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
[ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
;;
*/epub+zip|*/mobi*)
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
[ ! -f "$CACHE.jpg" ] && gnome-epub-thumbnailer "$1" "$CACHE.jpg"
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
;;
application/*zip) atool --list -- "$1" ;;
*opendocument*) odt2txt "$1" ;;
application/pgp-encrypted) gpg -d -- "$1" ;;
esac
exit 1

View File

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
imagemagick
libheif
ffmpeg
];
}

7
homes/common/python.nix Normal file
View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
python312Full
];
}

15
homes/common/rust.nix Normal file
View File

@ -0,0 +1,15 @@
{ config, pkgs, ... }:
{
home.packages = with pkgs; [
rustup
];
home = {
sessionVariables = {
CARGO_HOME = "${config.xdg.dataHome}/cargo";
RUSTUP_HOME = "${config.xdg.dataHome}/rustup";
};
sessionPath = [ "${config.home.sessionVariables.CARGO_HOME}/bin" ];
};
}

37
homes/common/shell.nix Normal file
View File

@ -0,0 +1,37 @@
{
home = {
shellAliases = {
cp = "cp -iv";
mv = "mv -iv";
rm = "rm -vI";
mkd = "mkdir -pv";
c = "clear";
e = "exit";
v = "nvim";
vi = "nvim";
ka = "killall";
nf = "neofetch";
tf = "pridefetch -f trans";
pf = "pfetch";
i = "inertia";
mac-system-update = "nix flake update $NIXFILES && darwin-rebuild switch --flake $NIXFILES";
btop = "btop --utf-force";
grep = "grep --color=auto";
diff = "diff --color=auto";
};
sessionVariables = {
LANG = "en_GB.UTF-8";
LC_ALL = "en_GB.UTF-8";
NIXFILES = "$HOME/Documents/Code/NixFiles";
};
sessionPath = [
"$HOME/.local/bin"
];
};
}

View File

@ -0,0 +1,18 @@
{
programs.ssh = {
enable = true;
matchBlocks = {
jet = {
identityFile = "~/.ssh/id_ed25519_sk";
hostname = "jet.echo.clicks.domains";
user = "maddie";
};
clicks = {
identityFile = "~/.ssh/clickscodes";
hostname = "git.clicks.codes";
port = 29418;
user = "maddie";
};
};
};
}

View File

@ -0,0 +1,3 @@
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIA1jTkcMhBQQoYqNVLofrNnTbB8RCyzSYmdsnPeoOineAAAABHNzaDo= spy@luna (yubikey)
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBO9WsQUnglNetqekCoA6WT0wYNxpUVyNxuktPOHJPBCLJmU9P+YErE915vj4HlYcuOW9UhVajQzLQTcelgs/O8w= M.iPad (Termius)
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBD44bc9OdsIxwNBkdIN5Ce+Wer2gWi+QRcFdOV7+ScIo1QS29wkQJxU90ItcKwqiv+oTBlipV2NSH/YroBSHhQI= M.iPad (Secure ShellFish)

68
homes/common/starship.nix Normal file
View File

@ -0,0 +1,68 @@
{ lib, ... }:
{
programs.starship = {
enable = true;
enableZshIntegration = true;
settings = {
format = lib.concatStrings [
"$directory"
"$git_branch"
"$git_commit"
"$git_state"
"$git_metrics"
"$git_status"
"$hg_branch"
"$package"
"$c"
"$rust"
"$golang"
"$haskell"
"$python"
"$java"
"$kotlin"
"$lua"
"$dart"
"$nim"
"$nodejs"
"$swift"
"$zig"
"$nix_shell"
"$conda"
"$spack"
"$line_break"
"$username"
"$hostname"
"$localip"
"$cmd_duration"
"$memory_usage"
"$jobs"
"$character"
];
character = {
success_symbol = "-> [λ](bold purple)";
error_symbol = "-> [λ](bold red)";
vimcmd_symbol = "-> [λ](bold green)";
};
directory.truncation_symbol = ".../";
git_metrics.disabled = false;
git_status = {
ahead = "->";
behind = "<-";
diverged = "<->";
renamed = ">>";
deleted = "x";
};
memory_usage.disabled = false;
localip.disabled = false;
};
};
}

8
homes/common/tmux.nix Normal file
View File

@ -0,0 +1,8 @@
{
programs.tmux = {
enable = true;
clock24 = true;
mouse = true;
terminal = "screen-256color";
};
}

19
homes/common/wezterm.nix Normal file
View File

@ -0,0 +1,19 @@
{
programs.wezterm = {
enable = true;
extraConfig = ''
return {
front_end = 'WebGpu',
color_scheme = 'OneDark (base16)',
hide_tab_bar_if_only_one_tab = true,
window_close_confirmation = 'NeverPrompt',
window_padding = {
left = 0,
right = 0,
top = 0,
bottom = 0,
}
}
'';
};
}

17
homes/common/xdg.nix Normal file
View File

@ -0,0 +1,17 @@
{ config, ... }:
{
home = {
sessionVariables = {
CUDA_CACHE_PATH = "${config.xdg.cacheHome}/nv";
LESSHISTFILE = "${config.xdg.configHome}/less/history";
LESSKEY = "${config.xdg.configHome}/less/keys";
WINEPREFIX = "${config.xdg.dataHome}/wine";
_JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${config.xdg.configHome}/java";
};
shellAliases = {
wget = "wget --hsts-file='${config.xdg.dataHome}/wget-hsts'";
};
};
}

46
homes/common/zsh.nix Normal file
View File

@ -0,0 +1,46 @@
{ config, lib, ... }:
{
programs.zsh = {
enable = true;
autosuggestion.enable = true;
enableCompletion = true;
syntaxHighlighting.enable = true;
autocd = true;
dotDir = ".config/zsh";
history = {
size = 9999999;
expireDuplicatesFirst = true;
extended = true;
path = "${config.xdg.cacheHome}/zsh/history";
};
# Zsh init extras
initExtra = ''
# Disable Ctrl-S to freeze terminal
stty stop undef
# Tab completion
zstyle ':completion:*' menu select # Use a menu
_comp_options+=(globdots) # Include hidden files
# Change cursor shape for different vi modes
export KEYTIMEOUT=1
function zle-keymap-select () {
case $KEYMAP in
vicmd) echo -ne '\e[1 q';; # block
viins|main) echo -ne '\e[5 q';; # beam
esac
}
zle -N zle-keymap-select
zle-line-init() {
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne "\e[5 q"
}
zle -N zle-line-init
echo -ne '\e[5 q' # Use beam shape cursor on startup.
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
'';
};
}

View File

@ -0,0 +1,31 @@
{
programs.alacritty = {
enable = true;
settings = {
window = {
decorations = "none";
dynamic_padding = true;
padding = {
x = 0;
y = 0;
};
startup_mode = "Maximized";
};
font = {
normal.family = "IosevkaNerdFont";
bold.family = "IosevkaNerdFont";
italic.family = "IosevkaNerdFont";
size = 12;
};
scrolling.history = 10000;
colors.draw_bold_text_with_bright_colors = true;
window.opacity = 0.9;
import = [
./alacritty/onedark.toml
];
};
};
}

View File

@ -0,0 +1,29 @@
# Colors (One Dark)
# Default colors
[colors.primary]
background = '#1e2127'
foreground = '#abb2bf'
# Normal colors
[colors.normal]
black = '#1e2127'
red = '#e06c75'
green = '#98c379'
yellow = '#d19a66'
blue = '#61afef'
magenta = '#c678dd'
cyan = '#56b6c2'
white = '#abb2bf'
# Bright colors
[colors.bright]
black = '#5c6370'
red = '#e06c75'
green = '#98c379'
yellow = '#d19a66'
blue = '#61afef'
magenta = '#c678dd'
cyan = '#56b6c2'
white = '#ffffff'

63
homes/desktop/anyrun.nix Normal file
View File

@ -0,0 +1,63 @@
{ inputs, pkgs, ... }:
{
programs.anyrun = {
enable = true;
config = {
plugins = with inputs.anyrun.packages.${pkgs.stdenv.hostPlatform.system}; [
applications
rink
shell
translate
kidex
symbols
];
x = { fraction = 0.5; };
y = { fraction = 0.3; };
width = { fraction = 0.3; };
closeOnClick = true;
};
extraCss = ''
#window {
background-color: transparent;
}
#main * {
background-color: #282c34;
color: #ABB2BF;
caret-color: alpha(#ABB2BF,0.6);
font-family: FontAwesome, Inter;
}
#main {
border-width: 3px;
border-style: solid;
border-color: #ABB2BF;
border-radius: 0px;
}
#main #main {
border-style: none;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
#match-title, #match-desc {
font-family: FontAwesome, Inter;
}
#entry {
min-height: 25px;
padding: 10px;
font-size: 20px;
box-shadow: none;
border-style: none;
}
#entry:focus {
box-shadow: none;
}
#entry selection {
background-color: alpha(#E5C07B,0.3);
color: transparent;
}
'';
};
}

10
homes/desktop/audio.nix Normal file
View File

@ -0,0 +1,10 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
pulsemixer # TUI sound mixer
playerctl # Manages media players
pamixer # CLI sound mixer
cava # Music visualiser
];
}

View File

@ -0,0 +1,27 @@
{
programs.chromium = {
enable = true;
commandLineArgs = [
"--enable-logging=stderr"
"--ignore-gpu-blocklist"
];
extensions = [
# Dark Reader
{ id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; }
# uBlock Origin
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; }
# I still don't care about cookies
{ id = "edibdbjcniadpccecjdfdjjppcpchdlm"; }
# NoScript
{ id = "doojmbjmlfjjnbmnoijecmcbfeoakpjm"; }
# Reddit Enhancement Suite
{ id = "kbmfpngjjgdllneeigpgjifpgocmfgmb"; }
# Old Reddit Redirect
{ id = "dneaehbmnbhcippjikoajpoabadpodje"; }
# Return Youtube Dislike
{ id = "gebbhagfogifgggkldgodflihgfeippi"; }
# Vimium
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; }
];
};
}

7
homes/desktop/cider.nix Normal file
View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
cider
];
}

10
homes/desktop/cursor.nix Normal file
View File

@ -0,0 +1,10 @@
{ pkgs, ... }:
{
home.pointerCursor = {
name = "macOS";
package = pkgs.apple-cursor;
size = 24;
gtk.enable = true;
};
}

View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
discord-canary
];
}

7
homes/desktop/dmenu.nix Normal file
View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
dmenu
];
}

View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
element-desktop
];
}

7
homes/desktop/games.nix Normal file
View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
gzdoom
];
}

35
homes/desktop/gtk.nix Normal file
View File

@ -0,0 +1,35 @@
{ pkgs, ... }:
{
gtk = {
enable = true;
font = {
package = pkgs.inter;
name = "Inter";
size = 11;
};
theme = {
package = pkgs.adwaita-icon-theme;
name = "Adwaita-dark";
};
iconTheme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
};
qt = {
enable = true;
platformTheme.name = "adwaita";
style.name = "adwaita-dark";
};
dconf = {
enable = true;
settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
};
}

10
homes/desktop/home.nix Normal file
View File

@ -0,0 +1,10 @@
{ username, lib, ... }:
{
programs.home-manager.enable = true;
home = {
inherit username;
homeDirectory = lib.mkForce "/home/${username}";
stateVersion = "24.11";
};
}

193
homes/desktop/hyprland.nix Normal file
View File

@ -0,0 +1,193 @@
{ inputs, pkgs, config, ... }:
{
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
xwayland.enable = true;
settings =
let
mod = "SUPER";
terminal = "${pkgs.alacritty}/bin/alacritty";
launcher = "${inputs.anyrun.packages.${pkgs.stdenv.hostPlatform.system}.anyrun}/bin/anyrun";
browser = "${pkgs.librewolf}/bin/librewolf";
lock = "${pkgs.hyprlock}/bin/hyprlock --immediate";
zoom = "${inputs.woomer.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/woomer";
screenshot = "${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -d)\" - | ${pkgs.wl-clipboard}/bin/wl-copy";
system_search = "${terminal} --class systemSearch --title \"System Search\" -e \"zsh nvim $(find $HOME/* -type f | fzf)\"";
clipboard_history = "${terminal} --class clipse --title \"Clipboard History\" -e ${pkgs.clipse}/bin/clipse";
powermenu = "${pkgs.wlogout}/bin/wlogout";
in
{
general = {
"col.active_border" = "rgba(313439ee) rgba(313439ee) 0deg";
"col.inactive_border" = "rbga(121317ee) rgba(313439ee) 0deg";
};
exec-once = [
"sleep 0.5 && systemctl --user restart xdg-desktop-portal-gtk xdg-desktop-portal-hyprland xdg-desktop-portal pipewire wireplumber"
"${pkgs.hyprpaper}/bin/hyprpaper"
"${pkgs.waybar}/bin/waybar"
"${config.wayland.windowManager.hyprland.package}/bin/hyprctl setcursor macOS 24"
"${pkgs.clipse}/bin/clipse -listen"
];
input = {
kb_layout = "gb";
sensitivity = 0.6;
};
animations = {
enabled = true;
bezier = "myBezier, 0.645, 0.045, 0.355, 1";
animation = [
"windows, 1, 4, myBezier"
"windowsOut, 1, 4, myBezier"
"border, 1, 4, default"
"fade, 1, 4, default"
"workspaces, 1, 4, myBezier"
];
};
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 3;
layout = "master";
};
misc = {
disable_hyprland_logo = true;
disable_splash_rendering = true;
};
windowrulev2 = [
"opacity 0.8 0.8,initialTitle:^(wezterm)$"
"opacity 0.8 0.8,initialTitle:^(Alacritty)$"
"suppressevent maximize, class:.*"
"float, class:(clipse)"
"size 622 652, class:(clipse)"
"float, class:(systemSearch)"
"size 622 652, class:(systemSearch)"
];
layerrule = [
"blur,waybar"
];
decoration = {
rounding = 0;
drop_shadow = true;
shadow_range = 8;
shadow_offset = "0, 0";
active_opacity = 1;
inactive_opacity = 1;
fullscreen_opacity = 1;
blur = {
size = 8;
passes = 2;
};
};
master = {
mfact = 0.5;
};
cursor = {
no_hardware_cursors = true;
};
monitor = [ "DP-1, 2560x1440@144, 0x0, 1" ];
env = [
"LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland"
"XDG_CURRENT_DESKTOP,Hyprland"
"GBM_BACKEND,nvidia-drm"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
"ELECTRON_OZONE_PLATFORM_HINT,auto"
"WLR_NO_HARDWARE_CURSORS,1"
"NIXOS_OZONE_WL,1"
];
# Keybinds
bind = [
"${mod}, Q, killactive"
"${mod}, F, togglefloating"
"${mod} SHIFT, R, forcerendererreload"
"${mod} SHIFT, E, exit"
"${mod}, M, fullscreen, 0"
"${mod}, P, pin"
"${mod} SHIFT, M, fullscreen, 1"
# Screenshot
"${mod} SHIFT, S, exec, ${screenshot}"
", Print, exec, ${screenshot}"
# Programs
"${mod}, RETURN, exec, ${terminal}"
"${mod} SHIFT, RETURN, bringactivetotop"
"${mod}, SPACE, exec, ${launcher}"
"${mod}, D, exec, ${launcher}"
"${mod}, B, exec, ${browser}"
"${mod}, Z, exec, ${zoom}"
"${mod}, X, exec, ${powermenu}"
", Insert, exec, ${lock}"
# Function Keys
"${mod}, F2, exec, ${clipboard_history}"
"${mod}, F3, exec, ${system_search}"
# Move focus
"${mod}, h, movefocus, l"
"${mod}, j, movefocus, d"
"${mod}, k, movefocus, u"
"${mod}, l, movefocus, r"
# Moving windows
"${mod} SHIFT, h, movewindow, l"
"${mod} SHIFT, j, movewindow, d"
"${mod} SHIFT, k, movewindow, u"
"${mod} SHIFT, l, movewindow, r"
# Workspaces
"${mod}, 1, workspace, 1"
"${mod}, 2, workspace, 2"
"${mod}, 3, workspace, 3"
"${mod}, 4, workspace, 4"
"${mod}, 5, workspace, 5"
"${mod}, 6, workspace, 6"
"${mod}, 7, workspace, 7"
"${mod}, 8, workspace, 8"
"${mod}, 9, workspace, 9"
"${mod}, 0, workspace, 10"
"${mod} SHIFT, 1, movetoworkspacesilent, 1"
"${mod} SHIFT, 2, movetoworkspacesilent, 2"
"${mod} SHIFT, 3, movetoworkspacesilent, 3"
"${mod} SHIFT, 4, movetoworkspacesilent, 4"
"${mod} SHIFT, 5, movetoworkspacesilent, 5"
"${mod} SHIFT, 6, movetoworkspacesilent, 6"
"${mod} SHIFT, 7, movetoworkspacesilent, 7"
"${mod} SHIFT, 8, movetoworkspacesilent, 8"
"${mod} SHIFT, 9, movetoworkspacesilent, 9"
"${mod} SHIFT, 0, movetoworkspacesilent, 10"
"${mod}, mouse_right, workspace, e-1"
"${mod}, mouse_left, workspace, e+1"
];
bindm = [
"${mod}, mouse:272, movewindow"
"${mod}, mouse:273, resizewindow"
];
};
};
home.packages = with pkgs; [
wl-clipboard
];
}

View File

@ -0,0 +1,39 @@
{
programs.hyprlock = {
enable = true;
settings = {
general = {
disable_loading_bar = true;
grace = 300;
hide_cursor = true;
no_fade_in = false;
};
background = [
{
path = "/home/maddie/Code/NixFiles/homes/desktop/hyprpaper/nasa-img-09-13.png";
blur_passes = 3;
blur_size = 8;
}
];
input-field = [
{
placeholder_text = "";
size = "300, 70";
rounding = -1;
position = "0, 0";
monitor = "";
dots_center = true;
fade_on_empty = false;
font_color = "#ffffff";
fail_color = "#e06c75";
inner_color = "#1e2127";
outer_color = "#5c6370";
outline_thickness = 3;
shadow_passes = 0;
}
];
};
};
}

View File

@ -0,0 +1,10 @@
{
services.hyprpaper = {
enable = true;
settings = {
preload = [ "/home/maddie/Code/NixFiles/homes/desktop/hyprpaper/nasa-img-09-13.png" ];
wallpaper = [ ",/home/maddie/Code/NixFiles/homes/desktop/hyprpaper/nasa-img-09-13.png" ];
};
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 MiB

View File

@ -0,0 +1,3 @@
{
services.kdeconnect.enable = true;
}

12
homes/desktop/kitty.nix Normal file
View File

@ -0,0 +1,12 @@
{
programs.kitty = {
enable = true;
font.name = "JetBrains Mono Nerd Font";
font.size = 12;
theme = "One Half Dark";
shellIntegration.enableZshIntegration = true;
settings = {
confirm_os_window_close = -1;
};
};
}

View File

@ -0,0 +1,10 @@
{
programs.librewolf = {
enable = true;
settings = {
"browser.uidensity" = 1;
"webgl.disabled" = false;
"privacy.resistFingerprinting" = true;
};
};
}

View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
prismlauncher
];
}

8
homes/desktop/mpv.nix Normal file
View File

@ -0,0 +1,8 @@
{
programs.mpv = {
enable = true;
config = {
loop-file = "inf";
};
};
}

7
homes/desktop/ncdu.nix Normal file
View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
ncdu_2
];
}

8
homes/desktop/steam.nix Normal file
View File

@ -0,0 +1,8 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
steam
steam-run
];
}

View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
syncplay
];
}

View File

@ -0,0 +1,8 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
cool-retro-term # Retro-style terminal
st # Suckless terminal
];
}

View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
tor-browser-bundle-bin
];
}

7
homes/desktop/uxplay.nix Normal file
View File

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
uxplay
];
}

136
homes/desktop/waybar.nix Normal file
View File

@ -0,0 +1,136 @@
{ pkgs, ... }:
{
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
#margin = "10 10 0 10";
margin = "0 0 0 0";
modules-left = [ "hyprland/workspaces" "hyprland/window" ];
modules-center = [ ];
modules-right = [ "privacy" "tray" "pulseaudio" "temperature" "custom/mem" "cpu" "disk" "network" "clock" ];
"hyprland/window" = {
"icon" = true;
};
"tray" = {
"icon-size" = 21;
"spacing" = 10;
};
disk = {
"interval" = 30;
"format" = " {specific_used:0.1f}/{specific_total:0.1f} GB";
"path" = "/";
unit = "GB";
};
temperature = {
thermal-zone = 2;
critical-threshold = 80;
format = " {temperatureC}°C";
};
privacy = {
"icon-size" = 17;
"transition-duration" = 250;
"modules" = [
{
"type" = "screenshare";
"tooltip" = true;
"tooltip-icon-size" = 24;
}
{
"type" = "audio-in";
"tooltip" = true;
"tooltip-icon-size" = 24;
}
];
};
network = {
"interface" = "eno1";
"format" = "{ifname}: Connecting";
"format-ethernet" = " {ipaddr}";
"format-disconnected" = "{ifname}: Disconnected";
"tooltip-format" = "{ifname} via {gwaddr} 󰊗";
"tooltip-format-wifi" = "{essid} ({signalStrength}%) ";
"tooltip-format-ethernet" = "{ifname} ";
"tooltip-format-disconnected" = "Disconnected";
"max-length" = 50;
};
clock = {
"interval" = 1;
"format" = " {:%T}";
"format-alt" = " {:%a %d %b %Y, %T}";
"tooltip-format" = "<tt><small>{calendar}</small></tt>";
"calendar" = {
"mode" = "year";
"mode-mon-col" = 3;
"weeks-pos" = "right";
"on-scroll" = 1;
"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-scroll-up" = "shift_up";
"on-scroll-down" = "shift_down";
};
};
pulseaudio = {
"scroll-step" = 1;
"reverse-scrolling" = 1;
"format" = "{icon} {volume}% {format_source}";
"format-bluetooth" = "{icon} {volume}% {format_source}";
"format-bluetooth-muted" = " {icon} {format_source}";
"format-muted" = " {format_source}";
"format-source" = " {volume}%";
"format-source-muted" = " ";
"format-icons" = {
"headphone" = " ";
"hands-free" = "";
"headset" = " ";
"phone" = " ";
"portable" = " ";
"car" = " ";
"default" = ["" " " " "];
};
"on-click" = "${pkgs.pavucontrol}/bin/pavucontrol";
"min-length" = 13;
};
"custom/mem" = {
"format" = " {}";
"interval" = 5;
"exec" = "free -h | awk '/Mem:/{printf $3}'";
"tooltip" = false;
"min-length" = 6;
};
cpu = {
"interval" = 2;
"format" = " {usage}%";
"min-length" = 6;
};
};
};
/*style = ''
@define-color background #282c34;
@define-color active #528BFF;
@define-color hover #1D2025;
@define-color text #ABB2BF;
@define-color altText #ABB2BF;
@define-color critical #E06C75;
@define-color warning #E5C07B;
@define-color charging #98C379;
'' + builtins.readFile ./waybar/main.css;*/
style = builtins.readFile ./waybar/main.css;
};
}

View File

@ -0,0 +1,238 @@
* {
font-family: Iosevka Nerd Font, JetBrainsMono Nerd Font, sans-serif;
font-size: 17px;
}
window#waybar {
background-color: #121317;
border-radius: 0px;
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0px;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
}
/* Workspaces */
#workspaces {
margin: 0px 5px 0px 0px;
}
#workspaces button {
border-radius: 0px;
padding: 0 5px;
background: #121317;
color: #D6DEEB;
}
#workspaces button:hover {
background: #5c6370;
}
#workspaces button.active {
background: #313439;
}
#workspaces button.urgent {
background-color: #e06c75;
}
#custom-mem,
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
margin: 0px 0px 0px 0px;
border-radius: 0px;
padding: 0 10px;
color: #ffffff;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right>widget:last-child>#workspaces {
margin-right: 0px;
}
#clock {
background-color: #D6DEEB;
color: black;
}
label:focus {
background-color: #000000;
}
#cpu {
background-color: #2ecc71;
color: #000000;
}
#memory {
background-color: #d19a66;
color: black;
}
#custom-mem {
background-color: #d19a66;
color: black;
}
#disk {
background-color: #c678dd;
color: black;
}
#network {
background-color: #56b6c2;
color: black;
}
#network.disconnected {
background-color: #f53c3c;
}
#pulseaudio {
background-color: #f1c40f;
color: #000000;
}
#pulseaudio.muted {
background-color: #90b1b1;
color: #2a5c45;
}
#wireplumber {
background-color: #fff0f5;
color: #000000;
}
#wireplumber.muted {
background-color: #f53c3c;
}
#custom-media {
background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
background-color: #61afef;
color: black;
}
#temperature.critical {
background-color: #e06c75;
color: black;
}
#tray {
background-color: #2980b9;
}
#tray>.passive {
-gtk-icon-effect: dim;
}
#tray>.needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
background-color: #2d3436;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
background: #00b093;
color: #740864;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
background: #97e1ad;
color: #000000;
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#privacy {
padding: 0px;
}
#privacy-item {
padding: 0 5px;
color: black;
}
#privacy-item.screenshare {
background-color: #c678dd;
}
#privacy-item.audio-in {
background-color: #d19a66;
}

8
homes/desktop/wine.nix Normal file
View File

@ -0,0 +1,8 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
bottles
wine
];
}

93
homes/desktop/wlogout.nix Normal file
View File

@ -0,0 +1,93 @@
{ pkgs, ... }:
{
programs.wlogout = {
enable = true;
layout = [
{
"label" = "lock";
"action" = "loginctl lock-session";
"text" = "Lock";
"keybind" = "l";
}
{
"label" = "shutdown";
"action" = "systemctl poweroff";
"text" = "Shutdown";
"keybind" = "s";
}
{
"label" = "logout";
"action" = "loginctl terminate-user $USER";
"text" = "Logout";
"keybind" = "e";
}
{
"label" = "hibernate";
"action" = "systemctl hibernate";
"text" = "Hibernate";
"keybind" = "h";
}
{
"label" = "suspend";
"action" = "systemctl suspend";
"text" = "Suspend";
"keybind" = "u";
}
{
"label" = "reboot";
"action" = "systemctl reboot";
"text" = "Reboot";
"keybind" = "r";
}
];
style = ''
* {
background-image: none;
}
window {
background-color: rgba(30, 33, 39, 0.8);
}
button {
background-color: #1e2127;
border-style: solid;
border-width: 0px;
border-radius: 0;
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
color: #abb2bf;
}
button:focus, button:active, button:hover {
background-color: #abb2bf;
color: #1e2127;
outline-style: none;
}
#lock {
background-image: image(url("${pkgs.wlogout}/share/wlogout/icons/lock.png"), url("${pkgs.wlogout}/local/share/wlogout/icons/lock.png"));
}
#logout {
background-image: image(url("${pkgs.wlogout}/share/wlogout/icons/logout.png"), url("${pkgs.wlogout}/local/share/wlogout/icons/logout.png"));
}
#suspend {
background-image: image(url("${pkgs.wlogout}/share/wlogout/icons/suspend.png"), url("${pkgs.wlogout}/local/share/wlogout/icons/suspend.png"));
}
#hibernate {
background-image: image(url("${pkgs.wlogout}/share/wlogout/icons/hibernate.png"), url("${pkgs.wlogout}/local/share/wlogout/icons/hibernate.png"));
}
#shutdown {
background-image: image(url("${pkgs.wlogout}/share/wlogout/icons/shutdown.png"), url("${pkgs.wlogout}/local/share/wlogout/icons/shutdown.png"));
}
#reboot {
background-image: image(url("${pkgs.wlogout}/share/wlogout/icons/reboot.png"), url("${pkgs.wlogout}/local/share/wlogout/icons/reboot.png"));
}
'';
};
}

59
homes/desktop/xdg.nix Normal file
View File

@ -0,0 +1,59 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
xdg-utils
xdg-user-dirs
];
xdg = {
enable = true;
userDirs.enable = true;
desktopEntries = {
"browser" = {
name = "Web Browser";
type = "Application";
exec = "${pkgs.librewolf}/bin/librewolf %f";
};
"image" = {
name = "Image Viewer";
type = "Application";
exec = "${pkgs.nsxiv}/bin/nsxiv -a %f";
};
"text" = {
name = "Text Editor";
type = "Application";
exec = "${pkgs.alacritty}/bin/alacritty -e ${pkgs.neovim}/bin/nvim %u";
};
"pdf" = {
name = "PDF Reader";
type = "Application";
exec = "${pkgs.zathura}/bin/zathura %u";
};
};
mimeApps = {
enable = true;
defaultApplications = {
"application/pdf" = "pdf.desktop";
"x-scheme-handler/http" = "browser.desktop";
"x-scheme-handler/https" = "browser.desktop";
"image/png" = "image.desktop";
"image/jpeg" = "image.desktop";
"image/jpg" = "image.desktop";
"image/gif" = "image.desktop";
"video/mp4" = "mpv.desktop";
"text/plain" = "text.desktop";
"text/html" = "browser.desktop";
};
};
};
home = {
sessionVariables = {
# Default programs
EDITOR = "nvim";
TERMINAL = "st";
BROWSER = "librewolf";
};
};
}

21
homes/desktop/xorg.nix Normal file
View File

@ -0,0 +1,21 @@
{ config, ... }:
{
# Attempt to set keyboard layout
home.keyboard = {
layout = "gb";
options = [
"caps:escape"
];
};
# Force use of XDG Dir Spec
home.sessionVariables = {
XCOMPOSECACHE = "${config.xdg.cacheHome}/x11/xcompose";
};
# Set global font
xresources.properties = {
"*.font" = "Iosevka:pixelsize=12:antialias=true:autohint=true";
};
}

View File

@ -0,0 +1,3 @@
{
programs.zathura.enable = true;
}

10
homes/laptop/home.nix Normal file
View File

@ -0,0 +1,10 @@
{ username, lib, ... }:
{
programs.home-manager.enable = true;
home = {
inherit username;
homeDirectory = lib.mkForce "/Users/${username}";
stateVersion = "24.11";
};
}

10
homes/laptop/ssh.nix Normal file
View File

@ -0,0 +1,10 @@
{
programs.ssh.extraConfig = ''
Host *
IdentityAgent /Users/maddie/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh
'';
home.sessionVariables = {
SSH_AUTH_SOCK = "$HOME/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh";
};
}

25
overlays.nix Normal file
View File

@ -0,0 +1,25 @@
[
# My build of suckless dwm
(final: prev: {
st = prev.st.overrideAttrs (oldAttrs: {
src = final.fetchFromGitea {
domain = "git.spyhoodle.me";
owner = "maddie";
repo = "st";
rev = "95838457b677f5dc4397603e6df76df1789c9c36";
sha256 = "sha256-EuipD68T8I+g1kKHqYy79Iata08Ac0SD24uLXBlM77A=";
};
buildInputs = oldAttrs.buildInputs ++ [ final.harfbuzz ];
});
ncmpcpp = prev.ncmpcpp.override {
visualizerSupport = true;
clockSupport = false;
};
nerdfonts = prev.nerdfonts.override {
fonts = [ "Iosevka" "JetBrainsMono" "Terminus" ];
};
chromium = prev.chromium.override {
enableWideVine = true;
};
})
]

12
systems/desktop/audio.nix Normal file
View File

@ -0,0 +1,12 @@
{
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
wireplumber.enable = true;
};
}

12
systems/desktop/avahi.nix Normal file
View File

@ -0,0 +1,12 @@
{
services.avahi = {
enable = true;
nssmdns4 = true;
publish = {
enable = true;
addresses = true;
workstation = true;
userServices = true;
};
};
}

View File

@ -0,0 +1,4 @@
{
hardware.bluetooth.enable = true;
services.blueman.enable = true;
}

20
systems/desktop/boot.nix Normal file
View File

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
# Setup bootloader
boot.loader.systemd-boot = {
enable = true;
consoleMode = "max";
};
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.systemd.enable = true;
# Enable magic sysrq
boot.kernel.sysctl."kernel.sysrq" = 502;
# Kernel settings
boot.kernelParams = [ "video=2560x1440@180" ];
# Use the linux-zen kernel
boot.kernelPackages = pkgs.linuxPackages_zen;
}

View File

@ -0,0 +1,47 @@
# SPDX-FileCopyrightText: 2024 Clicks Codes
#
# SPDX-License-Identifier: GPL-3.0-only
{
config,
lib,
pkgs,
...
}:
let
cfg = config.clicks.networking.tailscale;
in
{
options.clicks.networking.tailscale = {
enable = lib.mkEnableOption "Enable tailscale for this system";
runExitNode.enable = lib.mkOption {
description = "Enable this system as an exit node on the tailnet";
default = true;
type = lib.types.bool;
};
server = lib.mkOption {
description = "Set where your control plane server is";
default = "clicks.domains";
example = "controlplane.tailscale.com";
};
authKeyFile = lib.mkOption {
type = lib.types.str;
description = "Path to key file for tailscale";
};
};
config = lib.mkIf cfg.enable {
services.tailscale = {
enable = true;
useRoutingFeatures = if cfg.runExitNode.enable then "both" else "client";
extraUpFlags = [
"--login-server=https://${cfg.server}"
"--accept-routes"
] ++ (if cfg.runExitNode.enable then [ "--advertise-exit-node" ] else [ ]);
};
systemd.services.tailscaled.environment.TS_NO_LOGS_NO_SUPPORT = lib.mkIf (
cfg.server != "controlplane.tailscale.com"
) "true";
};
}

6
systems/desktop/cpu.nix Normal file
View File

@ -0,0 +1,6 @@
{ config, lib, ... }:
{
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

13
systems/desktop/doas.nix Normal file
View File

@ -0,0 +1,13 @@
{ username, ... }:
{
security.sudo.enable = false;
security.doas = {
enable = true;
extraRules = [{
users = [ "${username}" ];
keepEnv = true;
persist = true;
}];
};
}

View File

@ -0,0 +1,4 @@
{
# Disable the firewall altogether
networking.firewall.enable = false;
}

14
systems/desktop/fonts.nix Normal file
View File

@ -0,0 +1,14 @@
{ pkgs, ... }:
{
fonts.packages = with pkgs; [
nerdfonts
font-awesome
source-sans
source-han-sans
source-han-serif
source-han-code-jp
terminus_font
inter
];
}

9
systems/desktop/gpg.nix Normal file
View File

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
programs.gnupg.agent = {
enable = true;
enableSSHSupport = false;
pinentryPackage = pkgs.pinentry-gnome3;
};
}

View File

@ -0,0 +1,44 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/0b6949ad-1251-42cb-a132-76d5f20c6bb0";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-80c1fc90-4995-43ac-a022-752af2803ffc".device = "/dev/disk/by-uuid/80c1fc90-4995-43ac-a022-752af2803ffc";
boot.initrd.luks.devices."luks-3dbc0a96-a442-492d-9b46-e0216adaaa32".device = "/dev/disk/by-uuid/3dbc0a96-a442-492d-9b46-e0216adaaa32";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/DCB7-79E4";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/b2dd867b-5c12-4b61-a476-8410ba3c772d"; }
];
# 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
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,9 @@
{ inputs, pkgs, ... }:
{
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
}

View File

@ -0,0 +1,3 @@
{
security.pam.services.hyprlock = { };
}

View File

@ -0,0 +1,13 @@
{ pkgs, ... }:
{
# Time zone
time.timeZone = "Europe/London";
# Internationalisation properties
i18n.defaultLocale = "en_GB.UTF-8";
console = {
font = "${pkgs.terminus_font}/share/consolefonts/ter-v24n.psf.gz";
keyMap = "uk";
};
}

3
systems/desktop/ly.nix Normal file
View File

@ -0,0 +1,3 @@
{
services.displayManager.ly.enable = true;
}

6
systems/desktop/man.nix Normal file
View File

@ -0,0 +1,6 @@
{
documentation.man = {
enable = true;
generateCaches = true;
};
}

View File

@ -0,0 +1,12 @@
{ lib, ... }:
{
# DHCP
networking.useDHCP = lib.mkDefault true;
# Hostname
networking.hostName = "desktop";
# Enable wireless support & configuration
networking.wireless.enable = false;
}

View File

@ -0,0 +1,3 @@
{
programs.nix-ld.enable = true;
}

15
systems/desktop/nix.nix Normal file
View File

@ -0,0 +1,15 @@
{ pkgs, ... }:
{
nix = {
package = pkgs.nixVersions.stable;
settings = {
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
};
gc = {
automatic = true;
options = "--delete-older-than 7d";
};
};
}

View File

@ -0,0 +1,6 @@
{ lib, ... }:
{
system.stateVersion = "24.11";
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View File

@ -0,0 +1,13 @@
{ config, ... }:
{
hardware.graphics.enable = true;
hardware.graphics.enable32Bit = true;
hardware.nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.stable;
modesetting.enable = true;
open = false;
};
services.xserver.videoDrivers = [ "nvidia" ];
}

View File

@ -0,0 +1,48 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
# Xorg packages
xorg.xinit
xorg.xkill
xorg.xprop
xorg.xwininfo
xorg.xrandr
xdotool
xclip
# Processes
killall
appimage-run
# Filesystems
dosfstools
btrfs-progs
ntfs3g
exfatprogs
libimobiledevice
ifuse
# Archives
zip
unrar
unzip
p7zip
# Cli tools
ripgrep
wget
fzf
bat
# XDG
xdg-utils
xdg-user-dirs
# Git
git
# Compiler
gcc
];
}

View File

@ -0,0 +1,6 @@
{ pkgs, ... }:
{
programs.slock.enable = true;
security.wrappers.slock.source = "${pkgs.slock.out}/bin/slock";
}

11
systems/desktop/ssh.nix Normal file
View File

@ -0,0 +1,11 @@
{
services.openssh = {
enable = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
};
};
programs.ssh.hostKeyAlgorithms = [ "sk-ssh-ed25519@openssh.com" "ssh-ed25519" "ecdsa-sha2-nistp256" ];
}

View File

@ -0,0 +1,6 @@
{
# Stop systemd from hanging for ages
systemd.extraConfig = ''
DefaultTimeoutStopSec=10s
'';
}

View File

@ -0,0 +1,6 @@
{
clicks.networking.tailscale = {
enable = true;
};
services.tailscale.extraUpFlags = [ "--hostname=desktop" ];
}

11
systems/desktop/users.nix Normal file
View File

@ -0,0 +1,11 @@
{ pkgs, username, ... }:
{
users.users.${username} = {
isNormalUser = true;
shell = pkgs.zsh;
description = "Madeleine";
extraGroups = [ "dialout" "plugdev" ];
openssh.authorizedKeys.keyFiles = [ ../../homes/common/ssh/maddie.pub ];
};
}

12
systems/desktop/xdg.nix Normal file
View File

@ -0,0 +1,12 @@
{ pkgs, inputs, ... }:
{
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
};
programs.dconf.enable = true;
}

12
systems/desktop/xorg.nix Normal file
View File

@ -0,0 +1,12 @@
{
services.xserver = {
# Enable X11 windowing system
enable = true;
# Set X11 keymap as GB
xkb = {
layout = "gb";
options = "eurosign:e";
};
};
}

View File

@ -0,0 +1,17 @@
{ pkgs, ... }:
{
services.pcscd.enable = true;
services.udev.packages = [ pkgs.yubikey-personalization ];
security.pam = {
services = {
login.u2fAuth = true;
doas.u2fAuth = true;
};
yubico = {
enable = true;
mode = "challenge-response";
control = "optional";
};
};
}

10
systems/desktop/zsh.nix Normal file
View File

@ -0,0 +1,10 @@
{ pkgs, ... }:
{
programs.zsh = {
enable = true;
autosuggestions.enable = true;
syntaxHighlighting.enable = true;
};
users.defaultUserShell = pkgs.zsh;
}

Some files were not shown because too many files have changed in this diff Show More