Compare commits
4 commits
41c3266ee2
...
2ae8bf4fd0
Author | SHA1 | Date | |
---|---|---|---|
Geoffrey Frogeye | 2ae8bf4fd0 | ||
Geoffrey Frogeye | f20678d134 | ||
Geoffrey Frogeye | 54ec1fc9ba | ||
Geoffrey Frogeye | 8a4875cf5b |
|
@ -1 +1,2 @@
|
||||||
import ../dk/single_uefi_btrfs.nix { id = "usb-Kingston_DataTraveler_3.0_E0D55EA57414F510489F0F1A-0:0"; name = "curacao_usb"; }
|
{ ... } @ args:
|
||||||
|
import ../dk/single_uefi_btrfs.nix (args // { id = "usb-Kingston_DataTraveler_3.0_E0D55EA57414F510489F0F1A-0:0"; name = "curacao_usb"; })
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ id, name, ... }:
|
{ id, name, passwordFile ? "/should_not_be_needed_in_this_context", ... }:
|
||||||
{
|
{
|
||||||
disko.devices = {
|
disko.devices = {
|
||||||
disk = {
|
disk = {
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
content = {
|
content = {
|
||||||
type = "luks";
|
type = "luks";
|
||||||
name = "${name}";
|
name = "${name}";
|
||||||
passwordFile = "/tmp/secret.key"; # FIXME Generate this somehow
|
passwordFile = passwordFile;
|
||||||
settings = {
|
settings = {
|
||||||
# Not having SSDs die fast is more important than crypto
|
# Not having SSDs die fast is more important than crypto
|
||||||
# nerds that could potentially discover which filesystem I
|
# nerds that could potentially discover which filesystem I
|
||||||
|
|
|
@ -1,20 +1,35 @@
|
||||||
{ pkgs, config, lib, ... }:
|
{ pkgs, config, lib, ... }:
|
||||||
|
let
|
||||||
|
nixgl = import
|
||||||
|
(builtins.fetchGit {
|
||||||
|
url = "https://github.com/nix-community/nixGL";
|
||||||
|
rev = "489d6b095ab9d289fe11af0219a9ff00fe87c7c5";
|
||||||
|
})
|
||||||
|
{ };
|
||||||
|
nixGLIntelPrefix = "${nixgl.nixVulkanIntel}/bin/nixVulkanIntel ${nixgl.nixGLIntel}/bin/nixGLIntel ";
|
||||||
|
wmPrefix = "${lib.optionalString config.frogeye.desktop.nixGLIntel nixGLIntelPrefix}";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
./frobar
|
||||||
|
];
|
||||||
config = lib.mkIf config.frogeye.desktop.xorg {
|
config = lib.mkIf config.frogeye.desktop.xorg {
|
||||||
frogeye.shellAliases = {
|
frogeye.shellAliases = {
|
||||||
noise = ''${pkgs.sox}/bin/play -c 2 -n synth $'' + ''{1}noise'';
|
noise = ''${pkgs.sox}/bin/play -c 2 -n synth $'' + ''{1}noise'';
|
||||||
beep = ''${pkgs.sox}/bin/play -n synth sine E5 sine A4 remix 1-2 fade 0.5 1.2 0.5 2> /dev/null'';
|
beep = ''${pkgs.sox}/bin/play -n synth sine E5 sine A4 remix 1-2 fade 0.5 1.2 0.5 2> /dev/null'';
|
||||||
|
|
||||||
# n = "$HOME/.config/i3/terminal & disown"; # Not used anymore since alacritty daemon mode doesn't preserve environment variables
|
# n = "$HOME/.config/i3/terminal & disown"; # Not used anymore since alacritty daemon mode doesn't preserve environment variables
|
||||||
x = "startx ${config.xdg.configHome}/xinitrc; logout";
|
x = "startx ${config.home.homeDirectory}/${config.xsession.scriptPath}; logout";
|
||||||
nx = "nvidia-xrun ${config.xdg.configHome}/xinitrc; sudo systemctl start nvidia-xrun-pm; logout";
|
# TODO Is it possible to not start nvidia stuff on nixOS?
|
||||||
# Was also thinking of not storing the config in .config and use nix-store instead,
|
# nx = "nvidia-xrun ${config.xsession.scriptPath}; sudo systemctl start nvidia-xrun-pm; logout";
|
||||||
# but maybe it's a bad idea as home-manager switch doesn't replace aliases in running shells
|
|
||||||
# FIXME Is it still relevant with NixOS?
|
|
||||||
};
|
};
|
||||||
xsession = {
|
xsession = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# Not using config.xdg.configHome because it needs to be $HOME-relative paths and path manipulation is hard
|
||||||
|
scriptPath = ".config/xsession";
|
||||||
|
profilePath = ".config/xprofile";
|
||||||
windowManager = {
|
windowManager = {
|
||||||
|
command = lib.mkForce "${wmPrefix} ${config.xsession.windowManager.i3.package}/bin/i3";
|
||||||
i3 = {
|
i3 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config =
|
config =
|
||||||
|
@ -68,7 +83,6 @@
|
||||||
{
|
{
|
||||||
modifier = "Mod4";
|
modifier = "Mod4";
|
||||||
terminal = "alacritty";
|
terminal = "alacritty";
|
||||||
bars = [ ]; # Using frobar
|
|
||||||
colors = let ignore = "#ff00ff"; in
|
colors = let ignore = "#ff00ff"; in
|
||||||
with config.lib.stylix.colors.withHashtag; lib.mkForce {
|
with config.lib.stylix.colors.withHashtag; lib.mkForce {
|
||||||
focused = { border = base0B; background = base0B; text = base00; indicator = base00; childBorder = base0B; };
|
focused = { border = base0B; background = base0B; text = base00; indicator = base00; childBorder = base0B; };
|
||||||
|
@ -310,7 +324,6 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
startup = [
|
startup = [
|
||||||
{ notification = false; command = "${pkgs.autorandr}/bin/autorandr --change"; }
|
|
||||||
# Lock screen after 10 minutes
|
# Lock screen after 10 minutes
|
||||||
{ notification = false; command = "${pkgs.xautolock}/bin/xautolock -time 10 -locker '${pkgs.xorg.xset}/bin/xset dpms force standby' -killtime 1 -killer ${locker}"; }
|
{ notification = false; command = "${pkgs.xautolock}/bin/xautolock -time 10 -locker '${pkgs.xorg.xset}/bin/xset dpms force standby' -killtime 1 -killer ${locker}"; }
|
||||||
{
|
{
|
||||||
|
@ -498,14 +511,9 @@
|
||||||
};
|
};
|
||||||
autorandr = {
|
autorandr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
hooks.postswitch =
|
hooks.postswitch = {
|
||||||
let
|
background = "${pkgs.feh}/bin/feh --no-fehbg --bg-fill ${config.stylix.image}";
|
||||||
frobar = (pkgs.callPackage (import ./frobar) { });
|
};
|
||||||
in
|
|
||||||
{
|
|
||||||
"background" = "${pkgs.feh}/bin/feh --no-fehbg --bg-fill ${config.stylix.image}";
|
|
||||||
"frobar" = "${pkgs.i3}/bin/i3-msg exec ${frobar}/bin/frobar_launcher";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
mpv = {
|
mpv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -553,23 +561,6 @@
|
||||||
"pulse/client.conf" = {
|
"pulse/client.conf" = {
|
||||||
text = ''cookie-file = .config/pulse/pulse-cookie'';
|
text = ''cookie-file = .config/pulse/pulse-cookie'';
|
||||||
};
|
};
|
||||||
"xinitrc" =
|
|
||||||
let
|
|
||||||
nixgl = import
|
|
||||||
(builtins.fetchGit {
|
|
||||||
url = "https://github.com/nix-community/nixGL";
|
|
||||||
rev = "489d6b095ab9d289fe11af0219a9ff00fe87c7c5";
|
|
||||||
})
|
|
||||||
{ };
|
|
||||||
nixGLIntelPrefix = "${nixgl.nixVulkanIntel}/bin/nixVulkanIntel ${nixgl.nixGLIntel}/bin/nixGLIntel ";
|
|
||||||
wmPrefix = "${lib.optionalString config.frogeye.desktop.nixGLIntel nixGLIntelPrefix}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
source = pkgs.writeShellScript "xinitrc" ''
|
|
||||||
${pkgs.xorg.xrdb}/bin/xrdb ${config.xresources.path}
|
|
||||||
${wmPrefix}${config.xsession.windowManager.command}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"rofimoji.rc" = {
|
"rofimoji.rc" = {
|
||||||
text = ''
|
text = ''
|
||||||
skin-tone = neutral
|
skin-tone = neutral
|
||||||
|
@ -593,7 +584,6 @@
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
unclutter.enable = true;
|
unclutter.enable = true;
|
||||||
# FIXME Not starting on curacao_test
|
|
||||||
dunst =
|
dunst =
|
||||||
{
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -27,7 +27,9 @@
|
||||||
|
|
||||||
# documents
|
# documents
|
||||||
visidata
|
visidata
|
||||||
texlive.combined.scheme-full
|
# texlive.combined.scheme-full
|
||||||
|
# TODO Convert existing LaTeX documents into using Nix build system
|
||||||
|
# texlive is big and not that much used, sooo
|
||||||
pdftk
|
pdftk
|
||||||
hunspell
|
hunspell
|
||||||
hunspellDicts.en_GB-ize
|
hunspellDicts.en_GB-ize
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs ? import <nixpkgs> { config = { }; overlays = [ ]; } }:
|
{ pkgs ? import <nixpkgs> { config = { }; overlays = [ ]; }, ... }:
|
||||||
# Tried using pyproject.nix but mpd2 dependency wouldn't resolve,
|
# Tried using pyproject.nix but mpd2 dependency wouldn't resolve,
|
||||||
# is called pyton-mpd2 on PyPi but mpd2 in nixpkgs.
|
# is called pyton-mpd2 on PyPi but mpd2 in nixpkgs.
|
||||||
let
|
let
|
||||||
|
@ -6,6 +6,7 @@ let
|
||||||
pname = "frobar";
|
pname = "frobar";
|
||||||
version = "2.0";
|
version = "2.0";
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [ lemonbar-xft wirelesstools ];
|
||||||
propagatedBuildInputs = with pkgs.python3Packages; [
|
propagatedBuildInputs = with pkgs.python3Packages; [
|
||||||
coloredlogs
|
coloredlogs
|
||||||
notmuch
|
notmuch
|
||||||
|
@ -15,21 +16,33 @@ let
|
||||||
pulsectl
|
pulsectl
|
||||||
pyinotify
|
pyinotify
|
||||||
];
|
];
|
||||||
|
makeWrapperArgs = [ "--prefix PATH : ${pkgs.lib.makeBinPath (with pkgs; [ lemonbar-xft wirelesstools ])}" ];
|
||||||
|
|
||||||
src = ./.;
|
src = ./.;
|
||||||
};
|
};
|
||||||
frobar_launcher = pkgs.writeShellApplication
|
|
||||||
{
|
|
||||||
name = "frobar_launcher";
|
|
||||||
runtimeInputs = with pkgs; [ lemonbar-xft wirelesstools ];
|
|
||||||
text = ''
|
|
||||||
pidfile=$XDG_RUNTIME_DIR/frobar/$DISPLAY.pid
|
|
||||||
${pkgs.coreutils}/bin/mkdir -p "$(${pkgs.coreutils}/bin/dirname "$pidfile")"
|
|
||||||
([ -f "$pidfile" ] && ${pkgs.procps}/bin/kill "$(<"$pidfile")") || true
|
|
||||||
${frobar}/bin/frobar & disown
|
|
||||||
echo $! > "$pidfile"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
frobar_launcher
|
{
|
||||||
# TODO Connection with i3 is lost sometimes, more often than with Arch?
|
config = {
|
||||||
|
xsession.windowManager.i3.config.bars = [ ];
|
||||||
|
programs.autorandr.hooks.postswitch = {
|
||||||
|
frobar = "${pkgs.systemd}/bin/systemctl --user restart frobar";
|
||||||
|
};
|
||||||
|
systemd.user.services.frobar = {
|
||||||
|
Unit = {
|
||||||
|
Description = "frobar";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
# Wait for i3 to start. Can't use ExecStartPre because otherwise it blocks graphical-session.target, and there's nothing i3/systemd
|
||||||
|
# TODO Do that better
|
||||||
|
ExecStart = ''${pkgs.bash}/bin/bash -c "while ! ${pkgs.i3}/bin/i3-msg; do ${pkgs.coreutils}/bin/sleep 1; done; ${frobar}/bin/frobar"'';
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = { WantedBy = [ "graphical-session.target" ]; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
# TODO Connection with i3 is lost on start sometimes, more often than with Arch?
|
||||||
|
# TODO Restore ability to build frobar with nix-build
|
||||||
|
|
|
@ -64,6 +64,7 @@ fi
|
||||||
|
|
||||||
mountpoint="/mnt/nixos"
|
mountpoint="/mnt/nixos"
|
||||||
nix_flakes_cmd="nix --extra-experimental-features nix-command --extra-experimental-features flakes"
|
nix_flakes_cmd="nix --extra-experimental-features nix-command --extra-experimental-features flakes"
|
||||||
|
luks_pass_path="luks/$(basename ${profile})"
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
|
@ -73,8 +74,15 @@ sudo mkdir -p "$mountpoint"
|
||||||
# Not great, but fixable with flakes I guess
|
# Not great, but fixable with flakes I guess
|
||||||
sudo ./add_channels.sh
|
sudo ./add_channels.sh
|
||||||
|
|
||||||
|
# Load encryption password
|
||||||
|
luks_pass_file="$(mktemp --suffix="luks_password")"
|
||||||
|
pass $luks_pass_path | head -n1 | tr -d '\n' > $luks_pass_file
|
||||||
|
|
||||||
# Format or mount disk
|
# Format or mount disk
|
||||||
sudo $nix_flakes_cmd run github:nix-community/disko -- --root-mountpoint "$mountpoint" --mode "$disko_mode" "$disko_config"
|
sudo $nix_flakes_cmd run github:nix-community/disko -- --root-mountpoint "$mountpoint" --mode "$disko_mode" --argstr passwordFile "$luks_pass_file" "$disko_config"
|
||||||
|
|
||||||
|
# Unload encryption password
|
||||||
|
rm "$luks_pass_file"
|
||||||
|
|
||||||
# Generate hardware-config.nix
|
# Generate hardware-config.nix
|
||||||
sudo nixos-generate-config --no-filesystems --root "$mountpoint"
|
sudo nixos-generate-config --no-filesystems --root "$mountpoint"
|
||||||
|
|
|
@ -27,9 +27,6 @@
|
||||||
kexec-tools
|
kexec-tools
|
||||||
openvpn
|
openvpn
|
||||||
|
|
||||||
# android tools
|
|
||||||
android-udev-rules
|
|
||||||
|
|
||||||
# Needed for all the fetchFromGit in this repo on nixos-rebuild
|
# Needed for all the fetchFromGit in this repo on nixos-rebuild
|
||||||
git
|
git
|
||||||
];
|
];
|
||||||
|
@ -37,6 +34,7 @@
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
|
adb.enable = true;
|
||||||
# Enable compilation cache
|
# Enable compilation cache
|
||||||
ccache.enable = true;
|
ccache.enable = true;
|
||||||
# TODO Not enough, see https://nixos.wiki/wiki/CCache.
|
# TODO Not enough, see https://nixos.wiki/wiki/CCache.
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
users.users.geoffrey = {
|
users.users.geoffrey = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
extraGroups = [ "adbusers" "wheel" ];
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
|
|
||||||
initialHashedPassword = "$y$j9T$e64bjL7iyVlniEKwKbM9g0$cCn74za0r6L9QMO20Fdxz3/SX0yvhz3Xd6.2BhtbRL1"; # Not a real password
|
initialHashedPassword = "$y$j9T$e64bjL7iyVlniEKwKbM9g0$cCn74za0r6L9QMO20Fdxz3/SX0yvhz3Xd6.2BhtbRL1"; # Not a real password
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
import ../dk/single_uefi_btrfs.nix { id = "mmc-SN32G_0xfb19ae99"; name = "pindakaas_sd"; }
|
{ ... } @ args:
|
||||||
|
import ../dk/single_uefi_btrfs.nix (args // { id = "mmc-SN32G_0xfb19ae99"; name = "pindakaas_sd"; })
|
||||||
|
|
Loading…
Reference in a new issue