2023-04-23 05:50:54 +05:30
#+title : NixOS Config
2023-06-06 00:45:48 +05:30
#+author : Emmet
2023-04-23 02:29:37 +05:30
2023-05-06 17:46:35 +05:30
[[https://gitlab.com/librephoenix/nixos-config ][Main Repo Link (GitLab) ]]
2023-06-29 22:11:57 +05:30
[[https://github.com/librephoenix/nixos-config ][Mirror Repo Link (GitHub) ]]
2023-05-06 17:46:35 +05:30
2023-11-30 08:44:17 +05:30
[[https://codeberg.org/librephoenix/nixos-config ][Mirror Repo Link (Codeberg) ]]
2023-06-11 20:56:47 +05:30
** What is this repository?
2023-06-02 03:30:22 +05:30
These are my dotfiles (configuration files) for my NixOS setup(s).
2023-04-23 02:29:37 +05:30
2023-06-07 07:42:31 +05:30
Here is my main setup:
2023-11-05 00:47:17 +05:30
[[desktop.png ]]
2023-06-07 07:42:31 +05:30
2023-06-21 21:10:48 +05:30
** My 55+ 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 ][55+ themes ]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./themes ][themes directory ]] for more info and screenshots!
2023-06-11 20:56:47 +05:30
** Install
I wrote some reinstall notes for myself [[./install.org ][here (install.org) ]].
2023-04-23 02:29:37 +05:30
2023-06-11 20:56:47 +05:30
** Modules
Separate Nix files can be imported as modules using an import block:
#+BEGIN_SRC nix
2023-12-02 04:27:25 +05:30
imports = [ ./import1.nix
./import2.nix
2023-06-11 20:56:47 +05:30
...
];
2023-06-02 03:30:22 +05:30
#+END_SRC
2023-06-21 08:33:43 +05:30
This conveniently allows configurations to be (*cough cough) /modular/ (ba dum, tssss).
2023-06-07 07:42:31 +05:30
2023-06-11 20:56:47 +05:30
I have my modules separated into two groups:
- System-level - stored in the [[./system ][system directory ]]
2023-06-21 08:33:43 +05:30
- System-level modules are imported into configuration.nix, which is what is sourced into [[./flake.nix ][my flake (flake.nix) ]]
2023-06-11 20:56:47 +05:30
- User-level - stored in the [[./user ][user directory ]] (managed by home-manager)
2023-06-21 08:33:43 +05:30
- User-level modules are imported into home.nix, which is also sourced into [[./flake.nix ][my flake (flake.nix) ]]
2023-05-20 07:33:38 +05:30
2023-06-11 20:56:47 +05:30
More detailed information on these specific modules are in the [[./system ][system directory ]] and [[./user ][user directory ]] respectively.
2023-06-21 08:33:43 +05:30
2023-09-09 16:48:41 +05:30
** 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 ];
};
# configure pkgs
pkgs = import nixpkgs-patched { inherit system; };
# configure lib
lib = nixpkgs.lib;
#+END_SRC
Patches can either be local or remote, so you can even import unmerged pull requests by using =fetchpatch= and the raw patch url, i.e: https://github.com/NixOS/nixpkgs/pull/example.patch.
I currently curate patches local to this repo in the [[./patches ][patches ]] directory.
2023-06-21 08:33:43 +05:30
** 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
2023-08-21 04:25:05 +05:30
- [[./profiles/wsl ][WSL ]] - What I would run underneath Windows Subystem for Linux
2023-06-21 08:33:43 +05:30
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 ]].
2024-01-27 19:39:49 +05:30
** Star History
Didn't think this would get that many stars on GitHub, yet here we are:
2024-01-27 20:04:34 +05:30
[[https://api.star-history.com/svg?repos=librephoenix/nixos-config&secret=Z2l0aHViX3BhdF8xMUE3UU5XVVkwUkJ0YWNVVHFMdFFsX0dQVzJmVm5ETUlqaWVsMzVMVjc0V2NWbnNNNlV4RlA2M2cybkc1amZ6TTc2NENESlJBRUNma2FFZnlO&type=Date.png ]]