110 lines
2.7 KiB
Org Mode
110 lines
2.7 KiB
Org Mode
#+title: Misc NixOS Configurations
|
||||
|
|
#+setupfile: headers
|
|||
|
|
|
|||
|
|
* Misc NixOS Configurations
|
|||
|
|
|
|||
|
|
This module hosts some misc configuration I am unsure where to put
|
|||
|
|
elsewhere than here. Don’t expect this file to be coherent, but expect
|
|||
|
|
it to be quite short.
|
|||
|
|
|
|||
|
|
This module declares the aspect =nixos.misc=, which is used by all my
|
|||
|
|
hosts.
|
|||
|
|
|
|||
|
|
#+begin_src nix :tangle yes
|
|||
|
|
{
|
|||
|
|
flake.modules.nixos.misc = {
|
|||
|
|
lib,
|
|||
|
|
config,
|
|||
|
|
...
|
|||
|
|
}:
|
|||
|
|
with lib; let
|
|||
|
|
cfg = config.mySystem.misc;
|
|||
|
|
in {
|
|||
|
|
<<timezone-option>>
|
|||
|
|
<<layout-option>>
|
|||
|
|
|
|||
|
|
config = {
|
|||
|
|
<<layout-config>>
|
|||
|
|
<<timezone-config>>
|
|||
|
|
<<envfs>>
|
|||
|
|
<<orca>>
|
|||
|
|
<<clean-tmp>>
|
|||
|
|
<<completion>>
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
** System Timezone
|
|||
|
|
First, let me declare the timezone. I’ll set it as an option, as not
|
|||
|
|
all my machines live in the same place, but I’ll default to
|
|||
|
|
Metropolitan France’s timezone.
|
|||
|
|
#+name: timezone-option
|
|||
|
|
#+begin_src nix
|
|||
|
|
options.mySystem.misc.timezone = mkOption {
|
|||
|
|
type = types.str;
|
|||
|
|
default = "Europe/Paris";
|
|||
|
|
};
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
Now, I can set it for my system.
|
|||
|
|
#+name: timezone-config
|
|||
|
|
#+begin_src nix
|
|||
|
|
time.timeZone = cfg.timezone;
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
** TTY Keyboard Layout
|
|||
|
|
Now, I can set the TTY’s keyboard config. Most of my machines use the
|
|||
|
|
Bépo layout everywhere, but I do share one whose owner doesn’t use it,
|
|||
|
|
so I’ll let this as an option to be set, defaulting to the default
|
|||
|
|
French layout.
|
|||
|
|
#+name: layout-option
|
|||
|
|
#+begin_src nix
|
|||
|
|
options.mySystem.misc.keymap = mkOption {
|
|||
|
|
type = types.str;
|
|||
|
|
default = "fr";
|
|||
|
|
example = "fr-bepo";
|
|||
|
|
description = "Keymap to use in the TTY console";
|
|||
|
|
};
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
Now, I can set it on my system.
|
|||
|
|
#+name: layout-config
|
|||
|
|
#+begin_src nix
|
|||
|
|
console.keyMap = cfg.keymap;
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
** Truly Miscelaneous Config
|
|||
|
|
First, some scripts are written with the assumption that some
|
|||
|
|
utilities are always in the same place, such as =/bin/bash=. It is,
|
|||
|
|
however, not always the case with NixOS. Mic92’s [[https://github.com/Mic92/envfs][envfs]] solves that.
|
|||
|
|
#+name: envfs
|
|||
|
|
#+begin_src nix
|
|||
|
|
services.envfs.enable = true;
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
I have no idea why, but sometimes, [[https://orca.gnome.org/][Orca]] get activated without my
|
|||
|
|
consent. So I hard-disable it here.
|
|||
|
|
#+name: orca
|
|||
|
|
#+begin_src nix
|
|||
|
|
services.orca.enable = false;
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
I was surprised to see =/tmp= still hold the same files after my first
|
|||
|
|
reboot in NixOS, I always assumed it was cleared on every reboot on
|
|||
|
|
every system. But I can enable this behaviour back.
|
|||
|
|
#+name: clean-tmp
|
|||
|
|
#+begin_src nix
|
|||
|
|
boot.tmp.cleanOnBoot = true;
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
Lastly, I want to make sure my shell completions work, so I’ll enable
|
|||
|
|
this.
|
|||
|
|
#+name: completion
|
|||
|
|
#+begin_src nix
|
|||
|
|
environment.pathsToLink = [
|
|||
|
|
"/share/bash-completion"
|
|||
|
|
"/share/zsh"
|
|||
|
|
];
|
|||
|
|
#+end_src
|