Compare commits

..

66 Commits

Author SHA1 Message Date
fa5ae0baeb Merge branch 'main' of forge.room409.xyz:miloignis/nix_config 2025-12-15 21:36:52 -05:00
a8a6f3947c a 2025-12-15 21:36:50 -05:00
Nathan Braswell
5822fd6227 updates 2025-12-15 21:35:44 -05:00
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
f7d94aa6a8 Updates, iamb, narrower borders 2025-10-22 20:37:37 -04:00
f6040886f1 Merge branch 'main' of https://forge.room409.xyz/miloignis/nix_config 2025-10-14 15:19:35 -04:00
278d4d187c fixup 2025-10-14 15:19:25 -04:00
2c77f45b7e lfs on 2025-10-02 17:46:19 -04:00
af871ac2dd allow git pushes of larger files 2025-09-27 23:47:21 -04:00
b054c78122 Transparency off for main window 2025-09-27 23:43:37 -04:00
abb8bebbd1 GitS setup, will eventually turn the transparency off 2025-09-27 16:12:21 -04:00
90f182b49f update laptop, fix integration of home.nix 2025-09-23 17:57:08 -04:00
33a93dfea6 Ok, resigned that we need home-manager and system-manager seperate. Working niri 2025-08-28 15:26:40 -04:00
b179698e71 Merge branch 'move-home-manager' 2025-08-27 13:04:59 -04:00
5d39b69d44 Move home-manager configuration to seperate file 2025-08-27 13:04:38 -04:00
030e60a1a5 Updated laptop 2025-08-19 21:37:34 -04:00
0a693000cf server upgrade finally working with extra dns address on headscale 2025-08-10 20:23:38 -04:00
b230226f29 Current 2025-06-22 17:50:22 -04:00
881ec81c5e new background 2025-06-21 16:03:08 -04:00
8f55ba1755 it 2025-04-11 23:32:37 -04:00
9407447ad5 tor 2025-04-06 16:02:48 -04:00
ab58016299 Merge branch 'main' of https://forge.room409.xyz/miloignis/nix_config 2025-03-05 15:02:53 -05:00
888f60c175 updated lock, removed waybar patch because it seems to have been fixed now 2025-03-01 04:14:48 -05:00
db7a5f0bf9 Merge branch 'main' of forge.room409.xyz:miloignis/nix_config 2025-02-21 14:26:12 -05:00
0c08e95cfc add pratik 2025-02-21 14:26:00 -05:00
b23bfb90eb stylix on master again 2025-02-05 23:34:23 -05:00
c812dfc45d add low minimum-contrast for ghostty 2025-01-27 19:28:33 -05:00
2e4dee74aa working up-to-date config with rolled-back stylix 2025-01-27 19:19:37 -05:00
fa901820da whoops batou_jf isn't a legal subdomain, made it batou-jf 2025-01-18 00:21:04 -05:00
00bf6bb8db decent framework setup, add batou_jf 2025-01-18 00:06:35 -05:00
509fd6e8a6 Using the amazing Stylix to set colors automatically based on background and Recursive font everywhere! Also, fuzzel 2025-01-14 20:01:38 -05:00
946adc522d basic waybar and nice niri 2025-01-14 18:51:10 -05:00
b5ab6a2845 Merge branch 'main' of https://forge.room409.xyz/miloignis/nix_config 2025-01-13 02:11:16 -05:00
923d4e9b40 Trying out Niri, porting config to home-manager 2025-01-13 02:11:04 -05:00
d6ec2908ab Merge branch 'main' of forge.room409.xyz:miloignis/nix_config 2025-01-12 17:33:29 -05:00
c0ceffc557 ip forwarding enable for wireguard exit 2025-01-12 17:33:27 -05:00
12e00be90c updates 2025-01-12 17:32:33 -05:00
606855aedd Merge branch 'main' of https://forge.room409.xyz/miloignis/nix_config 2024-08-21 00:42:21 -04:00
1eb58fae21 add wayfarer 2024-08-21 00:42:07 -04:00
9acd1e0f48 merge 2024-07-26 13:24:36 -04:00
4bc99c40d3 upgrade trying to get that sshd fix, I don't think I did... 2024-07-02 00:30:32 -04:00
d7b6e6b944 Post media moved to 4800h, postgresql upgrade 2024-07-02 00:25:02 -04:00
8189ea60fc updates 2024-04-02 11:19:17 -04:00
e8428e0487 Merge branch 'main' of https://forge.room409.xyz/miloignis/nix_config 2023-12-28 20:50:39 -05:00
c37126a731 headset tests 2023-12-28 20:49:04 -05:00
a7029d0f46 Merge branch 'main' of forge.room409.xyz:miloignis/nix_config 2023-12-18 00:45:05 -05:00
85050715fc add marcus 2023-12-18 00:45:02 -05:00
41b9279bc9 Updates, running jellyfin with fuse 2023-12-18 00:44:23 -05:00
ea04829c71 better size 2023-11-11 16:46:01 -05:00
bcc9a7bf6e lotusronin website 2023-11-11 16:40:09 -05:00
d66a6f9895 Working framework config post bios 2023-11-06 13:03:42 -05:00
4b2685f7e1 inital framework 2023-10-18 18:08:08 -04:00
275b054746 Setup Sliding-Sync V3! Element X does seem to be a bit early, but still nice 2023-10-13 00:11:52 -04:00
90113aa08e Merge branch 'main' of forge.room409.xyz:miloignis/nix_config 2023-09-26 20:11:40 -04:00
96a283f505 format old windows partition and mount by default. Gonna use it for Cyberpunk2.0/PhantomLiberty 2023-09-26 20:11:37 -04:00
d5ac189e66 fix most warnings 2023-09-26 15:16:42 -04:00
233f3341bf add waypipe 2023-09-17 18:04:22 -04:00
22 changed files with 1948 additions and 265 deletions

BIN
130_1zhJtUA.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

BIN
GitS_alley_to_water.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

BIN
GitS_other_alley_zoom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

495
flake.lock generated
View File

@@ -1,5 +1,183 @@
{ {
"nodes": { "nodes": {
"awww": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1764379284,
"narHash": "sha256-nNdyU94gWdwMphROshWPueeUi/s7Yq463WZl4/yk0Tk=",
"ref": "refs/heads/main",
"rev": "0b1bb7fe02bc0668c71b969452ea852e2f25e0fa",
"revCount": 1319,
"type": "git",
"url": "https://codeberg.org/LGFae/awww"
},
"original": {
"type": "git",
"url": "https://codeberg.org/LGFae/awww"
}
},
"base16": {
"inputs": {
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1755819240,
"narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"type": "github"
}
},
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1754405784,
"narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1752979451,
"narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-helix",
"type": "github"
}
},
"base16-vim": {
"flake": false,
"locked": {
"lastModified": 1732806396,
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1758112371,
"narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
"type": "github"
},
"original": {
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1756770412,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
"lastModified": 1731966426,
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "fromYaml",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
"host": "gitlab.gnome.org",
"lastModified": 1762869044,
"narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad",
"type": "gitlab"
},
"original": {
"host": "gitlab.gnome.org",
"owner": "GNOME",
"ref": "gnome-49",
"repo": "gnome-shell",
"type": "gitlab"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -7,11 +185,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1694643239, "lastModified": 1763416652,
"narHash": "sha256-pv2k/5FvyirDE8g4TNehzwZ0T4UOMMmqWSQnM/luRtE=", "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "d9b88b43524db1591fb3d9410a21428198d75d49", "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -20,13 +198,87 @@
"type": "github" "type": "github"
} }
}, },
"niri": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1763581369,
"narHash": "sha256-HTLoe4UvnG5fWruO+zjnZJNCnKcbVM8eeSPpIlKHOyI=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "ca75677ad47613f6afbbc2c6142601fef0ac7631",
"type": "github"
},
"original": {
"owner": "sodiboo",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1756556321,
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v25.08",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1763574558,
"narHash": "sha256-PdXkgqtbVFdZNhmTrZLTDMGb4zzaSK2RnKUXM8bIDo4=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "6fcdb9242e65ed5825e7fda2a7935b412588b63a",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1762847253,
"narHash": "sha256-BWWnUUT01lPwCWUvS0p6Px5UOBFeXJ8jR+ZdLX8IbrU=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "899dc449bc6428b9ee6b3b8f771ca2b0ef945ab9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1694767346, "lastModified": 1763421233,
"narHash": "sha256-5uH27SiVFUwsTsqC5rs3kS7pBoNhtoy9QfTP9BmknGk=", "narHash": "sha256-Stk9ZYRkGrnnpyJ4eqt9eQtdFWRRIvMxpNRf4sIegnw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ace5093e36ab1e95cb9463863491bee90d5a4183", "rev": "89c2b2330e733d6cdb5eae7b899326930c2c0648",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -35,10 +287,239 @@
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs-stable": {
"locked": {
"lastModified": 1763334038,
"narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": [
"stylix",
"flake-parts"
],
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1758998580,
"narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
"owner": "nix-community",
"repo": "NUR",
"rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"awww": "awww",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs" "niri": "niri",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"stylix": "stylix"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"awww",
"nixpkgs"
]
},
"locked": {
"lastModified": 1764038373,
"narHash": "sha256-M6w2wNBRelcavoDAyFL2iO4NeWknD40ASkH1S3C0YGM=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "ab3536fe850211a96673c6ffb2cb88aab8071cc9",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"stylix": {
"inputs": {
"base16": "base16",
"base16-fish": "base16-fish",
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur",
"systems": "systems",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1763590746,
"narHash": "sha256-bsEu7Ohdo2OEudXdQzk+jc9fiO0rNMGaH+Wee7FXxNc=",
"owner": "danth",
"repo": "stylix",
"rev": "3013f98e28e52b3bd3859b0c454554aae54d5060",
"type": "github"
},
"original": {
"owner": "danth",
"repo": "stylix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
"lastModified": 1735730497,
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-kitty",
"type": "github"
}
},
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1757716333,
"narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "schemes",
"type": "github"
}
},
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1757811970,
"narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-tmux",
"type": "github"
}
},
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1757811247,
"narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-zed",
"type": "github"
}
},
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1755491097,
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.7",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1762747449,
"narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "6338574bc5c036487486acde264f38f39ea15fad",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
} }
} }
}, },

47
flake.lock_bac Normal file
View File

@@ -0,0 +1,47 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1697662575,
"narHash": "sha256-fVtd4Le9edB831xyGWu0aqSfg6YVbkCNMX/IE3SUIdk=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3433206e51766b4164dad368a81325efbf343fbe",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1697456312,
"narHash": "sha256-roiSnrqb5r+ehnKCauPLugoU8S36KgmWraHgRqVYndo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ca012a02bf8327be9e488546faecae5e05d7d749",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

719
flake.nix
View File

@@ -3,226 +3,61 @@
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs.url = "nixpkgs/nixos-unstable";
stylix = {
url = "github:danth/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
awww = {
url = "git+https://codeberg.org/LGFae/awww";
inputs.nixpkgs.follows = "nixpkgs";
};
niri = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
}; };
outputs = { self, nixpkgs, home-manager }@attrs: outputs = { self, nixpkgs, stylix, awww, niri, home-manager, nixos-hardware }@attrs:
let let
system = "x86_64-linux"; system = "x86_64-linux";
make_besley = pkgs:(lib: (pkgs.stdenvNoCC.mkDerivation rec {
pname = "besley";
version = "4.0";
src = pkgs.fetchFromGitHub {
owner = "indestructible-type";
repo = "Besley";
rev = "99d5b97fcb863c4a667571ac8f86f745c345d3ab";
sha256 = "sha256-N6QU3Pd6EnIrdbRtDT3mW5ny683DBWo0odADJBSdA2E=";
};
installPhase = ''
install -D -t $out/share/fonts/opentype/ $(find $src -type f -name '*.otf')
install -D -t $out/share/fonts/truetype/ $(find $src -type f -name '*.ttf')
'';
meta = with lib; {
homepage = "https://indestructibletype.com/Besley.html";
description = "by indestructable-type";
license = licenses.ofl;
maintainers = [ ];
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 = { config, pkgs, lib, ... }:{ home-manager.users.nathan = ((import ./home-manager/home.nix) { username = "nathan"; homeDirectory = "/home/nathan"; backgroundImg = background; email = "miloignis@gmail.com"; });
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "22.11";
fonts.fontconfig.enable = true;
home.packages = with pkgs; [ fira-code jetbrains-mono iosevka monoid recursive ];
systemd.user.services.mpris-proxy = {
Unit.Description = "Mpris proxy";
Unit.After = [ "network.target" "sound.target" ];
Service.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
Install.WantedBy = [ "default.target" ];
};
programs.foot = {
enable = true;
settings = {
main = {
#font = "Fira Code:size=8";
#font = "JetBrainsMono:size=8";
#font = "Iosevka:size=8";
#font = "Monoid:size=6";
font = "Recursive:size=8";
#dpi-aware = "yes";
};
mouse = {
hide-when-typing = "yes";
};
};
};
programs.starship = {
enable = true;
enableBashIntegration = true;
settings = {
add_newline = false;
format = lib.concatStrings [
"$username"
"$hostname"
"$directory"
"$jobs"
"$cmd_duration"
"$character"
];
directory = {
truncation_length = 10;
truncate_to_repo = false;
};
scan_timeout = 10;
character = {
success_symbol = "";
error_symbol = "";
};
};
};
programs.bash = {
enable = true;
sessionVariables = {
};
profileExtra = ''
if [ -e /home/nathan/.nix-profile/etc/profile.d/nix.sh ]; then . /home/nathan/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
'';
};
programs.git = {
enable = true;
userName = "Nathan Braswell";
userEmail = "nathan@braswell.email";
};
programs.vim = {
enable = true;
plugins = with pkgs.vimPlugins; [
nerdcommenter vim-polyglot #parinfer-rust
];
settings = {
# Is the need for these obliviated by vim-polyglot using sleuth?
#expandtab = false;
tabstop = 4;
shiftwidth = 4;
};
extraConfig = ''
set number
set hlsearch
nnoremap <leader>m :bn<CR>
nnoremap <leader>t :tabnew<CR>
nnoremap <leader>. :tabn<CR>
nnoremap <leader>, :tabp<CR>
nnoremap <leader>v :vsplit<CR>
nnoremap <leader>h :split<CR>
nnoremap <leader>q :q<CR>
inoremap jk <Esc>
inoremap kj <Esc>
" Thanks to https://unix.stackexchange.com/questions/140898/vim-hide-status-line-in-the-bottom
let s:hidden_all = 0
function! ToggleHiddenAll()
if s:hidden_all == 0
let s:hidden_all = 1
set noshowmode
set noruler
set laststatus=0
set noshowcmd
else
let s:hidden_all = 0
set showmode
set ruler
set laststatus=2
set showcmd
endif
endfunction
nnoremap <S-h> :call ToggleHiddenAll()<CR>
'';
};
programs.tmux = {
enable = true;
extraConfig = ''
#$Id: vim-keys.conf,v 1.2 2010-09-18 09:36:15 nicm Exp $
#
# vim-keys.conf, v1.2 2010/09/12
#
# By Daniel Thau. Public domain.
#
# This configuration file binds many vi- and vim-like bindings to the
# appropriate tmux key bindings. Note that for many key bindings there is no
# tmux analogue. This is intended for tmux 1.3, which handles pane selection
# differently from the previous versions
# split windows like vim
# vim's definition of a horizontal/vertical split is reversed from tmux's
bind s split-window -v
bind v split-window -h
# move around panes with hjkl, as one would in vim after pressing ctrl-w
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# resize panes like vim
# feel free to change the "1" to however many lines you want to resize by, only
# one at a time can be slow
bind < resize-pane -L 1
bind > resize-pane -R 1
bind - resize-pane -D 1
bind + resize-pane -U 1
# bind : to command-prompt like vim
# this is the default in tmux already
bind : command-prompt
# vi-style controls for copy mode
setw -g mode-keys vi
'';
};
programs.emacs = {
enable = true;
extraConfig = ''
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
;; Use spaces, not tabs, for indentation.
(setq-default indent-tabs-mode nil)
;; Highlight matching pairs of parentheses.
(setq show-paren-delay 0)
(show-paren-mode)
;(require 'smartparens-config)
(setq evil-want-C-u-scroll t)
(evil-mode 1)
(evil-set-undo-system 'undo-redo)
(setq key-chord-two-keys-delay 0.5)
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state)
(key-chord-mode 1)
(custom-set-variables
;; custom-set-variables 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.
'(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; [
evil key-chord magit proof-general
#paredit
#smartparens
#parinfer-rust-mode
rainbow-delimiters dracula-theme
];
};
};
}; };
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";
@@ -248,7 +83,7 @@
enable = true; enable = true;
wlr.enable = true; wlr.enable = true;
extraPortals = [pkgs.xdg-desktop-portal-gtk ]; extraPortals = [pkgs.xdg-desktop-portal-gtk ];
gtkUsePortal = true; #gtkUsePortal = true;
}; };
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
@@ -257,13 +92,44 @@
services.printing.enable = true; services.printing.enable = true;
services.printing.drivers = [ pkgs.brlaser ]; services.printing.drivers = [ pkgs.brlaser ];
stylix = {
enable = true;
#image = /home/nathan/Wallpapers/walls/green-tea.jpg;
#image = ./cherry_tree.jpg;
#image = ./skyscraper.jpg;
#image = ./village.jpg;
#image = ./stones-water.jpg;
#image = ./moss.jpeg;
#image = ./ruinedmansion.jpg;
#image = ./130_1zhJtUA.jpeg; #the city street
#image = ./GitS_alley_to_water_zoom.png;
image = background;
#image = pkgs.fetchurl {
# url = "https://raw.githubusercontent.com/kiedtl/walls/refs/heads/master/green-tea.jpg";
# sha256 = "sha256-+NcZMBnbEWurmkOkzdrxGwBlxzUO3Sitt6Uoq9plc7o=";
#};
polarity = "dark";
#polarity = "light";
fonts = {
serif = { package = (make_besley pkgs lib); name = "Besley"; };
#sansSerif = { package = pkgs.recursive; name = "Recursive Sans Linear Static"; };
sansSerif = { package = pkgs.inter; name = "Inter"; };
monospace = { package = pkgs.recursive; name = "Recursive Mono Linear Static"; };
#monospace = { package = pkgs.maple-mono.truetype; name = "Maple Mono"; };
emoji = { package = pkgs.noto-fonts-color-emoji; name = "Noto Color Emoji"; };
};
};
programs.niri = {
enable = true;
package = pkgs.niri;
};
programs.sway = { programs.sway = {
enable = true; enable = true;
wrapperFeatures.gtk = true; wrapperFeatures.gtk = true;
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
@@ -278,16 +144,22 @@
}; };
}; };
# 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;
programs.steam.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
tmux vim wget curl git w3m iftop iotop killall file unzip zip ripgrep imv killall gomuks htop python3 awww.packages.${pkgs.stdenv.hostPlatform.system}.awww
firefox-wayland chromium gnome.nautilus tmux vim wget curl git w3m iftop iotop killall file unzip zip p7zip ripgrep imv killall
vlc steam libreoffice calibre foliate transmission-gtk mupdf btop htop python3
waypipe firefox chromium chawan cmatrix nautilus
vlc mpv wayfarer libreoffice calibre foliate epr #transmission-gtk mupdf
gimp gimp
pavucontrol pywal pavucontrol pywal
sway wayland glib dracula-theme gnome.adwaita-icon-theme swaylock swayidle wl-clipboard sway wayland glib dracula-theme adwaita-icon-theme swaylock swayidle wl-clipboard
circumflex
#monado openxr-loader xrgears
#lean4 blas elan vscode
(pkgs.writeTextFile { (pkgs.writeTextFile {
name = "dbus-sway-environment"; name = "dbus-sway-environment";
destination = "/bin/dbus-sway-environment"; destination = "/bin/dbus-sway-environment";
@@ -319,7 +191,6 @@
''; '';
}) })
] ++ specificPkgs; ] ++ specificPkgs;
programs.waybar.enable = true;
# kanshi systemd service # kanshi systemd service
systemd.user.services.kanshi = { systemd.user.services.kanshi = {
@@ -341,10 +212,77 @@
networking.firewall.enable = false; networking.firewall.enable = false;
})); }));
in { in {
nixosConfigurations.nixos-framework = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = attrs;
modules = [
nixos-hardware.nixosModules.framework-13-7040-amd
stylix.nixosModules.stylix
niri.nixosModules.niri
home-manager.nixosModules.home-manager
homeManagerSharedModule
({ config, lib, pkgs, modulesPath, ... }@innerArgs: (lib.recursiveUpdate (commonConfigFunc innerArgs [ pkgs.light pkgs.gpodder pkgs.evince pkgs.wezterm pkgs.vulkan-tools pkgs.tor-browser ]) {
# HARDWARE
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "amdgpu" ];
#hardware.opengl.extraPackages = with pkgs; [ amdvlk ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/427e2f6d-d42d-4d49-be35-713bf9526dc9";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/2A78-5373";
fsType = "vfat";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/9b0357e8-f721-4a06-aae0-97b6efc19209"; }
];
# 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.enp195s0f3u1c2.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# END HARDWARE
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
#boot.kernelPackages = pkgs.linuxPackages_testing;
#boot.kernelParams = [ "amdgpu.sg_display=0" ];
networking.hostName = "nixos-framework"; # Define your hostname.
system.stateVersion = "22.11"; # Did you read the comment?
programs.fuse.userAllowOther = true;
#services.jellyfin.enable = true;
services.fwupd.enable = true;
#services.xserver = {
# enable = true;
# displayManager.gdm.enable = true;
# desktopManager.gnome.enable = true;
#};
networking.firewall = {
allowedTCPPorts = [ 8080 8081 ]; #30000 is minetest
allowedUDPPorts = [ 8080 8081 ];
};
}))
];
};
nixosConfigurations.nixos4800H = nixpkgs.lib.nixosSystem { nixosConfigurations.nixos4800H = nixpkgs.lib.nixosSystem {
inherit system; inherit system;
specialArgs = attrs; specialArgs = attrs;
modules = [ modules = [
stylix.nixosModules.stylix
niri.nixosModules.niri
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
homeManagerSharedModule homeManagerSharedModule
({ config, lib, pkgs, modulesPath, ... }@innerArgs: (lib.recursiveUpdate (commonConfigFunc innerArgs [ pkgs.light pkgs.gpodder pkgs.evince ]) { ({ config, lib, pkgs, modulesPath, ... }@innerArgs: (lib.recursiveUpdate (commonConfigFunc innerArgs [ pkgs.light pkgs.gpodder pkgs.evince ]) {
@@ -352,21 +290,27 @@
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_usb_sdmmc" ]; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_usb_sdmmc" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ "amdgpu" ];
hardware.opengl.extraPackages = with pkgs; [ amdvlk ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = { device = "/dev/disk/by-uuid/ae8e4a92-53dd-49b5-bf3a-aeb9a109c01e"; fsType = "ext4"; }; fileSystems."/" = { device = "/dev/disk/by-uuid/ae8e4a92-53dd-49b5-bf3a-aeb9a109c01e"; fsType = "ext4"; };
fileSystems."/boot" = { device = "/dev/disk/by-uuid/28E9-0409"; fsType = "vfat"; }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/28E9-0409"; fsType = "vfat"; };
fileSystems."/nas_disk1" = { device = "/dev/disk/by-uuid/d7907ed2-2aff-4cfc-bb4d-fa46b3f1af57"; fsType = "ext4"; };
swapDevices = [ ]; swapDevices = [ ];
nix.maxJobs = lib.mkDefault 16;
# END HARDWARE # END HARDWARE
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = 1;
networking.hostName = "nixos4800H"; # Define your hostname. networking.hostName = "nixos4800H"; # Define your hostname.
programs.fuse.userAllowOther = true;
services.jellyfin.enable = true;
# THIS SEEMS CONTRADICTORY # THIS SEEMS CONTRADICTORY
# The global useDHCP flag is deprecated, therefore explicitly set to false here. # The global useDHCP flag is deprecated, therefore explicitly set to false here.
# Per-interface useDHCP will be mandatory in the future, so this generated config # Per-interface useDHCP will be mandatory in the future, so this generated config
@@ -375,6 +319,27 @@
networking.interfaces.eno1.useDHCP = true; networking.interfaces.eno1.useDHCP = true;
networking.interfaces.wlp1s0.useDHCP = true; networking.interfaces.wlp1s0.useDHCP = true;
system.stateVersion = "20.03"; system.stateVersion = "20.03";
users.extraUsers.marcus = {
name = "marcus";
isNormalUser = true;
group = "users";
extraGroups = [ "wheel" "disk" "audio" "video" "networkmanager" "systemd-journal" "networkmanager" "sway" "plugdev" "adbusers"];
createHome = true;
home = "/home/marcus";
shell = "/run/current-system/sw/bin/bash";
};
users.extraUsers.pratik = {
name = "pratik";
isNormalUser = true;
group = "users";
extraGroups = [ "wheel" "disk" "audio" "video" "networkmanager" "systemd-journal" "networkmanager" "plugdev"];
createHome = true;
home = "/home/pratik";
shell = "/run/current-system/sw/bin/bash";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKmLFCW0HGGJzTO42/ZuWFmDY80ZpV8e8qEc3CEBclF8 pratik@elmerus.fedora"
];
};
})) }))
]; ];
}; };
@@ -382,6 +347,7 @@
inherit system; inherit system;
specialArgs = attrs; specialArgs = attrs;
modules = [ modules = [
niri.nixosModules.niri
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
homeManagerSharedModule homeManagerSharedModule
({ config, lib, pkgs, modulesPath, ... }@innerArgs: (lib.recursiveUpdate (commonConfigFunc innerArgs []) { ({ config, lib, pkgs, modulesPath, ... }@innerArgs: (lib.recursiveUpdate (commonConfigFunc innerArgs []) {
@@ -394,6 +360,7 @@
boot.supportedFilesystems = [ "ntfs" ]; boot.supportedFilesystems = [ "ntfs" ];
fileSystems."/" = { device = "/dev/disk/by-uuid/163c1731-2f66-436b-a74f-20f84ec628dd"; fsType = "ext4"; }; fileSystems."/" = { device = "/dev/disk/by-uuid/163c1731-2f66-436b-a74f-20f84ec628dd"; fsType = "ext4"; };
fileSystems."/boot" = { device = "/dev/disk/by-uuid/9C44-5411"; fsType = "vfat"; }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/9C44-5411"; fsType = "vfat"; };
fileSystems."/reborn" = { device = "/dev/disk/by-label/reborn"; fsType = "ext4"; };
#fileSystems."/big_disk" = { device = "/dev/disk/by-uuid/B610D69310D65A47"; fsType = "ntfs3"; options = ["rw" "uid=1000"]; }; #fileSystems."/big_disk" = { device = "/dev/disk/by-uuid/B610D69310D65A47"; fsType = "ntfs3"; options = ["rw" "uid=1000"]; };
#fileSystems."/big_disk" = { device = "/dev/sdb1"; fsType = "ntfs3"; options = ["rw" "uid=1000"]; }; #fileSystems."/big_disk" = { device = "/dev/sdb1"; fsType = "ntfs3"; options = ["rw" "uid=1000"]; };
swapDevices = [ ]; swapDevices = [ ];
@@ -407,7 +374,7 @@
networking.hostName = "nixos-desktop"; # Define your hostname. networking.hostName = "nixos-desktop"; # Define your hostname.
system.stateVersion = "22.11"; system.stateVersion = "22.11";
services.jellyfin.enable = true; #services.jellyfin.enable = true;
})) }))
]; ];
}; };
@@ -415,6 +382,7 @@
inherit system; inherit system;
specialArgs = attrs; specialArgs = attrs;
modules = [ modules = [
niri.nixosModules.niri
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
homeManagerSharedModule homeManagerSharedModule
({ config, lib, pkgs, modulesPath, ... }@innerArgs: (lib.recursiveUpdate (commonConfigFunc innerArgs []) { ({ config, lib, pkgs, modulesPath, ... }@innerArgs: (lib.recursiveUpdate (commonConfigFunc innerArgs []) {
@@ -428,8 +396,6 @@
swapDevices = [ { device = "/dev/disk/by-uuid/20cc65f9-f35e-419a-b00f-252cd576b2ce"; } ]; swapDevices = [ { device = "/dev/disk/by-uuid/20cc65f9-f35e-419a-b00f-252cd576b2ce"; } ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# high-resolution display
hardware.video.hidpi.enable = lib.mkDefault true;
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
@@ -439,6 +405,7 @@
services.glusterfs.enable = true; services.glusterfs.enable = true;
networking.hostName = "condoserver"; # Define your hostname. networking.hostName = "condoserver"; # Define your hostname.
system.stateVersion = "22.11"; # Did you read the comment? system.stateVersion = "22.11"; # Did you read the comment?
})) }))
]; ];
@@ -456,9 +423,24 @@
{ device = "/dev/disk/by-uuid/b9470789-6d82-4ad4-9a4a-7e19b8fcc8dc"; { device = "/dev/disk/by-uuid/b9470789-6d82-4ad4-9a4a-7e19b8fcc8dc";
fsType = "ext4"; fsType = "ext4";
}; };
nix.maxJobs = lib.mkDefault 1;
# END HARDWARE # END HARDWARE
fileSystems."/var/lib/matrix-synapse/media" = {
device = "nathan@100.64.0.1:/home/nathan/synapse_media/media/";
fsType = "sshfs";
options = [
# Filesystem Options
"allow_other" # non-root access
"_netdev" # this is a network fs
"x-systemd.automount" # mount on demand
# SSH options
"reconnect" # handle connection drops
"ServerAliveInterval=15" # Keep connections alive
"IdentityFile=/var/lib/private/sshfs-key"
];
};
nix.gc.automatic = true; nix.gc.automatic = true;
imports = [ ]; imports = [ ];
@@ -490,7 +472,6 @@
# Use the GRUB 2 boot loader. # Use the GRUB 2 boot loader.
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
swapDevices = [{ swapDevices = [{
@@ -507,8 +488,8 @@
networking.firewall = { networking.firewall = {
#allowedTCPPorts = [ 22 80 443 3478 3479 ]; #allowedTCPPorts = [ 22 80 443 3478 3479 ];
#allowedUDPPorts = [ 22 80 443 5349 5350 51820 ]; #allowedUDPPorts = [ 22 80 443 5349 5350 51820 ];
allowedTCPPorts = [ 22 80 443 ]; allowedTCPPorts = [ 22 80 443 8789 30000 ]; #30000 is minetest
allowedUDPPorts = [ 22 80 443 51820 ]; allowedUDPPorts = [ 22 80 443 8789 51820 30000 ];
#extraCommands = '' #extraCommands = ''
# iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#''; #'';
@@ -548,17 +529,19 @@
#}; #};
services.openssh.enable = true; services.openssh.enable = true;
services.openssh.passwordAuthentication = false; services.openssh.settings = {
services.openssh.kbdInteractiveAuthentication = false; PasswordAuthentication = false;
services.openssh.permitRootLogin = "prohibit-password"; KbdInteractiveAuthentication = false;
PermitRootLogin = "prohibit-password";
services.mastodon = {
enable = true;
localDomain = "mastodon.room409.xyz";
configureNginx = true;
smtp.fromAddress = "notifications@mastodon.room409.xyz";
}; };
#services.mastodon = {
# enable = true;
# localDomain = "mastodon.room409.xyz";
# configureNginx = true;
# smtp.fromAddress = "notifications@mastodon.room409.xyz";
#};
services.mautrix-telegram = { services.mautrix-telegram = {
enable = true; enable = true;
settings = { settings = {
@@ -583,6 +566,12 @@
# port = 8888; # port = 8888;
#}; #};
# for password resets run (with appropriate paths)
# ./k8ngn95hsi9qrdkvr734slj9fx3j3lbb-matrix-synapse-1.128.0/bin/hash_password -c /nix/store/ql794v5ilmxa619ha83ya61pk12066dh-homeserver.yaml
# and then use `psql -d matrix-synapse -U matrix-synapse -h localhost`
# with the password 'synapse'
# and do
# UPDATE users SET password_hash='$2b$12$ED4NT7N6tI4Mbq/IKZES6.oilx0k2iK4DN3a6wPWIEpXSAsIOWe3e' WHERE name='<MATRIX_USERNAME>';
services.matrix-synapse = { services.matrix-synapse = {
enable = true; enable = true;
@@ -611,7 +600,7 @@
} }
]; ];
app_service_config_files = [ app_service_config_files = [
"/var/lib/matrix-synapse/telegram-registration.yaml" #"/var/lib/matrix-synapse/telegram-registration.yaml"
"/var/lib/matrix-synapse/facebook-registration.yaml" "/var/lib/matrix-synapse/facebook-registration.yaml"
]; ];
}; };
@@ -619,11 +608,13 @@
services.gitea = { services.gitea = {
enable = true; enable = true;
disableRegistration = true; settings.service.DISABLE_REGISTRATION = true;
appName = "Room409.xyz Forge"; appName = "Room409.xyz Forge";
domain = "forge.room409.xyz"; settings.server = {
rootUrl = "https://forge.room409.xyz/"; DOMAIN = "forge.room409.xyz";
httpPort = 3001; ROOT_URL = "https://forge.room409.xyz/";
HTTP_PORT = 3001;
};
}; };
#systemd.services.lemmy.environment.RUST_BACKTRACE = "full"; #systemd.services.lemmy.environment.RUST_BACKTRACE = "full";
@@ -638,6 +629,7 @@
#}; #};
services.postgresql = { services.postgresql = {
package = pkgs.postgresql_16;
enable = true; enable = true;
# postgresql user and db name in the service.matrix-synapse.databse_args setting is default # postgresql user and db name in the service.matrix-synapse.databse_args setting is default
initialScript = pkgs.writeText "synapse-init.sql" '' initialScript = pkgs.writeText "synapse-init.sql" ''
@@ -653,21 +645,25 @@
enable = true; enable = true;
address = "0.0.0.0"; address = "0.0.0.0";
port = 8789; port = 8789;
serverUrl = "https://headscale.room409.xyz"; settings.serverUrl = "https://headscale.room409.xyz";
dns.baseDomain = "wg.test"; settings.dns.base_domain = "wg.test";
settings.dns.nameservers.global = ["8.8.8.8"];
settings.logtail.enabled = false; settings.logtail.enabled = false;
}; };
services.ttyd = { services.ttyd = {
enable = true; enable = true;
port = 9134; port = 9134;
writeable = true;
username = "miloignis"; username = "miloignis";
passwordFile = /var/lib/ttyd/secrets; passwordFile = /var/lib/ttyd/secrets;
clientOptions.fontFamily="Recursive"; #clientOptions.fontFamily="Recursive";
}; };
security.acme.email = "miloignis@gmail.com"; security.acme = {
security.acme.acceptTerms = true; acceptTerms = true;
defaults.email = "miloignis@gmail.com";
};
services.nginx = { services.nginx = {
enable = true; enable = true;
recommendedGzipSettings = true; recommendedGzipSettings = true;
@@ -694,6 +690,9 @@
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
locations."/".proxyPass = "http://localhost:3001"; locations."/".proxyPass = "http://localhost:3001";
locations."/".extraConfig = ''
client_max_body_size 100M;
'';
}; };
virtualHosts."synapse.room409.xyz" = { virtualHosts."synapse.room409.xyz" = {
@@ -706,7 +705,7 @@
locations."/.well-known/matrix/client".extraConfig = '' locations."/.well-known/matrix/client".extraConfig = ''
add_header Content-Type application/json; add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Origin *;
return 200 '{ "m.homeserver": {"base_url": "https://synapse.room409.xyz"}, "m.identity_server": { "base_url": "https://vector.im"} }'; return 200 '{ "m.homeserver": {"base_url": "https://synapse.room409.xyz"}, "org.matrix.msc3575.proxy": { "url": "https://syncv3.room409.xyz" }, "m.identity_server": { "base_url": "https://vector.im"} }';
''; '';
locations."/".proxyPass = "http://localhost:8008"; locations."/".proxyPass = "http://localhost:8008";
locations."/".extraConfig = '' locations."/".extraConfig = ''
@@ -747,17 +746,17 @@
proxyWebsockets = true; proxyWebsockets = true;
}; };
}; };
virtualHosts."drop.room409.xyz" = { #virtualHosts."drop.room409.xyz" = {
forceSSL = true; #forceSSL = true;
enableACME = true; #enableACME = true;
locations."/" = { #locations."/" = {
proxyPass = "http://localhost:9009"; #proxyPass = "http://localhost:9009";
proxyWebsockets = true; #proxyWebsockets = true;
extraConfig = '' #extraConfig = ''
client_max_body_size 500M; #client_max_body_size 500M;
''; #'';
}; #};
}; #};
#virtualHosts."www.kraken-lang.org" = { #virtualHosts."www.kraken-lang.org" = {
# forceSSL = true; # forceSSL = true;
# enableACME = true; # enableACME = true;
@@ -799,6 +798,53 @@
#locations."/bookclub/".proxyPass = "http://localhost:8888/room/!xSMgeFJYbuYTOGAGga:synapse.room409.xyz/"; #locations."/bookclub/".proxyPass = "http://localhost:8888/room/!xSMgeFJYbuYTOGAGga:synapse.room409.xyz/";
}; };
virtualHosts."lotusronin.room409.xyz" = {
forceSSL = true;
enableACME = true;
locations."/" = {
root = pkgs.writeTextDir "index.html" ''<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>LotusRonin's Website</title>
<style>
h1, h2 ,h3 { line-height:1.2; }
.bodyStuff {
max-width: 45em;
margin: 1em auto;
padding: 0 .62em;
font: 1.2em/1.62 sans-serif;
}
.floatLeft {
float: left;
max-width: 55em;
margin: 1em auto;
padding: 0 .62em;
font: 1.2em/1.62 sans-serif;
}
</style>
</head>
<body>
<div class="bodyStuff">
<header><h1>Main Page</h1></header>
<br> <br>
Take control of your tools, break from the system. Less is more.
</div>
<div class="floatLeft">
<ol>
<li><a href="">📜 Blog</a></li>
<li><a href="">👨💻 Code</a></li>
<li><a href="">🕹 Games</a></li>
<li><a href="">(.)(.) MLKRs.shop signup</a></li>
<li><a href="">📄 Resume/About Me</a></li>
</ol>
</div>
</body>
</html>
'';
};
};
virtualHosts."miloignis.room409.xyz" = { virtualHosts."miloignis.room409.xyz" = {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
@@ -867,12 +913,142 @@
''; '';
}; };
}; };
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" = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://100.64.0.1:8090";
};
#virtualHosts."4800H.room409.xyz" = { #virtualHosts."4800H.room409.xyz" = {
# forceSSL = true; # forceSSL = true;
# enableACME = true; # enableACME = true;
# locations."/".proxyPass = "http://10.100.0.7:80"; # locations."/".proxyPass = "http://10.100.0.7:80";
#}; #};
virtualHosts."batou-jf.room409.xyz" = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://100.64.0.1:8096";
};
}; };
services.journald.extraConfig = "SystemMaxUse=50M"; services.journald.extraConfig = "SystemMaxUse=50M";
@@ -884,6 +1060,37 @@
config.services.headscale.package config.services.headscale.package
#wireguard #wireguard
droopy droopy
sshfs
# (let
# # XXX specify the postgresql package you'd like to upgrade to.
# # Do not forget to list the extensions you need.
# newPostgres = pkgs.postgresql_16.withPackages (pp: [
# # pp.plv8
# ]);
#in pkgs.writeScriptBin "upgrade-pg-cluster" ''
# set -eux
# # XXX it's perhaps advisable to stop all services that depend on postgresql
# systemctl stop postgresql
# export NEWDATA="/var/lib/postgresql/${newPostgres.psqlSchema}"
# export NEWBIN="${newPostgres}/bin"
# export OLDDATA="${config.services.postgresql.dataDir}"
# export OLDBIN="${config.services.postgresql.package}/bin"
# install -d -m 0700 -o postgres -g postgres "$NEWDATA"
# cd "$NEWDATA"
# sudo -u postgres $NEWBIN/initdb -D "$NEWDATA"
# sudo -u postgres $NEWBIN/pg_upgrade \
# --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \
# --old-bindir $OLDBIN --new-bindir $NEWBIN \
# "$@"
#'')
]; ];
users.extraUsers.nathan = { users.extraUsers.nathan = {
name = "nathan"; name = "nathan";

BIN
foggy-forest.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

156
home-manager/flake.lock generated Normal file
View File

@@ -0,0 +1,156 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1756261190,
"narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "77f348da3176dc68b20a73dab94852a417daf361",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"niri": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1756284022,
"narHash": "sha256-5q5rKE9Cbt1qDXtqgRr9FSeJrhS6apGatP3s9Oyejh8=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "a98afc5eb87093eec2f70c2e53e5faf919875025",
"type": "github"
},
"original": {
"owner": "sodiboo",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1748151941,
"narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v25.05.1",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1756275478,
"narHash": "sha256-BvPxbh+37rb5SHS5zFF6lis63B8BTuKDGRqMjbb9qBU=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "e038b8770a17b67cbf9c9d007a1f3a9ac0b53c60",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1756125398,
"narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1756217674,
"narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"niri": "niri",
"nixpkgs": "nixpkgs"
}
},
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1755491097,
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.7",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1756260173,
"narHash": "sha256-wcf04fl5ncbOqAK7OCWIgILERIbMfL/eeM3UThqgErI=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "af33f7eb124b51ff6d9cdf9b428643e2246c8cbb",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

39
home-manager/flake.nix Normal file
View File

@@ -0,0 +1,39 @@
{
description = "Home Manager configuration of nbraswell6";
inputs = {
# Specify the source of Home Manager and Nixpkgs.
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
niri = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ nixpkgs, niri, home-manager, ... }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in
{
homeConfigurations."nbraswell6" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
# Specify your home configuration modules here, for example,
# the path to your home.nix.
modules = [
((import ./home.nix) { username = "nbraswell6"; homeDirectory = "/home/nbraswell6"; backgroundImg = "/home/nbraswell6"; email = "nathan.braswell@gtri.gatech.edu"; })
#niri.nixosModules.niri
niri.homeModules.niri
];
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
};
};
}

585
home-manager/home.nix Normal file
View File

@@ -0,0 +1,585 @@
{ username, homeDirectory, backgroundImg, email }: ({ config, pkgs, lib, ... }:{
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "22.11";
home.username = username;
home.homeDirectory = homeDirectory;
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
fira-code jetbrains-mono iosevka monoid recursive inter
xwayland-satellite
swww
niri
];
systemd.user.services.mpris-proxy = {
Unit.Description = "Mpris proxy";
Unit.After = [ "network.target" "sound.target" ];
Service.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
Install.WantedBy = [ "default.target" ];
};
programs.fuzzel.enable = true;
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 18;
modules-left = [ "memory" "disk" "network" ];
modules-center = [ "clock" ];
modules-right = [ "battery" "power-profiles-daemon" "backlight" "pulseaudio" ];
reload_style_on_change = true;
};
};
style = ''
/*
* {
border: none;
border-radius: 0;
font-family: Recursive;
}
*/
window#waybar {
background: transparent;
color: #ffffff;
}
button {
box-shadow: none;
border: none;
border-radius: 0;
transition-property: none;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #ffffff;
}
#mode {
background-color: #64829D;
border-bottom: 3px solid #ffffff;
}
#memory, #disk, #network, #pulseaudio, #battery, #power-profiles-daemon, #backlight, #clock {
padding: 0 10px;
color: #f0f0ff;
background-color: rgba(30,30,46,0.6);
border-radius: 99px;
margin-left: 4px;
}
#window, #workspaces {
margin: 0 4px;
}
#clock {
font-weight: bold;
}
#battery {
margin-left: 4px;
}
/*
#pulseaudio {
color: #000000;
background-color: #f1c40f;
}
*/
'';
};
programs.niri.settings = {
prefer-no-csd = true;
# TV at 1080 instead of 4k
outputs."DP-4".mode = {
width = 1920;
height = 1080;
refresh = 60.000;
};
input.keyboard.xkb = {
options = "ctrl:nocaps";
};
environment = {
DISPLAY = ":0"; # xwayland-satellite
};
spawn-at-startup = [
{ command = [ "awww-daemon" ]; }
{ command = [ "awww" "img" "${backgroundImg}" ]; }
#{ command = [ "swww-daemon" ]; }
#{ command = [ "swww" "img" "${backgroundImg}" ]; }
{ command = [ "waybar" ]; }
{ command = [ "xwayland-satellite" ]; }
];
window-rules = [
{
draw-border-with-background = false;
geometry-corner-radius = let r = 2.0; in {
top-left = r;
top-right = r;
bottom-left = r;
bottom-right = r;
};
clip-to-geometry = true;
#opacity = 0.95;
}
{
matches = [{is-focused = false;}];
opacity = 0.85;
#opacity = 0.95;
}
];
layout = {
gaps = 4;
#gaps = 4;
#gaps = 8;
#gaps = 16;
center-focused-column = "never";
preset-column-widths = [
{ proportion = 1.0 / 3.0; }
{ proportion = 1.0 / 2.0; }
{ proportion = 2.0 / 3.0; }
];
#If you leave the brackets empty, the windows themselves will decide their initial width.
#preset-window-heights = {};
default-column-width = { proportion = 1.0 / 2.0; };
#focus-ring = {
# enable = false;
# width = 8;
# # Color of the ring on the active monitor.
# active.color = "#7fc8ff";
# # Color of the ring on inactive monitors.
# inactive.color = "#505050";
#};
border.width = 2;
#border = {
# enable = true;
# width = 4;
# active = {
# gradient = {
# angle = 130;
# relative-to = "workspace-view";
# from = "#90F090";
# to = "#909090";
# };
# };
# inactive = {
# gradient = {
# angle = 130;
# relative-to = "workspace-view";
# from = "#409040";
# to = "#404040";
# };
# };
#};
#struts = {
#left = 64;
#right = 64;
#top = 64;
#bottom = 64;
#};
};
binds = with config.lib.niri.actions; {
#"Alt+P".action = spawn "bemenu-run";
"Alt+P".action = spawn "fuzzel";
"Alt+Return".action = spawn "ghostty";
"Alt+Shift+Return".action = spawn "foot";
"Alt+Shift+Slash".action = show-hotkey-overlay;
"Alt+Shift+C".action = close-window;
"Alt+Left" .action = focus-column-left;
"Alt+Down" .action = focus-window-down;
"Alt+Up" .action = focus-window-up;
"Alt+Right" .action = focus-column-right;
"Alt+H" .action = focus-column-left;
#"Alt+J" .action = focus-window-down;
#"Alt+K" .action = focus-window-up;
"Alt+L" .action = focus-column-right;
"Alt+Shift+Left" .action = move-column-left;
"Alt+Shift+Down" .action = move-window-down;
"Alt+Shift+Up" .action = move-window-up;
"Alt+Shift+Right" .action = move-column-right;
"Alt+Shift+H" .action = move-column-left;
#"Alt+Shift+J" .action = move-window-down;
#"Alt+Shift+K" .action = move-window-up;
"Alt+Shift+L" .action = move-column-right;
# Nice alts
"Alt+J" .action = focus-window-or-workspace-down;
"Alt+K" .action = focus-window-or-workspace-up;
"Alt+Shift+J".action = move-window-down-or-to-workspace-down;
"Alt+Shift+K".action = move-window-up-or-to-workspace-up;
"Alt+Ctrl+Left" .action = focus-monitor-left;
"Alt+Ctrl+Down" .action = focus-monitor-down;
"Alt+Ctrl+Up" .action = focus-monitor-up;
"Alt+Ctrl+Right".action = focus-monitor-right;
"Alt+Ctrl+H" .action = focus-monitor-left;
"Alt+Ctrl+J" .action = focus-monitor-down;
"Alt+Ctrl+K" .action = focus-monitor-up;
"Alt+Ctrl+L" .action = focus-monitor-right;
"Alt+Shift+Ctrl+Left" .action = move-column-to-monitor-left;
"Alt+Shift+Ctrl+Down" .action = move-column-to-monitor-down;
"Alt+Shift+Ctrl+Up" .action = move-column-to-monitor-up;
"Alt+Shift+Ctrl+Right" .action = move-column-to-monitor-right;
"Alt+Shift+Ctrl+H" .action = move-column-to-monitor-left;
"Alt+Shift+Ctrl+J" .action = move-column-to-monitor-down;
"Alt+Shift+Ctrl+K" .action = move-column-to-monitor-up;
"Alt+Shift+Ctrl+L" .action = move-column-to-monitor-right;
#...
"Alt+1".action = focus-workspace 1;
"Alt+2".action = focus-workspace 2;
"Alt+3".action = focus-workspace 3;
"Alt+4".action = focus-workspace 4;
"Alt+5".action = focus-workspace 5;
"Alt+6".action = focus-workspace 6;
"Alt+7".action = focus-workspace 7;
"Alt+8".action = focus-workspace 8;
"Alt+9".action = focus-workspace 9;
#"Alt+Shift+1".action = move-column-to-workspace 1;
#"Alt+Shift+2".action = move-column-to-workspace 2;
#"Alt+Shift+3".action = move-column-to-workspace 3;
#"Alt+Shift+4".action = move-column-to-workspace 4;
#"Alt+Shift+5".action = move-column-to-workspace 5;
#"Alt+Shift+6".action = move-column-to-workspace 6;
#"Alt+Shift+7".action = move-column-to-workspace 7;
#"Alt+Shift+8".action = move-column-to-workspace 8;
#"Alt+Shift+9".action = move-column-to-workspace 9;
#Consume one window from the right into the focused column.
"Alt+Comma" .action = consume-window-into-column;
#Expel one window from the focused column to the right.
"Alt+Period" .action = expel-window-from-column;
#There are also commands that consume or expel a single window to the side.
"Alt+BracketLeft" .action = consume-or-expel-window-left;
"Alt+BracketRight" .action = consume-or-expel-window-right;
"Alt+R".action = switch-preset-column-width;
"Alt+Shift+R".action = switch-preset-window-height;
"Alt+Ctrl+R".action = reset-window-height;
"Alt+F".action = maximize-column;
"Alt+Shift+F".action = fullscreen-window;
"Alt+C".action = center-column;
"Alt+Minus".action = set-column-width "-10%";
"Alt+Equal".action = set-column-width "+10%";
"Alt+Shift+Minus".action = set-window-height "-10%";
"Alt+Shift+Equal".action = set-window-height "+10%";
"Alt+S".action.screenshot.show-pointer = false;
#"Print".action = screenshot;
#"Ctrl+Print".aciton = screenshot-screen;
#"Alt+Print".action = screenshot-window;
"Alt+Shift+E".action = quit;
"Ctrl+Alt+Delete".action = quit;
"Alt+Shift+P".action = power-off-monitors;
};
};
programs.ghostty = {
enable = true;
settings = {
window-decoration = false;
minimum-contrast = 1.5;
#font-family = "Recursive Mono Linear Static";
#font-size = 11;
#theme = "GruvboxDarkHard";
#theme = "Horizon";
#theme = "IC_Green_PPL";
#theme = "IC_Orange_PPL";
#theme = "iceberg-dark";
#theme = "Kanagawa Dragon";
#theme = "Kanagawa Wave";
#theme = "kanagawabones";
#theme = "kurokula";
#theme = "Later This Evening";
#theme = "MaterialDarker";
#theme = "MaterialOcean";
#theme = "matrix";
#theme = "Medallion";
#theme = "Mellifluous";
#theme = "Molokai";
#theme = "MonaLisa";
#theme = "Monokai Remastered";
#theme = "Monokai Soda";
#theme = "NightLion v2";
#theme = "niji";
#theme = "Nocturnal Winter";
#theme = "nord";
#theme = "NvimDark";
#theme = "Oceanic-Next";
#theme = "OneHalfDark";
#theme = "Paraiso Dark";
#theme = "PaulMillr";
#theme = "PencilDark";
#theme = "Peppermint";
#theme = "Pnevma";
#theme = "Popping and Locking";
#theme = "Red Planet";
#theme = "rose-pine";
#theme = "Ryuuko";
#theme = "SeaShells";
#theme = "Seti";
#theme = "Shaman";
#theme = "Slate";
#theme = "Smyck";
#theme = "Snazzy";
#theme = "SoftServer";
#theme = "Solarized Dark - Patched";
#theme = "Solarized Dark Higher Contrast";
#theme = "SpaceGray Bright";
#theme = "SpaceGray Eighties";
#theme = "SpaceGray Eighties Dull";
#theme = "terafox";
#theme = "Thayer Bright";
#theme = "Tinacious Design (Dark)";
#theme = "tokyonight";
#theme = "tokyonight-storm";
#theme = "Tomorrow Night Burns";
#theme = "UltraViolent";
#theme = "Violet Dark";
#theme = "Whimsy";
#theme = "WildCherry";
#theme = "wilmersdorf";
#theme = "Wombat";
#theme = "xcodewwdc";
#theme = "zenbones_dark";
#theme = "zenwritten_dark";
};
};
programs.foot = {
enable = true;
settings = {
main = {
#font = "Fira Code:size=8";
#font = "JetBrainsMono:size=8";
#font = "Iosevka:size=18";
#font = "Monoid:size=6";
#font = "Recursive:size=16"; # seems to be Recursive Mono Linear Static in Ghostty
#dpi-aware = "yes";
};
mouse = {
hide-when-typing = "yes";
};
};
};
programs.starship = {
enable = true;
enableBashIntegration = true;
settings = {
add_newline = false;
format = lib.concatStrings [
"$username"
"$hostname"
"$directory"
"$jobs"
"$cmd_duration"
"$character"
];
directory = {
truncation_length = 10;
truncate_to_repo = false;
};
scan_timeout = 10;
character = {
success_symbol = "";
error_symbol = "";
};
};
};
programs.bash = {
enable = true;
sessionVariables = {
};
profileExtra = ''
if [ -e /home/nathan/.nix-profile/etc/profile.d/nix.sh ]; then . /home/nathan/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
. "$HOME/.cargo/env"
export PATH="/run/system-manager/sw/bin/:/home/nbraswell6/.nix-profile/bin:/nix/var/nix/profiles/default/bin:$PATH"
'';
shellAliases = {
ng ="nmcli c up NETGEAR97";
ng24="nmcli c up NETGEAR97_24_2Ghz";
ng58="nmcli c up NETGEAR97_28_5Ghz";
ng5c="nmcli c up NETGEAR97_2C_5Ghz";
};
};
programs.git = {
enable = true;
lfs.enable = true;
userName = "Nathan Braswell";
userEmail = email;
};
programs.jujutsu = {
enable = true;
settings.user = {
name = "Nathan Braswell";
email = email;
};
};
programs.vim = {
enable = true;
plugins = with pkgs.vimPlugins; [
nerdcommenter vim-polyglot #parinfer-rust
];
settings = {
# Is the need for these obliviated by vim-polyglot using sleuth?
#expandtab = false;
tabstop = 4;
shiftwidth = 4;
};
extraConfig = ''
set number
set hlsearch
nnoremap <leader>m :bn<CR>
nnoremap <leader>t :tabnew<CR>
nnoremap <leader>. :tabn<CR>
nnoremap <leader>, :tabp<CR>
nnoremap <leader>v :vsplit<CR>
nnoremap <leader>h :split<CR>
nnoremap <leader>q :q<CR>
inoremap jk <Esc>
inoremap kj <Esc>
" Thanks to https://unix.stackexchange.com/questions/140898/vim-hide-status-line-in-the-bottom
let s:hidden_all = 0
function! ToggleHiddenAll()
if s:hidden_all == 0
let s:hidden_all = 1
set noshowmode
set noruler
set laststatus=0
set noshowcmd
else
let s:hidden_all = 0
set showmode
set ruler
set laststatus=2
set showcmd
endif
endfunction
nnoremap <S-h> :call ToggleHiddenAll()<CR>
'';
};
programs.tmux = {
enable = true;
extraConfig = ''
#$Id: vim-keys.conf,v 1.2 2010-09-18 09:36:15 nicm Exp $
#
# vim-keys.conf, v1.2 2010/09/12
#
# By Daniel Thau. Public domain.
#
# This configuration file binds many vi- and vim-like bindings to the
# appropriate tmux key bindings. Note that for many key bindings there is no
# tmux analogue. This is intended for tmux 1.3, which handles pane selection
# differently from the previous versions
# split windows like vim
# vim's definition of a horizontal/vertical split is reversed from tmux's
bind s split-window -v
bind v split-window -h
# move around panes with hjkl, as one would in vim after pressing ctrl-w
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# resize panes like vim
# feel free to change the "1" to however many lines you want to resize by, only
# one at a time can be slow
bind < resize-pane -L 1
bind > resize-pane -R 1
bind - resize-pane -D 1
bind + resize-pane -U 1
# bind : to command-prompt like vim
# this is the default in tmux already
bind : command-prompt
# vi-style controls for copy mode
setw -g mode-keys vi
'';
};
programs.emacs = {
package = pkgs.emacs-pgtk;
enable = true;
extraConfig = ''
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
;; Use spaces, not tabs, for indentation.
(setq-default indent-tabs-mode nil)
;; Highlight matching pairs of parentheses.
(setq show-paren-delay 0)
(show-paren-mode)
(setq evil-want-C-u-scroll t)
(setq evil-want-keybinding nil)
(evil-mode 1)
(evil-set-undo-system 'undo-redo)
(setq key-chord-two-keys-delay 0.5)
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state)
(evil-collection-init)
(key-chord-mode 1)
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
;(load-theme 'dracula t)
'';
extraPackages = epkgs: with epkgs; [
evil key-chord magit proof-general
ement nov evil-collection
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 = {
enable = true;
settings = {
settings = {
image_preview = {};
username_display = "displayname";
sort = {
rooms = ["recent"];
};
};
profiles.miloignis = {
user_id = "@miloignis:synapse.room409.xyz";
};
};
};
})

BIN
moss.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

BIN
plant_corner.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

BIN
ruinedmansion.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 KiB

BIN
stones-water.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

View File

@@ -17,11 +17,16 @@ exec configure-gtk
exec sleep 5; systemctl --user start kanshi.service exec sleep 5; systemctl --user start kanshi.service
#When everything's wayland, maybe #When everything's wayland, maybe
#output eDP-1 scale 2 output eDP-1 scale 1
#Output HDMI-A-1 'Goldstar Company Ltd LG TV SSCR2 0x00000101' #Output HDMI-A-1 'Goldstar Company Ltd LG TV SSCR2 0x00000101'
output HDMI-A-1 mode 1920x1080@60Hz output HDMI-A-1 mode 1920x1080@60Hz
#Output DP-4 'LG Electronics LG TV SSCR2 0x00000101'
output DP-3 mode 1280x720@60Hz
#output DP-4 mode 1280x720@60Hz
#output DP-4 mode 3840x2160@60Hz
# reload the configuration file # reload the configuration file
bindsym $mod+Shift+q reload bindsym $mod+Shift+q reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
@@ -49,6 +54,7 @@ floating_modifier $mod
#bindsym $mod+Return exec st #bindsym $mod+Return exec st
#bindsym $mod+Return exec sakura #bindsym $mod+Return exec sakura
bindsym $mod+Return exec foot bindsym $mod+Return exec foot
bindsym $mod+Shift+Return exec ghostty
# kill focused window # kill focused window
bindsym $mod+Shift+c kill bindsym $mod+Shift+c kill

123
system-manager/flake.lock generated Normal file
View File

@@ -0,0 +1,123 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"id": "flake-utils",
"type": "indirect"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1756261190,
"narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "77f348da3176dc68b20a73dab94852a417daf361",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nix-system-graphics": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1737457219,
"narHash": "sha256-nX9dxoATDCSQgWw/iv6BngXDJEyHVYYEvHEVQ7Ig3fI=",
"owner": "soupglasses",
"repo": "nix-system-graphics",
"rev": "9c875e0c56cf2eb272b9102a4f3e24e4e31629fd",
"type": "github"
},
"original": {
"owner": "soupglasses",
"repo": "nix-system-graphics",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1756125398,
"narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"home-manager": "home-manager",
"nix-system-graphics": "nix-system-graphics",
"nixpkgs": "nixpkgs",
"system-manager": "system-manager"
}
},
"system-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1756281415,
"narHash": "sha256-CjpoVwpJJ+DOZilPrDpZ5S3V+B1Y0calaHxTp2xMvGs=",
"owner": "numtide",
"repo": "system-manager",
"rev": "e271eedac9a24678ca6cfc61677837422bf474e0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "system-manager",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

34
system-manager/flake.nix Normal file
View File

@@ -0,0 +1,34 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
system-manager = {
url = "github:numtide/system-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-system-graphics = {
url = "github:soupglasses/nix-system-graphics";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, flake-utils, nixpkgs, system-manager, nix-system-graphics, home-manager }: {
systemConfigs.default = system-manager.lib.makeSystemConfig {
modules = [
nix-system-graphics.systemModules.default
({
config = {
nixpkgs.hostPlatform = "x86_64-linux";
system-manager.allowAnyDistro = true;
system-graphics.enable = true;
};
})
];
};
};
}

BIN
village.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

View File

@@ -1,3 +1,3 @@
#!/usr/bin/env sh #!/usr/bin/env sh
nixos-rebuild switch --fast --flake .#vps --target-host root@room409.xyz NIXPKGS_ALLOW_INSECURE=1 nixos-rebuild switch --fast --flake .#vps --target-host root@room409.xyz --impure

3
work_activate_home_manager.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
nix run home-manager/master -- switch --flake ~/nix_config/home-manager
#home-manager switch --flake ~/nix_config/home-manager

View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
sudo $(which nix) run --extra-experimental-features 'nix-command flakes' 'github:numtide/system-manager' -- switch --flake /home/nbraswell6/nix_config/system-manager