Compare commits

..

2 commits
main ... asahi

Author SHA1 Message Date
Mars a286b0abb2
stuff 2024-06-13 02:49:37 -04:00
Mars 320faef2a6
asahi 2024-06-13 02:30:20 -04:00
48 changed files with 2499 additions and 13417 deletions

21
.envrc
View file

@ -1,22 +1 @@
watch_file flake.in.nix
# Calculate the hash of flake.in.nix
current_hash=$(md5sum flake.in.nix | cut -d ' ' -f 1)
stored_hash_file=".flake_in_nix_hash"
# Read the stored hash if it exists
if [ -f "$stored_hash_file" ]; then
stored_hash=$(cat "$stored_hash_file")
else
stored_hash=""
fi
# Compare the hashes and copy if they are different
if [ "$current_hash" != "$stored_hash" ]; then
cp $(nix eval --raw .#nextFlake) flake.nix
# Store the new hash
echo "$current_hash" > "$stored_hash_file"
fi
use_flake use_flake

4
.gitignore vendored
View file

@ -1,5 +1,3 @@
.direnv/ .direnv/
.DS_Store/ home.nix
.flake_in_nix_hash
.luarc.json
sys.nix sys.nix

View file

@ -1,9 +1,9 @@
{ {
"bang-bang": { "linux-wallpaperengine-latest": {
"cargoLocks": null, "cargoLocks": null,
"date": "2023-07-23", "date": "2024-05-11",
"extract": null, "extract": null,
"name": "bang-bang", "name": "linux-wallpaperengine-latest",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
@ -11,172 +11,12 @@
"fetchSubmodules": false, "fetchSubmodules": false,
"leaveDotGit": false, "leaveDotGit": false,
"name": null, "name": null,
"owner": "oh-my-fish", "owner": "Almamu",
"repo": "plugin-bang-bang", "repo": "linux-wallpaperengine",
"rev": "ec991b80ba7d4dda7a962167b036efc5c2d79419", "rev": "13cc080410444ea72cceebdd5ea0ae7c23dd2270",
"sha256": "sha256-oPPCtFN2DPuM//c48SXb4TrFRjJtccg0YPXcAo0Lxq0=", "sha256": "sha256-XdFU5BKZPyGpV0PYmmM12efMFimt3eJAsG+dzyycIzo=",
"type": "github" "type": "github"
}, },
"version": "ec991b80ba7d4dda7a962167b036efc5c2d79419" "version": "13cc080410444ea72cceebdd5ea0ae7c23dd2270"
},
"fix-window-role": {
"cargoLocks": null,
"date": null,
"extract": null,
"name": "fix-window-role",
"passthru": null,
"pinned": false,
"src": {
"name": null,
"sha256": "sha256-H4Qj6n5uZsmsbdjjexGZctqhJk3gAXKiSnmnEO/LgTA=",
"type": "url",
"url": "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch"
},
"version": "latest"
},
"git-abbr": {
"cargoLocks": null,
"date": "2023-06-19",
"extract": null,
"name": "git-abbr",
"passthru": null,
"pinned": false,
"src": {
"deepClone": false,
"fetchSubmodules": false,
"leaveDotGit": false,
"name": null,
"owner": "pupbrained",
"repo": "fish-git-abbr",
"rev": "dc590a5b9d9d2095f95f7d90608b48e55bea0b0e",
"sha256": "sha256-6z3Wr2t8CP85xVEp6UCYaM2KC9PX4MDyx19f/wjHkb0=",
"type": "github"
},
"version": "dc590a5b9d9d2095f95f7d90608b48e55bea0b0e"
},
"gityaw": {
"cargoLocks": null,
"date": "2019-01-07",
"extract": null,
"name": "gityaw",
"passthru": null,
"pinned": false,
"src": {
"deepClone": false,
"fetchSubmodules": false,
"leaveDotGit": false,
"name": null,
"owner": "oh-my-fish",
"repo": "plugin-gityaw",
"rev": "59196560e0f4520db63fb8cab645510377bb8b13",
"sha256": "sha256-STXNxSsjSopB+lbB4hEYdhJifRfsImRwbZ1SxwEhkuM=",
"type": "github"
},
"version": "59196560e0f4520db63fb8cab645510377bb8b13"
},
"license": {
"cargoLocks": null,
"date": "2018-10-22",
"extract": null,
"name": "license",
"passthru": null,
"pinned": false,
"src": {
"deepClone": false,
"fetchSubmodules": false,
"leaveDotGit": false,
"name": null,
"owner": "oh-my-fish",
"repo": "plugin-license",
"rev": "0155b16f102957ec0c734a90979245dc1073f979",
"sha256": "sha256-Bi9Q5rekZoyXYbRV+U4SmwCdqCl0pFupzm5si7SxFns=",
"type": "github"
},
"version": "0155b16f102957ec0c734a90979245dc1073f979"
},
"poll": {
"cargoLocks": null,
"date": null,
"extract": null,
"name": "poll",
"passthru": null,
"pinned": false,
"src": {
"name": null,
"sha256": "sha256-Weh2+C5v2ORYO8JFYzntpPmJyGseFqArByZwLpX2CCU=",
"type": "url",
"url": "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/poll.patch"
},
"version": "latest"
},
"replay-fish": {
"cargoLocks": null,
"date": "2024-07-01",
"extract": null,
"name": "replay-fish",
"passthru": null,
"pinned": false,
"src": {
"deepClone": false,
"fetchSubmodules": false,
"leaveDotGit": false,
"name": null,
"owner": "jorgebucaran",
"repo": "replay.fish",
"rev": "d2ecacd3fe7126e822ce8918389f3ad93b14c86c",
"sha256": "sha256-TzQ97h9tBRUg+A7DSKeTBWLQuThicbu19DHMwkmUXdg=",
"type": "github"
},
"version": "d2ecacd3fe7126e822ce8918389f3ad93b14c86c"
},
"round-undecorated-frame": {
"cargoLocks": null,
"date": null,
"extract": null,
"name": "round-undecorated-frame",
"passthru": null,
"pinned": false,
"src": {
"name": null,
"sha256": "sha256-dFH4D1WYQOVOagUuVdEQB3irxV+Y8dDAOKJOJXc/KHQ=",
"type": "url",
"url": "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch"
},
"version": "latest"
},
"system-appearance": {
"cargoLocks": null,
"date": null,
"extract": null,
"name": "system-appearance",
"passthru": null,
"pinned": false,
"src": {
"name": null,
"sha256": "sha256-nrPOgGQAJb/5brrrWJNDARY2jWNJ9OsMtO+LPVhHfbY=",
"type": "url",
"url": "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/system-appearance.patch"
},
"version": "latest"
},
"wttr": {
"cargoLocks": null,
"date": "2016-05-23",
"extract": null,
"name": "wttr",
"passthru": null,
"pinned": false,
"src": {
"deepClone": false,
"fetchSubmodules": false,
"leaveDotGit": false,
"name": null,
"owner": "oh-my-fish",
"repo": "plugin-wttr",
"rev": "7500e382e6b29a463edc57598217ce0cfaf8c90c",
"sha256": "sha256-k3FrRPxKCiObO6HgtDx8ORbcLmfSYQsQeq5SAoNfZbE=",
"type": "github"
},
"version": "7500e382e6b29a463edc57598217ce0cfaf8c90c"
} }
} }

View file

@ -1,110 +1,15 @@
# This file was generated by nvfetcher, please do not modify it manually. # This file was generated by nvfetcher, please do not modify it manually.
{ {fetchFromGitHub}: {
fetchurl, linux-wallpaperengine-latest = {
fetchFromGitHub, pname = "linux-wallpaperengine-latest";
}: { version = "13cc080410444ea72cceebdd5ea0ae7c23dd2270";
bang-bang = {
pname = "bang-bang";
version = "ec991b80ba7d4dda7a962167b036efc5c2d79419";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "oh-my-fish"; owner = "Almamu";
repo = "plugin-bang-bang"; repo = "linux-wallpaperengine";
rev = "ec991b80ba7d4dda7a962167b036efc5c2d79419"; rev = "13cc080410444ea72cceebdd5ea0ae7c23dd2270";
fetchSubmodules = false; fetchSubmodules = false;
sha256 = "sha256-oPPCtFN2DPuM//c48SXb4TrFRjJtccg0YPXcAo0Lxq0="; sha256 = "sha256-XdFU5BKZPyGpV0PYmmM12efMFimt3eJAsG+dzyycIzo=";
}; };
date = "2023-07-23"; date = "2024-05-11";
};
fix-window-role = {
pname = "fix-window-role";
version = "latest";
src = fetchurl {
url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch";
sha256 = "sha256-H4Qj6n5uZsmsbdjjexGZctqhJk3gAXKiSnmnEO/LgTA=";
};
};
git-abbr = {
pname = "git-abbr";
version = "dc590a5b9d9d2095f95f7d90608b48e55bea0b0e";
src = fetchFromGitHub {
owner = "pupbrained";
repo = "fish-git-abbr";
rev = "dc590a5b9d9d2095f95f7d90608b48e55bea0b0e";
fetchSubmodules = false;
sha256 = "sha256-6z3Wr2t8CP85xVEp6UCYaM2KC9PX4MDyx19f/wjHkb0=";
};
date = "2023-06-19";
};
gityaw = {
pname = "gityaw";
version = "59196560e0f4520db63fb8cab645510377bb8b13";
src = fetchFromGitHub {
owner = "oh-my-fish";
repo = "plugin-gityaw";
rev = "59196560e0f4520db63fb8cab645510377bb8b13";
fetchSubmodules = false;
sha256 = "sha256-STXNxSsjSopB+lbB4hEYdhJifRfsImRwbZ1SxwEhkuM=";
};
date = "2019-01-07";
};
license = {
pname = "license";
version = "0155b16f102957ec0c734a90979245dc1073f979";
src = fetchFromGitHub {
owner = "oh-my-fish";
repo = "plugin-license";
rev = "0155b16f102957ec0c734a90979245dc1073f979";
fetchSubmodules = false;
sha256 = "sha256-Bi9Q5rekZoyXYbRV+U4SmwCdqCl0pFupzm5si7SxFns=";
};
date = "2018-10-22";
};
poll = {
pname = "poll";
version = "latest";
src = fetchurl {
url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/poll.patch";
sha256 = "sha256-Weh2+C5v2ORYO8JFYzntpPmJyGseFqArByZwLpX2CCU=";
};
};
replay-fish = {
pname = "replay-fish";
version = "d2ecacd3fe7126e822ce8918389f3ad93b14c86c";
src = fetchFromGitHub {
owner = "jorgebucaran";
repo = "replay.fish";
rev = "d2ecacd3fe7126e822ce8918389f3ad93b14c86c";
fetchSubmodules = false;
sha256 = "sha256-TzQ97h9tBRUg+A7DSKeTBWLQuThicbu19DHMwkmUXdg=";
};
date = "2024-07-01";
};
round-undecorated-frame = {
pname = "round-undecorated-frame";
version = "latest";
src = fetchurl {
url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch";
sha256 = "sha256-dFH4D1WYQOVOagUuVdEQB3irxV+Y8dDAOKJOJXc/KHQ=";
};
};
system-appearance = {
pname = "system-appearance";
version = "latest";
src = fetchurl {
url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/system-appearance.patch";
sha256 = "sha256-nrPOgGQAJb/5brrrWJNDARY2jWNJ9OsMtO+LPVhHfbY=";
};
};
wttr = {
pname = "wttr";
version = "7500e382e6b29a463edc57598217ce0cfaf8c90c";
src = fetchFromGitHub {
owner = "oh-my-fish";
repo = "plugin-wttr";
rev = "7500e382e6b29a463edc57598217ce0cfaf8c90c";
fetchSubmodules = false;
sha256 = "sha256-k3FrRPxKCiObO6HgtDx8ORbcLmfSYQsQeq5SAoNfZbE=";
};
date = "2016-05-23";
}; };
} }

View file

@ -1,118 +0,0 @@
{
inputs = let
mkCustomUrl = url: {inherit url;};
mkInput = url: {url = "github:${url}";};
mkFollowingNixpkgs = url: {
url = "github:${url}";
inputs.nixpkgs.follows = "nixpkgs";
};
mkFollowing = url: input: {
url = "github:${url}";
inputs.${input}.follows = input;
};
mkWithSubmodules = url: {
inherit url;
submodules = true;
type = "git";
};
in {
determinate = mkInput "DeterminateSystems/determinate";
agenix = mkInput "ryantm/agenix";
catppuccin = mkInput "catppuccin/nix";
chaotic = mkInput "chaotic-cx/nyx/nyxpkgs-unstable";
emacs = mkCustomUrl "git+https://git.pupbrained.xyz/pupbrained/nixmacs.git";
hyprland = mkWithSubmodules "https://github.com/hyprwm/Hyprland";
hyprland-plugins = mkFollowing "hyprwm/hyprland-plugins" "hyprland";
impermanence = mkInput "nix-community/impermanence";
nix-colors = mkInput "Misterio77/nix-colors";
nixos-facter-modules = mkInput "numtide/nixos-facter-modules";
nixpkgs = mkInput "NixOS/nixpkgs/nixos-unstable";
nixvim = mkInput "pupbrained/nvim-config";
treefmt-nix = mkInput "numtide/treefmt-nix";
xmonad-contrib = mkInput "xmonad/xmonad-contrib";
zen-browser = mkInput "fufexan/zen-browser-flake";
cosmic = mkFollowingNixpkgs "lilyinstarlight/nixos-cosmic";
darwin = mkFollowingNixpkgs "LnL7/nix-darwin/master";
home-manager = mkFollowingNixpkgs "nix-community/home-manager";
nix-index-database = mkFollowingNixpkgs "nix-community/nix-index-database";
snowfall-flake = mkFollowingNixpkgs "snowfallorg/flake";
snowfall-lib = mkFollowingNixpkgs "snowfallorg/lib/dev";
};
outputs = {...} @ inputs:
with inputs;
snowfall-lib.mkFlake {
inherit inputs;
src = ./.;
overlays = [
snowfall-flake.overlays.default
];
channels-config = {
allowAliases = true;
allowUnfree = true;
allowUnsupportedSystem = true;
cudaSupport = true;
permittedInsecurePackages = ["freeimage-unstable-2021-11-01"];
home-manager.useGlobalPkgs = true;
};
systems.modules.nixos =
[
agenix.nixosModules.default
catppuccin.nixosModules.catppuccin
chaotic.nixosModules.default
cosmic.nixosModules.default
determinate.nixosModules.default
impermanence.nixosModules.impermanence
nixos-facter-modules.nixosModules.facter
]
++ xmonad-contrib.nixosModules;
systems.modules.darwin = [
"${home-manager}/nix-darwin"
];
outputs-builder = channels: {
formatter = treefmt-nix.lib.mkWrapper channels.nixpkgs {
projectRootFile = "flake.nix";
programs = {
alejandra.enable = true;
deadnix.enable = true;
jsonfmt.enable = true;
stylua.enable = true;
taplo.enable = true;
};
};
devShells.default = with channels.nixpkgs;
mkShellNoCC {
packages = [
alejandra
git
lua-language-server
nvfetcher
statix
(writeScriptBin "build" ''
sudo nix run \
--option experimental-features "nix-command flakes" \
--option extra-substituters https://numtide.cachix.org \
--option extra-trusted-public-keys numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE= \
github:numtide/nixos-facter -- -o systems/${system}/$(hostname)/facter.json
nix fmt
nh os switch
'')
(writeScriptBin "up" "nix flake update && nvfetcher")
];
};
};
};
}

1957
flake.lock

File diff suppressed because it is too large Load diff

112
flake.nix
View file

@ -1,42 +1,40 @@
# Do not modify! This file is generated.
{ {
inputs = { inputs = {
agenix.url = "github:ryantm/agenix";
catppuccin.url = "github:catppuccin/nix"; catppuccin.url = "github:catppuccin/nix";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
cosmic = { nix-colors.url = "github:Misterio77/nix-colors";
nix-super.url = "git+https://git.privatevoid.net/max/nix-super.git";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixvim.url = "github:pupbrained/nixvim";
schizofox.url = "github:schizofox/schizofox";
treefmt-nix.url = "github:numtide/treefmt-nix";
asahi = {
url = "github:tpwrules/nixos-apple-silicon";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
url = "github:lilyinstarlight/nixos-cosmic";
}; };
darwin = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:LnL7/nix-darwin/master";
};
determinate.url = "github:DeterminateSystems/determinate";
emacs.url = "git+https://git.pupbrained.xyz/pupbrained/nixmacs.git";
flakegen.url = "github:jorsn/flakegen";
home-manager = { home-manager = {
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
}; };
hyprland = { hyprland = {
submodules = true; submodules = true;
type = "git"; type = "git";
url = "https://github.com/hyprwm/Hyprland"; url = "https://github.com/hyprwm/Hyprland";
}; };
hyprland-plugins = { hyprland-plugins = {
inputs.hyprland.follows = "hyprland"; inputs.hyprland.follows = "hyprland";
url = "github:hyprwm/hyprland-plugins"; url = "github:hyprwm/hyprland-plugins";
}; };
impermanence.url = "github:nix-community/impermanence";
nix-colors.url = "github:Misterio77/nix-colors";
nix-index-database = { nix-index-database = {
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/nix-index-database"; url = "github:nix-community/nix-index-database";
}; };
nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixvim.url = "github:pupbrained/nvim-config";
snowfall-flake = { snowfall-flake = {
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
url = "github:snowfallorg/flake"; url = "github:snowfallorg/flake";
@ -45,9 +43,83 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
url = "github:snowfallorg/lib/dev"; url = "github:snowfallorg/lib/dev";
}; };
treefmt-nix.url = "github:numtide/treefmt-nix";
xmonad-contrib.url = "github:xmonad/xmonad-contrib";
zen-browser.url = "github:fufexan/zen-browser-flake";
}; };
outputs = inputs: inputs.flakegen ./flake.in.nix inputs;
outputs = {
asahi,
catppuccin,
chaotic,
hyprland,
nix-colors,
nixpkgs,
nix-super,
schizofox,
nix-index-database,
treefmt-nix,
snowfall-lib,
snowfall-flake,
...
} @ inputs: let
pkgs = import nixpkgs {inherit system;};
system = "aarch64-linux";
in
snowfall-lib.mkFlake {
inherit inputs;
src = ./.;
formatter.${system} = treefmt-nix.lib.mkWrapper pkgs {
projectRootFile = "flake.nix";
programs = {
alejandra.enable = true;
deadnix.enable = true;
};
};
overlays = [
snowfall-flake.overlays.default
(_final: _prev: {
nixSuper = nix-super.packages.${system}.default;
})
];
channels-config = {
allowAliases = true;
allowUnfree = true;
home-manager.useGlobalPkgs = true;
};
homes.modules = [
catppuccin.homeManagerModules.catppuccin
chaotic.homeManagerModules.default
hyprland.homeManagerModules.default
nix-colors.homeManagerModules.default
nix-index-database.hmModules.nix-index
schizofox.homeManagerModules.default
];
systems.modules.nixos = [
asahi.nixosModules.apple-silicon-support
catppuccin.nixosModules.catppuccin
chaotic.nixosModules.default
];
devShells.${system}.default = with pkgs;
mkShellNoCC {
packages = [
alejandra
git
nh
nvfetcher
statix
(writeScriptBin "build" ''
nix fmt
nh os switch . -- --impure
nh home switch
'')
(writeScriptBin "up" "nix flake update")
];
};
};
} }

View file

@ -1,119 +0,0 @@
{
pkgs,
inputs,
...
}: {
imports = with inputs; [
nix-index-database.hmModules.nix-index
catppuccin.homeManagerModules.catppuccin
chaotic.homeManagerModules.default
nix-colors.homeManagerModules.default
];
snowfallorg.user = {
enable = true;
name = "marshall";
};
home = {
packages = with pkgs;
[
alejandra
bit
cargo-edit
cargo-udeps
cmake
duf
emacs-lsp-booster
eternal-terminal
grc
huniq
hurl
keybase
keychain
monolith
nix-output-monitor
nix-prefetch-scripts
nil
nixd
nodePackages_latest.nodejs
nurl
pinentry_mac
pnpm
rm-improved
rnr
slack
stylua
tailspin
tokei
typst
typst-live
typstfmt
unrar
unzip
upx
vgrep
wget
xcp
xh
(emacs30-pgtk.overrideAttrs (old: let
sources = import ../../../_sources/generated.nix {inherit (pkgs) fetchurl fetchFromGitHub;};
getPatch = name: sources.${name}.src;
in {
patches =
(old.patches or [])
++ [
# Fix OS window role (needed for window managers like yabai)
(getPatch "fix-window-role")
# Use poll instead of select to get file descriptors
(getPatch "poll")
# Enable rounded window with no decoration
(getPatch "round-undecorated-frame")
# Make Emacs aware of OS-level light/dark mode
(getPatch "system-appearance")
];
}))
(python312.withPackages (pkgs:
with pkgs; [
epc
orjson
sexpdata
six
setuptools
paramiko
rapidfuzz
]))
]
++ (with inputs; [nixvim.packages.${pkgs.system}.default]);
stateVersion = "24.05";
};
programs = {
bacon.enable = true;
btop.enable = true;
bun.enable = true;
gpg.enable = true;
skim.enable = false;
tealdeer.enable = false;
wezterm.extraConfig = builtins.readFile ./wezterm.lua;
jujutsu = {
enable = true;
settings = {
user = {
email = "mars@pupbrained.xyz";
name = "Mars";
};
};
};
git = {
extraConfig.credential.helper = "osxkeychain";
signing.key = "874E22DF2F9DFCB5";
};
};
}

View file

@ -1,135 +0,0 @@
local c = wezterm.config_builder()
wezterm.on('user-var-changed', function(window, pane, name, value)
local overrides = window:get_config_overrides() or {}
if name == 'ZEN_MODE' then
local incremental = value:find('+')
local number_value = tonumber(value)
if incremental ~= nil then
while number_value > 0 do
window:perform_action(wezterm.action.IncreaseFontSize, pane)
number_value = number_value - 1
end
overrides.enable_tab_bar = false
elseif number_value < 0 then
window:perform_action(wezterm.action.ResetFontSize, pane)
overrides.font_size = nil
overrides.enable_tab_bar = true
else
overrides.font_size = number_value
overrides.enable_tab_bar = false
end
end
window:set_config_overrides(overrides)
end)
wezterm.on('format-window-title', function(tab, pane, tabs, panes, config)
local zoomed = ''
if tab.active_pane.is_zoomed then
zoomed = '[Z] '
end
local index = ''
if #tabs > 1 then
index = string.format('[%d/%d] ', tab.tab_index + 1, #tabs)
end
return 'WezTerm - ' .. zoomed .. index .. tab.active_pane.title
end)
wezterm.plugin.require('https://github.com/nekowinston/wezterm-bar').apply_to_config(c, {
position = 'bottom',
max_width = 32,
dividers = 'slant_right',
indicator = {
leader = {
enabled = true,
off = '',
on = '',
},
mode = {
enabled = true,
names = {
resize_mode = 'RESIZE',
copy_mode = 'VISUAL',
search_mode = 'SEARCH',
},
},
},
tabs = {
numerals = 'arabic',
pane_count = 'subscript',
brackets = {
active = { '', ':' },
inactive = { '', ':' },
},
},
clock = {
enabled = true,
format = '%l:%M %p',
},
})
local act = wezterm.action
local keybinds = {
{
key = 'Enter',
mods = 'CTRL|SHIFT',
action = act.SplitHorizontal({ domain = 'CurrentPaneDomain' }),
},
{
key = 'h',
mods = 'CTRL|SHIFT',
action = act.ActivatePaneDirection('Left'),
},
{
key = 'l',
mods = 'CTRL|SHIFT',
action = act.ActivatePaneDirection('Right'),
},
{
key = 'k',
mods = 'CTRL|SHIFT',
action = act.ActivatePaneDirection('Up'),
},
{
key = 'j',
mods = 'CTRL|SHIFT',
action = act.ActivatePaneDirection('Down'),
},
{
key = 't',
mods = 'CTRL|SHIFT',
action = act.SpawnCommandInNewTab({ cwd = wezterm.home_dir }),
},
}
local config = {
adjust_window_size_when_changing_font_size = false,
color_scheme = 'Catppuccin Mocha',
cursor_blink_ease_in = 'Constant',
cursor_blink_ease_out = 'Constant',
cursor_blink_rate = 500,
default_cursor_style = 'BlinkingBar',
enable_scroll_bar = false,
font = wezterm.font('PragmataPro Mono Liga'),
font_size = 14,
front_end = 'WebGpu',
hide_tab_bar_if_only_one_tab = true,
keys = keybinds,
macos_window_background_blur = 32,
use_fancy_tab_bar = false,
webgpu_power_preference = 'HighPerformance',
window_background_opacity = 0.85,
window_decorations = 'RESIZE',
window_padding = { left = 0, right = 0, top = 0, bottom = 0 },
}
for k, v in pairs(config) do
c[k] = v
end
return c

View file

@ -0,0 +1,112 @@
{
lib,
pkgs,
inputs,
...
}: {
colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;
home = {
packages = with pkgs;
[
distrobox
duf
eternal-terminal
firefox
grc
iamb
killall
libnotify
lm_sensors
loupe
mpv
ollama
playerctl
prismlauncher
telegram-desktop
vesktop
youki
]
++ (with inputs; [
nixvim.packages.${pkgs.system}.default
]);
pointerCursor = {
gtk.enable = true;
x11.enable = true;
name = "Catppuccin-Mocha-Green-Cursors";
package = pkgs.catppuccin-cursors.mochaGreen;
size = 24;
};
stateVersion = "24.05";
};
dconf.settings = {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
};
xdg.enable = true;
catppuccin = {
enable = true;
flavor = "mocha";
accent = "green";
};
gtk = {
enable = true;
catppuccin = {
enable = true;
icon.enable = true;
cursor.enable = true;
size = "standard";
tweaks = ["rimless"];
};
};
qt = {
enable = true;
style.name = "kvantum";
style.catppuccin.enable = true;
};
programs = {
nix-index-database.comma.enable = true;
nix-index.enable = true;
ripgrep.enable = true;
fzf = {
enable = true;
catppuccin.enable = true;
colors = with lib; {
bg = mkForce "-1";
"bg+" = mkForce "-1";
};
};
eza = {
enable = true;
git = true;
icons = true;
};
btop = {
enable = true;
catppuccin.enable = true;
};
direnv = {
enable = true;
nix-direnv.enable = true;
};
};
systemd.user.startServices = "sd-switch";
nix.package = lib.mkForce pkgs.nixSuper;
}

View file

@ -1,231 +0,0 @@
{
lib,
pkgs,
inputs,
...
}: {
imports = with inputs; [
catppuccin.homeManagerModules.catppuccin
chaotic.homeManagerModules.default
hyprland.homeManagerModules.default
nix-colors.homeManagerModules.default
nix-index-database.hmModules.nix-index
./hyprland
./screenshot
];
snowfallorg.user = {
enable = true;
name = "marshall";
};
colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;
home = {
packages = with pkgs;
[
alejandra
beeper
duf
eternal-terminal
((pkgs.emacsPackagesFor pkgs.emacs30-pgtk).emacsWithPackages (epkgs:
builtins.attrValues {
inherit (epkgs.treesit-grammars) with-all-grammars;
}))
emacs-lsp-booster
equibop
glow
grc
jamesdsp
jdk21
killall
libnotify
lm_sensors
loupe
mattermost-desktop
neovide
nodejs
playerctl
prismlauncher
(python312.withPackages
(p:
with p; [
epc
orjson
sexpdata
six
setuptools
paramiko
rapidfuzz
]))
slack
telegram-desktop
xdotool
(xwinwrap.overrideAttrs {
src = fetchFromGitHub {
owner = "camonater62";
repo = "xwinwrap";
rev = "ec74e730072225ffa740bf5076a1dd0a343bb113";
sha256 = "0vfwbcx5y1aphiaix2zps1bl7lhbhdvm6vhys2m0kwvl6igy0cc8";
};
buildPhase = ''
make all
'';
installPhase = ''
mkdir -p $out/bin
mv xwinwrap $out/bin
'';
})
youki
]
++ (with jetbrains; [
clion
rust-rover
phpstorm
webstorm
idea-ultimate
])
++ (with inputs; [
nixvim.packages.${pkgs.system}.default
zen-browser.packages.${pkgs.system}.specific
chaotic.packages.${pkgs.system}.distrobox_git
chaotic.packages.${pkgs.system}.zed-editor_git
]);
stateVersion = "24.05";
};
dconf.settings = {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
};
xdg.enable = true;
catppuccin = {
enable = true;
flavor = "mocha";
accent = "green";
pointerCursor.enable = true;
};
gtk = let
gradiencePreset = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/GradienceTeam/Community/next/official/catppuccin-macchiato.json";
hash = "sha256-FgQvmK/Pjn980o+UVc2a70kGa6sGse045zPS9hzCs14=";
};
gradienceBuild = pkgs.stdenv.mkDerivation {
name = "gradience-build";
phases = ["buildPhase" "installPhase"];
nativeBuildInputs = [pkgs.gradience];
buildPhase = ''
shopt -s nullglob
export HOME=$TMPDIR
mkdir -p $HOME/.config/presets
gradience-cli apply -p ${gradiencePreset} --gtk both
'';
installPhase = ''
mkdir -p $out
cp -r .config/gtk-4.0 $out/
cp -r .config/gtk-3.0 $out/
'';
};
in {
enable = false;
theme.name = "adw-gtk3-dark";
theme.package = pkgs.adw-gtk3;
gtk3 = {
extraCss = builtins.readFile "${gradienceBuild}/gtk-3.0/gtk.css";
extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
gtk4 = {
extraCss = builtins.readFile "${gradienceBuild}/gtk-4.0/gtk.css";
extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
};
qt = {
enable = true;
platformTheme.name = "kvantum";
style.name = "kvantum";
style.catppuccin.enable = true;
};
programs = {
xmobar.enable = true;
wezterm.extraConfig = builtins.readFile ./wezterm.lua;
git = {
extraConfig.credential.helper = "libsecret";
signing.key = "0FF5B8826803F895";
};
mpv = {
enable = true;
scripts = [pkgs.mpvScripts.uosc];
catppuccin.enable = true;
};
};
services = {
picom = {
enable = true;
backend = "glx";
fadeDelta = 5;
fade = true;
shadow = true;
vSync = true;
shadowExclude = [
"class_g = 'firefox' && argb"
"class_g *?= 'slop'"
];
settings = {
corner-radius = 10;
blur-background-exclude = [
"class_g = 'slop'"
];
rounded-corners-exclude = [
"window_type = 'dock'"
"window_type = 'desktop'"
];
blur = {
method = "gaussian";
size = 10;
deviation = 5.0;
};
};
};
dunst = {
enable = true;
settings.global = {
corner_radius = 10;
offset = "18x53";
frame_width = 2;
font = "SN Pro 12";
frame_color = lib.mkForce "#a6e3a1";
};
catppuccin.enable = true;
};
};
systemd.user.startServices = "sd-switch";
}

View file

@ -1,231 +0,0 @@
{pkgs, ...}:
with pkgs; {
imports = [
./rofi.nix
./services.nix
./waybar.nix
];
home.packages = [
wl-clipboard
];
wayland.windowManager.hyprland = {
enable = false;
systemd.variables = ["--all"];
settings = let
rofi-clipboard = pkgs.writeScriptBin "rofi-clipboard" ''
tmp_dir="/tmp/cliphist"
rm -rf "$tmp_dir"
if [[ -n "$1" ]]; then
cliphist decode <<<"$1" | wl-copy
exit
fi
mkdir -p "$tmp_dir"
read -r -d "" prog <<EOF
/^[0-9]+\s<meta http-equiv=/ { next }
match(\$0, /^([0-9]+)\s(\[\[\s)?binary.*(jpg|jpeg|png|bmp)/, grp) {
system("echo " grp[1] "\\\\\t | cliphist decode >$tmp_dir/"grp[1]"."grp[3])
print \$0"\0icon\x1f$tmp_dir/"grp[1]"."grp[3]
next
}
1
EOF
cliphist list | gawk "$prog"
'';
scratchpad = pkgs.writeScriptBin "hyprscratchpad" ''
COMMAND=$1
CLASS=$2
WORKSPACE=$3
if [[ $(hyprctl clients | grep -v '"title":' | grep "class: $CLASS") ]];then
hyprctl dispatch togglespecialworkspace $WORKSPACE
else
hyprctl dispatch togglespecialworkspace $WORKSPACE && hyprctl dispatch exec "$COMMAND"
fi
'';
mod = "SUPER";
modC = "SUPER CTRL";
modS = "SUPER SHIFT";
browser = "firefox-nightly";
colorPicker = "notify-send -i gtk-color-picker $(${hyprpicker}/bin/hyprpicker -a) 'Copied to clipboard.'";
fileManager = "nautilus";
launcher = "rofi -show drun";
clipboard = "rofi -modi '':${rofi-clipboard}/bin/rofi-clipboard -show '' -show-icons";
terminal = "wezterm";
screenshot = mode: "${hyprshot}/bin/hyprshot --clipboard-only -m ${mode}";
in {
decoration.rounding = 10;
dwindle.preserve_split = true;
gestures.workspace_swipe = true;
input.touchpad = {
clickfinger_behavior = true;
natural_scroll = true;
};
device = [
{
name = "logitech-g502-x-plus";
sensitivity = -0.5;
}
];
windowrule = [
"float, ^(vesktop)$"
"float, ^(org.telegram.desktop)$"
];
layerrule = [
"dimaround, rofi"
];
animations = {
enabled = true;
bezier = [
"overshot,0.7,0.6,0.1,1.1"
"bounce,1,1.6,0.1,0.85"
];
animation = [
"windows,1,5,bounce,popin"
"border,1,20,default"
"fade,1,5,default"
"workspaces,1,5,overshot,slide"
];
};
general = {
border_size = 2;
gaps_in = 10;
resize_on_border = true;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgba(595959aa)";
};
exec-once = [
"${mpvpaper.overrideAttrs {
version = "unstable-2024-07-05";
src = fetchFromGitHub {
owner = "GhostNaN";
repo = "mpvpaper";
rev = "a445391ff7491053fef78e3645eeed934f0c8fae";
sha256 = "sha256-3wHsUtIkh765EiMnx3BPzztvffIDf1NCqF0I/OATTZ4=";
};
}}/bin/mpvpaper -vp -o 'no-audio loop' DP-1 ${builtins.toString ./wall.mp4}"
"waybar"
];
misc = {
force_default_wallpaper = 0;
disable_hyprland_logo = true;
};
monitor = [
"eDP-1, disable"
"DP-1, 2560x1440@165, auto, auto"
];
env = [
# Nvidia stuff
"GBM_BACKEND, nvidia-drm"
"__GLX_VENDOR_LIBRARY_NAME, nvidia"
"LIBVA_DRIVER_NAME, nvidia"
"WLR_DRM_DEVICES, $HOME/.config/hypr/card"
# Cursors
"HYPRCURSOR_SIZE, 24"
"XCURSOR_SIZE, 24"
];
bindm = [
"${mod}, mouse:272, movewindow"
"${mod}, mouse:273, resizewindow"
];
bind =
[
# Apps
"${mod}, v, exec, ${clipboard}"
"${mod}, c, exec, ${colorPicker}"
"${mod}, w, exec, ${browser}"
"${mod}, e, exec, ${fileManager}"
"${mod}, r, exec, ${launcher}"
"${mod}, Return, exec, ${terminal}"
# Scratchpads
"${mod}, d, exec, ${scratchpad}/bin/hyprscratchpad vesktop vesktop vesktop"
"${mod}, t, exec, ${scratchpad}/bin/hyprscratchpad telegram-desktop org.telegram.desktop telegram"
# Screenshots
"${modS}, s, exec, ${screenshot "window"}"
"${modC}, 3, exec, ${screenshot "output -c"}"
"${modC}, 4, exec, ${screenshot "region -C 0,0"}"
# Mouse controls
"${mod}, mouse_down, workspace, e-1"
"${mod}, mouse_up, workspace, e+1"
# Quitting
"${mod}, q, killactive"
"${modS}, q, exit"
# Toggles
"${mod}, Space, togglefloating"
# Focus movements
"${mod}, h, movefocus, l"
"${mod}, j, movefocus, d"
"${mod}, k, movefocus, u"
"${mod}, l, movefocus, r"
# Window movements
"${modS}, h, movewindow, l"
"${modS}, j, movewindow, d"
"${modS}, k, movewindow, u"
"${modS}, l, movewindow, r"
# Window resizing
"${modC}, h, resizeactive, -30 0"
"${modC}, j, resizeactive, 0 30"
"${modC}, k, resizeactive, 0 -30"
"${modC}, l, resizeactive, 30 0"
# Volume controls
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# Media controls
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioNext, exec, playerctl next"
", XF86AudioPrev, exec, playerctl previous"
]
++ (
builtins.concatLists (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
# Workspaces
"${mod}, ${ws}, workspace, ${builtins.toString (x + 1)}"
"${modS}, ${ws}, movetoworkspace, ${builtins.toString (x + 1)}"
]
)
10)
);
};
};
}

View file

@ -1,28 +0,0 @@
{pkgs, ...}: {
programs.rofi = {
enable = true;
catppuccin.enable = true;
package = pkgs.rofi-wayland;
extraConfig = {
modi = "run,drun,window";
icon-theme = "Oranchelo";
show-icons = true;
terminal = "wezterm";
drun-display-format = "{icon} {name}";
location = 0;
disable-history = false;
hide-scrollbar = true;
display-drun = " Apps ";
display-run = " Run ";
display-window = " 󰍲 Window";
display-Network = " 󰤨 Network";
sidebar-mode = true;
};
theme = {
"*".font = "Maple Mono NF 14";
window.border-radius = 10;
};
};
}

View file

@ -1,14 +0,0 @@
{...}: {
services = {
cliphist.enable = false;
udiskie.enable = false;
swaync = {
enable = false;
style = builtins.fetchurl {
url = "https://github.com/catppuccin/swaync/releases/download/v0.2.3/mocha.css";
sha256 = "1xr1wkg4zb467b35xhsfqiwhimfnn88i3ml5rf173rkm7fyby9qy";
};
};
};
}

View file

@ -1,282 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
palette = config.colorScheme.palette;
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
in {
programs.waybar = {
enable = false;
package = pkgs.waybar;
settings = [
{
layer = "top";
position = "top";
modules-center = ["hyprland/workspaces"];
modules-left = [
"custom/startmenu"
"hyprland/window"
"pulseaudio"
"cpu"
"memory"
];
modules-right = [
"mpris"
"network"
"custom/notification"
"tray"
"clock"
];
"mpris" = {
format = "{player_icon} {title} - {artist}";
format-paused = "{status_icon} {title} - {artist}";
player-icons.default = "󰝚";
status-icons.paused = "󰏤";
max-length = 40;
};
"hyprland/workspaces" = {
format = "{name}";
format-icons = {
default = " ";
active = " ";
urgent = " ";
};
on-scroll-up = "hyprctl dispatch workspace e-1";
on-scroll-down = "hyprctl dispatch workspace e+1";
};
"clock" = {
format = " {:L%I:%M %p}";
tooltip = true;
tooltip-format = "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>";
};
"hyprland/window" = {
max-length = 40;
rewrite = {
"" = "󰍹 Desktop";
"(.*) Firefox Nightly" = "󰈹 $1";
"Slack" = "󰒱 Slack";
".*?Discord \\| @?(.*)" = "󰙯 $1";
"wezterm" = " WezTerm";
"Telegram(?: \\((\\d+)\\))?" = " Telegram";
"Steam" = "󰓓 Steam";
};
};
"memory" = {
interval = 5;
format = " {}%";
tooltip = true;
};
"cpu" = {
interval = 5;
format = " {usage:2}%";
tooltip = true;
};
"disk" = {
format = " {free}";
tooltip = true;
};
"network" = {
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
format-ethernet = " {bandwidthDownOctets}";
format-wifi = "{icon} {essid}";
format-disconnected = "󰤮";
tooltip = false;
};
"tray" = {
spacing = 12;
};
"pulseaudio" = {
format = "{icon} {volume}% {format_source}";
format-bluetooth = "{volume}% {icon} {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 = "sleep 0.1 && pavucontrol";
};
"custom/startmenu" = {
tooltip = false;
format = "";
on-click = "rofi -show drun";
};
"custom/notification" = {
tooltip = false;
format = "{icon} {}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
dnd-inhibited-none = "";
};
return-type = "json";
exec = "swaync-client -swb";
on-click = "swaync-client -t &";
escape = true;
};
}
];
style = lib.concatStrings [
''
* {
border: none;
border-radius: 0px;
font-family: Maple Mono NF;
font-size: 16px;
min-height: 0px;
}
window#waybar {
background-color: #${palette.base00};
}
#workspaces {
background: #${palette.base01};
border-radius: 16px;
color: #${palette.base00};
margin: 4px 4px;
padding: 8px 5px;
}
#workspaces button {
animation: gradient_horizontal 15s ease infinite;
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
background-size: 300% 300%;
border-radius: 16px;
color: #${palette.base00};
font-weight: bold;
margin: 0px 3px;
opacity: 0.5;
padding: 0px 5px;
transition: ${betterTransition};
}
#workspaces button.active {
animation: gradient_horizontal 15s ease infinite;
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
background-size: 300% 300%;
border-radius: 16px;
color: #${palette.base00};
font-weight: bold;
margin: 0px 3px;
min-width: 40px;
opacity: 1.0;
padding: 0px 5px;
transition: ${betterTransition};
}
#workspaces button:hover {
animation: gradient_horizontal 15s ease infinite;
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
background-size: 300% 300%;
border-radius: 16px;
color: #${palette.base00};
font-weight: bold;
opacity: 0.8;
transition: ${betterTransition};
}
@keyframes gradient_horizontal {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
@keyframes swiping {
0% { background-position: 0% 200%; }
100% { background-position: 200% 200%; }
}
tooltip {
background: #${palette.base00};
border: 1px solid #${palette.base0E};
border-radius: 12px;
}
tooltip label {
color: #${palette.base07};
}
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
background: #${palette.base01};
border-radius: 24px 10px 24px 10px;
color: #${palette.base05};
font-weight: bold;
margin: 4px 0px;
margin-left: 7px;
padding: 0px 18px;
}
#custom-startmenu {
background: #${palette.base01};
border-radius: 0px 0px 40px 0px;
color: #${palette.base0D};
font-size: 28px;
margin: 0px;
padding: 0px 30px 0px 15px;
}
#mpris, #network, #custom-notification, #tray {
background: #${palette.base01};
border-radius: 10px 24px 10px 24px;
color: #${palette.base05};
font-weight: bold;
margin: 4px 0px;
margin-right: 7px;
padding: 0px 18px;
}
#clock {
animation: gradient_horizontal 15s ease infinite;
background: linear-gradient(45deg, #${palette.base0C}, #${palette.base0F}, #${palette.base0B}, #${palette.base08});
background-size: 300% 300%;
border-radius: 0px 0px 0px 40px;
color: #${palette.base00};
font-weight: bold;
margin: 0px;
padding: 0px 15px 0px 30px;
}
''
];
};
}

View file

@ -1,134 +0,0 @@
local c = wezterm.config_builder()
wezterm.on('user-var-changed', function(window, pane, name, value)
local overrides = window:get_config_overrides() or {}
if name == 'ZEN_MODE' then
local incremental = value:find('+')
local number_value = tonumber(value)
if incremental ~= nil then
while number_value > 0 do
window:perform_action(wezterm.action.IncreaseFontSize, pane)
number_value = number_value - 1
end
overrides.enable_tab_bar = false
elseif number_value < 0 then
window:perform_action(wezterm.action.ResetFontSize, pane)
overrides.font_size = nil
overrides.enable_tab_bar = true
else
overrides.font_size = number_value
overrides.enable_tab_bar = false
end
end
window:set_config_overrides(overrides)
end)
wezterm.on('format-window-title', function(tab, pane, tabs, panes, config)
local zoomed = ''
if tab.active_pane.is_zoomed then
zoomed = '[Z] '
end
local index = ''
if #tabs > 1 then
index = string.format('[%d/%d] ', tab.tab_index + 1, #tabs)
end
return 'WezTerm - ' .. zoomed .. index .. tab.active_pane.title
end)
wezterm.plugin.require('https://github.com/nekowinston/wezterm-bar').apply_to_config(c, {
position = 'bottom',
max_width = 32,
dividers = 'slant_right',
indicator = {
leader = {
enabled = true,
off = '',
on = '',
},
mode = {
enabled = true,
names = {
resize_mode = 'RESIZE',
copy_mode = 'VISUAL',
search_mode = 'SEARCH',
},
},
},
tabs = {
numerals = 'arabic',
pane_count = 'subscript',
brackets = {
active = { '', ':' },
inactive = { '', ':' },
},
},
clock = {
enabled = true,
format = '%l:%M %p',
},
})
local act = wezterm.action
local keybinds = {
{
key = 'Enter',
mods = 'CTRL|SHIFT',
action = act.SplitHorizontal({ domain = 'CurrentPaneDomain' }),
},
{
key = 'h',
mods = 'CTRL|SHIFT',
action = act.ActivatePaneDirection('Left'),
},
{
key = 'l',
mods = 'CTRL|SHIFT',
action = act.ActivatePaneDirection('Right'),
},
{
key = 'k',
mods = 'CTRL|SHIFT',
action = act.ActivatePaneDirection('Up'),
},
{
key = 'j',
mods = 'CTRL|SHIFT',
action = act.ActivatePaneDirection('Down'),
},
{
key = 't',
mods = 'CTRL|SHIFT',
action = act.SpawnCommandInNewTab({ cwd = wezterm.home_dir }),
},
}
local config = {
adjust_window_size_when_changing_font_size = false,
color_scheme = 'Catppuccin Mocha',
cursor_blink_ease_in = 'Constant',
cursor_blink_ease_out = 'Constant',
cursor_blink_rate = 500,
default_cursor_style = 'BlinkingBar',
enable_kitty_graphics = true,
enable_scroll_bar = false,
enable_wayland = true,
font_size = 12,
font = wezterm.font('Iosevka Comfy Motion'),
front_end = 'WebGpu',
keys = keybinds,
underline_position = -4,
use_fancy_tab_bar = false,
window_decorations = 'NONE',
warn_about_missing_glyphs = false,
window_background_opacity = 0.8,
window_padding = { left = 0, right = 0, top = 0, bottom = 0 },
}
for k, v in pairs(config) do
c[k] = v
end
return c

View file

@ -1,64 +0,0 @@
{
inputs,
pkgs,
lib,
...
}:
with pkgs; {
imports = with inputs; [
catppuccin.homeManagerModules.catppuccin
nix-index-database.hmModules.nix-index
];
nixpkgs = {
config.allowUnfree = true;
};
home = {
homeDirectory = "/home/marshall";
username = "marshall";
packages =
[
alejandra
bun
grc
macchina
wl-clipboard
xclip
zed-editor
]
++ (with inputs; [
nixvim.packages.${pkgs.system}.default
]);
};
programs = {
gpg.enable = true;
skim.enable = true;
tealdeer.enable = true;
wezterm.enable = lib.mkForce false;
atuin = {
enable = true;
settings = {
inline_height = 20;
show_preview = true;
style = "compact";
};
};
git = {
extraConfig.credential.helper = "libsecret";
signing.key = "91B1F40056A01DDF";
};
};
services = {
cliphist.enable = true;
};
systemd.user.startServices = "sd-switch";
home.stateVersion = "23.11";
}

View file

@ -0,0 +1,450 @@
{
pkgs,
config,
lib,
...
}: let
palette = config.colorScheme.palette;
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
in
with pkgs; {
home.packages = [
wl-clipboard-rs
];
programs = {
rofi = {
enable = true;
catppuccin.enable = true;
package = pkgs.rofi-wayland;
extraConfig = {
modi = "run,drun,window";
icon-theme = "Oranchelo";
show-icons = true;
terminal = "wezterm";
drun-display-format = "{icon} {name}";
location = 0;
disable-history = false;
hide-scrollbar = true;
display-drun = " Apps ";
display-run = " Run ";
display-window = " 󰍲 Window";
display-Network = " 󰤨 Network";
sidebar-mode = true;
};
theme = {
"*".font = "Maple Mono NF 14";
window.border-radius = 10;
};
};
waybar = {
enable = true;
package = pkgs.waybar;
settings = [
{
layer = "top";
position = "top";
modules-left = [
"custom/startmenu"
"hyprland/workspaces"
"hyprland/window"
"pulseaudio"
];
modules-right = [
"battery"
"network"
"custom/notification"
"tray"
"clock"
];
"hyprland/workspaces" = {
format = "{name}";
format-icons = {
default = " ";
active = " ";
urgent = " ";
};
on-scroll-up = "hyprctl dispatch workspace e+1";
on-scroll-down = "hyprctl dispatch workspace e-1";
};
"clock" = {
format = " {:L%I:%M %p}";
tooltip = true;
tooltip-format = "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>";
};
"hyprland/window" = {
max-length = 22;
separate-outputs = false;
rewrite = {
"" = "Desktop";
};
};
"memory" = {
interval = 5;
format = " {}%";
tooltip = true;
};
"cpu" = {
interval = 5;
format = " {usage:2}%";
tooltip = true;
};
"disk" = {
format = " {free}";
tooltip = true;
};
"battery" = {
format = " {}%";
tooltip = true;
};
"network" = {
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
format-ethernet = " {bandwidthDownOctets}";
format-wifi = "{icon} {essid}";
format-disconnected = "󰤮";
tooltip = false;
};
"tray" = {
spacing = 12;
};
"pulseaudio" = {
format = "{icon} {volume}% {format_source}";
format-bluetooth = "{volume}% {icon} {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 = "sleep 0.1 && pavucontrol";
};
"custom/startmenu" = {
tooltip = false;
format = "";
on-click = "rofi -show drun";
};
"custom/notification" = {
tooltip = false;
format = "{icon} {}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
dnd-inhibited-none = "";
};
return-type = "json";
exec = "swaync-client -swb";
on-click = "swaync-client -t &";
escape = true;
};
}
];
style = lib.concatStrings [
''
* {
border: none;
border-radius: 0px;
font-family: Maple Mono NF;
font-size: 16px;
min-height: 0px;
}
window#waybar {
background-color: #${palette.base00};
}
#workspaces {
background: #${palette.base01};
border-radius: 16px;
color: #${palette.base00};
margin: 4px 4px;
padding: 8px 5px;
}
#workspaces button {
animation: gradient_horizontal 15s ease infinite;
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
background-size: 300% 300%;
border-radius: 16px;
color: #${palette.base00};
font-weight: bold;
margin: 0px 3px;
opacity: 0.5;
padding: 0px 5px;
transition: ${betterTransition};
}
#workspaces button.active {
animation: gradient_horizontal 15s ease infinite;
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
background-size: 300% 300%;
border-radius: 16px;
color: #${palette.base00};
font-weight: bold;
margin: 0px 3px;
min-width: 40px;
opacity: 1.0;
padding: 0px 5px;
transition: ${betterTransition};
}
#workspaces button:hover {
animation: gradient_horizontal 15s ease infinite;
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
background-size: 300% 300%;
border-radius: 16px;
color: #${palette.base00};
font-weight: bold;
opacity: 0.8;
transition: ${betterTransition};
}
@keyframes gradient_horizontal {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
@keyframes swiping {
0% { background-position: 0% 200%; }
100% { background-position: 200% 200%; }
}
tooltip {
background: #${palette.base00};
border: 1px solid #${palette.base0E};
border-radius: 12px;
}
tooltip label {
color: #${palette.base07};
}
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
background: #${palette.base01};
border-radius: 24px 10px 24px 10px;
color: #${palette.base05};
font-weight: bold;
margin: 4px 0px;
margin-left: 7px;
padding: 0px 18px;
}
#custom-startmenu {
background: #${palette.base01};
border-radius: 0px 0px 40px 0px;
color: #${palette.base0D};
font-size: 28px;
margin: 0px;
padding: 0px 30px 0px 15px;
}
#battery, #network, #custom-notification, #tray {
background: #${palette.base01};
border-radius: 10px 24px 10px 24px;
color: #${palette.base05};
font-weight: bold;
margin: 4px 0px;
margin-right: 7px;
padding: 0px 18px;
}
#clock {
animation: gradient_horizontal 15s ease infinite;
background: linear-gradient(45deg, #${palette.base0C}, #${palette.base0F}, #${palette.base0B}, #${palette.base08});
background-size: 300% 300%;
border-radius: 0px 0px 0px 40px;
color: #${palette.base00};
font-weight: bold;
margin: 0px;
padding: 0px 15px 0px 30px;
}
''
];
};
};
services.swaync = {
enable = true;
style = builtins.fetchurl {
url = "https://github.com/catppuccin/swaync/releases/download/v0.2.3/mocha.css";
sha256 = "1xr1wkg4zb467b35xhsfqiwhimfnn88i3ml5rf173rkm7fyby9qy";
};
};
wayland.windowManager.hyprland = {
enable = true;
systemd.variables = ["--all"];
settings = let
mod = "SUPER";
modC = "SUPER CTRL";
modS = "SUPER SHIFT";
browser = "firefox";
colorPicker = "notify-send -e -i gtk-color-picker $(${hyprpicker}/bin/hyprpicker -a) 'Copied to clipboard.'";
fileManager = "nautilus";
launcher = "rofi -show drun";
terminal = "wezterm";
screenshot = mode: "${
hyprshot.overrideAttrs {
# Fixes cursors showing in region shots
src = pkgs.fetchFromGitHub {
owner = "BenCarmichael01";
repo = "Hyprshot";
rev = "84e2adcd5dd9060178d0d028ad032734797fba23";
hash = "sha256-XDKwBiUMWvxoWpkdJ0EK4kEqPSTZLcF6axHjom3c5Jk=";
};
}
}/bin/hyprshot --clipboard-only -m ${mode}";
in {
decoration.rounding = 10;
dwindle.preserve_split = true;
gestures.workspace_swipe = true;
input.touchpad.natural_scroll = true;
xwayland.force_zero_scaling = true;
layerrule = [
"dimaround, rofi"
];
animations = {
enabled = true;
bezier = [
"overshot,0.7,0.6,0.1,1.1"
"bounce,1,1.6,0.1,0.85"
];
animation = [
"windows,1,5,bounce,popin"
"border,1,20,default"
"fade,1,5,default"
"workspaces,1,5,overshot,slide"
];
};
general = {
border_size = 2;
gaps_in = 10;
resize_on_border = true;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgba(595959aa)";
};
exec-once = [
"waybar"
"${mpvpaper}/bin/mpvpaper -vp -o 'no-audio loop panscan=1.0' eDP-1 ${builtins.toString ./wall.mp4}"
];
misc = {
force_default_wallpaper = 0;
disable_hyprland_logo = true;
};
monitor = [
"eDP-1, 2560x1664@60, auto, 1.6"
];
bindm = [
"${mod}, mouse:272, movewindow"
"${mod}, mouse:273, resizewindow"
];
bind =
[
# Apps
"${mod}, c, exec, ${colorPicker}"
"${mod}, w, exec, ${browser}"
"${mod}, e, exec, ${fileManager}"
"${mod}, r, exec, ${launcher}"
"${mod}, Return, exec, ${terminal}"
# Screenshots
"${modS}, s, exec, ${screenshot "window"}"
"${modC}, 3, exec, ${screenshot "output -c"}"
"${modC}, 4, exec, ${screenshot "region -C 0,0"}"
# Mouse controls
"${mod}, mouse_down, workspace, e-1"
"${mod}, mouse_up, workspace, e+1"
# Quitting
"${mod}, q, killactive"
"${modS}, q, exit"
# Toggles
"${mod}, j, togglesplit"
"${mod}, Space, togglefloating"
# Focus movements
"${mod}, h, movefocus, l"
"${mod}, j, movefocus, d"
"${mod}, k, movefocus, u"
"${mod}, l, movefocus, r"
# Window movements
"${modS}, h, movewindow, l"
"${modS}, j, movewindow, d"
"${modS}, k, movewindow, u"
"${modS}, l, movewindow, r"
]
++ (
builtins.concatLists (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
# Workspaces
"${mod}, ${ws}, workspace, ${builtins.toString (x + 1)}"
"${modS}, ${ws}, movetoworkspace, ${builtins.toString (x + 1)}"
]
)
10)
);
};
};
}

View file

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 578 B

View file

@ -1,19 +1,13 @@
{lib, ...}: { {...}: {
imports = [ imports = [
./fish.nix ./fish.nix
./git.nix ./git.nix
./macchina.nix
./wezterm.nix ./wezterm.nix
./macchina.nix
./nushell
]; ];
programs = { programs = {
fd.enable = true;
git-cliff.enable = true;
jq.enable = true;
nix-index-database.comma.enable = true;
nix-index.enable = true;
ripgrep.enable = true;
atuin = { atuin = {
enable = true; enable = true;
settings = { settings = {
@ -28,31 +22,6 @@
catppuccin.enable = true; catppuccin.enable = true;
}; };
btop = {
enable = true;
catppuccin.enable = true;
};
direnv = {
enable = true;
nix-direnv.enable = true;
};
eza = {
enable = true;
git = true;
icons = "always";
};
fzf = {
enable = true;
catppuccin.enable = true;
colors = with lib; {
bg = mkForce "-1";
"bg+" = mkForce "-1";
};
};
zoxide = { zoxide = {
enable = true; enable = true;
options = ["--cmd" "cd"]; options = ["--cmd" "cd"];

View file

@ -2,15 +2,6 @@
with pkgs; { with pkgs; {
programs = { programs = {
fish = let fish = let
mkFishPlugin = sources: {
inherit (sources) src;
name = sources.pname;
};
sources = import ../../../_sources/generated.nix {inherit (pkgs) fetchurl fetchFromGitHub;};
extraPlugins = lib.attrsets.mapAttrsToList (_: value: mkFishPlugin value) sources;
mkFishPlugins = names: mkFishPlugins = names:
map (name: { map (name: {
inherit name; inherit name;
@ -21,8 +12,54 @@ with pkgs; {
enable = true; enable = true;
plugins = plugins =
extraPlugins [
++ (mkFishPlugins ["autopair" "bass" "colored-man-pages" "done" "fifc" "forgit" "grc"]); {
name = "replay.fish";
src = fetchFromGitHub {
owner = "jorgebucaran";
repo = "replay.fish";
rev = "bd8e5b89ec78313538e747f0292fcaf631e87bd2";
hash = "sha256-bM6+oAd/HXaVgpJMut8bwqO54Le33hwO9qet9paK1kY=";
};
}
{
name = "license";
src = fetchFromGitHub {
owner = "oh-my-fish";
repo = "plugin-license";
rev = "0155b16f102957ec0c734a90979245dc1073f979";
hash = "sha256-Bi9Q5rekZoyXYbRV+U4SmwCdqCl0pFupzm5si7SxFns=";
};
}
{
name = "wttr";
src = fetchFromGitHub {
owner = "oh-my-fish";
repo = "plugin-wttr";
rev = "7500e382e6b29a463edc57598217ce0cfaf8c90c";
hash = "sha256-k3FrRPxKCiObO6HgtDx8ORbcLmfSYQsQeq5SAoNfZbE=";
};
}
{
name = "gityaw";
src = fetchFromGitHub {
owner = "oh-my-fish";
repo = "plugin-gityaw";
rev = "59196560e0f4520db63fb8cab645510377bb8b13";
hash = "sha256-STXNxSsjSopB+lbB4hEYdhJifRfsImRwbZ1SxwEhkuM=";
};
}
{
name = "bang-bang";
src = fetchFromGitHub {
owner = "oh-my-fish";
repo = "plugin-bang-bang";
rev = "ec991b80ba7d4dda7a962167b036efc5c2d79419";
hash = "sha256-oPPCtFN2DPuM//c48SXb4TrFRjJtccg0YPXcAo0Lxq0=";
};
}
]
++ (mkFishPlugins ["autopair" "bass" "colored-man-pages" "done" "fifc" "git-abbr" "forgit" "grc"]);
shellAliases = { shellAliases = {
cat = "${bat}/bin/bat"; cat = "${bat}/bin/bat";
@ -35,10 +72,6 @@ with pkgs; {
function fish_greeting function fish_greeting
macchina macchina
end end
bind --erase \ct
fish_add_path /opt/homebrew/bin
fish_add_path /Users/marshall/.nix-profile/bin
''; '';
}; };

View file

@ -7,13 +7,17 @@ with pkgs; {
userName = "pupbrained"; userName = "pupbrained";
userEmail = "mars@pupbrained.xyz"; userEmail = "mars@pupbrained.xyz";
aliases.pushall = "!git remote | xargs -L1 git push"; aliases.pushall = "!git remote | xargs -L1 git push";
delta.enable = false; delta.enable = true;
signing.signByDefault = true;
lfs.enable = true;
extraConfig = { extraConfig = {
init.defaultBranch = "main"; init.defaultBranch = "main";
push.autoSetupRemote = true; push.autoSetupRemote = true;
credential.helper = "libsecret";
};
signing = {
signByDefault = true;
key = "EF82E8CA83FF158C";
}; };
}; };

View file

@ -8,28 +8,24 @@ with pkgs; {
interface = "wlp4s0"; interface = "wlp4s0";
show = [ show = [
"DesktopEnvironment"
"Distribution" "Distribution"
"Kernel" "Kernel"
"LocalIP" "LocalIP"
"DesktopEnvironment"
"WindowManager"
"Packages"
"Resolution"
"Terminal"
"Shell"
"Uptime"
"ProcessorLoad"
"Memory" "Memory"
"Packages"
"ProcessorLoad"
"Resolution"
"Shell"
"Terminal"
"Uptime"
"WindowManager"
]; ];
}; };
themes = { themes = {
Mezora = { Mezora = {
custom_ascii = custom_ascii = {
# I prefer to use the default icon on macOS
if stdenv.isDarwin
then {}
else {
path = writeText "nix_logo" '' path = writeText "nix_logo" ''
   
   
@ -60,14 +56,14 @@ with pkgs; {
palette = { palette = {
type = "Dark"; type = "Dark";
visible = true; visible = true;
glyph = " "; glyph = " ";
}; };
box = { box = {
border = "rounded"; border = "rounded";
visible = true; visible = true;
inner_margin = { inner_margin = {
x = 1; x = 0;
y = 1; y = 1;
}; };
}; };

View file

@ -0,0 +1,113 @@
const color_palette = {
rosewater: "#f5e0dc"
flamingo: "#f2cdcd"
pink: "#f5c2e7"
mauve: "#cba6f7"
red: "#f38ba8"
maroon: "#eba0ac"
peach: "#fab387"
yellow: "#f9e2af"
green: "#a6e3a1"
teal: "#94e2d5"
sky: "#89dceb"
sapphire: "#74c7ec"
blue: "#89b4fa"
lavender: "#b4befe"
text: "#cdd6f4"
subtext1: "#bac2de"
subtext0: "#a6adc8"
overlay2: "#9399b2"
overlay1: "#7f849c"
overlay0: "#6c7086"
surface2: "#585b70"
surface1: "#45475a"
surface0: "#313244"
base: "#1e1e2e"
mantle: "#181825"
crust: "#11111b"
}
$env.config.color_config = {
separator: $color_palette.overlay0
leading_trailing_space_bg: { attr: "n" }
header: { fg: $color_palette.blue attr: "b" }
empty: $color_palette.lavender
bool: $color_palette.lavender
int: $color_palette.peach
duration: $color_palette.text
filesize: {|e|
if $e < 1mb {
$color_palette.green
} else if $e < 100mb {
$color_palette.yellow
} else if $e < 500mb {
$color_palette.peach
} else if $e < 800mb {
$color_palette.maroon
} else if $e > 800mb {
$color_palette.red
}
}
date: {|| (date now) - $in |
if $in < 1hr {
$color_palette.green
} else if $in < 1day {
$color_palette.yellow
} else if $in < 3day {
$color_palette.peach
} else if $in < 1wk {
$color_palette.maroon
} else if $in > 1wk {
$color_palette.red
}
}
range: $color_palette.text
float: $color_palette.text
string: $color_palette.text
nothing: $color_palette.text
binary: $color_palette.text
cellpath: $color_palette.text
row_index: { fg: $color_palette.mauve attr: "b" }
record: $color_palette.text
list: $color_palette.text
block: $color_palette.text
hints: $color_palette.overlay1
search_result: { fg: $color_palette.red bg: $color_palette.text }
shape_and: { fg: $color_palette.pink attr: "b" }
shape_binary: { fg: $color_palette.pink attr: "b" }
shape_block: { fg: $color_palette.blue attr: "b" }
shape_bool: $color_palette.teal
shape_custom: $color_palette.green
shape_datetime: { fg: $color_palette.teal attr: "b" }
shape_directory: $color_palette.teal
shape_external: $color_palette.teal
shape_externalarg: { fg: $color_palette.green attr: "b" }
shape_filepath: $color_palette.teal
shape_flag: { fg: $color_palette.blue attr: "b" }
shape_float: { fg: $color_palette.pink attr: "b" }
shape_garbage: { fg: $color_palette.text bg: $color_palette.red attr: "b" }
shape_globpattern: { fg: $color_palette.teal attr: "b" }
shape_int: { fg: $color_palette.pink attr: "b" }
shape_internalcall: { fg: $color_palette.teal attr: "b" }
shape_list: { fg: $color_palette.teal attr: "b" }
shape_literal: $color_palette.blue
shape_match_pattern: $color_palette.green
shape_matching_brackets: { attr: "u" }
shape_nothing: $color_palette.teal
shape_operator: $color_palette.peach
shape_or: { fg: $color_palette.pink attr: "b" }
shape_pipe: { fg: $color_palette.pink attr: "b" }
shape_range: { fg: $color_palette.peach attr: "b" }
shape_record: { fg: $color_palette.teal attr: "b" }
shape_redirection: { fg: $color_palette.pink attr: "b" }
shape_signature: { fg: $color_palette.green attr: "b" }
shape_string: $color_palette.green
shape_string_interpolation: { fg: $color_palette.teal attr: "b" }
shape_table: { fg: $color_palette.blue attr: "b" }
shape_variable: $color_palette.pink
background: $color_palette.base
foreground: $color_palette.text
cursor: $color_palette.blue
}

View file

@ -0,0 +1,11 @@
{pkgs, ...}:
with pkgs; {
programs = {
carapace.enable = true;
nushell = {
enable = true;
configFile.source = ./config.nu;
};
};
}

View file

@ -1,3 +1,115 @@
{...}: { {...}: {
programs.wezterm.enable = true; programs.wezterm = {
enable = true;
extraConfig = ''
local wezterm = require('wezterm')
local c = wezterm.config_builder()
local resize_amount = 3;
local wezmodeConfig = {
theme = {
textColor = "white",
hintColor = "#a6e3a1",
normalModeColor = "#cba6f7",
modeTextColor = "#11111b",
}
}
wezterm.plugin.require('https://github.com/nekowinston/wezterm-bar').apply_to_config(c, {
position = 'bottom',
max_width = 32,
dividers = 'slant_right',
indicator = {
leader = {
enabled = true,
off = ' ',
on = ' ',
},
mode = {
enabled = true,
names = {
resize_mode = 'RESIZE',
copy_mode = 'VISUAL',
search_mode = 'SEARCH',
},
},
},
tabs = {
numerals = 'arabic',
pane_count = 'subscript',
brackets = {
active = { "", ':' },
inactive = { "", ':' },
},
},
clock = {
enabled = true,
format = '%l:%M %p',
},
})
local act = wezterm.action
local keybinds = {
{
key = 'Enter',
mods = 'CTRL|SHIFT',
action = act.SplitHorizontal({ domain = 'CurrentPaneDomain' }),
},
{
key = 'h',
mods = 'ALT|SHIFT',
action = act.ActivatePaneDirection('Left'),
},
{
key = 'l',
mods = 'ALT|SHIFT',
action = act.ActivatePaneDirection 'Right',
},
{
key = 'k',
mods = 'ALT|SHIFT',
action = act.ActivatePaneDirection 'Up',
},
{
key = 'j',
mods = 'ALT|SHIFT',
action = act.ActivatePaneDirection 'Down',
},
{
key = 't',
mods = 'CTRL|SHIFT',
action = act.SpawnCommandInNewTab { cwd = wezterm.home_dir },
}
}
local config = {
initial_cols = 160,
adjust_window_size_when_changing_font_size = false,
color_scheme = 'Catppuccin Mocha',
cursor_blink_ease_in = 'Constant',
cursor_blink_ease_out = 'Constant',
cursor_blink_rate = 500,
default_cursor_style = 'BlinkingBar',
enable_kitty_graphics = true,
enable_scroll_bar = false,
enable_wayland = false,
font_size = 18,
font = wezterm.font('Maple Mono NF'),
keys = keybinds,
front_end = 'OpenGL',
underline_position = -4,
use_fancy_tab_bar = false,
window_background_opacity = 0.8,
window_padding = { left = 0, right = 0, top = 0, bottom = 0 },
}
for k, v in pairs(config) do
c[k] = v
end
return c
'';
};
} }

View file

@ -1,63 +0,0 @@
{pkgs, ...}: {
programs.vscode = {
enable = true;
package =
if pkgs.hostPlatform.isDarwin
then pkgs.vscode
else pkgs.vscode.fhsWithPackages (ps: with ps; [rustup zlib openssl.dev pkg-config]);
extensions = with pkgs.vscode-extensions; [
bbenoist.nix
catppuccin.catppuccin-vsc
catppuccin.catppuccin-vsc-icons
llvm-vs-code-extensions.vscode-clangd
kamadorueda.alejandra
mkhl.direnv
usernamehw.errorlens
vadimcn.vscode-lldb
vscodevim.vim
];
userSettings = {
"files.autoSave" = "afterDelay";
"editor.fontFamily" = "Iosevka Comfy Motion";
"editor.fontLigatures" = true;
"editor.fontSize" =
if pkgs.hostPlatform.isDarwin
then 14
else 16;
"editor.formatOnSave" = true;
"editor.minimap.enabled" = false;
"git.autofetch" = true;
"git.confirmSync" = false;
"git.enableSmartCommit" = true;
"vim.camelCaseMotion.enable" = true;
"vim.smartRelativeLine" = false;
"vim.sneak" = true;
"vim.useSystemClipboard" = true;
"vim.normalModeKeyBindingsNonRecursive" = [
{
before = ["K"];
commands = ["editor.action.showHover"];
silent = true;
}
];
"mesonbuild.downloadLanguageServer" = true;
"terminal.integrated.fontSize" =
if pkgs.hostPlatform.isDarwin
then 14
else 16;
"workbench.colorTheme" = "Catppuccin Mocha";
"workbench.iconTheme" = "catppuccin-mocha";
"window.menuBarVisibility" = "toggle";
"window.titleBarStyle" = "custom";
};
};
}

View file

@ -0,0 +1,110 @@
{pkgs, ...}:
with pkgs; {
boot.binfmt.registrations.appimage = {
wrapInterpreterInShell = false;
interpreter = "${appimage-run}/bin/appimage-run";
recognitionType = "magic";
offset = 0;
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
magicOrExtension = ''\x7fELF....AI\x02'';
};
systemd.user.services.appimage-menu-updater = let
appimage-menu-update = writeShellScript "appimage-menu-updater.sh" ''
shopt -s nullglob
remove_old_files () {
for path in "$HOME"/.local/share/applications/appimage-menu-updater*; do
rm "$path"
done
for path in "$HOME"/.local/share/icons/hicolor/appimage-menu-updater*; do
rm "$path"
done
}
update_each () {
path="$1"
file="$2"
echo "found $file"
desktop_source=$(${p7zip.outPath}/bin/7z l -ba -slt "$path" | grep '\.desktop$' | head -n1 | sed --expression 's/Path = //')
desktop_target="$HOME/.local/share/applications/appimage-menu-updater-$file.desktop"
${p7zip.outPath}/bin/7z e "$path" "$desktop_source" -y -so > "$desktop_target"
sed -i "s@Exec=.*@Exec=${appimage-run.outPath}/bin/appimage-run $path@" "$desktop_target"
update_icon "$path" "$desktop_target"
}
update_icon () {
path="$1"
desktop_target="$2"
echo "updating icon"
icon_link_proto_source=$(grep Icon= "$desktop_target" | head -n1 | sed 's/Icon=//')
icon_link_source=$(${p7zip.outPath}/bin/7z l -ba -slt "$path" | grep -e "Path = $icon_link_proto_source.\(png\|svg\)" | head -n1 | sed 's/Path = //')
if [[ "$icon_link_source" ]]; then
tempdir=$(mktemp -d)
${p7zip.outPath}/bin/7z x "$path" "$icon_link_source" -o"$tempdir" >/dev/null
icon_temp_maybe_link=$(find "$tempdir"/* | head -n1)
if [[ -L "$icon_temp_maybe_link" ]]; then
icon_source=$(readlink "$icon_temp_maybe_link")
if [[ "$icon_source" ]]; then
${p7zip.outPath}/bin/7z x "$path" "$icon_source" -y -o"$tempdir"
if [[ -f "$tempdir/$icon_source" ]]; then
icon_temp_source=$tempdir/$icon_source
else
echo 'icon link target does not exists'
fi
else
echo 'icon link is invalid'
fi
else
icon_temp_source=$icon_temp_maybe_link
fi
if [[ "$icon_temp_source" ]]; then
icon_target="$HOME/.local/share/icons/hicolor/appimage-menu-updater-"$(basename "$icon_temp_source")
mv "$icon_temp_source" "$icon_target"
sed -i "s@Icon=.*@Icon=$icon_target@" "$desktop_target"
fi
rm -Rf "$tempdir"
else
echo 'icon file not found'
fi
}
update () {
echo 'updating...'
remove_old_files
for path in "$HOME"/Applications/*.AppImage; do
update_each "$path" $(basename "$path")
done
}
mkdir -p "$HOME/Applications"
update
while ${inotify-tools.outPath}/bin/inotifywait -e modify,delete,moved_to,moved_from "$HOME"/Applications; do
update
done
'';
in {
enable = true;
description = "AppImage Menu Updater";
unitConfig = {
Type = "simple";
};
serviceConfig = {
ExecStart = "/bin/sh -c 'HOME=%h ${appimage-menu-update}'";
};
wantedBy = ["default.target"];
};
}

View file

@ -1,39 +1,3 @@
[git-abbr] [linux-wallpaperengine-latest]
src.git = "https://github.com/pupbrained/fish-git-abbr" src.git = "https://github.com/Almamu/linux-wallpaperengine"
fetch.github = "pupbrained/fish-git-abbr" fetch.github = "Almamu/linux-wallpaperengine"
[replay-fish]
src.git = "https://github.com/jorgebucaran/replay.fish"
fetch.github = "jorgebucaran/replay.fish"
[license]
src.git = "https://github.com/oh-my-fish/plugin-license"
fetch.github = "oh-my-fish/plugin-license"
[wttr]
src.git = "https://github.com/oh-my-fish/plugin-wttr"
fetch.github = "oh-my-fish/plugin-wttr"
[gityaw]
src.git = "https://github.com/oh-my-fish/plugin-gityaw"
fetch.github = "oh-my-fish/plugin-gityaw"
[bang-bang]
src.git = "https://github.com/oh-my-fish/plugin-bang-bang"
fetch.github = "oh-my-fish/plugin-bang-bang"
[fix-window-role]
src.manual = "latest"
fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch"
[poll]
src.manual = "latest"
fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/poll.patch"
[round-undecorated-frame]
src.manual = "latest"
fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch"
[system-appearance]
src.manual = "latest"
fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/system-appearance.patch"

View file

@ -0,0 +1,50 @@
{
lib,
stdenv,
pkgs,
...
}:
with pkgs;
stdenv.mkDerivation {
pname = "lightly-boehs-qt6";
version = "v0.4.2";
src = fetchFromGitHub {
owner = "boehs";
repo = "Lightly";
rev = "00ca23447844114d41bfc0d37cf8823202c082e8";
sha256 = "sha256-NpgOcN9sDqgQMjqcfx92bfKohxaJpnwMgxb9MCu9uJM=";
};
buildInputs = with kdePackages; [
kcmutils
kconfig
kdecoration
kirigami
kguiaddons
kcolorscheme
kcoreaddons
ki18n
kiconthemes
kwindowsystem
];
extraCmakeFlags = ["-DBUILD_TESTING=OFF"];
nativeBuildInputs = [
cmake
kdePackages.qttools
kdePackages.extra-cmake-modules
kdePackages.wrapQtAppsHook
];
patches = [./missing.patch];
meta = with lib; {
description = "A fork of the Lightly breeze theme style that aims to be visually modern and minimalistic";
mainProgram = "lightly-settings";
homepage = "https://github.com/boehs/Lightly";
license = licenses.gpl2Plus;
maintainers = [maintainers.hikari];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,186 @@
diff --git a/kdecoration/config/CMakeLists.txt b/kdecoration/config/CMakeLists.txt
new file mode 100644
index 00000000..e4b08f0a
--- /dev/null
+++ b/kdecoration/config/CMakeLists.txt
@@ -0,0 +1,37 @@
+##### config classes ææææææ
+
+set(lightlydecoration_config_SRCS
+ ../lightlyexceptionlist.cpp
+ lightlyconfigwidget.cpp
+ lightlydetectwidget.cpp
+ lightlyexceptiondialog.cpp
+ lightlyexceptionlistwidget.cpp
+ lightlyexceptionmodel.cpp
+ lightlyitemmodel.cpp
+)
+ki18n_wrap_ui(lightlydecoration_config_SRCS
+ ui/lightlyconfigurationui.ui
+ ui/lightlydetectwidget.ui
+ ui/lightlyexceptiondialog.ui
+ ui/lightlyexceptionlistwidget.ui
+)
+
+kcoreaddons_add_plugin(kcm_lightlydecoration SOURCES kcm_lightlydecoration.cpp ${lightlydecoration_config_SRCS} INSTALL_NAMESPACE "${KDECORATION_KCM_PLUGIN_DIR}")
+kconfig_add_kcfg_files(kcm_lightlydecoration ../lightlysettings.kcfgc)
+target_include_directories(kcm_lightlydecoration PRIVATE ${CMAKE_SOURCE_DIR}/kdecoration ${CMAKE_BINARY_DIR}/kdecoration/)
+target_link_libraries(kcm_lightlydecoration
+ PUBLIC
+ Qt6::Core
+ Qt6::Gui
+ Qt6::DBus
+ KDecoration2::KDecoration
+ PRIVATE
+ KF6::CoreAddons
+ KF6::ConfigWidgets
+ KF6::GuiAddons
+ KF6::I18n
+ KF6::IconThemes
+ KF6::WindowSystem
+ KF6::KCMUtils
+)
+kcmutils_generate_desktop_file(kcm_lightlydecoration)
diff --git a/kdecoration/config/kcm_lightlydecoration.cpp b/kdecoration/config/kcm_lightlydecoration.cpp
new file mode 100644
index 00000000..de9ac802
--- /dev/null
+++ b/kdecoration/config/kcm_lightlydecoration.cpp
@@ -0,0 +1,6 @@
+#include "lightlyconfigwidget.h"
+#include <KPluginFactory>
+
+K_PLUGIN_CLASS_WITH_JSON(Lightly::ConfigWidget, "kcm_lightlydecoration.json")
+
+#include "kcm_lightlydecoration.moc"
diff --git a/kdecoration/config/kcm_lightlydecoration.json b/kdecoration/config/kcm_lightlydecoration.json
new file mode 100644
index 00000000..d2013276
--- /dev/null
+++ b/kdecoration/config/kcm_lightlydecoration.json
@@ -0,0 +1,60 @@
+{
+ "KPlugin": {
+ "Description": "Modify the appearance of window decorations",
+ "Description[ar]": "عدّل مظهر زخرفات النّوافذ",
+ "Description[az]": "Pəncərə tərtibatının görünüşünü dəyişdirin",
+ "Description[bg]": "Настройване на външния изглед на прозорците",
+ "Description[ca@valencia]": "Modifica l'aparença de les decoracions de les finestres",
+ "Description[ca]": "Modifica l'aparença de les decoracions de les finestres",
+ "Description[cs]": "Změnit vzhled dekorace oken",
+ "Description[da]": "Ændr vinduesdekorationers udseende",
+ "Description[de]": "Das Erscheinungsbild der Fensterdekoration ändern",
+ "Description[el]": "Τροποποίηση εμφάνισης της διακόσμησης παραθύρου",
+ "Description[en_GB]": "Modify the appearance of window decorations",
+ "Description[es]": "Modificar el aspecto de las decoraciones de las ventanas",
+ "Description[et]": "Akna dekoratsioonide välimuse muutmine",
+ "Description[eu]": "Aldatu leiho apainduren itxura",
+ "Description[fi]": "Muuta ikkunoiden kehysten ulkoasua",
+ "Description[fr]": "Modifier l'apparence des décorations des fenêtres",
+ "Description[gl]": "Modifica a aparencia da decoración da xanela",
+ "Description[he]": "התאם את מראה מסגרות החלונות",
+ "Description[hi]": "विंडो सजावटों की दिखावट को परिवर्तित करें",
+ "Description[hu]": "Az ablakdekorációk megjelenésének módosítása",
+ "Description[ia]": "Modifica le apparentia de decorationes de fenestra",
+ "Description[id]": "Memodifikasi penampilan dekorasi window",
+ "Description[it]": "Modifica l'aspetto delle decorazioni delle finestre",
+ "Description[ja]": "ウィンドウ装飾の外観を編集",
+ "Description[ko]": "창 장식의 모습을 수정합니다",
+ "Description[lt]": "Keisti lango dekoracijų išvaizdą",
+ "Description[nb]": "Endre utseende for vindusdekorasjoner",
+ "Description[nl]": "Wijzig het uiterlijk van vensterdecoraties",
+ "Description[nn]": "Endra utsjånad på vindaugspynt",
+ "Description[pa]": "ਵਿੰਡੋ ਸਜਾਵਟ ਦੀ ਦਿੱਖ ਨੂੰ ਸੋਧੋ",
+ "Description[pl]": "Zmień wygląd i wystrój okien",
+ "Description[pt]": "Modificar a aparência das decorações das janelas",
+ "Description[pt_BR]": "Modifica a aparência das decorações da janela",
+ "Description[ro]": "Modifică aspectul decorațiilor pentru ferestre",
+ "Description[ru]": "Настройка заголовков окон в стиле Breeze",
+ "Description[sk]": "Zmena vzhľadu dekorácie okien",
+ "Description[sl]": "Spremenite videz okrasitve oken",
+ "Description[sr@ijekavian]": "Измијените изглед декорација прозора",
+ "Description[sr@ijekavianlatin]": "Izmijenite izgled dekoracija prozora",
+ "Description[sr@latin]": "Izmenite izgled dekoracija prozora",
+ "Description[sr]": "Измените изглед декорација прозора",
+ "Description[sv]": "Ändra utseendet hos fönsterdekorationer",
+ "Description[tg]": "Тағйир додани ороиши намуди зоҳирии равзанаҳо",
+ "Description[tr]": "Pencere dekorasyonlarının görünümünü değiştir",
+ "Description[uk]": "Зміна вигляду декорацій вікон",
+ "Description[x-test]": "xxModify the appearance of window decorationsxx",
+ "Description[zh_CN]": "修改窗口装饰外观",
+ "Description[zh_TW]": "變更視窗裝飾外觀",
+ "Icon": "preferences-system-windows",
+ "Name": "Lightly: Window Decoration",
+ "ServiceTypes": [
+ "KCModule"
+ ]
+ },
+ "X-KDE-Keywords": "Lightly,decoration",
+ "X-KDE-ParentApp": "kcontrol",
+ "X-KDE-Weight": 50
+}
diff --git a/kstyle/config/lightlystyleconfig.json b/kstyle/config/lightlystyleconfig.json
new file mode 100644
index 00000000..f4f58aeb
--- /dev/null
+++ b/kstyle/config/lightlystyleconfig.json
@@ -0,0 +1,59 @@
+{
+ "KPlugin": {
+ "Description": "Modify the appearance of widgets",
+ "Description[ar]": "عدّل مظهر الودجات",
+ "Description[az]": "Vidjetin görünüşünü dəyişin",
+ "Description[bg]": "Настройване на външния изглед на приставките",
+ "Description[ca@valencia]": "Modifica l'aparença dels ginys",
+ "Description[ca]": "Modifica l'aparença dels ginys",
+ "Description[cs]": "Změnit vzhled widgetů",
+ "Description[da]": "Ændr kontrollers udseende",
+ "Description[de]": "Das Erscheinungsbild der Bedienelemente ändern",
+ "Description[el]": "Τροποποίηση εμφάνισης συστατικών",
+ "Description[en_GB]": "Modify the appearance of widgets",
+ "Description[es]": "Modificar el aspecto de los elementos gráficos",
+ "Description[et]": "Vidinate välimuse muutmine",
+ "Description[eu]": "Aldatu trepeten itxura",
+ "Description[fi]": "Muuta elementtien ulkoasua",
+ "Description[fr]": "Modifier l'apparence des composants graphiques",
+ "Description[gl]": "Modifica a aparencia dos trebellos",
+ "Description[he]": "התאם את המראה של היישומונים",
+ "Description[hi]": "विजेट की दिखावट को परिवर्तित करें",
+ "Description[hu]": "Az elemek megjelenésének módosítása",
+ "Description[ia]": "Modifica le apparentia de widgets",
+ "Description[id]": "Memodifikasi penampilan widget",
+ "Description[it]": "Modifica l'aspetto degli oggetti",
+ "Description[ja]": "ウィジェットの外観を編集",
+ "Description[ko]": "위젯의 모습을 수정합니다",
+ "Description[lt]": "Keisti valdiklių išvaizdą",
+ "Description[nb]": "Endre utseende for skjermelementer",
+ "Description[nl]": "Wijzig het uiterlijk van widgets",
+ "Description[nn]": "Endra utsjånaden på skjermkontrollar",
+ "Description[pl]": "Zmień wygląd interfejsu",
+ "Description[pt]": "Modificar a aparência dos elementos gráficos",
+ "Description[pt_BR]": "Modifica a aparência dos widgets",
+ "Description[ro]": "Modifică aspectul controalelor",
+ "Description[ru]": "Настройка элементов интерфейса в стиле Breeze",
+ "Description[sk]": "Zmena vzhľadu miniaplikácií",
+ "Description[sl]": "Spremenite videz gradnikov",
+ "Description[sr@ijekavian]": "Измијените изглед виџета̂",
+ "Description[sr@ijekavianlatin]": "Izmijenite izgled vidžetâ̂",
+ "Description[sr@latin]": "Izmenite izgled vidžetâ̂",
+ "Description[sr]": "Измените изглед виџета̂",
+ "Description[sv]": "Ändra utseende hos grafiska komponenter",
+ "Description[tg]": "Тағйир додани намуди зоҳирии виҷетҳо",
+ "Description[tr]": "Araç takımlarının görünümünü değiştir",
+ "Description[uk]": "Зміна вигляду віджетів",
+ "Description[x-test]": "xxModify the appearance of widgetsxx",
+ "Description[zh_CN]": "调整窗口部件外观",
+ "Description[zh_TW]": "變更元件外觀",
+ "Icon": "preferences-desktop-theme",
+ "Name": "Lightly: Widget Style",
+ "ServiceTypes": [
+ "KCModule"
+ ]
+ },
+ "X-KDE-Keywords": "lightly,widget,style",
+ "X-KDE-ParentApp": "kcontrol",
+ "X-KDE-Weight": 60
+}

View file

@ -1,7 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 Rnre+g 2qc+9205o7uT68Fo6ZmJWdOC8TkIvfNVFiuEop4crH8
eCywuzUaNYQ6+23DBlnhK7FExAvFWDrjzcOi7sIMDzY
-> ssh-ed25519 TwwU0w fMO1xuxh/nEE2mhscChrxnz7ZKv7LJQgivORxH/QLSk
U4acV2ubZaVtpLceEjW3/J7q3YENNeD55vLsivCA/Pw
--- /4REYNdKs9m2g1OtlLcPDhOJFZs9atAP/fW6UyNeXa8
š0!<21>b(½}ׄ³õ½ÈGË$2…tðÂ!Äwþýr>Ý/þ]oŠÎ'ã<>TvPÁt¿@?Д<C390>Ìf UÁ© íòæÍO½5

View file

@ -1,10 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 Rnre+g OUN16bvLoM64rGq1M1TkQyRBOHygfDfhlQ5GS+8tZ1A
m3TVkE8x+XycNBUGMEPNO24kZT+vlCVCPM/IP44hTt8
-> ssh-ed25519 TwwU0w GA9PhE+RTCMGgV4UP/Km0ok8d6T/lEiqC2pRilhd+h8
uELdOpsKjQacjZooio7PMN/qjT5gHt+8ofaKNZNjJCo
--- S7SPN5ps/jdCjG+3c6aN6UgKC958ISDvJx7UjVDwrFQ
/Òä<C392>Ø÷;Ô@é¶Ã2ˆ¢öW/Œ){ä!1*ÎÂî»Ø 4¢ÓÕöÎZ`Êd‡*t ;DÌ
xŸÒÊÞK%Ǫ‰r_ŒÓ]Oœ±¤¥Ä†=\N¹ô¬à
…Ÿ·Öeüz 1y0ݿÓÒèoþpnÿ,˜cÒÔÑÀðµ
ò.

View file

@ -1,8 +0,0 @@
let
marshall = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2vmQG3o3yMTXUbHYM7evCpUo/V+gK8Lofajt/hEjrB navis";
system = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJe8dn/plNp53zGSzHTZjjrQbo94WWMZf7508agyIwQQ agenix";
in {
"passwd.age".publicKeys = [marshall system];
"mailer_passwd.age".publicKeys = [marshall system];
"token.age".publicKeys = [marshall system];
}

Binary file not shown.

View file

@ -1,5 +0,0 @@
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferSingle"
call_parentheses = "Always"

View file

@ -1,159 +0,0 @@
{
pkgs,
inputs,
lib,
...
}: {
environment.variables.FLAKE = "/Users/marshall/nix-config";
fonts.packages = with pkgs; ([
font-awesome
inter
maple-mono
nerdfonts
]
++ (with iosevka-comfy; [
comfy
comfy-duo
comfy-fixed
comfy-motion
comfy-motion-duo
comfy-motion-fixed
comfy-wide
comfy-wide-duo
comfy-wide-fixed
comfy-wide-motion
comfy-wide-motion-duo
comfy-wide-motion-fixed
]));
networking = {
computerName = "MacBook Air";
hostName = "canis";
};
nix = {
gc = {
automatic = true;
interval.Day = 7;
};
daemonIOLowPriority = true;
daemonProcessType = "Adaptive";
distributedBuilds = true;
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
registry = lib.mapAttrs (_: v: {flake = v;}) inputs;
settings = {
auto-optimise-store = true;
builders-use-substitutes = true;
extra-experimental-features = "nix-command flakes";
flake-registry = "/etc/nix/registry.json";
keep-derivations = true;
keep-outputs = true;
max-jobs = "auto";
warn-dirty = false;
extra-sandbox-paths = ["/nix/var/cache/ccache"];
substituters = [
"https://cache.nixos.org"
"https://nix-community.cachix.org"
];
trusted-substituters = [
"cache.nixos.org"
"nix-community.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
];
trusted-users = ["marshall"];
};
};
nixpkgs.config.allowUnfree = true;
programs = {
fish.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
};
security.pam.enableSudoTouchIdAuth = true;
services = {
nix-daemon.enable = true;
emacs = {
enable = true;
package = inputs.emacs.packages.${pkgs.system}.default;
};
skhd = {
enable = true;
package = pkgs.skhd;
skhdConfig = ''
alt - return : open -na "WezTerm"
alt - w : open -a "Arc"
cmd - space : yabai -m window --toggle float
shift + cmd - q : yabai -m window --close
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east
shift + cmd - h : yabai -m window --swap west
shift + cmd - j : yabai -m window --swap south
shift + cmd - k : yabai -m window --swap north
shift + cmd - l : yabai -m window --swap east
shift + cmd - 1 : yabai -m window --space 1
shift + cmd - 2 : yabai -m window --space 2
shift + cmd - 3 : yabai -m window --space 3
shift + cmd - 4 : yabai -m window --space 4
shift + cmd - 5 : yabai -m window --space 5
shift + cmd - 6 : yabai -m window --space 6
shift + cmd - 7 : yabai -m window --space 7
shift + cmd - 8 : yabai -m window --space 8
shift + cmd - 9 : yabai -m window --space 9
'';
};
};
users.users.marshall = {
name = "marshall";
home = "/Users/marshall";
};
system = {
keyboard.enableKeyMapping = true;
stateVersion = 5;
defaults = {
NSGlobalDomain = {
KeyRepeat = 1;
NSAutomaticCapitalizationEnabled = false;
NSAutomaticSpellingCorrectionEnabled = false;
};
dock = {
autohide = true;
autohide-delay = 1000.0;
expose-animation-duration = 0.0;
orientation = "bottom";
showhidden = true;
tilesize = 48;
};
};
};
}

View file

@ -0,0 +1,260 @@
{
pkgs,
config,
inputs,
lib,
...
}:
with lib // pkgs // inputs; {
imports = [
./hardware.nix
];
security = {
rtkit.enable = true;
pam.loginLimits = [
{
domain = "*";
item = "nofile";
type = "-";
value = "32768";
}
{
domain = "*";
item = "memlock";
type = "-";
value = "32768";
}
];
sudo.extraConfig = ''
Defaults lecture = never, pwfeedback
'';
};
console.catppuccin.enable = true;
systemd.user.extraConfig = let
path = lib.concatStringsSep ":" [
"/run/wrappers/bin"
"/etc/profiles/per-user/%u/bin"
"/nix/var/nix/profiles/default/bin"
"/run/current-system/sw/bin"
];
in ''
DefaultEnvironment="PATH=${path}"
'';
virtualisation.podman = {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
};
environment = {
sessionVariables = {
BROWSER = "firefox";
EDITOR = "nvim";
TERMINAL = "wezterm";
DIRENV_WARN_TIMEOUT = "100s";
NIXOS_OZONE_WL = "1";
};
systemPackages = [
gnome.nautilus
internal.lightly-boehs-qt6
snowfallorg.flake
sound-theme-freedesktop
xclip
yt-dlp
];
};
boot = {
supportedFilesystems = ["btrfs" "ntfs"];
plymouth = {
enable = true;
catppuccin.enable = true;
};
extraModprobeConfig = "options apple_dcp show_notch=1";
loader = {
efi.canTouchEfiVariables = false;
systemd-boot = {
enable = true;
configurationLimit = 20;
};
};
};
nix = let
mappedRegistry = pipe inputs [
(filterAttrs (_: isType "flake"))
(mapAttrs (_: flake: {inherit flake;}))
(x: x // {nixpkgs.flake = nixpkgs;})
];
in {
package = mkForce nixSuper;
registry = mappedRegistry // optionalAttrs (config.nix.package == nixSuper) {default = mappedRegistry.nixpkgs;};
nixPath = mapAttrsToList (key: _: "${key}=flake:${key}") config.nix.registry;
daemonCPUSchedPolicy = "batch";
daemonIOSchedClass = "idle";
daemonIOSchedPriority = 7;
gc = {
automatic = true;
dates = "Sat *-*-* 03:00";
options = "--delete-older-than 30d";
};
optimise = {
automatic = true;
dates = ["04:00"];
};
settings = {
auto-optimise-store = true;
builders-use-substitutes = true;
flake-registry = "/etc/nix/registry.json";
keep-going = true;
log-lines = 30;
max-jobs = "auto";
sandbox-fallback = false;
sandbox = true;
system-features = ["nixos-test" "kvm" "recursive-nix" "big-parallel"];
use-cgroups = true;
use-xdg-base-directories = true;
warn-dirty = false;
allowed-users = ["root" "@wheel" "nix-builder"];
trusted-users = ["root" "@wheel" "nix-builder"];
min-free = "${toString (5 * 1024 * 1024 * 1024)}";
max-free = "${toString (10 * 1024 * 1024 * 1024)}";
extra-experimental-features = [
"flakes" # flakes
"nix-command" # experimental nix commands
"recursive-nix" # let nix invoke itself
"ca-derivations" # content addressed nix
"auto-allocate-uids" # allow nix to automatically pick UIDs, rather than creating nixbld* user accounts
"cgroups" # allow nix to execute builds inside cgroups
];
substituters = [
"https://cache.nixos.org"
"https://cache.privatevoid.net"
"https://cuda-maintainers.cachix.org"
"https://hyprland.cachix.org"
"https://nix-community.cachix.org"
"https://nyx.chaotic.cx/"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"cache.privatevoid.net:SErQ8bvNWANeAvtsOESUwVYr2VJynfuc9JRwlzTTkVg="
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nyx.chaotic.cx-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
];
};
};
programs = {
dconf.enable = true;
fish.enable = true;
gamemode.enable = true;
steam.enable = false;
gnupg.agent.enable = true;
hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
};
nh = {
enable = true;
flake = "/home/marshall/nix-config";
};
};
networking = {
useDHCP = mkDefault true;
firewall.enable = false;
nameservers = ["1.1.1.1" "1.0.0.1"];
wireless.iwd = {
enable = true;
settings.General.EnableNetworkConfiguration = true;
};
};
time.timeZone = "America/New_York";
services = {
btrfs.autoScrub.enable = true;
flatpak.enable = true;
getty.autologinUser = "marshall";
gnome.gnome-keyring.enable = true;
openssh.enable = true;
greetd = {
enable = true;
settings = rec {
initial_session = {
command = "${pkgs.hyprland}/bin/Hyprland";
user = "marshall";
};
default_session = initial_session;
};
};
libinput = {
enable = true;
touchpad.naturalScrolling = true;
};
xserver = {
enable = true;
};
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
};
users = {
users.marshall = {
isNormalUser = true;
extraGroups = ["wheel" "gamemode" "libvirtd" "networkmanager"];
shell = fish;
};
};
hardware = {
asahi = {
peripheralFirmwareDirectory = ./firmware;
useExperimentalGPUDriver = true;
};
bluetooth.enable = true;
i2c.enable = true;
opengl = {
enable = true;
driSupport = true;
};
};
system.stateVersion = "24.05";
}

View file

@ -0,0 +1,54 @@
# 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.
{
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
powerManagement.cpuFreqGovernor = "conservative";
boot.initrd.availableKernelModules = ["usb_storage"];
boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/bc2d65bb-2316-404d-aff4-cba0cca8f6b5";
fsType = "btrfs";
options = ["subvol=root"];
};
fileSystems."/home" = {
device = "/dev/disk/by-uuid/bc2d65bb-2316-404d-aff4-cba0cca8f6b5";
fsType = "btrfs";
options = ["subvol=home"];
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/bc2d65bb-2316-404d-aff4-cba0cca8f6b5";
fsType = "btrfs";
options = ["subvol=nix"];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/23FC-1D19";
fsType = "vfat";
options = ["fmask=0022" "dmask=0022"];
};
swapDevices = [];
# 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.wlan0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
}

View file

@ -1,524 +0,0 @@
{
pkgs,
config,
inputs,
lib,
...
}: {
facter.reportPath = ./facter.json;
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
fsType = "btrfs";
options = ["subvol=root"];
};
"/home" = {
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
fsType = "btrfs";
options = ["subvol=home" "compress=zstd"];
};
"/nix" = {
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
fsType = "btrfs";
options = ["subvol=nix" "compress=zstd" "noatime"];
};
"/persist" = {
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
neededForBoot = true;
fsType = "btrfs";
options = ["subvol=persist" "compress=zstd"];
};
"/var/log" = {
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
fsType = "btrfs";
options = ["subvol=log" "compress=zstd" "noatime"];
neededForBoot = true;
};
"/boot" = {
device = "/dev/disk/by-uuid/12CE-A600";
fsType = "vfat";
options = ["fmask=0022" "dmask=0022"];
};
};
security = {
rtkit.enable = true;
pam = {
services.login.enableGnomeKeyring = true;
loginLimits = [
{
domain = "*";
item = "nofile";
type = "-";
value = "32768";
}
{
domain = "*";
item = "memlock";
type = "-";
value = "32768";
}
];
};
sudo-rs = {
enable = true;
wheelNeedsPassword = false;
execWheelOnly = true;
};
tpm2 = {
enable = true;
pkcs11.enable = true;
tctiEnvironment.enable = true;
};
};
fonts = {
packages = with pkgs;
[
ibm-plex
nerdfonts
]
++ (with iosevka-comfy; [
comfy
comfy-duo
comfy-fixed
comfy-motion
comfy-motion-duo
comfy-motion-fixed
comfy-wide
comfy-wide-duo
comfy-wide-fixed
comfy-wide-motion
comfy-wide-motion-duo
comfy-wide-motion-fixed
]);
fontconfig = {
hinting.enable = true;
subpixel.lcdfilter = "none";
};
};
console.catppuccin.enable = true;
systemd = {
tpm2.enable = true;
network.networks = {
"10-lan1" = {
DHCP = "yes";
matchConfig.MACAddress = "04:42:1a:02:fe:f5";
dhcpV4Config.RouteMetric = 10;
dhcpV6Config.RouteMetric = 10;
networkConfig = {
IPv6PrivacyExtensions = "yes";
MulticastDNS = true;
};
};
"10-wlan1" = {
DHCP = "yes";
matchConfig.MACAddress = "64:49:7d:c1:01:10";
dhcpV4Config.RouteMetric = 40;
dhcpV6Config.RouteMetric = 40;
networkConfig = {
IPv6PrivacyExtensions = "yes";
MulticastDNS = true;
};
};
};
user.extraConfig = let
path = lib.concatStringsSep ":" [
"/run/wrappers/bin"
"/etc/profiles/per-user/%u/bin"
"/nix/var/nix/profiles/default/bin"
"/run/current-system/sw/bin"
];
in ''
DefaultEnvironment="PATH=${path}"
'';
};
age = {
secrets.passwd.file = ../../../secrets/passwd.age;
identityPaths = ["/persist/root/.ssh/id_ed25519"];
};
virtualisation = {
spiceUSBRedirection.enable = true;
waydroid.enable = true;
podman = {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
};
};
environment = {
sessionVariables = {
BROWSER = "zen";
DIRENV_WARN_TIMEOUT = "100s";
EDITOR = "nvim";
NIXOS_OZONE_WL = 1;
TERMINAL = "wezterm";
};
systemPackages = with pkgs; [
ddccontrol-db
inputs.agenix.packages.${system}.default
looking-glass-client
nautilus
qemu
snowfallorg.flake
sound-theme-freedesktop
uutils-coreutils-noprefix
virtio-win
(warp-terminal.override {waylandSupport = true;})
winetricks
wineWowPackages.staging
xclip
yt-dlp
];
persistence."/persist" = {
hideMounts = true;
directories = [
"/etc/ssh"
"/root/.ssh"
"/var/lib/bluetooth"
"/var/lib/iwd"
"/var/lib/libvirt"
"/var/lib/nixos"
"/var/lib/systemd/coredump"
];
files = ["/etc/machine-id"];
};
};
boot = {
blacklistedKernelModules = ["nouveau" "i915"];
kernelPackages = pkgs.linuxPackages_cachyos;
supportedFilesystems = ["btrfs" "ntfs"];
tmp.useTmpfs = true;
initrd = {
# Encrypted device
luks.devices."enc".device = "/dev/disk/by-uuid/9952fcd1-46eb-4c9c-ab7d-361d31fdb9a2";
systemd = {
enable = true;
emergencyAccess = true;
dbus.enable = true;
network = {
enable = true;
networks = {
inherit (config.systemd.network.networks) "10-lan1" "10-wlan1";
};
};
initrdBin = with pkgs; [
iwd
nix
vim
];
services.wipe-root = {
requires = ["dev-mapper-enc.device"];
after = ["dev-mapper-enc.device"];
wantedBy = ["initrd.target"];
script = lib.mkAfter ''
mkdir /btrfs_tmp
mount /dev/mapper/enc /btrfs_tmp
if [[ -e /btrfs_tmp/root ]]; then
mkdir -p /btrfs_tmp/old_roots
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
};
};
};
extraModprobeConfig =
"options nvidia "
+ lib.concatStringsSep " " [
"NVreg_EnablePCIeGen3=1"
"NVreg_RegistryDwords=RMUseSwI2c=0x01;RMI2cSpeed=100"
"NVreg_UsePageAttributeTable=1"
];
kernelParams = [
"intel_iommu=on"
"iommu=pt"
"kvm.ignore_msrs=1"
"modprobe.blacklist=nouveau,i915"
"nvidia_drm.fbdev=1"
];
loader = {
efi.canTouchEfiVariables = true;
systemd-boot = {
enable = true;
configurationLimit = 20;
};
};
};
nix = {
daemonCPUSchedPolicy = "batch";
daemonIOSchedClass = "idle";
daemonIOSchedPriority = 7;
gc = {
automatic = true;
dates = "Sat *-*-* 03:00";
options = "--delete-older-than 30d";
};
optimise = {
automatic = true;
dates = ["04:00"];
};
settings = {
auto-optimise-store = true;
builders-use-substitutes = true;
flake-registry = "/etc/nix/registry.json";
keep-going = true;
log-lines = 30;
max-jobs = "auto";
sandbox-fallback = false;
sandbox = true;
system-features = ["nixos-test" "kvm" "recursive-nix" "big-parallel" "gccarch-x86-64-v4"];
use-cgroups = true;
use-xdg-base-directories = true;
warn-dirty = false;
allowed-users = ["root" "@wheel" "nix-builder"];
trusted-users = ["root" "@wheel" "nix-builder"];
min-free = "${toString (5 * 1024 * 1024 * 1024)}";
max-free = "${toString (10 * 1024 * 1024 * 1024)}";
extra-experimental-features = [
"flakes" # flakes
"nix-command" # experimental nix commands
"recursive-nix" # let nix invoke itself
"ca-derivations" # content addressed nix
"auto-allocate-uids" # allow nix to automatically pick UIDs, rather than creating nixbld* user accounts
"cgroups" # allow nix to execute builds inside cgroups
];
substituters = [
"https://cache.nixos.org?priority=100"
"https://cache.privatevoid.net"
"https://cosmic.cachix.org/"
"https://cuda-maintainers.cachix.org"
"https://hyprland.cachix.org"
"https://nix-community.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"cache.privatevoid.net:SErQ8bvNWANeAvtsOESUwVYr2VJynfuc9JRwlzTTkVg="
"cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
};
programs = {
dconf.enable = true;
fish.enable = true;
gamemode.enable = true;
steam.enable = true;
gnupg.agent.enable = true;
virt-manager.enable = true;
appimage = {
enable = true;
binfmt = true;
};
hyprland = {
enable = false;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
};
nh = {
enable = true;
flake = "/home/marshall/nix-config";
};
obs-studio = {
enable = true;
enableVirtualCamera = true;
};
};
networking = {
firewall.enable = false;
networkmanager.enable = false;
hostName = "navis";
nameservers = ["1.1.1.1" "1.0.0.1"];
useDHCP = lib.mkForce true;
useNetworkd = true;
wireless.iwd.enable = true;
};
time = {
hardwareClockInLocalTime = true;
timeZone = "America/New_York";
};
services = {
ddccontrol.enable = true;
flatpak.enable = true;
getty.autologinUser = "marshall";
gnome.gnome-keyring.enable = true;
openssh.enable = true;
spice-vdagentd.enable = true;
udisks2.enable = true;
btrfs.autoScrub = {
enable = true;
fileSystems = ["/dev/mapper/enc"];
};
displayManager.cosmic-greeter.enable = true;
desktopManager.cosmic.enable = true;
libinput = {
enable = true;
touchpad.naturalScrolling = true;
};
xserver = {
enable = true;
videoDrivers = ["nvidia"];
displayManager.startx.enable = true;
windowManager.xmonad = {
enable = false;
enableContribAndExtras = true;
enableConfiguredRecompile = true;
flake = {
enable = true;
compiler = "ghc982";
};
};
};
pipewire = {
enable = true;
pulse.enable = true;
alsa = {
enable = true;
support32Bit = true;
};
};
};
users = {
mutableUsers = false;
users.marshall = {
hashedPasswordFile = config.age.secrets.passwd.path;
isNormalUser = true;
shell = pkgs.fish;
extraGroups = [
"disk"
"gamemode"
"libvirtd"
"qemu-libvirtd"
"tss"
"wheel"
];
};
};
snowfallorg.users.marshall = {
create = true;
admin = true;
};
home-manager.useGlobalPkgs = true;
hardware = {
bluetooth.enable = true;
i2c.enable = true;
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
vaapiVdpau
nvidia-vaapi-driver
];
};
nvidia-container-toolkit.enable = true;
nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.beta;
modesetting.enable = true;
powerManagement.enable = true;
open = false;
};
};
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
config.common.default = [
"cosmic"
"gtk"
];
extraPortals = [
pkgs.xdg-desktop-portal-cosmic
pkgs.xdg-desktop-portal-gtk
];
};
system.stateVersion = "24.05";
}

File diff suppressed because it is too large Load diff

View file

@ -1,575 +0,0 @@
{
inputs,
lib,
config,
pkgs,
system,
...
}: {
facter.reportPath = ./facter.json;
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/64079eb2-d3e3-47b7-a889-d5b2fee4fa82";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-uuid/BC12-6397";
fsType = "vfat";
};
};
swapDevices = [{device = "/dev/disk/by-uuid/d36507db-7392-4852-9b2a-12d2a476cd31";}];
nixpkgs.config.allowUnfree = true;
system.stateVersion = "23.11";
time.timeZone = "America/New_York";
age = {
secrets.token.file = ../../../secrets/token.age;
secrets.mailer_passwd.file = ../../../secrets/mailer_passwd.age;
identityPaths = ["/root/.ssh/id_ed25519"];
};
nix = {
nixPath = ["nixpkgs=flake:nixpkgs"];
registry =
(lib.mapAttrs (_: flake: {inherit flake;}))
((lib.filterAttrs (_: lib.isType "flake")) inputs);
settings = {
auto-optimise-store = true;
experimental-features = "nix-command flakes";
warn-dirty = false;
trusted-users = ["marshall"];
substituters = [
"https://cache.nixos.org"
"https://nix-community.cachix.org"
"https://nyx.chaotic.cx/"
"https://cuda-maintainers.cachix.org"
];
trusted-substituters = [
"cache.nixos.org"
"nix-community.cachix.org"
"nyx.chaotic.cx"
"cuda-maintainers.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nyx.chaotic.cx-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
"conduwuit:lYPVh7o1hLu1idH4Xt2QHaRa49WRGSAqzcfFd94aOTw="
];
};
};
environment = {
localBinInPath = true;
sessionVariables.FLAKE = "/home/marshall/nix-config";
systemPackages = [
pkgs.miniupnpc
inputs.agenix.packages.${system}.default
pkgs.codeium
];
etc =
lib.mapAttrs'
(name: value: {
name = "nix/path/${name}";
value.source = value.flake;
})
config.nix.registry;
};
fonts.packages = with pkgs; [
inter
maple-mono-SC-NF
nerdfonts
];
boot = {
kernelPackages = pkgs.linuxPackages_xanmod_latest;
supportedFilesystems = ["ntfs"];
binfmt = {
emulatedSystems = ["aarch64-linux"];
registrations.appimage = {
wrapInterpreterInShell = false;
interpreter = "${pkgs.appimage-run}/bin/appimage-run";
recognitionType = "magic";
offset = 0;
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
magicOrExtension = ''\x7fELF....AI\x02'';
};
};
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
hardware = {
pulseaudio.enable = false;
bluetooth = {
enable = true;
powerOnBoot = true;
};
opengl = {
enable = true;
driSupport32Bit = true;
extraPackages = with pkgs; [
libGL
libGLU
];
};
};
networking = {
hostName = "polaris-nix";
networkmanager.enable = true;
firewall.enable = false;
};
security = {
pam.services.gdm.enableGnomeKeyring = true;
rtkit.enable = true;
sudo.extraConfig = ''
Defaults lecture = never
'';
};
programs = {
fish.enable = true;
gnupg.agent.enable = true;
ssh.startAgent = true;
nix-ld = {
enable = true;
libraries = with pkgs; [
SDL
SDL2
SDL2_image
SDL2_mixer
SDL2_ttf
SDL_image
SDL_mixer
SDL_ttf
alsa-lib
at-spi2-atk
at-spi2-core
atk
bzip2
cairo
cups
curlWithGnuTls
dbus
dbus-glib
desktop-file-utils
e2fsprogs
expat
flac
fontconfig
freeglut
freetype
fribidi
fuse
fuse3
gdk-pixbuf
glew110
glib
gmp
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-ugly
gst_all_1.gstreamer
gtk2
harfbuzz
icu
keyutils.lib
libgcc
libGL
libGLU
libappindicator-gtk2
libcaca
libcanberra
libcap
libclang.lib
libdbusmenu
libdrm
libgcrypt
libgpg-error
libidn
libjack2
libjpeg
libmikmod
libogg
libpng12
libpulseaudio
librsvg
libsamplerate
libthai
libtheora
libtiff
libudev0-shim
libusb1
libuuid
libvdpau
libvorbis
libvpx
libxcrypt-legacy
libxkbcommon
libxml2
mesa
nspr
nss
openssl
p11-kit
pango
pixman
python3
speex
stdenv.cc.cc
tbb
udev
vulkan-loader
wayland
xorg.libICE
xorg.libSM
xorg.libX11
xorg.libXScrnSaver
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXft
xorg.libXi
xorg.libXinerama
xorg.libXmu
xorg.libXrandr
xorg.libXrender
xorg.libXt
xorg.libXtst
xorg.libXxf86vm
xorg.libpciaccess
xorg.libxcb
xorg.xcbutil
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
xorg.xcbutilwm
xorg.xkeyboardconfig
xz
zlib
];
};
};
services = {
eternal-terminal.enable = true;
tailscale.enable = true;
xe-guest-utilities.enable = true;
code-server = {
enable = true;
disableTelemetry = true;
disableUpdateCheck = true;
disableWorkspaceTrust = true;
host = "0.0.0.0";
port = 8080;
hashedPassword = "$argon2i$v=19$m=16,t=2,p=1$alg3SXBFSkhzbDRhZXlCRw$2COxhvVifNMmIIozs14AkQ";
user = "marshall";
group = "users";
extraEnvironment = {
NIX_LD = lib.fileContents "${pkgs.stdenv.cc}/nix-support/dynamic-linker";
NIX_LD_LIBRARY_PATH = with pkgs;
lib.makeLibraryPath [
SDL
SDL2
SDL2_image
SDL2_mixer
SDL2_ttf
SDL_image
SDL_mixer
SDL_ttf
alsa-lib
at-spi2-atk
at-spi2-core
atk
bzip2
cairo
cups
curlWithGnuTls
dbus
dbus-glib
desktop-file-utils
e2fsprogs
expat
flac
fontconfig
freeglut
freetype
fribidi
fuse
fuse3
gdk-pixbuf
glew110
glib
gmp
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-ugly
gst_all_1.gstreamer
gtk2
harfbuzz
icu
keyutils.lib
libgcc
libGL
libGLU
libappindicator-gtk2
libcaca
libcanberra
libcap
libclang.lib
libdbusmenu
libdrm
libgcrypt
libgpg-error
libidn
libjack2
libjpeg
libmikmod
libogg
libpng12
libpulseaudio
librsvg
libsamplerate
libthai
libtheora
libtiff
libudev0-shim
libusb1
libuuid
libvdpau
libvorbis
libvpx
libxcrypt-legacy
libxkbcommon
libxml2
mesa
nspr
nss
openssl
p11-kit
pango
pixman
python3
speex
stdenv.cc.cc
tbb
udev
vulkan-loader
wayland
xorg.libICE
xorg.libSM
xorg.libX11
xorg.libXScrnSaver
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXft
xorg.libXi
xorg.libXinerama
xorg.libXmu
xorg.libXrandr
xorg.libXrender
xorg.libXt
xorg.libXtst
xorg.libXxf86vm
xorg.libpciaccess
xorg.libxcb
xorg.xcbutil
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
xorg.xcbutilwm
xorg.xkeyboardconfig
xz
zlib
];
};
};
forgejo = let
forgejoDomain = "git.pupbrained.xyz";
in {
enable = true;
user = "git";
group = "git";
lfs.enable = true;
secrets.mailer.PASSWD = config.age.secrets.mailer_passwd.path;
settings = {
log.LEVEL = "Debug";
DEFAULT.APP_NAME = "MarGit";
actions = {
ENABLED = true;
DEFAULT_ACTIONS_URL = "github";
};
database = {
SQLITE_JOURNAL_MODE = "WAL";
LOG_SQL = false;
};
federation.ENABLED = true;
mailer = {
ENABLED = true;
SMTP_ADDR = "email-smtp.us-east-2.amazonaws.com";
FROM = "noreply@git.pupbrained.xyz";
USER = "AKIAVIRH7PRQXI3FCBZ4";
SEND_AS_PLAIN_TEXT = true;
};
metrics = {
ENABLED = true;
ENABLED_ISSUE_BY_REPOSITORY = true;
ENABLED_ISSUE_BY_LABEL = true;
};
oauth2_client = {
ACCOUNT_LINKING = "login";
USERNAME = "nickname";
ENABLE_AUTO_REGISTRATION = false;
REGISTER_EMAIL_CONFIRM = false;
UPDATE_AVATAR = true;
};
packages.ENABLED = true;
repository = {
DEFAULT_PRIVATE = "private";
ENABLE_PUSH_CREATE_USER = true;
ENABLE_PUSH_CREATE_ORG = true;
};
server = {
HTTP_ADDR = "0.0.0.0";
HTTP_PORT = 6610;
DOMAIN = forgejoDomain;
ROOT_URL = "https://${forgejoDomain}/";
SSH_USER = "git";
SSH_DOMAIN = "ssh.pupbrained.xyz";
};
service = {
DISABLE_REGISTRATION = false;
SHOW_REGISTRATION_BUTTON = true;
REGISTER_EMAIL_CONFIRM = false;
ENABLE_NOTIFY_MAIL = true;
};
session.COOKIE_SECURE = true;
ui = {
DEFAULT_THEME = "forgejo-auto";
};
"ui.meta".AUTHOR = "MarGit";
};
};
matrix-conduit = {
enable = true;
package = pkgs.conduwuit_git;
settings.global.database_backend = "rocksdb";
settings.global.allow_registration = true;
settings.global.address = "0.0.0.0";
settings.global.server_name = "pupbrained.xyz";
settings.global.registration_token = "blehh";
};
openssh = {
enable = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
};
};
pipewire = {
enable = true;
pulse.enable = true;
alsa = {
enable = true;
support32Bit = true;
};
};
xserver = {
enable = true;
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;
layout = "us";
xkbVariant = "";
};
};
systemd.services.cloudflared = {
description = "Point traffic to tunnel subdomain";
wantedBy = ["default.target"];
serviceConfig = {
EnvironmentFile = config.age.secrets.token.path;
Type = "oneshot";
ExecStart = "${lib.getExe pkgs.cloudflared} tunnel --no-autoupdate run";
};
};
users.users.marshall = {
isNormalUser = true;
shell = pkgs.fish;
extraGroups = ["wheel" "libvirtd" "kvm"];
};
users.groups.git = {};
users.users.git = {
isSystemUser = true;
useDefaultShell = true;
group = "git";
home = config.services.forgejo.stateDir;
};
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
};
}

File diff suppressed because it is too large Load diff