Compare commits

..

32 Commits

Author SHA1 Message Date
Emmet
b2b7a65cdf Updated system 2025-10-05 22:20:08 -05:00
Emmet
ae77ef6e30 use igpu for hyprland.. 2025-10-05 21:43:08 -05:00
Emmet
239d39e238 added linkwarden extension 2025-10-05 21:42:59 -05:00
Emmet
44dee10436 Mention secrets repo + some todos 2025-10-01 20:25:42 -05:00
Emmet
b44aeb9150 Haven't updated these readme's in a long time.. 2025-10-01 20:00:02 -05:00
Emmet
44e854f32e Updated system 2025-10-01 18:42:09 -05:00
Emmet
cff06e61c8 Updates to my hyprgamemode 2025-10-01 18:41:52 -05:00
Emmet
dd3d042c0f For my new site using quartz 2025-10-01 18:41:23 -05:00
Emmet
0c43e51e60 Just use mesa.. 2025-10-01 18:41:12 -05:00
Emmet
392b361944 Some hyprland fixes 2025-09-25 20:24:12 -05:00
Emmet
27d121a412 messing around with some ai 2025-09-25 20:23:29 -05:00
Emmet
a8a0e1249d this is helpful for colors.. 2025-09-25 20:23:14 -05:00
Emmet
917cbe4a39 Made orichalcum theme 2025-09-25 20:23:03 -05:00
Emmet
76788051dd needs flatpaks 2025-09-20 17:27:15 -05:00
Emmet
8a2a6ccfdb Forgot default value :| 2025-09-20 17:24:42 -05:00
Emmet
c7be140c86 Updated secrets 2025-09-20 17:15:15 -05:00
Emmet
316588308d Add packages to work computer 2025-09-20 17:14:21 -05:00
Emmet
147aec1692 Create allowedHosts to let specific hosts through blocklist 2025-09-20 17:13:53 -05:00
Emmet
0ca063ddde Updated system 2025-09-20 17:05:07 -05:00
Emmet
601990c613 Removed some todos 2025-09-20 16:35:33 -05:00
Emmet
fce49ba54e Fixed some home dirs 2025-09-20 16:35:26 -05:00
Emmet
b75226279d phoenix now aquires wakelock 2025-09-20 16:35:02 -05:00
Emmet
d970b1f933 Org node/roam fixes 2025-09-20 07:26:26 -05:00
Emmet
c931983717 Fix amdgpu 2025-09-14 09:41:32 -05:00
Emmet
e488b0212d Fix weird bug with browser spawn keybind? 2025-09-14 09:41:17 -05:00
Emmet
02d584c129 Add devenv 2025-09-14 09:41:08 -05:00
Emmet
62b02e96e0 Trying to fix dumb amd gpu 2025-09-13 21:03:34 -05:00
Emmet
48e0909748 Updated system 2025-09-13 21:03:28 -05:00
Emmet
35cd781c3d Learning some svelte 2025-09-13 21:03:09 -05:00
Emmet
c69616c4b5 Trying some alternate ricing 2025-09-13 21:02:58 -05:00
Emmet
5dee28b5c8 Fix hyprland... 2025-09-07 20:48:53 -05:00
Emmet
4bcd9efc99 more efficient projectile 2025-09-07 19:20:21 -05:00
37 changed files with 532 additions and 495 deletions

View File

@@ -13,28 +13,10 @@ These are my dotfiles (configuration files) for my NixOS setup(s).
Here is my main setup:
[[desktop.png]]
** My Themes
** Themes
[[https://github.com/danth/stylix#readme][Stylix]] (and [[https://github.com/SenchoPens/base16.nix#readme][base16.nix]], of course) is amazing, allowing you to theme your entire system with base16-themes.
Using this I have [[./themes][59+ themes]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./themes][themes directory]] for more info and screenshots!
** Install
I wrote some reinstall notes for myself [[./install.org][here (install.org)]].
TLDR: You should™ be able to install my dotfiles to a fresh NixOS system with the following experimental script:
#+begin_src sh :noeval
nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config"
#+end_src
Disclaimer: Ultimately, I can't gaurantee this will work for anyone other than myself, so /use this at your own discretion/. Also my dotfiles are /highly/ opinionated, which you will discover immediately if you try them out.
Potential Errors: I've only tested it working on UEFI with the default EFI mount point of =/boot=. I've added experimental legacy (BIOS) boot support, but it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader.
Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled.
Security Disclaimer: If you install or copy my =homelab= or =worklab= profiles, /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/:
- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile
- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile
Using this I have [[./modules/themes][a lot of themes]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./modules/themes][themes directory]] for more info and screenshots!
** Modules
Separate Nix files can be imported as modules using an import block:
@@ -47,21 +29,30 @@ imports = [ ./import1.nix
This conveniently allows configurations to be (*cough cough) /modular/ (ba dum, tssss).
I have my modules separated into two groups:
- System-level - stored in the [[./system][system directory]]
- System-level modules are imported into configuration.nix, which is what is sourced into [[./flake.nix][my flake (flake.nix)]]
- User-level - stored in the [[./user][user directory]] (managed by home-manager)
- User-level modules are imported into home.nix, which is also sourced into [[./flake.nix][my flake (flake.nix)]]
I have my modules separated into three subdirectories:
- System-level - stored in the [[./modules/system][system directory]]
- User-level - stored in the [[./modules/user][user directory]]
More detailed information on these specific modules are in the [[./system][system directory]] and [[./user][user directory]] respectively.
** Install
I wrote some reinstall notes for myself [[./install.org][here (install.org)]].
Check them out if you'd like to try out my config in a VM or base your config on mine.
** Patches
In some cases, since I use =nixpgs-unstable=, I must patch nixpkgs. This can be done inside of a flake via:
#+BEGIN_SRC nix
nixpkgs-patched = (import nixpkgs { inherit system; }).applyPatches {
name = "nixpkgs-patched";
src = nixpkgs;
patches = [ ./example-patch.nix ];
patches = [
./example-patch.nix
(builtins.fetchurl {
url = "https://asdf1234.patch";
sha256 = "sha256:qwerty123456...";
})
];
};
# configure pkgs
@@ -75,30 +66,21 @@ Patches can either be local or remote, so you can even import unmerged pull requ
I currently curate patches local to this repo in the [[./patches][patches]] directory.
** Profiles
I separate my configurations into [[./profiles][profiles]] (essentially system templates), i.e:
- [[./profiles/personal][Personal]] - What I would run on a personal laptop/desktop
- [[./profiles/work][Work]] - What I would run on a work laptop/desktop (if they let me bring my own OS :P)
- [[./profiles/homelab][Homelab]] - What I would run on a server or homelab
- [[./profiles/wsl][WSL]] - What I would run underneath Windows Subystem for Linux
My profile can be conveniently selected in [[./flake.nix][my flake.nix]] by setting the =profile= variable.
More detailed information on these profiles is in the [[./profiles][profiles directory]].
** Hosts
Configurations for all my machines are in [[./hosts][hosts]].
** Nix Wrapper Script
Some Nix commands are confusing, really long to type out, or require me to be in the directory with my dotfiles. To solve this, I wrote a [[./system/bin/phoenix.nix][wrapper script called phoenix]], which calls various scripts in the root of this directory.
Some Nix commands are confusing, really long to type out, or require me to be in the directory with my dotfiles. To solve this, I wrote a [[./modules/system/phoenix][wrapper script called phoenix]], which calls various scripts in the root of this directory.
TLDR:
- =phoenix sync= - Synchronize system and home-manager state with config files (essentially =nixos-rebuild switch= + =home-manager switch=)
- =phoenix sync system= - Only synchronize system state (essentially =nixos-rebuild switch=)
- =phoenix sync user= - Only synchronize home-manager state (essentially =home-manager switch=)
- =phoenix sync= - Synchronize system state with config
- =phoenix build= - Build all host configurations and push results to attic (requires attic config to be setup)
- =phoenix update= - Update all flake inputs without synchronizing system and home-manager states
- =phoenix upgrade= - Update flake.lock and synchronize system and home-manager states (=phoenix update= + =phoenix sync=)
- =phoenix update INPUT= - Update only the specified =INPUT= (see inputs in [[./flake.nix][flake.nix]])
- =phoenix refresh= - Call synchronization posthooks (mainly to refresh stylix and some dependent daemons)
- =phoenix pull= - Pull changes from upstream git and attempt to merge local changes (I use this to update systems other than my main system)
- =phoenix harden= - Ensure that all "system-level" files cannot be edited by an unprivileged user
- =phoenix soften= - Relax permissions so all dotfiles can be edited by a normal user (use temporarily for git or other operations)
- =phoenix lock= - Ensure that all "system-level" files cannot be edited by an unprivileged user
- =phoenix unlock= - Relax permissions so all dotfiles can be edited by a normal user (use temporarily for git or other operations)
- =phoenix gc= - Garbage collect the system and user nix stores
- =phoenix gc full= - Delete everything not currently in use
- =phoenix gc 15d= - Delete everything older than 15 days

231
flake.lock generated
View File

@@ -20,11 +20,11 @@
]
},
"locked": {
"lastModified": 1752936381,
"narHash": "sha256-b191B12GRfvOT3odGpx5IFyGRPZbBrvCLADZfFHoJFg=",
"lastModified": 1755946532,
"narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "141a991678b34e768f09b3a670c61a4c1d5d7110",
"rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada",
"type": "github"
},
"original": {
@@ -103,11 +103,11 @@
"blocklist-hosts": {
"flake": false,
"locked": {
"lastModified": 1757086236,
"narHash": "sha256-bcQnByOCtEbdKQmtaESIM4xrPakuhrpCIqeh79UDUxE=",
"lastModified": 1759598151,
"narHash": "sha256-xwfozRzPrq8PybpRYVkQ/RXF4AbroLk3FMA32XCnFrk=",
"owner": "StevenBlack",
"repo": "hosts",
"rev": "b0781e7975c0c09fe7e33fbcf9222193c9f36a25",
"rev": "cb59fe4b551d0721c7854c1387557b86c9ead019",
"type": "github"
},
"original": {
@@ -125,11 +125,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1757270623,
"narHash": "sha256-tSGCFMKzbhqByFOfUtmnv8BOz2pB5hDtkYt5i0LXQGA=",
"lastModified": 1759532138,
"narHash": "sha256-sLQIlgDwMP3mEY2PwjGW+cL56QQ2n2WXoZ3GpG5QWOY=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "6ce91909eb3ef6ece9ab2ed24fc69928883c5b68",
"rev": "bad02bbca5b5c6d45539a0d740ad0e21b1ba9afc",
"type": "github"
},
"original": {
@@ -146,11 +146,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1757265531,
"narHash": "sha256-qivcU4dbflK4DR703s0YlmOzk365zKUJKzdei8oBdWE=",
"lastModified": 1759655261,
"narHash": "sha256-VqbnVGL7+eb0px3tx9szi38BC+J8ONBi4QAkKPXiokw=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "eabe03335ec98f151eefcdbe859abacfeea5e7f5",
"rev": "85a72536d0224341ffdfb9fbb724f5ef15476dd6",
"type": "github"
},
"original": {
@@ -162,11 +162,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1756083905,
"narHash": "sha256-UqYGTBgI5ypGh0Kf6zZjom/vABg7HQocB4gmxzl12uo=",
"lastModified": 1758112371,
"narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "b655eaf16d4cbec9c3472f62eee285d4b419a808",
"rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
"type": "github"
},
"original": {
@@ -178,11 +178,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
@@ -289,11 +289,11 @@
]
},
"locked": {
"lastModified": 1757075491,
"narHash": "sha256-a+NMGl5tcvm+hyfSG2DlVPa8nZLpsumuRj1FfcKb2mQ=",
"lastModified": 1759337100,
"narHash": "sha256-CcT3QvZ74NGfM+lSOILcCEeU+SnqXRvl1XCRHenZ0Us=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f56bf065f9abedc7bc15e1f2454aa5c8edabaacf",
"rev": "004753ae6b04c4b18aa07192c1106800aaacf6c3",
"type": "github"
},
"original": {
@@ -309,11 +309,11 @@
]
},
"locked": {
"lastModified": 1757256385,
"narHash": "sha256-WK7tOhWwr15mipcckhDg2no/eSpM1nIh4C9le8HgHhk=",
"lastModified": 1759711004,
"narHash": "sha256-B39NxeKCnK3DJlmJKIts6njcXcVVASLUChDNmRl4dxQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f35703b412c67b48e97beb6e27a6ab96a084cd37",
"rev": "6f4021da5d2bb5ea7cb782ff413ecb7062066820",
"type": "github"
},
"original": {
@@ -339,11 +339,11 @@
]
},
"locked": {
"lastModified": 1749155331,
"narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=",
"lastModified": 1753964049,
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80",
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
"type": "github"
},
"original": {
@@ -368,11 +368,11 @@
]
},
"locked": {
"lastModified": 1752149140,
"narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=",
"lastModified": 1756891319,
"narHash": "sha256-/e6OXxzbAj/o97Z1dZgHre4bNaVjapDGscAujSCQSbI=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "340494a38b5ec453dfc542c6226481f736cc8a9a",
"rev": "621e2e00f1736aa18c68f7dfbf2b9cff94b8cc4d",
"type": "github"
},
"original": {
@@ -420,22 +420,24 @@
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs_2",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems",
"xdph": "xdph"
},
"locked": {
"lastModified": 1752961026,
"narHash": "sha256-n5lzYUr1iQqzMmEF9oLL9BXMpOO9eVnY0AUCDrM93Yk=",
"lastModified": 1757508065,
"narHash": "sha256-JkUkn8p/sHqjmykejd9ZMUlYyaXA+Ve9IPA71ybqloY=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "4e242d086e20b32951fdc0ebcbfb4d41b5be8dcc",
"rev": "46174f78b374b6cea669c48880877a8bdcf7802f",
"type": "github"
},
"original": {
"owner": "hyprwm",
"ref": "v0.50.1",
"ref": "v0.51.0",
"repo": "Hyprland",
"type": "github"
}
@@ -520,11 +522,11 @@
]
},
"locked": {
"lastModified": 1750371812,
"narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
"lastModified": 1753819801,
"narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
"rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc",
"type": "github"
},
"original": {
@@ -549,11 +551,11 @@
]
},
"locked": {
"lastModified": 1750371198,
"narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
"lastModified": 1756810301,
"narHash": "sha256-wgZ3VW4VVtjK5dr0EiK9zKdJ/SOqGIBXVG85C3LVxQA=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
"rev": "3d63fb4a42c819f198deabd18c0c2c1ded1de931",
"type": "github"
},
"original": {
@@ -598,17 +600,16 @@
"hyprutils": "hyprutils_2",
"hyprwayland-scanner": "hyprwayland-scanner_2",
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": "systems_2"
},
"locked": {
"lastModified": 1756969494,
"narHash": "sha256-gpTDaJT8CSTqumMdENIw4x+mmbeoP1D3ywuAaOaRfac=",
"lastModified": 1759572448,
"narHash": "sha256-o+r44fqPQM+/hQdjFy9qV9C51Jhty6M4icFVYocyJfA=",
"ref": "refs/heads/main",
"rev": "04cfdc4e5bb0e53036e70cc20922ab346ce165cd",
"revCount": 390,
"rev": "c8a6768dca626cf7d7cbc333095f048bc007b6d9",
"revCount": 398,
"type": "git",
"url": "https://code.hyprland.org/hyprwm/hyprlock.git"
},
@@ -629,11 +630,11 @@
]
},
"locked": {
"lastModified": 1752252310,
"narHash": "sha256-06i1pIh6wb+sDeDmWlzuPwIdaFMxLlj1J9I5B9XqSeo=",
"lastModified": 1756117388,
"narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "bcabcbada90ed2aacb435dc09b91001819a6dc82",
"rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0",
"type": "github"
},
"original": {
@@ -679,11 +680,11 @@
]
},
"locked": {
"lastModified": 1751897909,
"narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=",
"lastModified": 1755184602,
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "fcca0c61f988a9d092cbb33e906775014c61579d",
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
"type": "github"
},
"original": {
@@ -726,11 +727,11 @@
]
},
"locked": {
"lastModified": 1757052778,
"narHash": "sha256-rYszJwY0EArAqK6q0i5bB1zxNCNRk6gVmD9SIvnoXW8=",
"lastModified": 1759387127,
"narHash": "sha256-uuwJAP92SkHmnI1zo7rrK/gEuHtb97vFZcMa5w+0SZA=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "ceaa413a68f28bbf6731464594fdb2c3513e9110",
"rev": "0cc290e05882745060fccfe6d7d073f913e0cce7",
"type": "github"
},
"original": {
@@ -764,11 +765,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1757238739,
"narHash": "sha256-ovEq9v+Xc+oQH1zvQo28rT/YVqMQK2TRgUcNanvo2Zk=",
"lastModified": 1759147044,
"narHash": "sha256-3ZPFytJOcLjTChljeaGgoaNj+tOqzgEpqZAvRe3bU90=",
"owner": "PedroHLC",
"repo": "nixpkgs",
"rev": "6d8fca2c92488ff860524dd3400aa90a3310123e",
"rev": "18e83bbe13aa50992777832b52bd0e0d8585fb3b",
"type": "github"
},
"original": {
@@ -780,16 +781,16 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1751274312,
"narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=",
"lastModified": 1759580034,
"narHash": "sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674",
"rev": "3bcc93c5f7a4b30335d31f21e2f1281cba68c318",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
@@ -811,27 +812,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1752687322,
"narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=",
"lastModified": 1759381078,
"narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1757068644,
"narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9",
"rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee",
"type": "github"
},
"original": {
@@ -840,7 +825,7 @@
"type": "indirect"
}
},
"nixpkgs_4": {
"nixpkgs_3": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
@@ -856,13 +841,13 @@
"type": "github"
}
},
"nixpkgs_5": {
"nixpkgs_4": {
"locked": {
"lastModified": 1756819007,
"narHash": "sha256-12V64nKG/O/guxSYnr5/nq1EfqwJCdD2+cIGmhz3nrE=",
"lastModified": 1758690382,
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "aaff8c16d7fc04991cac6245bee1baa31f72b1e1",
"rev": "e643668fd71b949c53f8626614b21ff71a07379d",
"type": "github"
},
"original": {
@@ -884,11 +869,11 @@
]
},
"locked": {
"lastModified": 1756961635,
"narHash": "sha256-hETvQcILTg5kChjYNns1fD5ELdsYB/VVgVmBtqKQj9A=",
"lastModified": 1758998580,
"narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
"owner": "nix-community",
"repo": "NUR",
"rev": "6ca27b2654ac55e3f6e0ca434c1b4589ae22b370",
"rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
"type": "github"
},
"original": {
@@ -907,11 +892,11 @@
]
},
"locked": {
"lastModified": 1756632588,
"narHash": "sha256-ydam6eggXf3ZwRutyCABwSbMAlX+5lW6w1SVZQ+kfSo=",
"lastModified": 1759321049,
"narHash": "sha256-8XkU4gIrLT2DJZWQyvsP5woXGZF5eE/7AnKfwQkiwYU=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "d47428e5390d6a5a8f764808a4db15929347cd77",
"rev": "205dcfd4a30d4a5d1b4f28defee69daa7c7252cd",
"type": "github"
},
"original": {
@@ -930,11 +915,11 @@
]
},
"locked": {
"lastModified": 1750779888,
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
"lastModified": 1757239681,
"narHash": "sha256-E9spYi9lxm2f1zWQLQ7xQt8Xs2nWgr1T4QM7ZjLFphM=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
"rev": "ab82ab08d6bf74085bd328de2a8722c12d97bd9d",
"type": "github"
},
"original": {
@@ -951,7 +936,7 @@
"home-manager": "home-manager_2",
"hyprland": "hyprland",
"hyprlock": "hyprlock",
"nixpkgs": "nixpkgs_3",
"nixpkgs": "nixpkgs_2",
"nixpkgs-stable": "nixpkgs-stable_2",
"plasma-manager": "plasma-manager",
"rust-overlay": "rust-overlay_2",
@@ -967,11 +952,11 @@
]
},
"locked": {
"lastModified": 1757125853,
"narHash": "sha256-noKkYHKpT5lpvNSYrlH56d8cedthZfs010Uv6vTqLT4=",
"lastModified": 1759458749,
"narHash": "sha256-WKnbJnm1B2+TO2ZUudgS39EzecQeLl4/bnRtd3y46LI=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "8b70793a6be183536a5d562056dac10b7b36820d",
"rev": "bbc3a8ae797d1700e57a4f4bcc4e79af727d4138",
"type": "github"
},
"original": {
@@ -982,14 +967,14 @@
},
"rust-overlay_2": {
"inputs": {
"nixpkgs": "nixpkgs_4"
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1757212513,
"narHash": "sha256-ZTHwY7u8BQF1JUazhGk+ftCjsS57Ht6KSnnkxQoUBA8=",
"lastModified": 1759718104,
"narHash": "sha256-TbkLsgdnXHUXR4gOQBmhxkEE9ne+eHmX1chZHWRogy0=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "a8c2f9348abb14647d8a4899d1b3acd0155ce2cd",
"rev": "edea9f33f9a03f615ad3609a40fbcefe0ec835ca",
"type": "github"
},
"original": {
@@ -1005,11 +990,11 @@
]
},
"locked": {
"lastModified": 1757277266,
"narHash": "sha256-m+221GCxVOQ7bdAlbjgbjNVk+CYTji9wNZqP5gBaM2I=",
"lastModified": 1758406446,
"narHash": "sha256-LO6ab6NcJmRm0xz21YbOAY43qTcos4fTOibw1XGnKYI=",
"ref": "refs/heads/main",
"rev": "c1f3de3e7b089177d9dfd0189d190e2e5a467440",
"revCount": 36,
"rev": "5406586a69cd2a66d674e962a4544647bf02aaa2",
"revCount": 38,
"type": "git",
"url": "file://path:/etc/nixos.secrets"
},
@@ -1027,7 +1012,7 @@
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts",
"gnome-shell": "gnome-shell",
"nixpkgs": "nixpkgs_5",
"nixpkgs": "nixpkgs_4",
"nur": "nur",
"systems": "systems_3",
"tinted-foot": "tinted-foot",
@@ -1037,11 +1022,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1757172691,
"narHash": "sha256-VOn/s24rb+iO6auhmGfT5kyr0ixRK6weBsNCKkGo2yY=",
"lastModified": 1759690047,
"narHash": "sha256-Vlpa0d1xOgPO9waHwxJNi6LcD2PYqB3EjwLRtSxXlHc=",
"owner": "nix-community",
"repo": "stylix",
"rev": "9991299fe9aad330fb6b96bb58def37033271177",
"rev": "09022804b2bcd217f3a41a644d26b23d30375d12",
"type": "github"
},
"original": {
@@ -1131,11 +1116,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1754779259,
"narHash": "sha256-8KG2lXGaXLUE0F/JVwLQe7kOVm21IDfNEo0gfga5P4M=",
"lastModified": 1757716333,
"narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "097d751b9e3c8b97ce158e7d141e5a292545b502",
"rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
"type": "github"
},
"original": {
@@ -1147,11 +1132,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1754788770,
"narHash": "sha256-LAu5nBr7pM/jD9jwFc6/kyFY4h7Us4bZz7dvVvehuwo=",
"lastModified": 1757811970,
"narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "fb2175accef8935f6955503ec9dd3c973eec385c",
"rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
"type": "github"
},
"original": {
@@ -1163,11 +1148,11 @@
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1755613540,
"narHash": "sha256-zBFrrTxHLDMDX/OYxkCwGGbAhPXLi8FrnLhYLsSOKeY=",
"lastModified": 1757811247,
"narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "937bada16cd3200bdbd3a2f5776fc3b686d5cba0",
"rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
"type": "github"
},
"original": {
@@ -1204,11 +1189,11 @@
]
},
"locked": {
"lastModified": 1751300244,
"narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=",
"lastModified": 1755354946,
"narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a",
"rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0",
"type": "github"
},
"original": {

View File

@@ -91,13 +91,14 @@
home-manager.inputs.nixpkgs.follows = "nixpkgs";
hyprland = {
url = "github:hyprwm/Hyprland/v0.50.1?submodules=true";
url = "github:hyprwm/Hyprland/v0.51.0?submodules=true";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprlock = {
type = "git";
url = "https://code.hyprland.org/hyprwm/hyprlock.git";
inputs.nixpkgs.follows = "hyprland/nixpkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
plasma-manager = {

View File

@@ -1,15 +1,11 @@
#+title: System Profiles
#+title: Machines
This directory contains various system profiles which can easily be set in [[../flake.nix][my flake.nix]] by setting the =profile= variable. Each profile directory contains a =configuration.nix= for system-level configuration and a =home.nix= for user-level configuration. Setting the =profile= variable in [[../flake.nix][my flake]] will automatically source the correct =configuration.nix= and =home.nix=.
This directory contains config for each of my machines.
Current profiles I have available are:
- [[./personal][Personal]] - What I would run on a personal laptop/desktop*
- [[./work][Work]] - What I would run on my work laptop/desktop*
- [[./homelab][Homelab]] - What I would run on a server or homelab*
- [[./worklab][Worklab]] - My homelab config with my work SSH keys preinstalled*
- [[./wsl][WSL]] - Windows Subsystem for Emacs (uses [[https://github.com/nix-community/NixOS-WSL][NixOS-WSL]])
- [[./nix-on-droid][Nix on Droid]] - So that I can run Emacs on my phone (uses [[https://github.com/nix-community/nix-on-droid][nix-on-droid]])
*My [[./personal][personal]] and [[./work][work]] profiles are actually functionally identical (the [[./work][work]] profile is actually imported into the [[./personal][personal]] profile)! The only difference between them is that my [[./personal][personal]] profile has a few extra things like gaming and social apps.
*My [[./homelab][homelab]] and [[./worklab][worklab]] profiles are similarly functionally identical (they both utilize the this [[./homelab/base.nix][base.nix]] file)! The only difference is that they have different preinstalled ssh keys.
In this directory you'll find:
- [[./snowfire][snowfire]] - My main machine (gaming laptop)
- [[./duskfall][duskfall]] - An old thinkpad I use occasionally
- [[./stardust][stardust]] - My wife's laptop
- [[./zenith][zenith]] - My work laptop
- [[./ori][ori]] - My homelab server host
- [[./TEMPLATE][TEMPLATE]] - Template files to use for a new host

View File

@@ -0,0 +1,3 @@
#+title: Just chillin'
This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps!

View File

@@ -0,0 +1,61 @@
{ config, lib, pkgs, ... }:
{
config = {
systemSettings = {
# users
users = [ "USERNAME" ];
adminUsers = [ "USERNAME" ];
# hardware
cachy.enable = true;
bluetooth.enable = true;
powerprofiles.enable = true;
tlp.enable = false;
printing.enable = true;
# software
flatpak.enable = false;
gaming.enable = false;
virtualization = {
docker.enable = false;
virtualMachines.enable = false;
};
brave.enable = true;
# wm
hyprland.enable = true;
# dotfiles
dotfilesDir = "/etc/nixos";
# security
security = {
automount.enable = true;
blocklist.enable = true;
doas.enable = true;
firejail.enable = false; # TODO setup firejail profiles
firewall.enable = true;
gpg.enable = true;
openvpn.enable = true;
sshd.enable = false;
};
# style
stylix = {
enable = true;
theme = "orichalcum";
};
};
users.users.USERNAME.description = "NAME";
home-manager.users.USERNAME.userSettings = {
name = "NAME";
email = "EMAIL";
};
## EXTRA CONFIG GOES HERE
};
}

View File

@@ -0,0 +1,14 @@
{ config, lib, pkgs, ... }:
{
imports = [
./configuration.nix
./hardware-configuration.nix
];
config = {
home-manager.users = builtins.listToAttrs
(map (user: { name = user; value =
({ imports = [ ./home.nix ../../modules/user ]; });}) config.systemSettings.users);
};
}

View File

@@ -0,0 +1,8 @@
## THIS FILE MUST BE GENERATED ON A PER MACHINE BASIS
## RUN
{ config, lib, pkgs, modulesPath, inputs, ... }:
{
}

47
hosts/TEMPLATE/home.nix Normal file
View File

@@ -0,0 +1,47 @@
{ config, lib, pkgs, ... }:
{
config = {
userSettings = {
# setup
shell = {
enable = true;
apps.enable = true;
extraApps.enable = true;
};
xdg.enable = true;
# programs
browser = "brave";
editor = "emacs";
vscodium.enable = true;
yazi.enable = true;
git.enable = true;
engineering.enable = false;
art.enable = false;
flatpak.enable = false;
godot.enable = false;
keepass.enable = false;
media.enable = true;
music.enable = false;
office.enable = true;
recording.enable = false;
virtualization = {
virtualMachines.enable = false;
};
ai.enable = false;
# wm
hyprland.enable = true;
# style
stylix.enable = true;
# hardware
bluetooth.enable = true;
};
## EXTRA CONFIG GOES HERE
};
}

View File

@@ -1,3 +1,3 @@
#+title: Just chillin'
#+title: Thinkpad go brrr...
This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps!
This is my config for an old Thinkpad. It's /really/ slow, but it's nice since it has a touch screen and pen with palm rejection! I don't use it that often, and I'm considering connecting it to the TV and trying Kodi out on it.

View File

@@ -1,3 +1,7 @@
#+title: Just chillin'
This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps!
This is for my personal gaming laptop. Necessary and extra batteries included: office, engineering, development, media, recording, and gaming apps. Highly bloated system.
Specs:
- Asus ROG Strix G15 Advantage
- Upgraded to 64GB of RAM + 1TB SSD

View File

@@ -44,7 +44,7 @@
# style
stylix = {
enable = true;
theme = "io";
theme = "orichalcum";
};
};

View File

@@ -9,6 +9,8 @@
];
services.fstrim.enable = true;
services.lact.enable = true;
#services.lact.settings = {};
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" "radeon" ];
boot.initrd.kernelModules = [ "radeon" ];
@@ -17,7 +19,38 @@
boot.kernelParams = [ "amd_pstate=active" "acpi_osi=Linux" "acpi_wake=USB0" ];
boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ];
networking.wireguard.enable = true;
hardware.opengl.enable = true;
# https://wiki.nixos.org/wiki/Mesa
hardware = {
graphics =
let
fn = oa: {
nativeBuildInputs = oa.nativeBuildInputs ++ [ pkgs.glslang ];
mesonFlags = oa.mesonFlags ++ [ "-Dvulkan-layers=device-select,overlay" ];
# patches = oa.patches ++ [ ./mesa-vulkan-layer-nvidia.patch ]; See below
postInstall = oa.postInstall + ''
mv $out/lib/libVkLayer* $drivers/lib
#Device Select layer
layer=VkLayer_MESA_device_select
substituteInPlace $drivers/share/vulkan/implicit_layer.d/''${layer}.json \
--replace "lib''${layer}" "$drivers/lib/lib''${layer}"
#Overlay layer
layer=VkLayer_MESA_overlay
substituteInPlace $drivers/share/vulkan/explicit_layer.d/''${layer}.json \
--replace "lib''${layer}" "$drivers/lib/lib''${layer}"
'';
};
in
with pkgs; {
enable = true;
enable32Bit = true;
package = (mesa.overrideAttrs fn).drivers;
package32 = (pkgsi686Linux.mesa.overrideAttrs fn).drivers;
#extraPackages = with pkgs; [ amdvlk ];
#extraPackages32 = with pkgs; [ driversi686Linux.amdvlk ];
};
};
hardware.opengl.extraPackages = [ pkgs.rocmPackages.clr.icd ];
hardware.opengl.extraPackages32 = [ ];
@@ -26,14 +59,13 @@
services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ];
hardware.graphics = {
enable = lib.mkDefault true;
enable32Bit = lib.mkDefault true;
};
hardware.amdgpu.initrd.enable = true;
hardware.amdgpu.opencl.enable = true;
hardware.amdgpu.amdvlk.enable = true;
#hardware.amdgpu.amdvlk.enable = true;
#hardware.amdgpu.overdrive.enable = true;
environment.sessionVariables = {
VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/radeon_icd.x86_64.json"; # fix for godot
};
# makes disk io not freeze the computer
services.udev.extraRules = ''
@@ -45,8 +77,8 @@
rocmEnv = pkgs.symlinkJoin {
name = "rocm-combined";
paths = with pkgs.rocmPackages; [
#rocblas
#hipblas
rocblas
hipblas
clr
];
};

View File

@@ -29,6 +29,7 @@
virtualization = {
virtualMachines.enable = true;
};
ai.enable = true;
# wm
hyprland.enable = true;
@@ -41,7 +42,7 @@
};
home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable {
AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card1:/dev/dri/card2";
AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card2:/dev/dri/card1";
};
wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable {

View File

@@ -1,3 +1,3 @@
#+title: Just chillin'
#+title: For my wife
This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps!
This is a config for my wife's computer. She likes Plasma and she mainly uses it for her art work and some light gaming.

View File

@@ -14,7 +14,7 @@
printing.enable = true;
# software
flatpak.enable = false;
flatpak.enable = true;
gaming.enable = true;
virtualization = {
docker.enable = true;

View File

@@ -1,3 +1,3 @@
#+title: Just chillin'
#+title: Time to focus
This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps!
This is config for my work computer. Essentially the same as [[../snowfire][snowfire]], just minus the gaming (and a few other things).

View File

@@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }:
{ config, lib, pkgs, pkgs-stable, ... }:
{
config = {
@@ -42,7 +42,7 @@
};
home.packages = with pkgs; [
openldap ldapvi rclone teams-for-linux rpi-imager freerdp tigervnc unixtools.xxd
openldap ldapvi rclone teams-for-linux rpi-imager freerdp pkgs-stable.tigervnc unixtools.xxd
];
home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable {

View File

@@ -3,102 +3,14 @@
These are just some simple install notes for myself (in-case I have to reinstall unexpectedly). You could also use these to try out my config in a VM.
** Automated Install Script (Experimental)
*** Install Directly From Git
I wrote a quick automated install script at [[./install.sh][install.sh]]. It essentially just runs [[Manual Install Procedure][the manual install steps]] and additionally hardens the security of the system-level (root configuration) files using [[./harden.sh][harden.sh]].
I'll eventually™ add the ability to supply arguments to this script as well.
The quickest way to install is running the install script directly from the remote git repo using =nix run=, which is essentially just one of the following:
#+BEGIN_SRC sh :noeval
# Install from gitlab
nix run gitlab:librephoenix/nixos-config
# Or install from github
nix run github:librephoenix/nixos-config
# Or install from codeberg
nix run git+https://codeberg.org/librephoenix/nixos-config
#+END_SRC
This will install the dotfiles to =~/.dotfiles=, but if you'd like to install to a custom directory, just supply it as a positional argument, i.e:
#+BEGIN_SRC sh :noeval
# Install from gitlab
nix run gitlab:librephoenix/nixos-config -- /your/custom/directory
#+END_SRC
The script will ask for sudo permissions at certain points, /but you should not run the script as root/.
If the above =nix run= command gives you an error, odds are you either don't have =git= installed, or you haven't enabled the experimental features in your Nix config (=nix-command= and =flakes=). To get the command to install properly, you can first enter a shell with =git= available using:
#+begin_src sh :noeval
nix-shell -p git
#+end_src
and then running:
#+BEGIN_SRC sh :noeval
nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config
#+END_SRC
And if you want a single copy-paste solution:
#+begin_src sh :noeval
nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config"
#+end_src
This /should/ still work with a custom dotfiles directory too, i.e:
#+begin_src sh :noeval
nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config -- /your/custom/directory"
#+end_src
At a certain point in the install script it will open =nano= (or whatever your $EDITOR is set to) and ask you to edit the =flake.nix=. You can edit as much or as little of the config variables as you like, and it will continue the install after you exit the editor.
Potential Errors: I've only tested it working on UEFI with the default EFI mount point of =/boot=. I've added experimental legacy (BIOS) boot support, but it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader.
Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled.
Disclaimer: If you install my =homelab= or =worklab= profiles /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/:
- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile
- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile
*** Install From Local Git Clone
The dotfiles can be installed after cloning the repo into =~/.dotfiles= using:
#+BEGIN_SRC sh :noeval
git clone https://gitlab.com/librephoenix/nixos-config.git ~/.dotfiles
~/.dotfiles/install.sh
#+END_SRC
or with a custom directory:
#+BEGIN_SRC sh :noeval
git clone https://gitlab.com/librephoenix/nixos-config.git /your/custom/directory
/your/custom/directory/install.sh
#+END_SRC
If you install to a custom directory, make sure to edit the =userSettings.dotfilesDir= in the [[./flake.nix][flake.nix]], or else my [[./system/bin/phoenix.nix][phoenix wrapper script]] won't work.
At a certain point in the install script it will open =nano= (or whatever your =$EDITOR= is set to) and ask you to edit the =flake.nix=. You can edit as much or as little of the config variables as you like, and it will continue the install after you exit the editor.
Potential Errors: I mainly only test this on UEFI, but I've added experimental legacy (BIOS) boot support. Keep in mind, it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader.
Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled.
Disclaimer: If you install my =homelab= or =worklab= profiles /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/:
- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile
- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile
*** Automatic Install Script Limitations
At this time, this only works on an existing NixOS install. It also only works if the dotfiles are cloned into =~/.dotfiles=. It also only works on UEFI, not on BIOS :(
Future upgrade plans:
- [ ] Be able to install directly from NixOS iso
- [ ] Be able to install just home-manager config to a non-NixOS Linux distro
- [ ] Be able to detect EFI mount point for systemd-boot?
- [X] +Be able to detect UEFI or BIOS and switch config as needed+
- [ ] ??? (open up an issue if you think there is anything else I should try to figure out)
** Manual Install Procedure
If you instead want to install this manually to see all the steps (kind of like an Arch install before the archinstall script existed), you can follow this following procedure:
Currently, the only supported install method is installing manually. This way yuo can see all the steps (kind of like an Arch install before the archinstall script existed), you can follow this following procedure:
*** Clone Repo and Modify Configuration
Start by cloning the repo:
Start by cloning the repo to =/etc/nixos=:
#+BEGIN_SRC sh :noeval
git clone https://gitlab.com/librephoenix/nixos-config.git ~/.dotfiles
sudo mv /etc/nixos /etc/nixos.bkp
git clone https://gitlab.com/librephoenix/nixos-config.git /etc/nixos
#+END_SRC
Any custom directory should also work:
@@ -106,50 +18,32 @@ Any custom directory should also work:
git clone https://gitlab.com/librephoenix/nixos-config.git /your/custom/directory
#+END_SRC
If you install to a custom directory, make sure to edit the =userSettings.dotfilesDir= in the beginning [[./flake.nix][flake.nix]], or else my [[./system/bin/phoenix.nix][phoenix wrapper script]] won't work.
If you install to a custom directory, make sure to edit =systemSettings.dotfilesDir= in the system configuration, or else the [[./system/bin/phoenix.nix][phoenix wrapper script]] won't work.
#+BEGIN_SRC nix :noeval
...
let
...
# ----- USER SETTINGS ----- #
dotfilesDir = "/your/custom/directory"; # username
...
# somewhere in system-level config:
{ config, lib, pkgs, ...}:
{
systemSettings.dotfilesDir = "/your/custom/directory";
}
#+END_SRC
To get the hardware configuration on a new system, either copy from =/etc/nixos/hardware-configuration.nix= or run:
To configure a new system, navigate to the [[./hosts][hosts]] directory and copy the [[./hosts/TEMPLATE][TEMPLATE]] directory. Name the copy whatever you want the new hostname to be (needs to match the hostname exactly).
Next, configure the resulting =configuration.nix= and =home.nix= with the available options. Make sure to change all references to =USERNAME=, =NAME= and =EMAIL= for your desired user(s).
Next, you must copy or generate the new system's hardware-config into your specific host's =hardware-configuration.nix=. To get the hardware configuration on a new system, either copy from =/etc/nixos.bkp/hardware-configuration.nix= or run:
#+BEGIN_SRC sh :noeval
sudo nixos-generate-config --show-hardware-config > ~/.dotfiles/system/hardware-configuration.nix
sudo nixos-generate-config --show-hardware-config > /etc/nixos/hosts/YOURHOSTNAMEHERE/hardware-configuration.nix
#+END_SRC
Also, if you have a differently named user account than my default (=emmet=), you /must/ update the following lines in the let binding near the top of the [[./flake.nix][flake.nix]]:
#+BEGIN_SRC nix :noeval
...
let
...
# ----- USER SETTINGS ----- #
username = "YOURUSERNAME"; # username
name = "YOURNAME"; # name/identifier
...
#+END_SRC
There are many more config options there that you may also want to change as well.
The build will fail if you are booting from BIOS instead of UEFI, unless change some of the system settings of the flake. Change =bootMode= to "bios" and set the =grubDevice= appropriately for your system (i.e. =/dev/vda= or =/dev/sda=).
#+begin_src nix :noeval
...
let
# ---- SYSTEM SETTINGS ---- #
...
bootMode = "bios"; # uefi or bios
grubDevice = "/dev/vda"; # device identifier for grub; find this by running lsblk
...
#+end_src
Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled.
Disclaimer: If you install my =homelab= or =worklab= profiles /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/:
- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile
- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile
Disclaimer: If you copy my =ori= host config to setup a sever with NixOS, /MAKE SURE YOU CHANGE OR REMOVE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/ (see [[./hosts/ori/configuration.nix][configuration.nix]]).
*** Clone and Setup Secrets Config Repo
Clone and setup the =/etc/nixos.secrets= directory using my template [[https://gitlab.com/librephoenix/nixos-secrets-template][repo]]. Intructions on how to set it up can be found in that repository. This will allow you to track your main config to a public repo, without exposing /all/ of your configuration options publically.
If you'd rather not set that up, you can just delete all references to the =secrets= input in the =flake.nix= and it will stop complaining about the input not being found!
*** Rebuild and Switch System Config
Once the variables are set, then switch into the system configuration by running:
@@ -161,42 +55,17 @@ or for your own custom directory:
sudo nixos-rebuild switch --flake /your/custom/directory#system
#+END_SRC
*** Intall and Switch Home Manager Config
Home manager can be installed and the configuration activated with:
Subsequent rebuilds can now use my =phoenix= wrapper script to rebuild:
#+BEGIN_SRC sh :noeval
nix run home-manager/master -- switch --flake ~/.dotfiles#user
#+END_SRC
or for your own custom directory:
#+BEGIN_SRC sh :noeval
nix run home-manager/master -- switch --flake /your/custom/directory#user
phoenix sync
#+END_SRC
** FAQ
*** =home-manager switch --flake .#user= Command Fails
If it fails with something to the effect of "could not download {some image file}" then that just means that one of my themes is having trouble downloading the background image. To conserve on space in the repo, my themes download the relevant wallpapers directly from their source, but that also means that if the link is broken, =home-manager switch= fails.
I have included a script in the [[./themes][themes directory]] named [[./themes/background-test.sh][background-test.sh]] which performs a rough test on every theme background url, reporting which are broken.
If you're having this error, navigate to the [[./flake.nix][flake.nix]] and select any theme with a good background wallpaper link. As long as it is able to download the new wallpaper, it should be able to build.
*** Do I have to put the configuration files in =~/.dotfiles=?
No. You can put them in literally any directory you want. I just prefer to use =~/.dotfiles= as a convention. If you change the directory, do keep in mind that the above scripts must be modified, replacing =~/.dotfiles= with whatever directory you want to install them to. Also, you may want to modify the =dotfilesDir= variable in =flake.nix=.
*** So I cloned these dotfiles into ~/.dotfiles, and now there are system-level files owned by my user account.. HOW IS THIS SECURE?!
If you're worried about someone modifying your system-level (root configuration) files as your unpriveleged user, see [[./harden.sh][harden.sh]].
*** I installed this to a VM and when I log in, it crashes and sends me back to the login manager (SDDM)?
Enable 3D acceleration for your virtual machine. Hyprland doesn't work without it.
*** It fails installing with some weird errors about grub or a bootloader?
It will 100% fail if you test it with a non-default boot configuration. It might even give this error otherwise! If this is the case, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before installing again.
*** It's complaining about not finding an input called secrets?
Either setup the =/etc/nixos.secrets= directory using my template [[https://gitlab.com/librephoenix/nixos-secrets-template][repo]] or delete all references to the =secrets= input in the =flake.nix=!
*** The install seems to work, but when I login, I'm missing a lot of stuff (partial install)
This can happen if you run the autoinstall script on a system that already has a desktop environment, or if any other (non-Nix-store-symlink) config files are in the way of the config files generated by home-manager. In these cases, home-manager refuses to build anything, even if there's just one file in the way. If you try running =nix run home-manager/master -- switch --flake ~/.dotfiles#user=, it should throw an error at the end with something like:
#+begin_example
Existing file '/home/user/.gtkrc-2.0' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.gtkrc-2.0'
Existing file '/home/user/.config/Trolltech.conf' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.config/Trolltech.conf'
Existing file '/home/user/.config/user-dirs.conf' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.config/user-dirs.conf'
...
#+end_example
The current solution to this is to delete or move the files mentioned so that home-manager can evaluate. Once the files are out of the way, just run =nix run home-manager/master -- switch --flake ~/.dotfiles#user= again and it should work!
*** You used to have an auto-install script! Where did it go?
My old [[https://www.youtube.com/watch?v=Dm11dcJ0vWY][auto-install script]] was kind of cool, but I found it wasn't really stable (even for me). I'll probably revisit this at some point (looking at you [[https://github.com/nix-community/nixos-anywhere][nixos-everywhere]] and [[https://github.com/nix-community/disko][disko]]).

View File

@@ -9,21 +9,6 @@ imports = [ import1.nix
];
#+END_SRC
My system-level Nix modules are organized into this directory:
- [[./hardware-configuration.nix][hardware-configuration]] - Default hardware config generated for my system
- [[./bin][bin]] - My own scripts
- [[./bin/phoenix.nix][phoenix]] - My nix command wrapper
- [[./app][app]] - Necessary system-level configuration to get various apps working
- [[./hardware][hardware]] - Hardware configurations I may need to use
- [[./security][security]] - System-level security stuff
- [[./style][style]] - Stylix setup (system-wide base16 theme generation)
- [[./wm][wm]] - Necessary system-level configuration to get various window managers, wayland compositors, and/or desktop environments working
Modules in this directory are used are system-level (root) configurations.
** Variables imported from flake.nix
Variables can be imported from [[../flake.nix][flake.nix]] by setting the =specialArgs= block inside the flake (see [[../flake.nix][my flake]] for more details). This allows variables to merely be managed in one place ([[../flake.nix][flake.nix]]) rather than having to manage them in multiple locations.
I use this to pass a few attribute sets:
- =userSettings= - Settings for the normal user (see [[../flake.nix][flake.nix]] for more details)
- =systemSettings= - Settings for the system (see [[../flake.nix][flake.nix]] for more details)
- =inputs= - Flake inputs (see [[../flake.nix][flake.nix]] for more details)
- =pkgs-stable= - Allows me to include stable versions of packages along with (my default) unstable versions of packages
# TODO add list of all options

View File

@@ -25,6 +25,7 @@ in
(lib.mkIf (cfg.variant == "hardened") pkgs.linuxPackages_cachyos-hardened)
];
services.scx.enable = true;
services.scx.package = pkgs.scx.rustscheds;
services.scx.scheduler = "scx_lavd";
boot.consoleLogLevel = 0;
};

View File

@@ -38,7 +38,7 @@
chown -R 0:0 ${config.systemSettings.dotfilesDir};
chown -R 0:0 ${config.systemSettings.secretsFlakeDir};
pushd ${config.systemSettings.dotfilesDir} &> /dev/null;
nixos-rebuild switch;
systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild switch;
popd &> /dev/null;
exit 0;
elif [ "$1" = "update" ]; then
@@ -78,21 +78,21 @@
chown -R 0:0 ${config.systemSettings.dotfilesDir};
chown -R 0:0 ${config.systemSettings.secretsFlakeDir};
pushd ${config.systemSettings.dotfilesDir} &> /dev/null;
nixos-rebuild build --flake .#snowfire;
attic push emmet ./result;
rm ./result;
nixos-rebuild build --flake .#duskfall;
attic push emmet ./result;
rm ./result;
nixos-rebuild build --flake .#zenith;
attic push emmet ./result;
rm ./result;
nixos-rebuild build --flake .#stardust;
attic push emmet ./result;
rm ./result;
nixos-rebuild build --flake .#ori;
attic push emmet ./result;
rm ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#snowfire;
systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#duskfall;
systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#zenith;
systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#stardust;
systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#ori;
systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result;
systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result;
exit 0;
elif [ "$1" = "lock" ]; then
if [ "$#" -gt 1 ]; then
@@ -113,16 +113,18 @@
echo "Warning: The 'gc' command only accepts one argument (collect_older_than)";
fi
if [ "$2" = "full" ]; then
nix-collect-garbage --delete-old;
systemd-inhibit --what sleep:idle:handle-lid-switch nix-collect-garbage --delete-old;
elif [ "$2" ]; then
nix-collect-garbage --delete-older-than $2;
systemd-inhibit --what sleep:idle:handle-lid-switch nix-collect-garbage --delete-older-than $2;
else
nix-collect-garbage --delete-older-than 30d;
systemd-inhibit --what sleep:idle:handle-lid-switch nix-collect-garbage --delete-older-than 30d;
fi
exit 0;
fi
'')
];
# FIXME this thing doesn't work at all
systemd.services."phoenix-system-builder" = lib.mkIf config.systemSettings.systemBuilder.enable {
path = with pkgs; [
openssh git nix nixos-rebuild

View File

@@ -1,12 +1,19 @@
{ config, lib, inputs, ... }:
let
blocklist = builtins.readFile "${inputs.blocklist-hosts}/alternates/gambling-porn/hosts";
allowedHosts = config.systemSettings.security.blocklist.allowedHosts;
hostsFileDeletions = builtins.genList (x: "0.0.0.0 " + (builtins.elemAt allowedHosts x)) (builtins.length allowedHosts);
blocklist = builtins.replaceStrings hostsFileDeletions (builtins.genList (x: "") (builtins.length hostsFileDeletions)) (builtins.readFile "${inputs.blocklist-hosts}/alternates/gambling-porn/hosts");
cfg = config.systemSettings.security.blocklist;
in {
options = {
systemSettings.security.blocklist = {
enable = lib.mkEnableOption "Enable basic host blocking for bad websites";
allowedHosts = lib.mkOption {
default = [ ];
description = "List of hosts to allow (remove from blocklist)";
type = lib.types.listOf lib.types.str;
};
};
};

View File

@@ -10,7 +10,7 @@ in
enable = lib.mkEnableOption "Enable stylix theming";
};
systemSettings.stylix.theme = lib.mkOption {
default = "io";
default = "orichalcum";
type = lib.types.enum (builtins.attrNames (lib.filterAttrs (name: type: type == "directory") (builtins.readDir ../../themes)));
description = "Theme for stylix to use system wide. A list of themes can be found in the `themes` directory.";
};

View File

@@ -3,7 +3,7 @@
slug = "io";
author = "LibrePhoenix (https://github.com/librephoenix)";
credits = "Forked from Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77))";
description = "Flagship theme of the LibrePhoenix Channel, named after one of Jupiter's moons";
description = "Former flagship theme of the LibrePhoenix Channel, named after one of Jupiter's moons";
polarity = "dark";
backgroundUrl = "https://images.hdqwalls.com/wallpapers/aurora-s-embrace-a-borealis-beauty-in-anime-ub.jpg";
backgroundSha256 = "sha256-GjM/Bu0zispdtPCFPzAk+zGlKYYg5XwTTxZ0TXOW9Fg=";

View File

@@ -0,0 +1,8 @@
#+title: Orichalcum
#+author: Emmet
"Orichalcum" theme, which is a fork of Uwunicorn originally by Fernando Marques ([[https://github.com/RakkiUwU]]) and Gabriel Fontes ([[https://github.com/Misterio77]]).
[[https://raw.githubusercontent.com/librephoenix/nixos-config-screenshots/main/hyprland/uwunicorn.png]]
[[https://wallpapers.com/images/hd/alluring-sunset-anime-scenery-r2gmgtcp8h9iwo9u.webp][Background Link]]

View File

@@ -0,0 +1,26 @@
{
scheme = "Orichalcum";
slug = "orichalcum";
author = "LibrePhoenix (https://github.com/librephoenix)";
credits = "Forked from Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77))";
description = "Flagship theme of the LibrePhoenix Channel, named after a mythical metal";
polarity = "dark";
backgroundUrl = "https://wallpapers.com/images/hd/alluring-sunset-anime-scenery-r2gmgtcp8h9iwo9u.webp";
backgroundSha256 = "sha256-jOd9SznQTa8AoO6cZGy0LhN8lBadrRf60FvyCEs2tLo=";
base00 = "#1a181a";
base01 = "#262326";
base02 = "#302c30";
base03 = "#463f47";
base04 = "#bfaab7";
base05 = "#dbd7da";
base06 = "#dbd7da";
base07 = "#faf7f9";
base08 = "#da4747";
base09 = "#fd6d35";
base0A = "#ffa846";
base0B = "#fbc024";
base0C = "#8049d5";
base0D = "#b368ec";
base0E = "#e27fc6";
base0F = "#e64464";
}

View File

@@ -9,39 +9,6 @@ imports = [ import1.nix
];
#+END_SRC
My user-level Nix modules are organized into this directory:
- [[./app][app]] - Apps or collections of apps bundled with my configs
- [[./app/browser][browser]] - Used to set default browser
- [[./app/dmenu-scripts][dmenu-scripts]]
- [[./app/doom-emacs][doom-emacs]]
- [[./app/flatpak][flatpak]] - Installs flatpak as a utility (flatpaks must be installed manually)
- [[./app/games][games]] - Gaming setup
- [[./app/git][git]]
- [[./app/keepass][keepass]]
- [[./app/ranger][ranger]]
- [[./app/terminal][terminal]] - Configuration for terminal emulators
- [[./app/virtualization][virtualization]] - Virtualization and compatability layers
- [[./lang][lang]] - Various bundled programming languages
- I will probably get rid of this in favor of a shell.nix for every project, once I learn how that works
- [[./pkgs][pkgs]] - "Package builds" for packages not in the Nix repositories
- [[./pkgs/pokemon-colorscripts.nix][pokemon-colorscripts]]
- [[./pkgs/rogauracore.nix][rogauracore]] - not working yet
- [[./shell][shell]] - My default bash and zsh configs
- [[./shell/sh.nix][sh]] - bash and zsh configs
- [[./shell/cli-collection.nix][cli-collection]] - Curated useful CLI utilities
- [[./style][style]] - Stylix setup (system-wide base16 theme generation)
- [[./wm][wm]] - Window manager, compositor, wayland compositor, and/or desktop environment setups
- [[./wm/hyprland][hyprland]]
- [[./wm/xmonad][xmonad]]
- [[./wm/picom][picom]]
Modules in this directory are used are user-level configurations.
** Variables imported from flake.nix
Variables can be imported from [[../flake.nix][flake.nix]] by setting the =extraSpecialArgs= block inside the flake (see [[../flake.nix][my flake]] for more details). This allows variables to merely be managed in one place ([[../flake.nix][flake.nix]]) rather than having to manage them in multiple locations.
I use this to pass a few attribute sets:
- =userSettings= - Settings for the normal user (see [[../flake.nix][flake.nix]] for more details)
- =systemSettings= - Settings for the system (see [[../flake.nix][flake.nix]] for more details)
- =inputs= - Flake inputs (see [[../flake.nix][flake.nix]] for more details)
- =pkgs= - Set to unstable for client devices and stable for server devices
- =pkgs-stable= - Allows me to include stable versions of packages along with (my default) unstable versions of packages
- =pkgs-unstable= - Allows me to force unstable versions of packages on server devices
# TODO add list of all options

View File

@@ -13,8 +13,9 @@ in {
programs.brave.enable = true;
programs.brave.package = pkgs.brave;
programs.brave.extensions = [
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; }
{ id = "oboonakemofpalcgghocfoadofidjkkk"; }
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock
{ id = "oboonakemofpalcgghocfoadofidjkkk"; } # keepassxc
{ id = "pnidmkljnhbjfffciajlcpeldoljnidn"; } # linkwarden
];
programs.brave.commandLineArgs = [
"--password-store=gnome-libsecret"

View File

@@ -309,7 +309,6 @@ config.bind(',m', 'hint links spawn mpv {hint-url}')
config.bind(',co', 'spawn container-open')
config.bind(',cf', 'hint links userscript container-open')
# TODO stylix user CSS
# current_stylesheet_directory = '~/.config/qutebrowser/themes/'
# current_stylesheet = base16_theme+'-all-sites.css'
# current_stylesheet_path = current_stylesheet_directory + current_stylesheet

View File

@@ -38,6 +38,10 @@ in {
org-roam org-node org-node-fakeroam
vterm vterm-toggle sudo-edit
direnv
svelte-mode
typescript-mode
sass-mode
rainbow-mode
(epkgs.callPackage (
{ lib, fetchurl, trivialBuild }:

View File

@@ -166,7 +166,6 @@
:mode
(("\\.phtml\\'" . web-mode)
("\\.php\\'" . web-mode)
("\\.svelte\\'" . web-mode)
("\\.tpl\\'" . web-mode)
("\\.[agj]sp\\'" . web-mode)
("\\.as[cp]x\\'" . web-mode)
@@ -174,6 +173,10 @@
("\\.mustache\\'" . web-mode)
("\\.djhtml\\'" . web-mode)))
(use-package svelte-mode)
(use-package typescript-mode)
(use-package sass-mode)
;; Magit
(use-package magit
:commands (magit magit-status)
@@ -195,8 +198,16 @@
;; Projectile
(use-package projectile
:custom
(projectile-switch-project-action 'magit-status)
:init
(projectile-mode +1))
(projectile-mode +1)
;; Project keybinds
(defun projectile-switch-project-commander ()
(interactive)
(projectile-switch-project t))
(def-projectile-commander-method ?g "Open magit status" (magit-status))
(def-projectile-commander-method ?/ "Grep through project" (projectile-grep)))
;; Being able to undo is nice...
(use-package undo-fu)
@@ -309,8 +320,8 @@
(progn (dired-omit-mode 1) (setq dired-show-dotfiles nil))))
(evil-define-key 'normal dired-mode-map (kbd "H") 'toggle-dired-omit-mode)
;; Project keybinds
(evil-define-key 'motion 'global (kbd "<leader>pp") 'projectile-switch-project)
(evil-define-key 'motion 'global (kbd "<leader>pp") 'projectile-switch-project-commander)
(evil-define-key 'motion 'global (kbd "<leader>pg") 'projectile-switch-project)
(evil-define-key 'motion 'global (kbd "<leader>pf") 'projectile-find-file)
(evil-define-key 'motion 'global (kbd "<leader>pa") 'projectile-add-known-project)
(evil-define-key 'motion 'global (kbd "<leader>/") 'projectile-grep)
@@ -947,7 +958,7 @@ Made for `org-tab-first-hook' in evil-mode."
(setq org-roam-capture-templates '(("d" "default" plain "%?" :unnarrowed t :target (file+head
"${slug}-%<%Y%m%d%H%M%S>.org" "#+title: ${title}"))))
(evil-define-key 'motion 'global (kbd "<leader>N.") 'org-node-find)
(evil-define-key 'motion 'global (kbd "<leader>Nr") 'org-roam-refile)
(evil-define-key 'motion 'global (kbd "<leader>Nr") 'org-node-refile)
(evil-define-key 'motion 'global (kbd "<leader>Nb") 'org-roam-buffer-toggle)
(evil-define-key 'motion 'global (kbd "<leader>nrdd") 'org-roam-dailies-goto-date)
(evil-define-key 'motion 'global (kbd "<leader>nrdt") 'org-roam-dailies-goto-today)
@@ -957,6 +968,8 @@ Made for `org-tab-first-hook' in evil-mode."
(use-package org-node
:after (org org-roam)
:config
(setq org-mem-do-sync-with-org-id t)
(org-mem-updater-mode)
(setq org-node-extra-id-dirs '("~/Notes/"))
(setq org-id-locations-file "~/Notes/.org-id-locations")
(setq org-node-extra-id-dirs-exclude '("~/Notes/daily/"))
@@ -1009,6 +1022,12 @@ Made for `org-tab-first-hook' in evil-mode."
:init
(global-org-modern-mode))
;; Markdown setup for quartz
(use-package markdown-mode
:custom
(markdown-enable-wiki-links t)
(markdown-wiki-link-alias-first nil))
;; Olivetti
(use-package olivetti
:custom
@@ -1065,5 +1084,7 @@ Made for `org-tab-first-hook' in evil-mode."
:init
(add-hook 'after-init-hook #'scratch-plus-mode))
(use-package rainbow-mode)
(provide 'init)
;;; init.el ends here

View File

@@ -114,16 +114,17 @@ in
"alacritty --class scratch_numbat -e numbat"
"alacritty --class scratch_btm -e btm"
"element-desktop"
"sleep 5 && hyprctl keyword bind SUPER,S,exec,${spawnBrowser}"
];
general = {
layout = "master";
border_size = 3;
border_size = 0;
"col.active_border" = if performance then "0xff${config.lib.stylix.colors.base0B}" else "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg";
"col.inactive_border" = "0xff${config.lib.stylix.colors.base02}";
resize_on_border = true;
gaps_in = 6;
gaps_out = 6;
gaps_in = 14;
gaps_out = 14;
};
group = {
@@ -140,12 +141,14 @@ in
shadow = {
enabled = (!performance);
};
rounding = 8;
rounding = 0;
dim_special = 0.0;
dim_inactive = true;
dim_strength = 0.15;
blur = {
enabled = (!performance);
size = 5;
passes = 2;
size = 10;
passes = 3;
ignore_opacity = true;
contrast = 1.17;
brightness = (if (config.stylix.polarity == "dark") then "0.65" else "1.45");
@@ -208,8 +211,6 @@ in
};
bind = [
"SUPER,code:9,exec,nwggrid-wrapper"
"SUPER,code:66,exec,nwggrid-wrapper"
"SUPER,SPACE,fullscreen,1"
"SUPERSHIFT,F,fullscreen,0"
"SUPER,Y,workspaceopt,allfloat"
@@ -229,7 +230,6 @@ in
"SUPER,RETURN,exec,${term}"
"SUPERSHIFT,RETURN,exec,${term} --class float_term"
"SUPER,A,exec,${spawnEditor}"
"SUPER,S,exec,${spawnBrowser}"
"SUPERCTRL,S,exec,container-open"
"SUPERCTRL,P,pin"
"SUPER,code:47,exec,fuzzel"
@@ -245,20 +245,7 @@ in
''CTRL,code:107,exec,grim -g "$(slurp)" - | wl-copy''
''SHIFTCTRL,code:107,exec,grim -g "$(slurp -o)" - | wl-copy''
"SUPERCTRL,code:107,exec,grim - | wl-copy"
",code:122,exec,swayosd-client --output-volume lower"
",code:123,exec,swayosd-client --output-volume raise"
",code:121,exec,swayosd-client --output-volume mute-toggle"
",code:256,exec,swayosd-client --output-volume mute-toggle"
"SHIFT,code:122,exec,swayosd-client --output-volume lower"
"SHIFT,code:123,exec,swayosd-client --output-volume raise"
",code:232,exec,swayosd-client --brightness lower"
",code:233,exec,swayosd-client --brightness raise"
",code:237,exec,brightnessctl --device='asus::kbd_backlight' set 1-"
",code:238,exec,brightnessctl --device='asus::kbd_backlight' set +1"
",code:255,exec,airplane-mode"
"SUPER,C,exec,wl-copy $(hyprpicker)"
"SUPERSHIFT,S,exec,systemctl suspend"
"SUPERCTRL,L,exec,loginctl lock-session"
"SUPERCTRL,G,exec,hyprgamemode"
"SUPER,H,movefocus,l"
"SUPER,J,movefocus,d"
@@ -306,6 +293,11 @@ in
"SUPER,P,exec,keepmenu"
"SUPERSHIFT,P,exec,hyprprofile-dmenu"
"SUPERCTRL,R,exec,phoenix refresh"
"SUPER,S,exec,${spawnBrowser}"
];
bindr = [
"SUPER,SUPER_L,exec,nwggrid-wrapper"
];
bindm = [
@@ -315,6 +307,19 @@ in
bindl = [
",switch:on:Lid Switch,exec,loginctl lock-session"
"SUPERSHIFT,S,exec,systemctl suspend"
"SUPERCTRL,L,exec,loginctl lock-session"
",code:122,exec,swayosd-client --output-volume lower"
",code:123,exec,swayosd-client --output-volume raise"
",code:121,exec,swayosd-client --output-volume mute-toggle"
",code:256,exec,swayosd-client --output-volume mute-toggle"
"SHIFT,code:122,exec,swayosd-client --output-volume lower"
"SHIFT,code:123,exec,swayosd-client --output-volume raise"
",code:232,exec,swayosd-client --brightness lower"
",code:233,exec,swayosd-client --brightness raise"
",code:237,exec,brightnessctl --device='asus::kbd_backlight' set 1-"
",code:238,exec,brightnessctl --device='asus::kbd_backlight' set +1"
",code:255,exec,airplane-mode"
];
windowrulev2 = [
@@ -456,13 +461,13 @@ in
keyword decoration:blur:enabled 0;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword general:border_size 0;\
keyword decoration:rounding 0";
pkill -STOP electron;
pkill -STOP syncthing;
pkill -STOP emacs;
pkill -STOP emacsclient;
systemctl --user stop nextcloud-client;
#pkill -STOP electron;
#pkill -STOP syncthing;
#pkill -STOP emacs;
#pkill -STOP emacsclient;
#systemctl --user stop nextcloud-client;
pkill ashell;
pkill hypridle;
exit;
@@ -475,11 +480,11 @@ in
keyword general:gaps_out ${builtins.toString config.wayland.windowManager.hyprland.settings.general.gaps_out};\
keyword general:border_size ${builtins.toString config.wayland.windowManager.hyprland.settings.general.border_size};\
keyword decoration:rounding ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.rounding}";
pkill -CONT electron;
pkill -CONT syncthing;
pkill -CONT emacs;
pkill -CONT emacsclient;
systemctl --user start nextcloud-client;
#pkill -CONT electron;
#pkill -CONT syncthing;
#pkill -CONT emacs;
#pkill -CONT emacsclient;
#systemctl --user start nextcloud-client;
WGPU_BACKEND=gl ashell & disown;
hypridle & disown;
exit;
@@ -663,7 +668,7 @@ bluetooth_more_cmd = "blueman-manager"
style = "Solid"
opacity = ${if performance then "1.0" else "0.7"}
background_color = "#${config.lib.stylix.colors.base00}88"
primary_color = "#${config.lib.stylix.colors.base0B}"
primary_color = "#${config.lib.stylix.colors.base0A}"
secondary_color = "#${config.lib.stylix.colors.base01}"
success_color = "#${config.lib.stylix.colors.base0A}"
danger_color = "#${config.lib.stylix.colors.base08}"
@@ -764,6 +769,7 @@ backdrop = 0.0
valign = center
}
'';
services.hyprpolkitagent.enable = true;
services.swayosd.enable = true;
services.swayosd.topMargin = 0.5;
home.file.".config/nwg-launchers/nwggrid/terminal".text = "alacritty -e";
@@ -789,8 +795,8 @@ backdrop = 0.0
border = config.lib.stylix.colors.base08 + "ff";
};
border = {
width = 3;
radius = 7;
width = 0;
radius = 0;
};
};
services.fnott.enable = true;

View File

@@ -1,4 +1,4 @@
{ config, lib, pkgs, ...}:
{ config, lib, pkgs, pkgs-stable, ...}:
let
cfg = config.userSettings.ai;
@@ -10,6 +10,13 @@ in {
};
config = lib.mkIf cfg.enable {
home.packages = [ pkgs.local-ai ];
home.packages = [ pkgs-stable.local-ai
(pkgs.writeScriptBin "aid"
''
# ai daemon
pushd ~/.config/local-ai;
local-ai &> /dev/null & disown;
popd;'')
];
};
}

View File

@@ -57,7 +57,7 @@ in {
home.packages = with pkgs; [
gnugrep gnused w3m
bat eza bottom fd bc
direnv nix-direnv
direnv nix-direnv devenv
];
programs.neovim = {

View File

@@ -31,9 +31,11 @@ in {
XDG_BOOK_DIR = "${config.home.homeDirectory}/Media/Books";
XDG_VM_DIR = "${config.home.homeDirectory}/Machines";
XDG_NOTES_DIR = "${config.home.homeDirectory}/Notes";
XDG_KP_DIR = "${config.home.homeDirectory}/KP";
};
};
xdg.mime.enable = true;
xdg.mimeApps.enable = true;
home.file.External.source = config.lib.file.mkOutOfStoreSymlink "/run/media/" + config.home.username;
};
}

View File

@@ -1,14 +1,12 @@
#+title: I never thought I'd have to do this, but here we are
#+author: Emmet
Since I use =nixpkgs-unstable= (I am an Arch user by heart), there are some cases where certain packages will break or fail to build (usually due to my extremely customized, non-standard system).
Since I use =nixpkgs-unstable= (I am an Arch user (btw) at heart), there are some cases where certain packages will break or fail to build (usually due to my extremely customized, non-standard system).
With Nix, I /could/ just rollback everything and wait to update until an upstream patch fixes things, but if it's a quick fix, I'd rather just patch it in immediately so that everything else can stay up to date.
Patches end up in and out of this directory. Ideally, there shouldn't be any patches here!
** List of Patches
** List of Current Patches
Here is a list of patches in this directory, along with a more detailed description of why it's necessary:
| Patch | Reason |
|------------------------------+----------------------------------------------------------------------------------------------|
- n/a