Compare commits

...

10 Commits

Author SHA1 Message Date
Nathan Braswell
4f578fe894 updated 2025-11-21 23:05:36 -05:00
Nathan Braswell
a4827fa128 last server 2025-11-19 22:58:33 -05:00
Nathan Braswell
cf705ec2ec Merge branch 'main' of https://forge.room409.xyz/miloignis/nix_config 2025-11-11 20:18:19 -05:00
Nathan Braswell
377e48aa0d update 32bit flag, change background 2025-11-11 20:18:06 -05:00
Nathan Braswell
6c30aaf6c8 disable pantimilion 2025-10-30 10:41:28 -04:00
Nathan Braswell
b828a306fd Fixup personal side post jj 2025-10-27 22:18:30 -04:00
0aec0f831e Merge branch 'main' of https://forge.room409.xyz/miloignis/nix_config 2025-10-27 22:15:58 -04:00
778681f603 Wayland Emacs, Pantimilon attempt 2025-10-27 22:15:56 -04:00
Nathan Braswell
a57a9a46a2 Merge branch 'main' of https://forge.room409.xyz/miloignis/nix_config 2025-10-27 22:14:21 -04:00
Nathan Braswell
ec3c43a20a JJ config 2025-10-27 22:14:11 -04:00
4 changed files with 201 additions and 65 deletions

62
flake.lock generated
View File

@@ -124,18 +124,20 @@
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748186689, "host": "gitlab.gnome.org",
"narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=", "lastModified": 1762869044,
"narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0", "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad",
"type": "github" "type": "gitlab"
}, },
"original": { "original": {
"host": "gitlab.gnome.org",
"owner": "GNOME", "owner": "GNOME",
"ref": "48.2", "ref": "gnome-49",
"repo": "gnome-shell", "repo": "gnome-shell",
"type": "github" "type": "gitlab"
} }
}, },
"home-manager": { "home-manager": {
@@ -145,11 +147,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1760500983, "lastModified": 1763416652,
"narHash": "sha256-zfY4F4CpeUjTGgecIJZ+M7vFpwLc0Gm9epM/iMQd4w8=", "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "c53e65ec92f38d30e3c14f8d628ab55d462947aa", "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -170,11 +172,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1760575912, "lastModified": 1763581369,
"narHash": "sha256-8VNgyBHMJ2paTzWX5EAemGBNB0pCiA6NKJFPZHuzjhY=", "narHash": "sha256-HTLoe4UvnG5fWruO+zjnZJNCnKcbVM8eeSPpIlKHOyI=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "55d6c441e21c9cd8396d4db03c696c1259d0f62e", "rev": "ca75677ad47613f6afbbc2c6142601fef0ac7631",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -203,11 +205,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1760524031, "lastModified": 1763574558,
"narHash": "sha256-hcyRViwdsrNUjHTcY0VGygcAawcyU4zYEq7ZZObFwkw=", "narHash": "sha256-PdXkgqtbVFdZNhmTrZLTDMGb4zzaSK2RnKUXM8bIDo4=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "2776005c5fc4fbb85636672213b8b84a319dfb01", "rev": "6fcdb9242e65ed5825e7fda2a7935b412588b63a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -218,11 +220,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1760106635, "lastModified": 1762847253,
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", "narHash": "sha256-BWWnUUT01lPwCWUvS0p6Px5UOBFeXJ8jR+ZdLX8IbrU=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", "rev": "899dc449bc6428b9ee6b3b8f771ca2b0ef945ab9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -234,11 +236,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1760524057, "lastModified": 1763421233,
"narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", "narHash": "sha256-Stk9ZYRkGrnnpyJ4eqt9eQtdFWRRIvMxpNRf4sIegnw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", "rev": "89c2b2330e733d6cdb5eae7b899326930c2c0648",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -249,11 +251,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1760423683, "lastModified": 1763334038,
"narHash": "sha256-Tb+NYuJhWZieDZUxN6PgglB16yuqBYQeMJyYBGCXlt8=", "narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a493e93b4a259cd9fea8073f89a7ed9b1c5a1da2", "rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -318,11 +320,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1760472212, "lastModified": 1763590746,
"narHash": "sha256-4C3I/ssFsq8EgaUmZP0xv5V7RV0oCHgL/Rx+MUkuE+E=", "narHash": "sha256-bsEu7Ohdo2OEudXdQzk+jc9fiO0rNMGaH+Wee7FXxNc=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "8d008296a1b3be9b57ad570f7acea00dd2fc92db", "rev": "3013f98e28e52b3bd3859b0c454554aae54d5060",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -447,11 +449,11 @@
"xwayland-satellite-unstable": { "xwayland-satellite-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1759707084, "lastModified": 1762747449,
"narHash": "sha256-0pkftKs6/LReNvxw7DVTN2AJEheZVgyeK0Aarbagi70=", "narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=",
"owner": "Supreeeme", "owner": "Supreeeme",
"repo": "xwayland-satellite", "repo": "xwayland-satellite",
"rev": "a9188e70bd748118b4d56a529871b9de5adb9988", "rev": "6338574bc5c036487486acde264f38f39ea15fad",
"type": "github" "type": "github"
}, },
"original": { "original": {

140
flake.nix
View File

@@ -43,12 +43,17 @@
platforms = platforms.all; platforms = platforms.all;
}; };
})); }));
#background = ./GitS_other_alley_zoom.png;
background = ./GitS_alley_to_water_zoom.png;
homeManagerSharedModule = { homeManagerSharedModule = {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.users.nathan = ((import ./home-manager/home.nix) { username = "nathan"; homeDirectory = "/home/nathan"; }); home-manager.users.nathan = ((import ./home-manager/home.nix) { username = "nathan"; homeDirectory = "/home/nathan"; backgroundImg = background; email = "miloignis@gmail.com"; });
}; };
commonConfigFunc = ({ config, lib, pkgs, modulesPath, ... }: (specificPkgs: { commonConfigFunc = ({ config, lib, pkgs, modulesPath, ... }: (specificPkgs: {
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
nixpkgs.config.permittedInsecurePackages = [
"olm-3.2.16"
];
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = "America/New_York"; time.timeZone = "America/New_York";
@@ -94,7 +99,7 @@
#image = ./ruinedmansion.jpg; #image = ./ruinedmansion.jpg;
#image = ./130_1zhJtUA.jpeg; #the city street #image = ./130_1zhJtUA.jpeg; #the city street
#image = ./GitS_alley_to_water_zoom.png; #image = ./GitS_alley_to_water_zoom.png;
image = ./GitS_other_alley_zoom.png; image = background;
#image = pkgs.fetchurl { #image = pkgs.fetchurl {
# url = "https://raw.githubusercontent.com/kiedtl/walls/refs/heads/master/green-tea.jpg"; # url = "https://raw.githubusercontent.com/kiedtl/walls/refs/heads/master/green-tea.jpg";
# sha256 = "sha256-+NcZMBnbEWurmkOkzdrxGwBlxzUO3Sitt6Uoq9plc7o="; # sha256 = "sha256-+NcZMBnbEWurmkOkzdrxGwBlxzUO3Sitt6Uoq9plc7o=";
@@ -102,13 +107,12 @@
polarity = "dark"; polarity = "dark";
#polarity = "light"; #polarity = "light";
fonts = { fonts = {
# hehe casual as serif
serif = { package = (make_besley pkgs lib); name = "Besley"; }; serif = { package = (make_besley pkgs lib); name = "Besley"; };
#serif = { package = pkgs.recursive; name = "Recursive Sans Linear Static"; };
#sansSerif = { package = pkgs.recursive; name = "Recursive Sans Linear Static"; }; #sansSerif = { package = pkgs.recursive; name = "Recursive Sans Linear Static"; };
sansSerif = { package = pkgs.inter; name = "Inter"; }; sansSerif = { package = pkgs.inter; name = "Inter"; };
monospace = { package = pkgs.recursive; name = "Recursive Mono Linear Static"; }; monospace = { package = pkgs.recursive; name = "Recursive Mono Linear Static"; };
emoji = { package = pkgs.noto-fonts-emoji; name = "Noto Color Emoji"; }; #monospace = { package = pkgs.maple-mono.truetype; name = "Maple Mono"; };
emoji = { package = pkgs.noto-fonts-color-emoji; name = "Noto Color Emoji"; };
}; };
}; };
programs.niri = { programs.niri = {
@@ -121,7 +125,7 @@
extraPackages = with pkgs; [ extraPackages = with pkgs; [
swaylock # lockscreen swaylock # lockscreen
swayidle swayidle
xwayland # for legacy apps #xwayland # for legacy apps
#waybar # status bar #waybar # status bar
mako # notification daemon mako # notification daemon
kanshi # autorandr kanshi # autorandr
@@ -136,15 +140,14 @@
}; };
}; };
# For steam, and Vulkan in general # For steam, and Vulkan in general
#hardware.opengl.driSupport = true; hardware.graphics.enable32Bit = true;
hardware.opengl.driSupport32Bit = true;
hardware.steam-hardware.enable = true; hardware.steam-hardware.enable = true;
programs.steam.enable = true; programs.steam.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
tmux vim wget curl git w3m iftop iotop killall file unzip zip p7zip ripgrep imv killall tmux vim wget curl git w3m iftop iotop killall file unzip zip p7zip ripgrep imv killall
btop htop python3 btop htop python3
waypipe firefox-wayland chromium chawan cmatrix nautilus waypipe firefox chromium chawan cmatrix nautilus
vlc mpv wayfarer libreoffice calibre foliate epr #transmission-gtk mupdf vlc mpv wayfarer libreoffice calibre foliate epr #transmission-gtk mupdf
gimp gimp
pavucontrol pywal pavucontrol pywal
@@ -904,6 +907,125 @@
''; '';
}; };
}; };
virtualHosts."survey-test1.room409.xyz" = {
forceSSL = true;
enableACME = true;
locations."/" = {
root = pkgs.writeTextDir "index.html" ''<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Guest Survey</title>
</head>
<body>
<iframe src="https://gatech.co1.qualtrics.com/jfe/form/SV_9txRmN3ky239cdo" height="800px" width="600px"></iframe>
</body>
</html>
'';
};
};
virtualHosts."survey-test2.room409.xyz" = {
forceSSL = true;
enableACME = true;
locations."/" = {
root = pkgs.writeTextDir "index.html" ''<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Guest Survey</title>
</head>
<body>
<style>
.survey-wrapper { width:100%; max-width:1000px; margin:0 auto; }
.survey-iframe { width:100%; height:80vh; border:0; min-height:600px; }
</style>
<div class="survey-wrapper" role="region" aria-label="Survey">
<div id="survey-container"></div>
</div>
<script>
// 1) Read host-page query params
const params = new URLSearchParams(location.search);
// 2) Get utm_campaign (example: RF777101202)
const utmCampaign = params.get('utm_campaign');
// 3) Decide which Embedded Data field name Qualtrics should receive
// (use 'Referral' if that's your embedded-data field in Qualtrics)
if (utmCampaign) {
params.set('Referral', utmCampaign);
}
// 4) Optionally keep the original UTM values as well
// (uncomment if you want them passed through)
// params.set('utm_source', params.get('utm_source') || 'unknown');
// params.set('utm_medium', params.get('utm_medium') || 'unknown');
// params.set('utm_campaign', utmCampaign || "");
// 5) Build and insert the iframe with the serialized params
const iframe = document.createElement('iframe');
iframe.className = 'survey-iframe';
iframe.title = 'Guest survey';
iframe.allowFullscreen = true;
// Replace the base URL below with your Qualtrics anonymous survey URL
const baseSurveyUrl = 'https://gatech.co1.qualtrics.com/jfe/form/SV_9txRmN3ky239cdo';
iframe.src = baseSurveyUrl + '?' + params.toString();
document.getElementById('survey-container').appendChild(iframe);
</script>
</body>
</html>
'';
};
};
virtualHosts."survey-test3.room409.xyz" = {
forceSSL = true;
enableACME = true;
locations."/" = {
root = pkgs.writeTextDir "index.html" ''<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Guest Survey</title>
<style>
.survey-wrapper { width:100%; max-width:1000px; margin:0 auto; padding:1rem; }
.survey-iframe { width:100%; height:80vh; border:0; min-height:600px; }
</style>
</head>
<body>
<main class="survey-wrapper" role="region" aria-label="Survey">
<div id="survey-container"></div>
</main>
<script>
const params = new URLSearchParams(location.search);
const utmCampaign = params.get('utm_campaign');
if (utmCampaign) {
params.set('Referral', utmCampaign);
}
const iframe = document.createElement('iframe');
iframe.className = 'survey-iframe';
iframe.title = 'Guest survey';
iframe.allowFullscreen = true;
const baseSurveyUrl = 'https://gatech.co1.qualtrics.com/jfe/form/SV_9txRmN3ky239cdo';
iframe.src = baseSurveyUrl + (params.toString() ? '?' + params.toString() : "");
document.getElementById('survey-container').appendChild(iframe);
</script>
</body>
</html>
'';
};
};
virtualHosts."batou.room409.xyz" = { virtualHosts."batou.room409.xyz" = {
forceSSL = true; forceSSL = true;

View File

@@ -27,7 +27,7 @@
# Specify your home configuration modules here, for example, # Specify your home configuration modules here, for example,
# the path to your home.nix. # the path to your home.nix.
modules = [ modules = [
((import ./home.nix) { username = "nbraswell6"; homeDirectory = "/home/nbraswell6";}) ((import ./home.nix) { username = "nbraswell6"; homeDirectory = "/home/nbraswell6"; backgroundImg = "/home/nbraswell6"; email = "nathan.braswell@gtri.gatech.edu"; })
#niri.nixosModules.niri #niri.nixosModules.niri
niri.homeModules.niri niri.homeModules.niri
]; ];

View File

@@ -1,4 +1,4 @@
{ username, homeDirectory }: ({ config, pkgs, lib, ... }:{ { username, homeDirectory, backgroundImg, email }: ({ config, pkgs, lib, ... }:{
# This value determines the Home Manager release that your # This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage # configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards # when a new Home Manager release introduces backwards
@@ -14,7 +14,8 @@
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
home.packages = with pkgs; [ home.packages = with pkgs; [
fira-code jetbrains-mono iosevka monoid recursive inter fira-code jetbrains-mono iosevka monoid recursive inter
xwayland-satellite swww xwayland-satellite
swww
niri niri
]; ];
@@ -108,7 +109,7 @@
}; };
spawn-at-startup = [ spawn-at-startup = [
{ command = [ "swww-daemon" ]; } { command = [ "swww-daemon" ]; }
{ command = [ "swww" "img" "${config.stylix.image}" ]; } { command = [ "swww" "img" "${backgroundImg}" ]; }
{ command = [ "waybar" ]; } { command = [ "waybar" ]; }
{ command = [ "xwayland-satellite" ]; } { command = [ "xwayland-satellite" ]; }
]; ];
@@ -420,7 +421,14 @@
enable = true; enable = true;
lfs.enable = true; lfs.enable = true;
userName = "Nathan Braswell"; userName = "Nathan Braswell";
userEmail = "nathan@braswell.email"; userEmail = email;
};
programs.jujutsu = {
enable = true;
settings.user = {
name = "Nathan Braswell";
email = email;
};
}; };
programs.vim = { programs.vim = {
enable = true; enable = true;
@@ -509,6 +517,7 @@
''; '';
}; };
programs.emacs = { programs.emacs = {
package = pkgs.emacs-pgtk;
enable = true; enable = true;
extraConfig = '' extraConfig = ''
(menu-bar-mode -1) (menu-bar-mode -1)
@@ -521,38 +530,41 @@
(setq show-paren-delay 0) (setq show-paren-delay 0)
(show-paren-mode) (show-paren-mode)
;(require 'smartparens-config)
(setq evil-want-C-u-scroll t) (setq evil-want-C-u-scroll t)
(setq evil-want-keybinding nil)
(evil-mode 1) (evil-mode 1)
(evil-set-undo-system 'undo-redo) (evil-set-undo-system 'undo-redo)
(setq key-chord-two-keys-delay 0.5) (setq key-chord-two-keys-delay 0.5)
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state) (key-chord-define evil-insert-state-map "jk" 'evil-normal-state)
(evil-collection-init)
(key-chord-mode 1) (key-chord-mode 1)
(custom-set-variables
;; custom-set-variables was added by Custom. (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
;; If you edit it by hand, you could mess it up, so be careful. (add-hook 'prog-mode-hook 'display-line-numbers-mode)
;; Your init file should contain only one such instance. ;(load-theme 'dracula t)
;; If there is more than one, they won't work right.
'(custom-safe-themes
'("3ff4a0ad1a2da59a72536e6030291cf663314c14c8a5a9eb475f3c28436d071d" default)))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(load-theme 'dracula t)
''; '';
extraPackages = epkgs: with epkgs; [ extraPackages = epkgs: with epkgs; [
evil key-chord magit proof-general evil key-chord magit proof-general
#paredit ement nov evil-collection
#smartparens rainbow-delimiters
#parinfer-rust-mode dracula-theme
rainbow-delimiters dracula-theme
]; ];
}; };
#services.pantalaimon = {
#package = pkgs.pantalaimon.overridePythonAttrs { doCheck = false; };
#enable = true;
#settings = {
#Default = {
#LogLevel = "Debug";
#SSL = true;
#};
#local-matrix = {
#Homeserver = "https://synapse.room409.xyz";
#ListenAddress = "127.0.0.1";
#ListenPort = "8009";
#};
#};
#};
programs.iamb = { programs.iamb = {
enable = true; enable = true;
settings = { settings = {