Compare commits

..

No commits in common. "main" and "laptop" have entirely different histories.
main ... laptop

31 changed files with 203 additions and 999 deletions

1
.gitignore vendored
View file

@ -1,6 +1,5 @@
ISSUES/ ISSUES/
secrets/ secrets/
nib/
result result
rebuild*.log rebuild*.log

View file

@ -1,11 +0,0 @@
Excellent Resource
https://gist.github.com/brunoanc/2dea6ddf6974ba4e5d26c3139ffb7580#install-xdg-desktop-portal-and-friends
Hyprland official page on screensharing
https://wiki.hyprland.org/Useful-Utilities/Screen-Sharing/
Multiple sources seem to think that use xdg-desktop-portal-wlr works (but I can't stream individual applications)
but I suppose that's better than nothing?
Also check out xwaylandvideobridge

View file

@ -1,4 +1,5 @@
## Next Up ## Next Up
0. Rename TODO -> TODO.md
1. Rename user "ae" to "cry" or "vps" 1. Rename user "ae" to "cry" or "vps"
2. Add 404 page to nginx on hyrule 2. Add 404 page to nginx on hyrule
3. Add a user called "mirror" that stores important mirrors (inspiration: https://git.gay/mirror) 3. Add a user called "mirror" that stores important mirrors (inspiration: https://git.gay/mirror)

6
banner
View file

@ -1,6 +0,0 @@
.------------.
| oh my |
'------------'
^ (\_(\
'----- ( -.-)
o_(")(")

View file

@ -25,9 +25,8 @@ monitor=eDP-1, highres@highrr, auto, 1.0
# Set programs that you use # Set programs that you use
$terminal = ghostty #rio $terminal = ghostty #rio
$fileManager = thunar $fileManager = thunar
# $menu = wofi --show drun #$menu = wofi --show drun
# $menu = ags -t "applauncher" $menu = ags -t "applauncher"
$menu = fuzzel
$colorpicker = hyprpicker | head -c 7 | wl-copy $colorpicker = hyprpicker | head -c 7 | wl-copy
################# #################
@ -41,7 +40,6 @@ $colorpicker = hyprpicker | head -c 7 | wl-copy
# exec-once = nm-applet & # exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox # exec-once = waybar & hyprpaper & firefox
exec-once = swww-daemon & exec-once = swww-daemon &
exec-once = mako &
# TODO: or do I do `swww init` or `swww restore`? # TODO: or do I do `swww init` or `swww restore`?
# █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█ # █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█

111
flake.lock generated
View file

@ -1,11 +1,30 @@
{ {
"nodes": { "nodes": {
"ags": {
"inputs": {
"nixpkgs": "nixpkgs",
"systems": "systems"
},
"locked": {
"lastModified": 1728326430,
"narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=",
"owner": "Aylur",
"repo": "ags",
"rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d",
"type": "github"
},
"original": {
"owner": "Aylur",
"repo": "ags",
"type": "github"
}
},
"colmena": { "colmena": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nix-github-actions": "nix-github-actions", "nix-github-actions": "nix-github-actions",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs_2",
"stable": "stable" "stable": "stable"
}, },
"locked": { "locked": {
@ -56,14 +75,14 @@
}, },
"grub2-themes": { "grub2-themes": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1757136219, "lastModified": 1730004881,
"narHash": "sha256-tKU+vq34KHu/A2wD7WdgP5A4/RCmSD8hB0TyQAUlixA=", "narHash": "sha256-8xVIqIW25o2uCL0fxAmP4Sj9sdebarQXmd1+64yMe8o=",
"owner": "vinceliuice", "owner": "vinceliuice",
"repo": "grub2-themes", "repo": "grub2-themes",
"rev": "80dd04ddf3ba7b284a7b1a5df2b1e95ee2aad606", "rev": "42c232dfb46bf93c17506cbc1a574e5e89b5e09f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -94,6 +113,38 @@
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": {
"lastModified": 1725634671,
"narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1753939845,
"narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "94def634a20494ee057c76998843c015909d6311",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1734119587, "lastModified": 1734119587,
"narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
@ -109,29 +160,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1761114652, "lastModified": 1730808093,
"narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", "narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", "rev": "c1a390f74b2c93f69a6805142f11a215a689cec1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1761269590,
"narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d792a6e0cd4ba35c90ea787b717d72410f56dc40",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -141,13 +176,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1761016216, "lastModified": 1752620740,
"narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", "narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "481cf557888e05d3128a76f14c76397b7d7cc869", "rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -159,9 +194,10 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"ags": "ags",
"colmena": "colmena", "colmena": "colmena",
"grub2-themes": "grub2-themes", "grub2-themes": "grub2-themes",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_4",
"nixpkgs-unstable": "nixpkgs-unstable" "nixpkgs-unstable": "nixpkgs-unstable"
} }
}, },
@ -180,6 +216,21 @@
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -5,9 +5,16 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
colmena.url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a"; #home-manager = {
# url = "github:nix-community/home-manager";
# inputs.nixpkgs.follows = "nixpkgs";
#};
grub2-themes.url = "github:vinceliuice/grub2-themes"; grub2-themes.url = "github:vinceliuice/grub2-themes";
ags.url = "github:Aylur/ags";
colmena.url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a";
}; };
outputs = { outputs = {

View file

@ -6,31 +6,24 @@
pkgs, pkgs,
pkgs-unstable, pkgs-unstable,
... ...
} @ args: { }: {
imports = [ imports = [
../modules/fish.nix
../modules/btop.nix
../modules/tmux.nix
../modules/term/foot.nix
../modules/git.nix ../modules/git.nix
../modules/bat.nix ../modules/bat.nix
../modules/fish.nix
../modules/editor/helix.nix ../modules/editor/helix.nix
(import ../modules/editor/vscode.nix args) # ../modules/editor/vscodium.nix
../modules/btop.nix
../modules/term/ghostty.nix
../modules/term/foot.nix
# ../modules/term/rio.nix
../modules/firefox.nix ../modules/firefox.nix
../modules/apps/thunderbird.nix
#../modules/wm/hypr/hypridle.nix #../modules/wm/hypr/hypridle.nix
../modules/wm/hypr/hyprlock.nix ../modules/wm/hypr/hyprlock.nix
../modules/kanshi.nix ../modules/kanshi.nix
../modules/ags ../modules/ags
../modules/mako.nix
];
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.GetName pkg) [
"vscode-extension-ms-dotnettools-csharp"
]; ];
home = { home = {
@ -42,10 +35,6 @@
man = "batman"; # bat + man man = "batman"; # bat + man
}; };
sessionVariables = {
NIX_SHELL_PRESERVE_PROMPT = 1;
};
pointerCursor = { pointerCursor = {
gtk.enable = true; gtk.enable = true;
# x11.enable = true # dont enable since im on hyprland # x11.enable = true # dont enable since im on hyprland
@ -53,18 +42,6 @@
name = "Bibata-Modern-Ice"; name = "Bibata-Modern-Ice";
size = 16; size = 16;
}; };
packages = with pkgs; [
# for services.gnome-keyring
pkgs.gcr # provides org.gnome.keyring.SystemPrompter
seahorse # gui
tor-browser
fuzzel
speedtest-cli
];
}; };
gtk = { gtk = {
@ -159,12 +136,8 @@
}; };
}; };
services = {
# enable OpenSSH private key agent # enable OpenSSH private key agent
ssh-agent.enable = true; services.ssh-agent.enable = true;
gnome-keyring.enable = true;
};
# the ssh-agent won't set this for itself... # the ssh-agent won't set this for itself...
systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent"; systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
# Nicely reload system units when changing configs # Nicely reload system units when changing configs

View file

@ -1,10 +0,0 @@
{...}: {
programs.thunderbird = {
enable = true;
profiles = {
"me" = {
isDefault = true;
};
};
};
}

View file

@ -136,28 +136,6 @@
formatter.command = "${pkgs.clang-tools}/bin/clang-format"; formatter.command = "${pkgs.clang-tools}/bin/clang-format";
language-servers = ["clangd"]; language-servers = ["clangd"];
} }
{
name = "haskell";
auto-format = true;
formatter.command = "${pkgs.ormolu}/bin/ormolu";
language-servers = ["haskell-language-server"];
}
# {
# name = "c-sharp";
# source = "source.cs";
# file-types = ["cs"];
# indent = {
# tab-width = 4;
# unit = " ";
# };
# block-comment-tokens = {
# start = "/*";
# end = "*/";
# };
# # auto-format = false;
# # formatter.command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp";
# # language-servers = ["OmniSharp"];
# }
]; ];
language-server = { language-server = {
@ -171,15 +149,6 @@
clangd = { clangd = {
command = "${pkgs.clang-tools}/bin/clangd"; command = "${pkgs.clang-tools}/bin/clangd";
}; };
haskell-language-server = {
command = "${pkgs.haskell-language-server}/bin/haskell-language-server-wrapper";
};
# C# language services
OmniSharp = {
command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp";
};
}; };
}; };
}; };

View file

@ -1,134 +0,0 @@
{
config,
lib,
pkgs,
vscodium ? false,
secret-service ? "gnome-libsecret",
vscode-argv ? ".vscode/argv.json",
...
}: {
nixpkgs.overlays = [
(
self: super: {
vscode-extensions = super.vscode-extensions.overrideAttrs (prev: let
mkVscMarketplaceExtension = {
publisher,
name,
version,
hash,
description ? "",
homepage ? null,
changelog ? null,
license ? null,
maintainers ? [lib.maintainers.emileclarkb],
}:
with pkgs.vscode-utils.buildVscodeMarketplaceExtension; {
${publisher}.${name} = buildVscodeMarketplaceExtension {
mktplcRef = {
inherit
publisher
name
version
hash
;
};
meta = {
inherit
(
if license != null
then {license = license;}
else {}
)
description
homepage
maintainers
;
downloadPage = "https://marketplace.visualstudio.com/items?itemName=${publisher}.${name}";
changelog =
if changelog != null
then changelog
else "https://marketplace.visualstudio.com/items/${publisher}.${name}/changelog";
};
};
};
in
lib.mergeAttrsList [
(mkVscMarketplaceExtension {
publisher = "ms-dotnettools";
name = "dotnet-maui";
version = "1.11.14";
hash = lib.fakeHash;
description = "Extend C# Dev Kit with tools for building .NET Multi-platform App UI (MAUI) apps";
homepage = "https://github.com/microsoft/vscode-dotnettools";
license = lib.licenses.unfree;
})
]);
}
)
];
# REF: https://home-manager-options.extranix.com/?query=vscode&release=release-25.05
programs.vscode = {
enable = true;
# TODO: clean up
package =
(
if vscodium
then pkgs.vscodium
else pkgs.vscode
).overrideAttrs (oldAttrs: {
# runtimeDependencies = oldAttrs.runtimeDependencies ++ []
});
mutableExtensionsDir = true;
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
# extension format: USER.PACKAGENAME
extensions = with pkgs.vscode-extensions; [
# .NET
ms-dotnettools.csharp
ms-dotnettools.csdevkit
ms-dotnettools.vscode-dotnet-runtime
# TODO: these extensions aren't packaged :(
# deitry.solution-syntax
# ms-dotnettools.vscode-dotnet-pack
# ms-dotnettools.dotnet-maui
# Python
ms-python.python
# GitLens by GitKraken
eamodio.gitlens
ms-azuretools.vscode-docker
github.copilot
github.copilot-chat
# Colors & Themes
dracula-theme.theme-dracula
catppuccin.catppuccin-vsc
catppuccin.catppuccin-vsc-icons
mvllow.rose-pine
];
userSettings = {
"workbench.colorTheme" = "Dracula Theme";
"github.copilot.nextEditSuggestions.enabled" = true;
};
};
};
# TODO: this is super ugly, make sure the JSON is formatted!!
home.file.${vscode-argv}.text = builtins.toJSON {
password-store = secret-service;
disable-hardware-acceleration = false;
disable-color-correct-rendering = false;
enable-crash-reporter = false;
# crash-report-id = ...;
};
}

View file

@ -1,37 +1,9 @@
{ {pkgs, ...}: {
lib,
pkgs,
...
}: {
# REF: https://home-manager-options.extranix.com/?query=vscode&release=release-25.05
programs.vscode = { programs.vscode = {
enable = true; enable = true;
package = pkgs.vscodium; package = pkgs.vscodium;
mutableExtensionsDir = true;
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
# extension format: USER.PACKAGENAME
extensions = with pkgs.vscode-extensions; [ extensions = with pkgs.vscode-extensions; [
# .NET
ms-dotnettools.csharp
ms-dotnettools.csdevkit
ms-dotnettools.vscode-dotnet-runtime
# ms-dotnettools.vscode-dotnet-pack
# ms-dotnettools.dotnet-maui
# Colors & Themes
dracula-theme.theme-dracula
catppuccin.catppuccin-vsc
catppuccin.catppuccin-vsc-icons
mvllow.rose-pine
]; ];
userSettings = {
"workbench.colorTheme" = "Dracula Theme";
};
};
}; };
} }

View file

@ -12,14 +12,6 @@
config = { config = {
programs.fish = { programs.fish = {
enable = true; enable = true;
generateCompletions = true;
# vendor = {
# config.enable = true;
# functions.enable = true;
# completions.enable = true;
# };
interactiveShellInit = '' interactiveShellInit = ''
# add dotnet completions if it exists (ie we're in a virtual environment) # add dotnet completions if it exists (ie we're in a virtual environment)
if type -q dotnet if type -q dotnet
@ -35,15 +27,6 @@
echo -n $greetings[(random 1 (count $greetings))] echo -n $greetings[(random 1 (count $greetings))]
end end
function gitignore -a type
curl -sL "https://www.gitignore.io/api/$type"
end
# ripgrep on files
function rgf
rg --files | rg $args
end
set -g fish_greeting (rand_greet) set -g fish_greeting (rand_greet)

View file

@ -5,19 +5,6 @@
}: { }: {
programs.git = { programs.git = {
enable = true; enable = true;
lfs.enable = true;
userName = "Emile Clark-Boman";
userEmail = "eclarkboman@gmail.com";
aliases = {
s = "status";
d = "diff";
l = "log";
c = "commit";
p = "push";
};
extraConfig = { extraConfig = {
color.ui = true; color.ui = true;
core.editor = "hx"; core.editor = "hx";
@ -33,20 +20,10 @@
"github:" "github:"
]; ];
}; };
"https://gitlab.com/" = {
insteadOf = [
"gl:"
"gitlab:"
];
};
}; };
}; };
includes = [ userName = "Emile Clark-Boman";
{ userEmail = "eclarkboman@gmail.com";
path = "/home/me/agribit/.gitconfig";
condition = "gitdir:/home/me/agribit/**";
}
];
}; };
} }

View file

@ -1,54 +0,0 @@
{...}: let
dracula = rec {
background = "#282A36";
border = cyan;
cyan = "#8BE9FD";
yellow = "#F1FA8C";
red = "#FF5555";
};
theme = dracula;
in {
# notification daemon for Wayland
services.mako = {
enable = true;
settings = {
actions = true;
anchor = "top-right";
layer = "overlay";
sort = "-time";
height = 100;
width = 300;
margin = 50;
background-color = theme.background;
border-color = theme.border;
border-radius = 20;
border-size = 4;
font = "monospace 10";
markup = true;
icons = true;
max-icon-size = 64;
default-timeout = 5000;
ignore-timeout = false;
"actionable=true" = {
anchor = "top-left";
};
"urgency=low" = {
border-color = theme.border;
};
"urgency=normal" = {
border-color = theme.yellow;
};
"urgency=high" = {
default-timeout = 0;
border-color = theme.red;
};
};
};
}

View file

@ -1,5 +0,0 @@
{...}: {
programs.tmux = {
enable = true;
};
}

View file

@ -1,43 +1,2 @@
# NOTE: hyprland must be enabled in BOTH your host config (for running hyprland) # NOTE: hyprland must be enabled in BOTH your host config (for running hyprland)
# and your home-manager config (for managing hyprland's config files) # and your home-manager config (for managing hyprland's config files)
{
pkgs,
pkgs-unstable,
inputs,
config,
lib,
...
}: {
options.hyprland = {
enable = lib.mkEnableOption "Hyprland";
};
config = lib.mkIf config.hyprland.enable {
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.hyprland; # pkgs-unstable.hyprland;
xwayland.enable = true;
systemd = {
enable = true;
# enable autostart of applications
# REF: `man 8 systemd-xdg-autostart-generator`
enableXdgAutostart = true;
};
plugins = with inputs; [
split-monitor-workspaces.packages.${pkgs.system}.split
];
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
};
# TODO: finish this
};
}

View file

@ -7,16 +7,15 @@
}: let }: let
home-manager = builtins.fetchTarball { home-manager = builtins.fetchTarball {
url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz";
sha256 = "0d41gr0c89a4y4lllzdgmbm54h9kn9fjnmavwpgw0w9xwqwnzpax"; sha256 = "026rvynmzmpigax9f8gy9z67lsl6dhzv2p6s8wz4w06v3gjvspm1";
}; };
in { in {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
(import "${home-manager}/nixos") (import "${home-manager}/nixos")
# ./mailserver.nix # TEMP: location ./mailserver.nix # TEMP: location
# ./minecraft-server.nix # TEMP: location ./minecraft-server.nix # TEMP: location
#../modules/server/nginx.nix #../modules/server/nginx.nix
#../modules/server/ssh.nix #../modules/server/ssh.nix
#../modules/server/fail2ban.nix #../modules/server/fail2ban.nix

View file

@ -15,8 +15,6 @@ in {
./hardware-configuration.nix ./hardware-configuration.nix
(import "${home-manager}/nixos") (import "${home-manager}/nixos")
../modules/bashistrans.nix
../modules/wm/hyprland.nix ../modules/wm/hyprland.nix
# ../modules/wm/river.nix # ../modules/wm/river.nix
../modules/wm/crywl.nix ../modules/wm/crywl.nix
@ -35,30 +33,13 @@ in {
]; ];
nixpkgs.config.allowUnfreePredicate = let nixpkgs.config.allowUnfreePredicate = let
vscext = pkgs.vscode-extensions; whitelist = map lib.getName [
whitelist = with pkgs; pkgs.obsidian
map lib.getName [ pkgs.gitkraken
discord pkgs.steam
steam pkgs.steamcmd
steamcmd pkgs.steam-unwrapped
steam-unwrapped pkgs.dwarf-fortress
winbox
obsidian
gitkraken
vscode
vscext.ms-dotnettools.csharp
vscext.ms-dotnettools.csdevkit
vscext.github.copilot
vscext.github.copilot-chat
# XXX: DEBUG
# rider-override
# XXX: DEBUG
# jetbrains.rider
]; ];
in in
pkg: builtins.elem (lib.getName pkg) whitelist; pkg: builtins.elem (lib.getName pkg) whitelist;
@ -119,30 +100,10 @@ in {
networkmanager.enable = true; networkmanager.enable = true;
firewall.enable = false; firewall.enable = false;
# Use CloudFlare's WARP+ 1.1.1.1 DNS service
nameservers = [
"1.1.1.1#one.one.one.one"
"1.0.0.1#one.one.one.one"
];
}; };
# ----- SERVICES ----- # ----- SERVICES -----
services = { services = {
# systemd-resolved provides network name resolution
# to local processes via a D-Bus interface.
resolved = {
enable = true;
dnssec = "true";
domains = ["~."];
# Use CloudFlare's WARP+ 1.1.1.1 DNS service
fallbackDns = [
"1.1.1.1#one.one.one.one"
"1.0.0.1#one.one.one.one"
];
dnsovertls = "true";
};
# Set display manager (login screen) # Set display manager (login screen)
displayManager = { displayManager = {
# sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects # sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects
@ -160,11 +121,11 @@ in {
); );
}; };
# dbus = { dbus = {
# # NOTE: programs.uwsm.enable sets implementation to dbus-broker, # NOTE: programs.uwsm.enable sets implementation to dbus-broker,
# # NOTE: however this seems to break dbus # NOTE: however this seems to break dbus
# implementation = lib.mkForce "dbus"; implementation = lib.mkForce "dbus";
# }; };
# Multimedia Framework # Multimedia Framework
# With backwards compatability for alsa/pulseaudio/jack # With backwards compatability for alsa/pulseaudio/jack
@ -237,18 +198,13 @@ in {
}; };
# ---- ENVIRONMENT VARIABLES ---- # ---- ENVIRONMENT VARIABLES ----
environment = { environment.sessionVariables = {
# always install "dev" derivation outputs
extraOutputsToInstall = ["dev" "man"];
sessionVariables = {
# folder names with capitalisation look awful! # folder names with capitalisation look awful!
XDG_DOWNLOAD_DIR = "$HOME/downloads"; XDG_DOWNLOAD_DIR = "$HOME/downloads";
# Hint Electrons apps to use Wayland # Hint Electrons apps to use Wayland
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
}; };
};
# ---- SYSTEM PACKAGES ----- # ---- SYSTEM PACKAGES -----
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -273,49 +229,23 @@ in {
fish fish
shellcheck shellcheck
grc # colorise command outputs grc # colorise command outputs
moreutils
# Systems Emulation # Systems Emulation
qemu # Fellice Bellard's Quick Emulator qemu # Fellice Bellard's Quick Emulator
# GNU Utils # GNU Utils
gnumake gnumake
# Binaries
binutils binutils
strace
ltrace
perf-tools # ftrace + perf
radare2
gdb
hexyl
# ASM
nasm
(callPackage ../packages/x86-manpages {})
# C Family # C Family
gcc gcc
clang clang
clang-tools clang-tools
# Rust # Rust
cargo cargo
rustc rustc
# Go
go
# Nim # Nim
nim nim
nimble # Go
# Haskell go
ghc
ghcid
haskell-language-server
ormolu
# Nix
# TODO: once upgraded past Nix-24.07 this line won't be necessary (I think)
# helix will support nixd by default
# SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix
nixd # lsp for nix
nix-prefetch-git
nix-index
# Python # Python
python312 # I use 3.12 since it's in a pretty stable state now python312 # I use 3.12 since it's in a pretty stable state now
@ -324,11 +254,6 @@ in {
# Sage # Sage
sageWithDoc # SageMath + HTML Documentation sageWithDoc # SageMath + HTML Documentation
# .NET
dotnetCorePackages.dotnet_9.sdk
dotnetCorePackages.dotnet_9.aspnetcore
dotnetCorePackages.dotnet_9.runtime
openvpn openvpn
inetutils inetutils
@ -345,18 +270,23 @@ in {
zoxide zoxide
doggo doggo
tldr tldr
btop # btop
eza eza
yazi yazi
lazygit lazygit
ripgrep ripgrep
viddy # modern `watch` command viddy # modern `watch` command
thefuck thefuck
timg # terminal image (sixel) viewer
# TODO: once upgraded past Nix-24.07 this line won't be necessary (I think)
# helix will support nixd by default
# SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix
nixd # lsp for nix
# Pretty necessary # Pretty necessary
git git
git-filter-repo git-filter-repo
nix-prefetch-git
brightnessctl brightnessctl
acpi acpi
# upower # upower
@ -368,10 +298,8 @@ in {
file file
wget wget
tree tree
pstree
unzip unzip
unrar-free unrar-free
lz4
man-pages man-pages
man-pages-posix man-pages-posix
@ -381,6 +309,8 @@ in {
libargon2 libargon2
# Games # Games
mindustry
dwarf-fortress
prismlauncher # minecraft prismlauncher # minecraft
]; ];
@ -396,6 +326,22 @@ in {
nix-ld.enable = true; nix-ld.enable = true;
# I want to use fish as my login shell but it always goes terrible
# cause it isn't POSIX compliant, so instead Bash is my login and
# will just exec fish (^-^)
bash = {
blesh.enable = false; # ble.sh replacement for GNU readline
completion.enable = true;
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
# Thunar also uses: `services.tumbler` & `services.gvfs` # Thunar also uses: `services.tumbler` & `services.gvfs`
thunar = { thunar = {
enable = true; enable = true;

View file

@ -1,36 +0,0 @@
{
pkgs,
pkgs-unstable,
...
}: {
environment.systemPackages = with pkgs; [
# Ensure latest stable Rider version (not necessarily stable on NixOS)
pkgs-unstable.jetbrains.rider
# NOTE: Blazor requires a Chromium-based browser
chromium
# arc-browser
# .NET
dotnetCorePackages.dotnet_9.sdk
dotnetCorePackages.dotnet_9.aspnetcore
dotnetCorePackages.dotnet_9.runtime
# Mono
mono
# NOTE: nixpkgs-unstable uses .NET8 SDK
# WARNING: nixpkgs-25.05 uses .NET6 SDK (now marked insecure)
pkgs-unstable.msbuild
# .NET Framework Tools/Services
omnisharp-roslyn
netcoredbg
];
programs.nix-ld = {
enable = true;
libraries = with pkgs; [
icu
];
};
}

View file

@ -1,6 +0,0 @@
{...}: {
programs.winbox = {
enable = true;
openFirewall = false; # port: 5678
};
}

View file

@ -1,23 +0,0 @@
{pkgs, ...}: {
# I want to use fish as my login shell but it always goes terrible
# cause it isn't POSIX compliant, so instead Bash is my login and
# will just exec fish (^-^)
programs.bash = {
blesh.enable = false; # ble.sh replacement for GNU readline
completion.enable = true;
interactiveShellInit = ''
# help bash transition into a beautiful fish!
if [[ -z $CRY_BASH_IS_TRANS ]]
then
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
fi
# bash is trans now! (no more transitioning required)
export CRY_BASH_IS_TRANS=true
'';
};
}

View file

@ -3,38 +3,22 @@
lib, lib,
... ...
}: { }: {
# nixpkgs.config.allowUnfreePredicate = pkg: nixpkgs.config.allowUnfreePredicate = pkg:
# builtins.elem (lib.getName pkg) [ builtins.elem (lib.getName pkg) [
# "steam" "steam"
# "steam-original" "steam-original"
# "steam-unwrapped" "steam-unwrapped"
# "steam-run" "steam-run"
# ];
nixpkgs.overlays = [
(self: super: {
lutris = super.lutris.overrideAttrs (final: prev: {
# WARNING: pkgs.mbedtls_2 is marked insecure!
# Replace pkgs.mbedtls_2 (v2.28.10) with pkgs.mbedtls (v3.6.4)
targetPkgs = pkgs: (
(builtins.filter (p: p != pkgs.mbedtls_2) (prev.targetPkgs pkgs))
++ [pkgs.mbedtls]
);
});
})
]; ];
programs = { programs = {
steam = { steam = {
enable = true; enable = true;
gamescopeSession.enable = false; # .desktop entry for gamescope gamescopeSession.enable = true;
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true; dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true; localNetworkGameTransfers.openFirewall = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
}; };
gamemode.enable = true; gamemode.enable = true;
@ -45,12 +29,7 @@
mangohud mangohud
protonup-qt protonup-qt
lutris
# XXX: DEBUG: disable lutris
# XXX: NOTE: pkgs.lutris depends on pkgs.mbedtls_2 which is marked insecure!
# XXX: NOTE: Use the provided overlay to patch pkgs.mbedtls_2 -> pkgs.mbedtls
# lutris
bottles bottles
heroic heroic
]; ];

View file

@ -1,8 +1,4 @@
{pkgs, ...}: { {...}: {
environment.defaultPackages = with pkgs; [
hyprsunset
];
programs = { programs = {
hyprland = { hyprland = {
enable = true; enable = true;

View file

@ -1,74 +1,41 @@
{ {
lib, lib,
pkgs, pkgs,
pkgs-unstable,
inputs, inputs,
config, config,
... ...
}: let }: let
home-manager = builtins.fetchTarball { home-manager = builtins.fetchTarball {
url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz";
sha256 = "0q3lv288xlzxczh6lc5lcw0zj9qskvjw3pzsrgvdh8rl8ibyq75s"; sha256 = "026rvynmzmpigax9f8gy9z67lsl6dhzv2p6s8wz4w06v3gjvspm1";
}; };
in { in {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
(import "${home-manager}/nixos") (import "${home-manager}/nixos")
../modules/bashistrans.nix
../modules/wm/hyprland.nix ../modules/wm/hyprland.nix
../modules/steam.nix ../modules/steam.nix
../modules/obsidian.nix ../modules/obsidian.nix
../modules/apps/rider.nix
../modules/apps/winbox.nix
#../modules/flipperzero.nix ../modules/flipperzero.nix
#../modules/chameleonultragui.nix ../modules/chameleonultragui.nix
]; ];
nix.settings = { nix.settings.experimental-features = [
experimental-features = [
"nix-command" "nix-command"
"flakes" "flakes"
]; ];
download-buffer-size = 524288000; # 500 MiB
};
# nixpkgs.overlays = [
# (self: super: {
# jdk17 = super.jdk17.override (prev: {
# enableJavaFX = true;
# });
# })
# ];
nixpkgs.config.allowUnfreePredicate = let nixpkgs.config.allowUnfreePredicate = let
vscext = pkgs.vscode-extensions; whitelist = map lib.getName [
whitelist = with pkgs; pkgs.obsidian
map lib.getName [ pkgs.gitkraken
discord pkgs.steam
steam pkgs.steamcmd
steamcmd pkgs.steam-unwrapped
steam-unwrapped pkgs.dwarf-fortress
winbox
obsidian
gitkraken
vscode
vscext.ms-dotnettools.csharp
vscext.ms-dotnettools.csdevkit
vscext.github.copilot
vscext.github.copilot-chat
# XXX: DEBUG
# rider-override
# XXX: DEBUG
# jetbrains.rider
]; ];
in in
pkg: builtins.elem (lib.getName pkg) whitelist; pkg: builtins.elem (lib.getName pkg) whitelist;
@ -129,16 +96,7 @@ in {
hostName = "myputer"; hostName = "myputer";
networkmanager.enable = true; networkmanager.enable = true;
firewall = { firewall.enable = true;
enable = true;
allowedTCPPorts = [
22 # SSH
80 # HTTP
443 # HTTPS
5678 # MikroTik WinBox
25565 # Minecraft LAN
];
};
}; };
# ----- SERVICES ----- # ----- SERVICES -----
@ -225,25 +183,19 @@ in {
home-manager = { home-manager = {
users.me = import ../../homes/me; users.me = import ../../homes/me;
extraSpecialArgs = {inherit inputs pkgs pkgs-unstable;};
sharedModules = [ sharedModules = [
inputs.ags.homeManagerModules.default inputs.ags.homeManagerModules.default
]; ];
}; };
# ---- ENVIRONMENT VARIABLES ---- # ---- ENVIRONMENT VARIABLES ----
environment = { environment.sessionVariables = {
# always install "dev" derivation outputs
extraOutputsToInstall = ["dev" "man"];
sessionVariables = {
# folder names with capitalisation look awful! # folder names with capitalisation look awful!
XDG_DOWNLOAD_DIR = "$HOME/downloads"; XDG_DOWNLOAD_DIR = "$HOME/downloads";
# Hint Electrons apps to use Wayland # Hint Electrons apps to use Wayland
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
}; };
};
# ---- SYSTEM PACKAGES ----- # ---- SYSTEM PACKAGES -----
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -256,16 +208,8 @@ in {
bluetui bluetui
wl-clipboard # clipboard for wayland wl-clipboard # clipboard for wayland
hyprpicker hyprpicker
hyprshot # screenshot utility
qbittorrent qbittorrent
signal-desktop signal-desktop
kdePackages.gwenview # image viewer
libreoffice
# TEST: WARNING
# ospd-openvas
# openvas-scanner
# openvas-smb
(callPackage ../sddm-theme-corners.nix {}).sddm-theme-corners (callPackage ../sddm-theme-corners.nix {}).sddm-theme-corners
# dependencies for my sddm theme: # dependencies for my sddm theme:
@ -276,52 +220,23 @@ in {
fish fish
shellcheck shellcheck
grc # colorise command outputs grc # colorise command outputs
moreutils
# Systems Programming & Compilation # Systems Emulation
qemu # Fellice Bellard's Quick Emulator qemu # Fellice Bellard's Quick Emulator
# GNU Utils # GNU Utils
gnumake gnumake
# Binaries
binutils binutils
strace
ltrace
perf-tools # ftrace + perf
radare2
gdb
# ASM
nasm
(callPackage ../packages/x86-manpages {})
# C Family # C Family
gcc gcc
clang clang
clang-tools clang-tools
# Rust # Rust
cargo cargo
rustc rustc
# Go
go
# Nim # Nim
nim nim
nimble # Go
# Haskell go
ghc
ghcid
haskell-language-server
ormolu
# Java
# jdk17
# (jre8.overrideAttrs
# (oldAttrs: {
# enableJavaFX = true;
# }))
# (jdk8.overrideAttrs
# (oldAttrs: {
# enableJavaFX = true;
# }))
visualvm
# Python # Python
python312 # I use 3.12 since it's in a pretty stable state now python312 # I use 3.12 since it's in a pretty stable state now
@ -375,10 +290,8 @@ in {
file file
wget wget
tree tree
pstree
unzip unzip
unrar-free unrar-free
lz4
man-pages man-pages
man-pages-posix man-pages-posix
@ -427,6 +340,21 @@ in {
}; };
}; };
# I want to use fish as my login shell but it always goes terrible
# cause it isn't POSIX compliant, so instead Bash is my login and
# will just exec fish (^-^)
bash = {
completion.enable = true;
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
# Thunar also (optionally) requires: `services.tumbler` & `services.gvfs` # Thunar also (optionally) requires: `services.tumbler` & `services.gvfs`
thunar = { thunar = {
enable = true; enable = true;
@ -439,18 +367,6 @@ in {
# mozilla's email client # mozilla's email client
thunderbird.enable = true; thunderbird.enable = true;
java = let
# XXX: WARNING: TEST :WARNING: XXX
# Test for CrazyCraft VoidLauncher
myjdk = pkgs.jdk17.override {
enableJavaFX = true;
# openjfx_jdk = pkgs.openjfx17.override {withWebKit = true;};
};
in {
enable = true;
package = myjdk;
};
}; };
# ----- FONTS ----- # ----- FONTS -----

View file

@ -1,35 +0,0 @@
# Template: https://nixos-and-flakes.thiscute.world/development/intro
{
description = "Humanity's Last Exam - Devshell";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
};
outputs = {nixpkgs, ...}: let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
};
python = pkgs.python312.override {
self = python;
packageOverrides = pyfinal: pyprev: {
huggingface-hub = pyfinal.callPackage ./huggingface_hub.nix {};
hf-xet = pyfinal.callPackage ./hf-xet.nix {};
};
};
in {
devShells."${system}".default = pkgs.mkShell {
packages = [
(python.withPackages (pypkgs: [
pypkgs.huggingface-hub
]))
];
shell = "${pkgs.bash}/bin/bash";
shellHook = ''
alias hf=huggingface-cli
'';
};
};
}

View file

@ -1,56 +0,0 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
pkg-config,
rustPlatform,
openssl,
}:
buildPythonPackage rec {
pname = "hf-xet";
version = "1.1.5";
pyproject = true;
src = fetchFromGitHub {
owner = "huggingface";
repo = "xet-core";
tag = "v${version}";
hash = "sha256-udjZcXTH+Mc4Gvj6bSPv1xi4MyXrLeCYav+7CzKWyhY=";
};
sourceRoot = "${src.name}/hf_xet";
cargoDeps = rustPlatform.fetchCargoVendor {
inherit
pname
version
src
sourceRoot
;
hash = "sha256-PTzYubJHFvhq6T3314R4aqBAJlwehOqF7SbpLu4Jo6E=";
};
nativeBuildInputs = [
pkg-config
rustPlatform.cargoSetupHook
rustPlatform.maturinBuildHook
];
buildInputs = [
openssl
];
env.OPENSSL_NO_VENDOR = 1;
pythonImportsCheck = ["hf_xet"];
# No tests (yet?)
doCheck = false;
meta = {
description = "Xet client tech, used in huggingface_hub";
homepage = "https://github.com/huggingface/xet-core/tree/main/hf_xet";
changelog = "https://github.com/huggingface/xet-core/releases/tag/v${version}";
license = lib.licenses.asl20;
};
}

View file

@ -1,62 +0,0 @@
/*
* WARNING: Just use `pkgs.python312Packages.huggingface-hub` (or change python version)
* WARNING: I didn't realise it existed when I packaged this.
*
* Nix Resources:
* 1. https://wiki.nixos.org/wiki/Python
* 2. https://nixos.org/manual/nixpkgs/unstable/#developing-with-python
*
* Hugging Face Resources:
* 1. https://github.com/huggingface/huggingface_hub
* 2. https://huggingface.co/docs/huggingface_hub/main/en/guides/cli
*/
{
lib,
buildPythonPackage,
fetchPypi,
# build time dependencies
setuptools,
# runtime dependencies
filelock,
fsspec,
hf-xet,
pyyaml,
requests,
tqdm,
typing-extensions,
}:
buildPythonPackage rec {
pname = "huggingface_hub";
version = "0.34.3";
src = fetchPypi {
inherit pname version;
hash = "sha256-1YEw/VqnQISAaBR1SRwKvX6DVEIIL7w+9NRbbDn4OFM=";
};
pyproject = true;
doCheck = false; # skip unit testing
pythonImportsCheck = ["huggingface_hub"];
# buildtime dependencies
build-system = [
setuptools
];
# runtime dependencies
dependencies = [
filelock
fsspec
hf-xet
pyyaml
requests
tqdm
typing-extensions
];
meta = rec {
description = "The official Python client for the Huggingface Hub.";
homepage = "https://github.com/huggingface/huggingface_hub";
changelog = "${homepage}/releases/tag/v${version}";
license = lib.licenses.asl20; # Apache License 2.0
};
}

View file

@ -1,32 +0,0 @@
{pkgs, ...}:
pkgs.stdenv.mkDerivation {
pname = "x86-manpages";
version = "0.0.1";
src = pkgs.fetchFromGitHub {
owner = "ttmo-O";
repo = "x86-manpages";
## Recommended
# rev = "0e199a8b4d90be7eb715291c21cf41de8527beac";
# sha256 = "0im596j0pf90npg933gkq6wpw23c47fcwv0n64qfqn5mcy92qbcb";
rev = "94902f9c45de0efe803c32b6c3e88d6623881866";
sha256 = "0k6nsfabzqwnhjiyw2kyg0z49nzrsxn515f6dcjh1rn7bzih5562";
};
installPhase = ''
mkdir -p $out/man/man7
shopt -u nullglob
for m in man7/*.7; do
install -m 644 "$m" "$out/man/man7"
done
'';
meta = with pkgs.lib; {
description = "Manpages for x86 instructions";
homepage = "https://github.com/ttmo-O/x86-manpages";
license = licenses.mit;
platforms = platforms.all;
};
}

View file

@ -1,44 +0,0 @@
#!/usr/bin/env bash
USAGE="Usage: box [--enter]"
# ===== Configuration ===== #
DATA_DIR="$HOME/.data/box"
# ========================= #
function setup {
mkdir -p "$DATA_DIR" &>/dev/null
}
function box {
mktemp -d
# TODO: use a custom name instead
}
set -euo pipefail
ENTER=false
for arg in $@; do
case "$arg" in
-e|--enter)
ENTER=true
shift
;;
-h|--help)
echo "$USAGE"
;;
-*)
echo "[!] Unknown opt \"$arg\"" >&2
;;
*)
echo "[!] Unknown arg \"$arg\"" >&2
;;
esac
done
setup
BOX=$(box)
if [[ "$ENTER" == true ]]; then
cd "$BOX"
fi

View file

@ -1,7 +0,0 @@
#!/usr/bin/env bash
# USAGE: lsyscalls | sort [-nk2]
echo -e '#include <sys/syscall.h>'\
| cpp -dM \
| grep "#define __NR_.*[0-9]$" \
| cut -d_ -f 4-