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/
secrets/
nib/
result
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
0. Rename TODO -> TODO.md
1. Rename user "ae" to "cry" or "vps"
2. Add 404 page to nginx on hyrule
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
$terminal = ghostty #rio
$fileManager = thunar
# $menu = wofi --show drun
# $menu = ags -t "applauncher"
$menu = fuzzel
#$menu = wofi --show drun
$menu = ags -t "applauncher"
$colorpicker = hyprpicker | head -c 7 | wl-copy
#################
@ -41,7 +40,6 @@ $colorpicker = hyprpicker | head -c 7 | wl-copy
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
exec-once = swww-daemon &
exec-once = mako &
# TODO: or do I do `swww init` or `swww restore`?
# █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█

111
flake.lock generated
View file

@ -1,11 +1,30 @@
{
"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": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nix-github-actions": "nix-github-actions",
"nixpkgs": "nixpkgs",
"nixpkgs": "nixpkgs_2",
"stable": "stable"
},
"locked": {
@ -56,14 +75,14 @@
},
"grub2-themes": {
"inputs": {
"nixpkgs": "nixpkgs_2"
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1757136219,
"narHash": "sha256-tKU+vq34KHu/A2wD7WdgP5A4/RCmSD8hB0TyQAUlixA=",
"lastModified": 1730004881,
"narHash": "sha256-8xVIqIW25o2uCL0fxAmP4Sj9sdebarQXmd1+64yMe8o=",
"owner": "vinceliuice",
"repo": "grub2-themes",
"rev": "80dd04ddf3ba7b284a7b1a5df2b1e95ee2aad606",
"rev": "42c232dfb46bf93c17506cbc1a574e5e89b5e09f",
"type": "github"
},
"original": {
@ -94,6 +113,38 @@
}
},
"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": {
"lastModified": 1734119587,
"narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
@ -109,29 +160,13 @@
"type": "github"
}
},
"nixpkgs-unstable": {
"nixpkgs_3": {
"locked": {
"lastModified": 1761114652,
"narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=",
"lastModified": 1730808093,
"narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c",
"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",
"rev": "c1a390f74b2c93f69a6805142f11a215a689cec1",
"type": "github"
},
"original": {
@ -141,13 +176,13 @@
"type": "github"
}
},
"nixpkgs_3": {
"nixpkgs_4": {
"locked": {
"lastModified": 1761016216,
"narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=",
"lastModified": 1752620740,
"narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "481cf557888e05d3128a76f14c76397b7d7cc869",
"rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e",
"type": "github"
},
"original": {
@ -159,9 +194,10 @@
},
"root": {
"inputs": {
"ags": "ags",
"colmena": "colmena",
"grub2-themes": "grub2-themes",
"nixpkgs": "nixpkgs_3",
"nixpkgs": "nixpkgs_4",
"nixpkgs-unstable": "nixpkgs-unstable"
}
},
@ -180,6 +216,21 @@
"repo": "nixpkgs",
"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",

View file

@ -5,9 +5,16 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
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";
ags.url = "github:Aylur/ags";
colmena.url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a";
};
outputs = {

View file

@ -6,31 +6,24 @@
pkgs,
pkgs-unstable,
...
} @ args: {
}: {
imports = [
../modules/fish.nix
../modules/btop.nix
../modules/tmux.nix
../modules/term/foot.nix
../modules/git.nix
../modules/bat.nix
../modules/fish.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/apps/thunderbird.nix
#../modules/wm/hypr/hypridle.nix
../modules/wm/hypr/hyprlock.nix
../modules/kanshi.nix
../modules/ags
../modules/mako.nix
];
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.GetName pkg) [
"vscode-extension-ms-dotnettools-csharp"
];
home = {
@ -42,10 +35,6 @@
man = "batman"; # bat + man
};
sessionVariables = {
NIX_SHELL_PRESERVE_PROMPT = 1;
};
pointerCursor = {
gtk.enable = true;
# x11.enable = true # dont enable since im on hyprland
@ -53,18 +42,6 @@
name = "Bibata-Modern-Ice";
size = 16;
};
packages = with pkgs; [
# for services.gnome-keyring
pkgs.gcr # provides org.gnome.keyring.SystemPrompter
seahorse # gui
tor-browser
fuzzel
speedtest-cli
];
};
gtk = {
@ -159,12 +136,8 @@
};
};
services = {
# enable OpenSSH private key agent
ssh-agent.enable = true;
gnome-keyring.enable = true;
};
services.ssh-agent.enable = true;
# the ssh-agent won't set this for itself...
systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
# 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";
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 = {
@ -171,15 +149,6 @@
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 @@
{
lib,
pkgs,
...
}: {
# REF: https://home-manager-options.extranix.com/?query=vscode&release=release-25.05
{pkgs, ...}: {
programs.vscode = {
enable = true;
package = pkgs.vscodium;
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
# 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 = {
programs.fish = {
enable = true;
generateCompletions = true;
# vendor = {
# config.enable = true;
# functions.enable = true;
# completions.enable = true;
# };
interactiveShellInit = ''
# add dotnet completions if it exists (ie we're in a virtual environment)
if type -q dotnet
@ -35,15 +27,6 @@
echo -n $greetings[(random 1 (count $greetings))]
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)

View file

@ -5,19 +5,6 @@
}: {
programs.git = {
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 = {
color.ui = true;
core.editor = "hx";
@ -33,20 +20,10 @@
"github:"
];
};
"https://gitlab.com/" = {
insteadOf = [
"gl:"
"gitlab:"
];
};
};
};
includes = [
{
path = "/home/me/agribit/.gitconfig";
condition = "gitdir:/home/me/agribit/**";
}
];
userName = "Emile Clark-Boman";
userEmail = "eclarkboman@gmail.com";
};
}

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

View file

@ -15,8 +15,6 @@ in {
./hardware-configuration.nix
(import "${home-manager}/nixos")
../modules/bashistrans.nix
../modules/wm/hyprland.nix
# ../modules/wm/river.nix
../modules/wm/crywl.nix
@ -35,30 +33,13 @@ in {
];
nixpkgs.config.allowUnfreePredicate = let
vscext = pkgs.vscode-extensions;
whitelist = with pkgs;
map lib.getName [
discord
steam
steamcmd
steam-unwrapped
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
whitelist = map lib.getName [
pkgs.obsidian
pkgs.gitkraken
pkgs.steam
pkgs.steamcmd
pkgs.steam-unwrapped
pkgs.dwarf-fortress
];
in
pkg: builtins.elem (lib.getName pkg) whitelist;
@ -119,30 +100,10 @@ in {
networkmanager.enable = true;
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 = {
# 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)
displayManager = {
# sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects
@ -160,11 +121,11 @@ in {
);
};
# dbus = {
# # NOTE: programs.uwsm.enable sets implementation to dbus-broker,
# # NOTE: however this seems to break dbus
# implementation = lib.mkForce "dbus";
# };
dbus = {
# NOTE: programs.uwsm.enable sets implementation to dbus-broker,
# NOTE: however this seems to break dbus
implementation = lib.mkForce "dbus";
};
# Multimedia Framework
# With backwards compatability for alsa/pulseaudio/jack
@ -237,18 +198,13 @@ in {
};
# ---- ENVIRONMENT VARIABLES ----
environment = {
# always install "dev" derivation outputs
extraOutputsToInstall = ["dev" "man"];
sessionVariables = {
environment.sessionVariables = {
# folder names with capitalisation look awful!
XDG_DOWNLOAD_DIR = "$HOME/downloads";
# Hint Electrons apps to use Wayland
NIXOS_OZONE_WL = "1";
};
};
# ---- SYSTEM PACKAGES -----
environment.systemPackages = with pkgs; [
@ -273,49 +229,23 @@ in {
fish
shellcheck
grc # colorise command outputs
moreutils
# Systems Emulation
qemu # Fellice Bellard's Quick Emulator
# GNU Utils
gnumake
# Binaries
binutils
strace
ltrace
perf-tools # ftrace + perf
radare2
gdb
hexyl
# ASM
nasm
(callPackage ../packages/x86-manpages {})
# C Family
gcc
clang
clang-tools
# Rust
cargo
rustc
# Go
go
# Nim
nim
nimble
# Haskell
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
# Go
go
# Python
python312 # I use 3.12 since it's in a pretty stable state now
@ -324,11 +254,6 @@ in {
# Sage
sageWithDoc # SageMath + HTML Documentation
# .NET
dotnetCorePackages.dotnet_9.sdk
dotnetCorePackages.dotnet_9.aspnetcore
dotnetCorePackages.dotnet_9.runtime
openvpn
inetutils
@ -345,18 +270,23 @@ in {
zoxide
doggo
tldr
btop
# btop
eza
yazi
lazygit
ripgrep
viddy # modern `watch` command
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
git
git-filter-repo
nix-prefetch-git
brightnessctl
acpi
# upower
@ -368,10 +298,8 @@ in {
file
wget
tree
pstree
unzip
unrar-free
lz4
man-pages
man-pages-posix
@ -381,6 +309,8 @@ in {
libargon2
# Games
mindustry
dwarf-fortress
prismlauncher # minecraft
];
@ -396,6 +326,22 @@ in {
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 = {
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,
...
}: {
# nixpkgs.config.allowUnfreePredicate = pkg:
# builtins.elem (lib.getName pkg) [
# "steam"
# "steam-original"
# "steam-unwrapped"
# "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]
);
});
})
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-original"
"steam-unwrapped"
"steam-run"
];
programs = {
steam = {
enable = true;
gamescopeSession.enable = false; # .desktop entry for gamescope
gamescopeSession.enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
};
gamemode.enable = true;
@ -45,12 +29,7 @@
mangohud
protonup-qt
# 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
lutris
bottles
heroic
];

View file

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

View file

@ -1,74 +1,41 @@
{
lib,
pkgs,
pkgs-unstable,
inputs,
config,
...
}: let
home-manager = builtins.fetchTarball {
url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz";
sha256 = "0q3lv288xlzxczh6lc5lcw0zj9qskvjw3pzsrgvdh8rl8ibyq75s";
sha256 = "026rvynmzmpigax9f8gy9z67lsl6dhzv2p6s8wz4w06v3gjvspm1";
};
in {
imports = [
./hardware-configuration.nix
(import "${home-manager}/nixos")
../modules/bashistrans.nix
../modules/wm/hyprland.nix
../modules/steam.nix
../modules/obsidian.nix
../modules/apps/rider.nix
../modules/apps/winbox.nix
#../modules/flipperzero.nix
#../modules/chameleonultragui.nix
../modules/flipperzero.nix
../modules/chameleonultragui.nix
];
nix.settings = {
experimental-features = [
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
download-buffer-size = 524288000; # 500 MiB
};
# nixpkgs.overlays = [
# (self: super: {
# jdk17 = super.jdk17.override (prev: {
# enableJavaFX = true;
# });
# })
# ];
nixpkgs.config.allowUnfreePredicate = let
vscext = pkgs.vscode-extensions;
whitelist = with pkgs;
map lib.getName [
discord
steam
steamcmd
steam-unwrapped
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
whitelist = map lib.getName [
pkgs.obsidian
pkgs.gitkraken
pkgs.steam
pkgs.steamcmd
pkgs.steam-unwrapped
pkgs.dwarf-fortress
];
in
pkg: builtins.elem (lib.getName pkg) whitelist;
@ -129,16 +96,7 @@ in {
hostName = "myputer";
networkmanager.enable = true;
firewall = {
enable = true;
allowedTCPPorts = [
22 # SSH
80 # HTTP
443 # HTTPS
5678 # MikroTik WinBox
25565 # Minecraft LAN
];
};
firewall.enable = true;
};
# ----- SERVICES -----
@ -225,25 +183,19 @@ in {
home-manager = {
users.me = import ../../homes/me;
extraSpecialArgs = {inherit inputs pkgs pkgs-unstable;};
sharedModules = [
inputs.ags.homeManagerModules.default
];
};
# ---- ENVIRONMENT VARIABLES ----
environment = {
# always install "dev" derivation outputs
extraOutputsToInstall = ["dev" "man"];
sessionVariables = {
environment.sessionVariables = {
# folder names with capitalisation look awful!
XDG_DOWNLOAD_DIR = "$HOME/downloads";
# Hint Electrons apps to use Wayland
NIXOS_OZONE_WL = "1";
};
};
# ---- SYSTEM PACKAGES -----
environment.systemPackages = with pkgs; [
@ -256,16 +208,8 @@ in {
bluetui
wl-clipboard # clipboard for wayland
hyprpicker
hyprshot # screenshot utility
qbittorrent
signal-desktop
kdePackages.gwenview # image viewer
libreoffice
# TEST: WARNING
# ospd-openvas
# openvas-scanner
# openvas-smb
(callPackage ../sddm-theme-corners.nix {}).sddm-theme-corners
# dependencies for my sddm theme:
@ -276,52 +220,23 @@ in {
fish
shellcheck
grc # colorise command outputs
moreutils
# Systems Programming & Compilation
# Systems Emulation
qemu # Fellice Bellard's Quick Emulator
# GNU Utils
gnumake
# Binaries
binutils
strace
ltrace
perf-tools # ftrace + perf
radare2
gdb
# ASM
nasm
(callPackage ../packages/x86-manpages {})
# C Family
gcc
clang
clang-tools
# Rust
cargo
rustc
# Go
go
# Nim
nim
nimble
# Haskell
ghc
ghcid
haskell-language-server
ormolu
# Java
# jdk17
# (jre8.overrideAttrs
# (oldAttrs: {
# enableJavaFX = true;
# }))
# (jdk8.overrideAttrs
# (oldAttrs: {
# enableJavaFX = true;
# }))
visualvm
# Go
go
# Python
python312 # I use 3.12 since it's in a pretty stable state now
@ -375,10 +290,8 @@ in {
file
wget
tree
pstree
unzip
unrar-free
lz4
man-pages
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 = {
enable = true;
@ -439,18 +367,6 @@ in {
# mozilla's email client
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 -----

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-