5 Commits

  1. 9
      config/etc/i3/config
  2. 12
      config/etc/i3/py3status
  3. 37
      config/networking.nix
  4. 5
      config/nix.nix
  5. 7
      options/machine.nix
  6. 1
      pkgsets/base.nix
  7. 3
      services/desktop/i3.nix
  8. 28
      services/nspawn.nix

9
config/etc/i3/config

@ -12,16 +12,9 @@ new_window pixel
hide_edge_borders both
exec setxkbmap de
exec xinput --map-to-output "ipts 045E:001F Pen Pen (0)" eDP1
exec xinput --map-to-output "ipts 045E:001F Pen Eraser (0)" eDP1
exec xinput --map-to-output "ipts 045E:001F Touchscreen" eDP1
bindsym $mod+Shift+s exec xinput --map-to-output "ipts 045E:001F Pen Pen (0)" eDP1; exec xinput --map-to-output "ipts 045E:001F Pen Eraser (0)" eDP1; exec xinput --map-to-output "ipts 045E:001F Touchscreen" eDP1
bindsym $mod+Shift+a exec xinput --enable "ipts 045E:001F Touchscreen"
bindsym $mod+Shift+d exec xinput --disable "ipts 045E:001F Touchscreen"
#exec compton -f
exec feh --bg-scale Pictures/wallpaper.jpg
exec feh --bg-scale $(xdg-user-dir PICTURES)/wallpaper.jpg
#exec pulseaudio -D
#exec fcitx
#exec env=LC_CTYPE=zh_CN.UTF-8 emacs --daemon

12
config/etc/i3/py3status

@ -18,6 +18,7 @@ order += "backlight"
order += "volume_status"
order += "cpu_temperature 0"
order += "load"
order += "battery 0"
order += "group tz"
group network {
@ -65,6 +66,17 @@ group tz {
}
}
battery 0 {
format = "%status %percentage %remaining %emptytime"
format_down = "No battery"
status_chr = "⚡ CHR"
status_bat = "🔋 BAT"
status_unk = "? UNK"
status_full = "☻ FULL"
path = "/sys/class/power_supply/BAT%d/uevent"
low_threshold = 10
}
volume_status {
button_up = 4
button_down = 5

37
config/networking.nix

@ -1,7 +1,42 @@
{ config, ... }:
{ config, lib, ... }:
with lib;
{
networking = {
hostName = config.machine.hostName;
useNetworkd = config.machine.useNetworkd;
useDHCP = !config.machine.useNetworkd;
dhcpcd.enable = !config.machine.useNetworkd;
};
# Based on
# https://github.com/NixOS/nixpkgs/issues/10001#issuecomment-905532069
systemd.network = mkIf config.machine.useNetworkd {
enable = true;
networks = let
networkConfig = {
DHCP = "yes";
DNSSEC = "yes";
DNSOverTLS = "yes";
DNS = [ "1.1.1.1" "1.0.0.1" ];
};
in {
"40-wired" = {
enable = true;
name = "en*";
dhcpV4Config.RouteMetric = 2048;
inherit networkConfig;
};
"40-wireless" = {
enable = true;
name = "wl*";
dhcpV4Config.RouteMetric = 1024;
inherit networkConfig;
};
};
};
# Wait for any interface to become available, not for all
systemd.services."systemd-networkd-wait-online".serviceConfig.ExecStart = [
"" "${config.systemd.package}/lib/systemd/systemd-networkd-wait-online --any"
];
}

5
config/nix.nix

@ -1,4 +1,4 @@
{ config, lib, ... }:
{ pkgs, config, lib, ... }:
let
cfg = config.machine;
@ -8,8 +8,11 @@ in {
buildCores = 1;
autoOptimiseStore = true;
useSandbox = true;
package = pkgs.nix_2_4;
allowedUsers = [ "root" ] ++ (map (n: n.name) cfg.administrators);
extraOptions = ''
build-timeout = 86400 # 24 hours
experimental-features = nix-command flakes
'';
binaryCachePublicKeys = [ (lib.fileContents "${cfg.secretPath}/hydra_cache.pub") ];
trustedBinaryCaches = [

7
options/machine.nix

@ -59,6 +59,13 @@ in {
The Machines HostName
'';
};
useNetworkd = mkOption {
type = types.bool;
default = false;
description = ''
Disables dhcpcd and enables networkd.
'';
};
binaryCaches = mkOption {
type = types.listOf types.str;
default = [];

1
pkgsets/base.nix

@ -32,7 +32,6 @@
nix-update-source
nix-zsh-completions
nixbang
nixops
nmap
nox
ntfs3g

3
services/desktop/i3.nix

@ -7,10 +7,11 @@
{
enable = true;
configFile = ../../config/etc/i3/config;
extraPackages = with pkgs; [
extraPackages = with pkgs; [
dmenu
file
i3lock
i3status
xdg-user-dirs
];
}

28
services/nspawn.nix

@ -0,0 +1,28 @@
{ config, lib, ... }:
with lib;
mkIf (elem "nspawn" config.machine.services) {
systemd = let
fn = import ../fn.nix { inherit lib; };
in {
nspawn = recursiveUpdate (listToAttrs (
(map (
name: {
name = name;
value = { networkConfig.VirtualEthernet = "no"; };
}
)
(fn.lst { p = /var/lib/machines; t = "directory"; b = false; })
))) {
"64Arch" = {
filesConfig = {
"BindReadOnly" = ["/tmp/.X11-unix"];
"Bind" = ["/dev/snd" "/dev/dri"];
# TODO: Add this to service overrides
# "DeviceAllow" = [ "/dev/dri/renderD128" ];
};
};
};
};
}
Loading…
Cancel
Save