diff --git a/build_hm.sh b/build_hm.sh
index b675d9d..08a672b 100755
--- a/build_hm.sh
+++ b/build_hm.sh
@@ -17,7 +17,7 @@ function help {
echo " -h: Display this help message."
}
-while getopts "hvb" OPTION
+while getopts "h" OPTION
do
case "$OPTION" in
h)
diff --git a/curacao/backup/backup.sh b/curacao/backup/backup.sh
new file mode 100755
index 0000000..38448c2
--- /dev/null
+++ b/curacao/backup/backup.sh
@@ -0,0 +1,83 @@
+#!/usr/bin/env bash
+
+set -euxo pipefail
+
+# Parse arguments
+function help {
+ echo "Usage: $0 [-h|-i] volume"
+ echo "Backup BTRFS subvolume on rapido to razmo."
+ echo
+ echo "Arguments:"
+ echo " volume: Name of the subvolume to backup"
+ echo
+ echo "Options:"
+ echo " -h: Display this help message."
+ echo " -i: Don't fail if the receiving subvolume doesn't exist."
+}
+
+init=false
+while getopts "hi" OPTION
+do
+ case "$OPTION" in
+ h)
+ help
+ exit 0
+ ;;
+ i)
+ init=true
+ ;;
+ ?)
+ help
+ exit 2
+ ;;
+ esac
+done
+shift "$((OPTIND - 1))"
+
+if [ "$#" -ne 1 ]
+then
+ help
+ exit 2
+fi
+volume="$1"
+
+# Assertions
+[ -d "/mnt/rapido/${volume}" ]
+[ -d "/mnt/rapido/${volume}.bkp" ] || "$init"
+[ ! -d "/mnt/rapido/${volume}.new" ]
+[ -d "/mnt/razmo/${volume}.bkp" ] || "$init"
+[ -d "/mnt/razmo/${volume}" ] || "$init"
+[ ! -d "/mnt/razmo/${volume}.new" ]
+[ ! -d "/mnt/razmo/${volume}.snapshots" ]
+
+# Taking a snapshot of the running subvolume
+btrfs subvolume snapshot -r "/mnt/rapido/${volume}" "/mnt/rapido/${volume}.new"
+
+# Sending (the difference with) the last backup to the backup disk
+function error_handler() {
+ btrfs subvolume delete "/mnt/rapido/${volume}.new" || true
+ btrfs subvolume delete "/mnt/razmo/${volume}.new" || true
+}
+trap error_handler ERR
+if [ -d "/mnt/rapido/${volume}.bkp" ]
+then
+ btrfs send -p "/mnt/rapido/${volume}.bkp" "/mnt/rapido/${volume}.new" | btrfs receive /mnt/razmo
+else
+ btrfs send "/mnt/rapido/${volume}.new" | btrfs receive /mnt/razmo
+fi
+trap - ERR
+
+# Removing old backups and putting the new one in place
+[ ! -d "/mnt/rapido/${volume}.bkp" ] || btrfs subvolume delete "/mnt/rapido/${volume}.bkp"
+mv "/mnt/rapido/${volume}.new" "/mnt/rapido/${volume}.bkp"
+[ ! -d "/mnt/razmo/${volume}.bkp" ] || btrfs subvolume delete "/mnt/razmo/${volume}.bkp"
+mv "/mnt/razmo/${volume}.new" "/mnt/razmo/${volume}.bkp"
+
+# Create a writeable clone in case we need to boot on the HDD
+# Needs to move away then back the .snapshots folder
+[ ! -d "/mnt/razmo/${volume}/.snapshots" ] || mv "/mnt/razmo/${volume}/.snapshots" "/mnt/razmo/${volume}.snapshots"
+[ ! -d "/mnt/razmo/${volume}" ] || btrfs subvolume delete "/mnt/razmo/${volume}"
+btrfs subvolume snapshot "/mnt/razmo/${volume}.bkp" "/mnt/razmo/${volume}"
+[ ! -d "/mnt/razmo/${volume}.snapshots" ] || mv "/mnt/razmo/${volume}.snapshots" "/mnt/razmo/${volume}/.snapshots"
+
+sync
diff --git a/curacao/backup/default.nix b/curacao/backup/default.nix
new file mode 100644
index 0000000..5041c60
--- /dev/null
+++ b/curacao/backup/default.nix
@@ -0,0 +1,64 @@
+{ pkgs, lib, ... }:
+# MANU Snapper is not able to create the snapshot directory, so you'll need to do this after eventually running the backup script:
+# sudo btrfs subvol create /mnt/razmo/$subvolume/.snapshots
+let
+ backup_subvolumes = [ "nixos" "home.rapido" ];
+ backup_app = pkgs.writeShellApplication {
+ name = "backup-subvolume";
+ runtimeInputs = with pkgs; [ coreutils btrfs-progs ];
+ text = builtins.readFile ./backup.sh;
+ };
+ snapper_subvolumes = [ "nixos" "home.rapido" "home.razmo" ];
+in
+{
+ services =
+ let
+ default = {
+ # filesystem type
+ FSTYPE = "btrfs";
+
+ # run daily number cleanup
+ NUMBER_CLEANUP = true;
+ NUMBER_MIN_AGE = 1800;
+ NUMBER_LIMIT = 25;
+
+ # create hourly snapshots
+ TIMELINE_CREATE = true;
+
+ # cleanup hourly snapshots after some time
+ TIMELINE_CLEANUP = true;
+ TIMELINE_MIN_AGE = 1800;
+ TIMELINE_LIMIT_HOURLY = 24;
+ TIMELINE_LIMIT_DAILY = 31;
+ TIMELINE_LIMIT_WEEKLY = 8;
+ TIMELINE_LIMIT_MONTHLY = 0;
+ TIMELINE_LIMIT_YEARLY = 0;
+
+ # cleanup empty pre-post-pairs
+ EMPTY_PRE_POST_CLEANUP = true;
+ };
+ in
+ {
+ snapper.configs = lib.attrsets.mergeAttrsList (map (s: { "${s}" = default // { SUBVOLUME = "/mnt/razmo/${s}"; }; }) snapper_subvolumes);
+ };
+
+
+ systemd = {
+ services.bkp_rapido = {
+ description = "Make a snapshot of the SSD to the HDD";
+ before = [ "snapper-timeline.service" ];
+ serviceConfig = {
+ Type = "oneshot";
+ ExecStart = map (s: "${backup_app}/bin/backup-subvolume ${s}") backup_subvolumes;
+ };
+ # TODO Harden
+ };
+ timers.bkp_rapido = {
+ description = "Regular snapshot of SSD to HDD";
+ timerConfig = {
+ OnCalendar = "hourly";
+ };
+ wantedBy = [ "timers.target" ];
+ };
+ };
+}
diff --git a/curacao/dk.nix b/curacao/dk.nix
index 5f14889..d730d35 100644
--- a/curacao/dk.nix
+++ b/curacao/dk.nix
@@ -1,6 +1,4 @@
{ passwordFile ? "/should_not_be_needed_in_this_context", ... }:
-# FIXME Subvolumes for backup. If they're not created with the script. Add the script btw.
-# Doesn't seem like it's possible to decrypt luks partition at stage2, hence why everything is with a password now
# TODO Find a way to use keys in filesystem
# TODO Not relatime everywhere, thank you
# TODO Default options
@@ -86,7 +84,7 @@ in
mountOptions = [
"rw"
"relatime"
- "stripe=4"
+ # "stripe=4" # For some reason doesn't work on NixOS
];
};
};
diff --git a/curacao/options.nix b/curacao/options.nix
index 6bed395..45ab31a 100644
--- a/curacao/options.nix
+++ b/curacao/options.nix
@@ -3,15 +3,14 @@
frogeye = {
desktop = {
xorg = true;
- x11_screens = [ "HDMI-1-0" "eDP1" ];
+ x11_screens = [ "HDMI-1-0" "eDP-1" ];
maxVideoHeight = 1440;
numlock = true;
phasesBrightness = {
enable = true;
- backlight = "intel_backlight";
- jour = 40000;
- crepuscule = 10000;
- nuit = 1;
+ jour = "40000";
+ crepuscule = "10000";
+ nuit = "1";
};
};
dev = {
diff --git a/curacao/os.nix b/curacao/os.nix
index 16f476b..3f81444 100644
--- a/curacao/os.nix
+++ b/curacao/os.nix
@@ -5,6 +5,7 @@
./options.nix
./hardware.nix
./dk.nix
+ ./backup
];
networking.hostName = "curacao";
diff --git a/hm/common.nix b/hm/common.nix
index 85276af..da45364 100644
--- a/hm/common.nix
+++ b/hm/common.nix
@@ -54,13 +54,13 @@ in
TIME_STYLE = "+%Y-%m-%d %H:%M:%S";
# Less colors
LESS = "-R";
- LESS_TERMCAP_mb = "$'\E[1;31m'"; # begin blink
- LESS_TERMCAP_md = "$'\E[1;36m'"; # begin bold
- LESS_TERMCAP_me = "$'\E[0m'"; # reset bold/blink
- LESS_TERMCAP_so = "$'\E[01;44;33m'"; # begin reverse video
- LESS_TERMCAP_se = "$'\E[0m'"; # reset reverse video
- LESS_TERMCAP_us = "$'\E[1;32m'"; # begin underline
- LESS_TERMCAP_ue = "$'\E[0m'"; # reset underline
+ LESS_TERMCAP_mb = "$(echo $'\\E[1;31m')"; # begin blink
+ LESS_TERMCAP_md = "$(echo $'\\E[1;36m')"; # begin bold
+ LESS_TERMCAP_me = "$(echo $'\\E[0m')"; # reset bold/blink
+ LESS_TERMCAP_so = "$(echo $'\\E[01;44;33m')"; # begin reverse video
+ LESS_TERMCAP_se = "$(echo $'\\E[0m')"; # reset reverse video
+ LESS_TERMCAP_us = "$(echo $'\\E[1;32m')"; # begin underline
+ LESS_TERMCAP_ue = "$(echo $'\\E[0m')"; # reset underline
# Fzf
FZF_COMPLETION_OPTS = "${lib.strings.concatStringsSep " " config.programs.fzf.fileWidgetOptions}";
};
@@ -138,7 +138,7 @@ in
# TODO Maybe make nixpkg wrapper instead? So it also works from dmenu
# Could also accept my fate... Home-manager doesn't necessarily make it easy to put things out of the home directory
historySize = 100000;
- historyFile = "${config.xdg.cacheHome}/shell_history";
+ historyFile = "${config.xdg.stateHome}/shell_history";
in
{
@@ -196,7 +196,10 @@ in
duration = "$( test -n \"$__TIMER\" && echo $(( $EPOCHREALTIME - $\{__TIMER:-EPOCHREALTIME})) || echo 0 )";
# UPST Implement this properly in home-manager, would allow for bash support
};
- extraUpdatePS1 = ''unset __TIMER'';
+ extraUpdatePS1 = ''
+ unset __TIMER
+ echo -en "\033]0; $USER@$HOST $PWD\007"
+ '';
};
gpg = {
enable = true;
@@ -245,6 +248,7 @@ in
less.enable = true;
git = {
enable = true;
+ package = pkgs.gitFull;
aliases = {
"git" = "!exec git"; # In case I write one too many git
};
@@ -339,9 +343,9 @@ in
enableZshIntegration = true;
pinentryFlavor = "gtk2"; # Falls back to curses when needed
};
- # TODO Doesn't activate units by default. For now, we'll consider this as a safety feature.
+ # TODO Syncs a bit too often, also constantly asks for passphrase, which is annoying.
git-sync = {
- enable = true;
+ enable = false;
repositories = {
dotfiles = {
path = "${config.xdg.configHome}/dotfiles";
@@ -462,7 +466,6 @@ in
khard
khal
todoman
- syncthing
# TODO Lots of redundancy with other way things are defined here
@@ -472,8 +475,8 @@ in
];
sessionVariables = {
# Favourite commands
- PAGER = "${pkgs.less}/bin/less";
- EDITOR = "${pkgs.neovim}/bin/nvim";
+ PAGER = "less";
+ EDITOR = "nvim";
# Extra config
BOOT9_PATH = "${config.xdg.dataHome}/citra-emu/sysdata/boot9.bin";
@@ -489,7 +492,7 @@ in
YARN_DISABLE_SELF_UPDATE_CHECK = "true"; # This also disable the creation of a ~/.yarnrc file
} // lib.optionalAttrs config.frogeye.desktop.xorg {
# Favourite commands
- VISUAL = "${pkgs.neovim}/bin/nvim";
+ VISUAL = "nvim";
BROWSER = "${config.programs.qutebrowser.package}/bin/qutebrowser";
# Extra config
@@ -503,7 +506,7 @@ in
(builtins.toString ./scripts)
];
file = {
- ".face" = {
+ ".face" = { # TODO Doesn't show on NixOS. See https://wiki.archlinux.org/title/LightDM#Changing_your_avatar ?
source = pkgs.runCommand "face.png" { } "${pkgs.inkscape}/bin/inkscape ${./face.svg} -w 1024 -o $out";
};
};
diff --git a/hm/desktop.nix b/hm/desktop.nix
index eaf6c20..0c70590 100644
--- a/hm/desktop.nix
+++ b/hm/desktop.nix
@@ -37,7 +37,7 @@ in
# lockColors = with config.lib.stylix.colors.withHashtag; { a = base00; b = base01; d = base00; }; # Black or White, depending on current theme
# lockColors = with config.lib.stylix.colors.withHashtag; { a = base0A; b = base0B; d = base00; }; # Green + Yellow
lockColors = { a = "#82a401"; b = "#466c01"; d = "#648901"; }; # Old
- lockSvg = pkgs.writeText "lock.svg" "";
+ lockSvg = pkgs.writeText "lock.svg" "";
lockPng = pkgs.runCommand "lock.png" { } "${pkgs.imagemagick}/bin/convert ${lockSvg} $out";
locker = pkgs.writeShellScript "i3-locker"
''
@@ -48,6 +48,7 @@ in
${pkgs.lightdm}/bin/dm-tool lock
# TODO Does that work for all DMs?
+ # TODO Might want to use i3lock on NixOS configs still?
if [ $? -ne 0 ]; then
if [ -d ${config.xdg.cacheHome}/lockpatterns ]
then
@@ -79,9 +80,13 @@ in
mode_pres_sec = "Presentation (secondary display)";
mode_screen = "Screen setup [A] Auto [L] Load [S] Save [R] Remove [D] Default";
mode_temp = "Temperature [R] Red [D] Dust storm [C] Campfire [O] Normal [A] All nighter [B] Blue";
+ fonts = config.stylix.fonts;
in
{
modifier = "Mod4";
+ fonts = {
+ names = [ fonts.sansSerif.name ];
+ };
terminal = "alacritty";
colors = let ignore = "#ff00ff"; in
with config.lib.stylix.colors.withHashtag; lib.mkForce {
@@ -144,6 +149,9 @@ in
"XF86AudioPrev" = "exec ${pkgs.mpc-cli}/bin/mpc prev";
"XF86AudioPlay" = "exec ${pkgs.mpc-cli}/bin/mpc toggle";
"XF86AudioNext" = "exec ${pkgs.mpc-cli}/bin/mpc next";
+ # Backlight
+ "XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set +5%";
+ "XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 5%-";
# Misc
"${mod}+F10" = "exec ${ pkgs.writeShellScript "show-keyboard-layout"
''
@@ -512,7 +520,7 @@ in
autorandr = {
enable = true;
hooks.postswitch = {
- background = "${pkgs.feh}/bin/feh --no-fehbg --bg-fill ${config.stylix.image}";
+ background = "${pkgs.feh}/bin/feh --no-fehbg --bg-fill ${config.stylix.image}";
};
};
mpv = {
@@ -534,7 +542,7 @@ in
xdg = {
mimeApps = {
enable = true;
- associations.added = {
+ defaultApplications = {
"text/html" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
"x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
@@ -583,6 +591,7 @@ in
};
};
services = {
+ blueman-applet.enable = true;
unclutter.enable = true;
dunst =
{
@@ -636,6 +645,8 @@ in
home = {
packages = with pkgs; [
+ pavucontrol # Because can't use Win+F1X on Pinebook 🙃
+
# remote
tigervnc
@@ -672,7 +683,6 @@ in
xclip
keynav
xorg.xinit
- xorg.xbacklight
# TODO Make this clean. Service?
diff --git a/hm/dev.nix b/hm/dev.nix
index f98bcf9..648d7a7 100644
--- a/hm/dev.nix
+++ b/hm/dev.nix
@@ -6,7 +6,6 @@
home.packages = with pkgs; [
# Common
perf-tools
- git
jq
yq
universal-ctags
diff --git a/hm/extra.nix b/hm/extra.nix
index b346f05..84002cf 100644
--- a/hm/extra.nix
+++ b/hm/extra.nix
@@ -19,6 +19,9 @@
# android tools
android-tools
+ # Communication
+ signal-desktop
+
# downloading
# transmission TODO Collision if both transmissions are active?
@@ -61,5 +64,8 @@
# https://hydra.nixos.org/job/nixos/release-23.11/nixpkgs.blender.aarch64-linux
blender
]);
+ services = {
+ syncthing.enable = true;
+ };
};
}
diff --git a/hm/scripts/bsh b/hm/scripts/bsh
index 9ad639b..45e21a7 100755
--- a/hm/scripts/bsh
+++ b/hm/scripts/bsh
@@ -1,6 +1,4 @@
-#!/usr/bin/env nix-shell
-#! nix-shell -i bash --pure
-#! nix-shell -p bash openssh coreutils gawk gnused
+#!/usr/bin/env bash
# TODO More integrated with current config
diff --git a/hm/scripts/ter b/hm/scripts/ter
index 01fbc3b..9fe1f59 100755
--- a/hm/scripts/ter
+++ b/hm/scripts/ter
@@ -2,6 +2,8 @@
#! nix-shell -i python3 --pure
#! nix-shell -p python3
+# vim: set filetype=python :
+
import sys
from math import inf
@@ -14,11 +16,11 @@ if N < 2:
sys.exit(1)
-def trajet_str(a, b):
+def trajet_str(a: int, b: int) -> str:
return f"{gares[a]} → {gares[b]}"
-def chemin_str(stack):
+def chemin_str(stack: list[int]) -> str:
return ", ".join(
[trajet_str(stack[i], stack[i + 1]) for i in range(len(stack) - 1)]
)
@@ -26,7 +28,7 @@ def chemin_str(stack):
# Demande des prix des trajets
-prices = dict()
+prices: dict[int, dict[int, float]] = dict()
for i in range(N):
for j in range(N - 1, i, -1):
@@ -50,7 +52,7 @@ maxiPrice = -inf
maxiStack = None
-def register_path(stack):
+def register_path(stack: list[int]) -> None:
price = sum([prices[stack[i]][stack[i + 1]] for i in range(len(stack) - 1)])
global miniPrice, maxiPrice, miniStack, maxiStack
@@ -72,5 +74,7 @@ while stack[0] == 0:
else:
stack.append(stack[-1] + 1)
+assert miniStack
+assert maxiStack
print(f"Prix minimum: {chemin_str(miniStack)} = {miniPrice:.2f} €")
print(f"Prix maximum: {chemin_str(maxiStack)} = {maxiPrice:.2f} €")
diff --git a/hm/style.nix b/hm/style.nix
index a98707b..e73c6d1 100644
--- a/hm/style.nix
+++ b/hm/style.nix
@@ -3,7 +3,8 @@ let
# Currently last commit in https://github.com/danth/stylix/pull/194
stylix = builtins.fetchTarball "https://github.com/willemml/stylix/archive/2ed2b0086b41d582aca26e083c19c0e47c8991e3.tar.gz";
polarityFile = "${config.xdg.stateHome}/theme_polarity";
- polarity = if builtins.pathExists polarityFile then lib.strings.fileContents polarityFile else "light";
+ polarityFromFile = if builtins.pathExists polarityFile then lib.strings.fileContents polarityFile else "light";
+ polarity = if config.frogeye.polarity == "dynamic" then polarityFromFile else config.frogeye.polarity;
phases = [
{ command = "jour"; polarity = "light"; }
{ command = "crepuscule"; polarity = "dark"; }
@@ -47,19 +48,21 @@ in
dconf.enable = false; # Otherwise standalone home-manager complains it can't find /etc/dbus-1/session.conf on Arch.
# Symlinking it to /usr/share/dbus-1/session.conf goes further but not much.
- # TODO Use xbacklight instead (pindakaas doesn't seem to support it OOTB)
home.packages = map
(phase: (pkgs.writeShellApplication {
name = "${phase.command}";
+ runtimeInputs = [ pkgs.brightnessctl ];
text = (lib.optionalString cfg.enable ''
- echo ${builtins.toString (builtins.getAttr phase.command cfg)} | sudo tee /sys/class/backlight/${cfg.backlight}/brightness
- '') + ''
+ brightnessctl set ${builtins.getAttr phase.command cfg}
+ '') + ''
echo ${phase.polarity} > ${polarityFile}
if command -v home-manager
then
home-manager switch
else
- sudo nixos-rebuild switch
+ # In two steps to get the visual changes slightly earlier
+ sudo /nix/var/nix/profiles/system/specialisation/${phase.polarity}/bin/switch-to-configuration test
+ sudo /nix/var/nix/profiles/system/specialisation/${phase.polarity}/bin/switch-to-configuration boot
fi
'';
})
diff --git a/install_os.sh b/install_os.sh
index 577e688..0091fa9 100755
--- a/install_os.sh
+++ b/install_os.sh
@@ -96,13 +96,6 @@ echo "{ ... }: { imports = [ ./hardware-configuration.nix ${nixos_config} ]; }"
# Install NixOS! Or create a new generation.
sudo nixos-install --no-root-password --root "$mountpoint"
-# Install dotfiles. Actually not needed by nixos-install since it doesn't rewrite global paths to the mountpoint.
-# Without it no nixos-rebuild from the system itself once installed though.
-# Should probably be replaced with something like git-sync
-# sudo mkdir -p $mountpoint/home/geoffrey/.config/
-# sudo cp -a ../dotfiles $mountpoint/home/geoffrey/.config/
-# sudo chown geoffrey:geoffrey $mountpoint/home/geoffrey -R
-
set +x
# Signal the installation is done!
@@ -113,3 +106,4 @@ echo "- Boot into the system"
echo "- Transfer necessary private keys (or use ssh -A for testing)"
echo "- Run git-sync-init"
echo "- Check that the system can build itself"
+echo "- Change root and user password"
diff --git a/options.nix b/options.nix
index 4b2a554..0321786 100644
--- a/options.nix
+++ b/options.nix
@@ -3,11 +3,16 @@
options.frogeye = {
extra = lib.mkEnableOption "Big software";
gaming = lib.mkEnableOption "Games";
+ polarity = lib.mkOption {
+ default = "dynamic";
+ description = "Whether to use light theme or dark theme.";
+ type = lib.types.enum [ "dynamic" "light" "dark" ];
+ };
desktop = {
xorg = lib.mkEnableOption "Enable X11 support";
numlock = lib.mkEnableOption "Auto-enable numlock";
x11_screens = lib.mkOption {
- default = ["UNSET1"];
+ default = [ "UNSET1" ];
description = "A list of xrandr screen names from left to right.";
type = lib.types.listOf lib.types.str;
};
@@ -19,10 +24,9 @@
};
phasesBrightness = {
enable = lib.mkEnableOption "Set a specific brightness for the screen when running phases commands";
- backlight = lib.mkOption { type = lib.types.str; description = "Name of the backlight device"; };
- jour = lib.mkOption { type = lib.types.int; description = "brightness value for phase: jour"; };
- crepuscule = lib.mkOption { type = lib.types.int; description = "brightness value for phase: crepuscule"; };
- nuit = lib.mkOption { type = lib.types.int; description = "brightness value for phase: nuit"; };
+ jour = lib.mkOption { type = lib.types.str; default = "100%"; description = "brightnessctl value for phase: jour"; };
+ crepuscule = lib.mkOption { type = lib.types.str; default = "50%"; description = "brightnessctl value for phase: crepuscule"; };
+ nuit = lib.mkOption { type = lib.types.str; default = "1%"; description = "brightnessctl value for phase: nuit"; };
};
};
dev = {
diff --git a/os/common.nix b/os/common.nix
index 5719d75..f3d8836 100644
--- a/os/common.nix
+++ b/os/common.nix
@@ -25,10 +25,8 @@
environment.systemPackages = with pkgs; [
wget
kexec-tools
- openvpn
-
- # Needed for all the fetchFromGit in this repo on nixos-rebuild
- git
+ neovim # So we have a working editor in rescue mode
+ git # Needed for all the fetchFromGit in this repo on nixos-rebuild
];
nixpkgs.config.allowUnfree = true;
@@ -39,6 +37,7 @@
ccache.enable = true;
# TODO Not enough, see https://nixos.wiki/wiki/CCache.
# Might want to see if it's worth using on NixOS
+ less.lessopen = null; # Don't use lessopen
gnupg.agent.enable = true;
# Let users mount disks
diff --git a/os/desktop.nix b/os/desktop.nix
index ab3b08c..f361cc0 100644
--- a/os/desktop.nix
+++ b/os/desktop.nix
@@ -3,16 +3,18 @@
config = lib.mkIf config.frogeye.desktop.xorg {
# Enable the X11 windowing system
- services.xserver = {
- enable = true;
- windowManager.i3.enable = true;
- displayManager.defaultSession = "none+i3";
+ services = {
+ blueman.enable = true;
+ xserver = {
+ enable = true;
+ windowManager.i3.enable = true;
+ displayManager.defaultSession = "none+i3";
- # Keyboard layout
- extraLayouts.qwerty-fr = {
- description = "QWERTY-fr";
- languages = [ "fr" ];
- symbolsFile = "${pkgs.stdenv.mkDerivation {
+ # Keyboard layout
+ extraLayouts.qwerty-fr = {
+ description = "QWERTY-fr";
+ languages = [ "fr" ];
+ symbolsFile = "${pkgs.stdenv.mkDerivation {
name = "qwerty-fr-keypad";
src = builtins.fetchGit {
url = "https://github.com/qwerty-fr/qwerty-fr.git";
@@ -27,13 +29,17 @@
runHook postInstall
'';
}}/linux/us_qwerty-fr";
+ };
+ layout = "qwerty-fr";
};
- layout = "qwerty-fr";
};
- # Enable sound
+ # Enable sound & bluetooth
sound.enable = true;
- hardware.pulseaudio.enable = true;
+ hardware = {
+ bluetooth.enable = true;
+ pulseaudio.enable = true;
+ };
# UPST
# TODO Find a way to override packages either at NixOS level or HM level depending on what is used
diff --git a/os/geoffrey.nix b/os/geoffrey.nix
index 08b09a7..a860d42 100644
--- a/os/geoffrey.nix
+++ b/os/geoffrey.nix
@@ -1,4 +1,4 @@
-{ pkgs, config, ... }:
+{ pkgs, lib, config, ... }:
{
imports = [
@@ -34,6 +34,12 @@
useGlobalPkgs = true;
};
+ specialisation = {
+ dark.configuration.frogeye.polarity = "dark";
+ light.configuration.frogeye.polarity = "light";
+ };
+
+
# Because everything is encrypted and I'm the only user, this is fine.
services.xserver.displayManager.autoLogin.user = "geoffrey";
}
diff --git a/os/wireless/import.py b/os/wireless/import.py
index 85ac1d5..d4535be 100755
--- a/os/wireless/import.py
+++ b/os/wireless/import.py
@@ -1,4 +1,6 @@
-#!/usr/bin/env python3
+#!/usr/bin/env nix-shell
+#! nix-shell -i python3
+#! nix-shell -p python3 python3Packages.pyaml
"""
Exports Wi-Fi networks configuration stored in pass into a format readable by Nix.
@@ -19,7 +21,7 @@ import yaml
# passpy doesn't handle encoding properly, so doing this with calls
-PASSWORD_STORE = os.path.expanduser("~/.password-store")
+PASSWORD_STORE = os.path.expanduser("~/.local/share/pass")
SUBFOLDER = "wifi"
SEPARATE_PASSWORDS = False
# TODO Find a way to make then env file available at whatever time it is needed
diff --git a/pindakaas/options.nix b/pindakaas/options.nix
index 2f7df32..56b5eba 100644
--- a/pindakaas/options.nix
+++ b/pindakaas/options.nix
@@ -7,10 +7,9 @@
maxVideoHeight = 720;
phasesBrightness = {
enable = true;
- backlight = "edp-backlight";
- jour = 3500;
- crepuscule = 3000;
- nuit = 700;
+ jour = "3500";
+ crepuscule = "3000";
+ nuit = "700";
};
};
}
diff --git a/unprocessed/config/automatrop/roles/system/files/getty.service b/unprocessed/config/automatrop/roles/system/files/getty.service
deleted file mode 100644
index 1d6b77a..0000000
--- a/unprocessed/config/automatrop/roles/system/files/getty.service
+++ /dev/null
@@ -1,2 +0,0 @@
-[Service]
-ExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'
diff --git a/unprocessed/config/automatrop/roles/system/files/xorg/intel_backlight.conf b/unprocessed/config/automatrop/roles/system/files/xorg/intel_backlight.conf
deleted file mode 100644
index 36f6eb5..0000000
--- a/unprocessed/config/automatrop/roles/system/files/xorg/intel_backlight.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-Section "Device"
- Identifier "Intel Graphics"
- Driver "intel"
- Option "Backlight" "intel_backlight"
-EndSection
diff --git a/unprocessed/config/automatrop/roles/system/tasks/main.yml b/unprocessed/config/automatrop/roles/system/tasks/main.yml
index 002d579..4a012d1 100644
--- a/unprocessed/config/automatrop/roles/system/tasks/main.yml
+++ b/unprocessed/config/automatrop/roles/system/tasks/main.yml
@@ -1,28 +1,5 @@
# Xorg configuration
-- name: Check if there is Intel backlight
- ansible.builtin.stat:
- path: /sys/class/backlight/intel_backlight
- register: intel_backlight
- when: display_server == 'x11'
-
-- name: Install Intel video drivers (Arch based)
- community.general.pacman:
- name: xf86-video-intel
- # state: "{{ intel_backlight.stat.exists }}"
- state: present
- become: true
- when: display_server == 'x11' and intel_backlight.stat.exists and arch_based
- # TODO With software role? Would permit other distributions
-
-- name: Configure Xorg Intel backlight
- ansible.builtin.copy:
- src: xorg/intel_backlight.conf
- dest: "{{ item }}/20-intel_backlight.conf"
- become: true
- when: display_server == 'x11' and intel_backlight.stat.exists
- loop: "{{ xorg_common_config_dirs }}"
-
- name: Configure Xorg joystick behaviour
ansible.builtin.copy:
src: xorg/joystick.conf
@@ -48,23 +25,3 @@
vars:
using_panfrost: "{{ 'panfrost' in (modules.content | b64decode) }}"
notify: panfrost config changed
-
-# Numlock on boot
-
-- name: Set numlock on boot
- ansible.builtin.copy:
- src: getty.service
- dest: /etc/systemd/system/getty@.service.d/override.conf
- become: true
- notify:
- - systemd changed
- when: auto_numlock
-
-- name: Unset numlock on boot
- ansible.builtin.file:
- path: /etc/systemd/system/getty@.service.d/override.conf
- state: absent
- become: true
- notify:
- - systemd changed
- when: not auto_numlock