initial commit
This commit is contained in:
commit
793752fd20
3
.gitignore
vendored
Executable file
3
.gitignore
vendored
Executable file
@ -0,0 +1,3 @@
|
||||
*.swp
|
||||
old
|
||||
result
|
13
README.md
Normal file
13
README.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Thorn Avery's NixOS Flake
|
||||
|
||||
`.i .ui coi .i'au mi'au`
|
||||
|
||||
this repo will serve as the configuration for my laptop `iwakura` (blessed be her name), and hopefully in the future will contain my other systems configurations also.
|
||||
|
||||
i also intend for this to be a wiki of sorts for documenting things i find about NixOS such that others may also use this wonderful system, because the more people use NixOS, the higher the chance someone smarter than me ports it to Plan9.
|
||||
|
||||
## to do list
|
||||
|
||||
the window manager config needs to be seperated out into its modules, at the moment everything is bundled together in a gross way.
|
||||
|
||||
i also need to fix that weird zsh PATH bug, so that i can re-enable it as the default shell
|
186
flake.lock
Normal file
186
flake.lock
Normal file
@ -0,0 +1,186 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1617631617,
|
||||
"narHash": "sha256-PARRCz55qN3gy07VJZIlFeOX420d0nGF0RzGI/9hVlw=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b2c27d1a81b0dc266270fa8aeecebbd1807fc610",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1617824794,
|
||||
"narHash": "sha256-UGkvzx0nIXHhNq/KwJLjXvKAQRE2V33MuX+UirvqrkQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "2aa20ae969f2597c4df10a094440a66e9d7f8c86",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-20.09",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1618976009,
|
||||
"narHash": "sha256-G5Z2Keob1pWrrdUqH2MYv15NKitklb4/A3ZdSp+3f/M=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "241d8300b2746c1db715eaf8d64748990cd0bb7a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1619132512,
|
||||
"narHash": "sha256-Ag0SPRotWMfekMlCrGqaLIvk92Xl9+WL2PKKYY447jU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "603620a6308c0c8f00f4edef67a6a0a41a3c6f36",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1619057301,
|
||||
"narHash": "sha256-1Y1nCnwGSQHM76KGIhz+8tOAGOT3wlP+dKjwoyQXCtg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d235056d6d6dcbd2999bd55fd120d831d4df6304",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rainbow-vim-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1590654574,
|
||||
"narHash": "sha256-PH4UY+/1JFrR5C0DpFrkfTc51wUQet8ynvAPKFxbFZk=",
|
||||
"owner": "luochen1990",
|
||||
"repo": "rainbow",
|
||||
"rev": "4d15633cdaf61602e1d9fd216a77fc02e0881b2d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "luochen1990",
|
||||
"repo": "rainbow",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"swatch": "swatch",
|
||||
"vim": "vim"
|
||||
}
|
||||
},
|
||||
"slimv-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1617654210,
|
||||
"narHash": "sha256-ui8feAAKe5+m8WxFZFvMp3dnAN8dA/O/4MXHUo0wr6E=",
|
||||
"owner": "kovisoft",
|
||||
"repo": "slimv",
|
||||
"rev": "de657dd6e124189143589a725ae85113c09eb053",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "kovisoft",
|
||||
"repo": "slimv",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"swatch": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1617928465,
|
||||
"narHash": "sha256-WbvMczpDqgLG+mMutNNIDHgj4h9JaaVihqjatYW1lrI=",
|
||||
"owner": "techieAgnostic",
|
||||
"repo": "swatch",
|
||||
"rev": "c036a19747703c88bd4b446b6d8d474f6af280fd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "techieAgnostic",
|
||||
"repo": "swatch",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"vim": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"rainbow-vim-src": "rainbow-vim-src",
|
||||
"slimv-src": "slimv-src",
|
||||
"vim-racket-src": "vim-racket-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1617934019,
|
||||
"narHash": "sha256-50QBtpXB4U6IzU1mCj975t530GYaCrDHUcN4H1pxGhk=",
|
||||
"owner": "techieAgnostic",
|
||||
"repo": "vim",
|
||||
"rev": "530f0ec712701b4e7ba88e7104477fdf044f1527",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "techieAgnostic",
|
||||
"repo": "vim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"vim-racket-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1595555951,
|
||||
"narHash": "sha256-XqbR9qMvvaeZ7LHUemocJQQ/CaJSHxEwh7B7Y1o6KhU=",
|
||||
"owner": "wlangstroth",
|
||||
"repo": "vim-racket",
|
||||
"rev": "bca2643c3d8bd0fcd46ab73bee69023a5da1964b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "wlangstroth",
|
||||
"repo": "vim-racket",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
63
flake.nix
Normal file
63
flake.nix
Normal file
@ -0,0 +1,63 @@
|
||||
{
|
||||
description = "Iwakura System Flake";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||
home-manager.url = "github:nix-community/home-manager/release-20.09";
|
||||
swatch = {
|
||||
url = "github:techieAgnostic/swatch";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
vim = {
|
||||
url = "github:techieAgnostic/vim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
outputs = { self, nixpkgs, home-manager, nixos-hardware, swatch, vim, ...}: {
|
||||
nixosConfigurations.iwakura = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
|
||||
# enable flakes or we'll be sad
|
||||
(import ./modules/flakes)
|
||||
|
||||
# enable sane garbage collection options
|
||||
(import ./modules/gc)
|
||||
|
||||
# enabling window-manager
|
||||
(import ./modules/bspwm)
|
||||
|
||||
# disk partitions and such (plus more that needs to be taken out)
|
||||
(import ./hardware/iwakura)
|
||||
|
||||
# community settings for this laptop
|
||||
nixos-hardware.nixosModules.lenovo-thinkpad-t420
|
||||
nixos-hardware.nixosModules.common-pc-laptop-ssd
|
||||
|
||||
# import home manager profiles and set to use same nixpkgs
|
||||
home-manager.nixosModules.home-manager {
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users = {
|
||||
root = import ./users/root/home.nix;
|
||||
thorn = import ./users/thorn/home.nix;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
# import nix config user profiles + misc
|
||||
({ pkgs, ... }: {
|
||||
nixpkgs.overlays = [
|
||||
swatch.overlay
|
||||
vim.overlay
|
||||
];
|
||||
imports = [
|
||||
./users/root
|
||||
./users/thorn
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
44
hardware/iwakura/default.nix
Normal file
44
hardware/iwakura/default.nix
Normal file
@ -0,0 +1,44 @@
|
||||
{ pkgs, config, ... }:
|
||||
|
||||
{
|
||||
|
||||
imports = [
|
||||
./drives.nix
|
||||
./keyboard.nix
|
||||
./network.nix
|
||||
./wireless.nix
|
||||
./power.nix
|
||||
./opengl.nix
|
||||
./sound.nix
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
acpi
|
||||
];
|
||||
|
||||
console.keyMap = "dvorak";
|
||||
|
||||
hardware.bluetooth.enable = false;
|
||||
|
||||
hardware.opengl.driSupport32Bit = true;
|
||||
|
||||
system.stateVersion = "20.09";
|
||||
|
||||
boot.supportedFilesystems = [ "ntfs" ];
|
||||
boot = {
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"ehci_pci" "ata_piix" "usbhid"
|
||||
"usb_storage" "sd_mod" "sdhci_pci"
|
||||
];
|
||||
kernelModules = [ "dm-snapshot" "i915" ];
|
||||
};
|
||||
kernelModules = [ "kvm-intel" "acpi_call" ];
|
||||
extraModulePackages = with config.boot.kernelPackages; [ acpi_call ];
|
||||
};
|
||||
|
||||
}
|
81
hardware/iwakura/drives.nix
Normal file
81
hardware/iwakura/drives.nix
Normal file
@ -0,0 +1,81 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
|
||||
boot = {
|
||||
initrd.luks.devices = {
|
||||
root = {
|
||||
device = "/dev/disk/by-uuid/33365b82-66af-4694-8f53-ca988035bb38";
|
||||
preLVM = true;
|
||||
};
|
||||
data = {
|
||||
device = "/dev/disk/by-uuid/e24d79c5-c24f-4e07-ab7e-a9c17cb21085";
|
||||
preLVM = true;
|
||||
};
|
||||
speed = {
|
||||
device = "/dev/disk/by-uuid/47106e9a-99fe-4c6d-a61d-8a25e7b53fc5";
|
||||
preLVM = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/af8ae319-17ec-4631-b7aa-5cf4c9f9330c";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/1918-A8CD";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
"/data/size" = {
|
||||
device = "/dev/disk/by-uuid/d927d682-57ec-4b9b-b2ce-e77772e37bbc";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
"/data/speed" = {
|
||||
device = "/dev/disk/by-uuid/eb1827e3-de96-4e79-816f-82ec9d84e45e";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{ device = "/dev/disk/by-uuid/ff5cfba4-7c9d-41af-ba91-97d8022b79f7"; }
|
||||
];
|
||||
}
|
||||
|
||||
# /dev/sdd1: BLOCK_SIZE="2048" UUID="1980-01-01-00-00-00-00" LABEL="nixos-minimal-20.09-x86_64" TYPE="iso9660" PTUUID="9fb6382f" PTTYPE="dos" PARTUUID="9fb6382f-01"
|
||||
# /dev/mapper/vg--root-root: LABEL="root" UUID="af8ae319-17ec-4631-b7aa-5cf4c9f9330c" BLOCK_SIZE="4096" TYPE="ext4"
|
||||
# /dev/mapper/vg--data-size: LABEL="data" UUID="d927d682-57ec-4b9b-b2ce-e77772e37bbc" BLOCK_SIZE="4096" TYPE="ext4"
|
||||
# /dev/mapper/vg--speed-speed: LABEL="speed" UUID="eb1827e3-de96-4e79-816f-82ec9d84e45e" BLOCK_SIZE="4096" TYPE="ext4"
|
||||
# /dev/loop0: TYPE="squashfs"
|
||||
# /dev/sdc1: UUID="1918-A8CD" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System" PARTUUID="1a588f78-cfa9-4c7c-812f-34eb5865bec4"
|
||||
# /dev/sdc2: UUID="33365b82-66af-4694-8f53-ca988035bb38" TYPE="crypto_LUKS" PARTLABEL="Linux filesystem" PARTUUID="3c4b2253-f1d0-4fbb-8ef9-294e5246f295"
|
||||
# /dev/sda1: UUID="e24d79c5-c24f-4e07-ab7e-a9c17cb21085" TYPE="crypto_LUKS" PARTLABEL="Linux filesystem" PARTUUID="bd4f8053-5606-4018-bf7c-a42fc433be82"
|
||||
# /dev/sdb1: UUID="47106e9a-99fe-4c6d-a61d-8a25e7b53fc5" TYPE="crypto_LUKS" PARTLABEL="Linux filesystem" PARTUUID="225715cc-ab3d-4ca1-b86d-a8453e8d9c9e"
|
||||
# /dev/sdd2: SEC_TYPE="msdos" LABEL_FATBOOT="EFIBOOT" LABEL="EFIBOOT" UUID="1234-5678" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="9fb6382f-02"
|
||||
# /dev/mapper/crypt-root: UUID="Sj9qzV-VZYX-GGwJ-b5Sx-QL1E-399w-YBldee" TYPE="LVM2_member"
|
||||
# /dev/mapper/crypt-size: UUID="OJkpMy-eN7n-qwJe-ZjKd-MDZd-SUW6-1qeV49" TYPE="LVM2_member"
|
||||
# /dev/mapper/vg--data-swap: UUID="ff5cfba4-7c9d-41af-ba91-97d8022b79f7" TYPE="swap"
|
||||
# /dev/mapper/crypt-speed: UUID="1HcMzn-Bbxq-evzi-AEQo-ffzD-5jOG-hOpc42" TYPE="LVM2_member"
|
||||
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
||||
# loop0 7:0 0 522.2M 1 loop /nix/.ro-store
|
||||
# sda 8:0 0 931.5G 0 disk
|
||||
# └─sda1 8:1 0 931.5G 0 part
|
||||
# └─crypt-size 254:2 0 931.5G 0 crypt
|
||||
# ├─vg--data-swap 254:3 0 32G 0 lvm [SWAP]
|
||||
# └─vg--data-size 254:4 0 899.5G 0 lvm /mnt/data/size
|
||||
# sdb 8:16 0 119.2G 0 disk
|
||||
# └─sdb1 8:17 0 119.2G 0 part
|
||||
# └─crypt-speed 254:5 0 119.2G 0 crypt
|
||||
# └─vg--speed-speed 254:6 0 119.2G 0 lvm /mnt/data/speed
|
||||
# sdc 8:32 0 465.8G 0 disk
|
||||
# ├─sdc1 8:33 0 200M 0 part /mnt/boot
|
||||
# └─sdc2 8:34 0 465.6G 0 part
|
||||
# └─crypt-root 254:0 0 465.5G 0 crypt
|
||||
# └─vg--root-root 254:1 0 465.5G 0 lvm /mnt
|
||||
# sdd 8:48 1 30G 0 disk
|
||||
# ├─sdd1 8:49 1 571M 0 part /iso
|
||||
# └─sdd2 8:50 1 23M 0 part
|
27
hardware/iwakura/keyboard.nix
Normal file
27
hardware/iwakura/keyboard.nix
Normal file
@ -0,0 +1,27 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
# to do: make this parameterised
|
||||
services.actkbd = {
|
||||
enable = true;
|
||||
bindings = [
|
||||
{ keys = [ 113 ];
|
||||
events = [ "key" ];
|
||||
command =
|
||||
"/run/current-system/sw/bin/runuser -l thorn -c '${pkgs.alsaUtils}/bin/amixer -q set Master toggle'";
|
||||
}
|
||||
{ keys = [ 114 ];
|
||||
events = [ "key" "rep" ];
|
||||
command =
|
||||
"/run/current-system/sw/bin/runuser -l thorn -c '${pkgs.alsaUtils}/bin/amixer -q -c 0 set Master 4- unmute'";
|
||||
}
|
||||
{ keys = [ 115 ];
|
||||
events = [ "key" "rep" ];
|
||||
command =
|
||||
"/run/current-system/sw/bin/runuser -l thorn -c '${pkgs.alsaUtils}/bin/amixer -q -c 0 set Master 4+ unmute'";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
}
|
19
hardware/iwakura/network.nix
Normal file
19
hardware/iwakura/network.nix
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
|
||||
networking = {
|
||||
hostName = "iwakura";
|
||||
useDHCP = false;
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 8384 6881 6882 6883 6884 6697 ];
|
||||
allowedUDPPorts = [ 6881 6882 6883 6884 6697 ];
|
||||
allowedTCPPortRanges = [
|
||||
{ from = 8995; to = 8999; }
|
||||
];
|
||||
};
|
||||
interfaces = {
|
||||
enp0s25.useDHCP = true;
|
||||
wlp3s0.useDHCP = true;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
13
hardware/iwakura/opengl.nix
Normal file
13
hardware/iwakura/opengl.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
|
||||
services.xserver.deviceSection = ''
|
||||
Option "TearFree" "true"
|
||||
'';
|
||||
|
||||
}
|
10
hardware/iwakura/power.nix
Normal file
10
hardware/iwakura/power.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ lib, ... }:
|
||||
|
||||
{
|
||||
|
||||
powerManagement = {
|
||||
cpuFreqGovernor = lib.mkDefault "powersave";
|
||||
powertop.enable = true;
|
||||
};
|
||||
|
||||
}
|
5
hardware/iwakura/sound.nix
Normal file
5
hardware/iwakura/sound.nix
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
|
||||
sound.enable = true;
|
||||
|
||||
}
|
20
hardware/iwakura/wireless.nix
Normal file
20
hardware/iwakura/wireless.nix
Normal file
@ -0,0 +1,20 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
networking = {
|
||||
networkmanager.enable = false;
|
||||
wireless.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
wirelesstools
|
||||
];
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
boot = {
|
||||
kernelModules = [ "cfg80211" ];
|
||||
};
|
||||
|
||||
}
|
21
lib/colours.nix
Normal file
21
lib/colours.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
fg = "#d7d0c7";
|
||||
bg = "#151515";
|
||||
cc = "#d7d0c7";
|
||||
black = "#101010";
|
||||
blackBold = "#404040";
|
||||
red = "#e84f4f";
|
||||
redBold = "#d23d3d";
|
||||
green = "#b8d68c";
|
||||
greenBold = "#a0cf5d";
|
||||
yellow = "#e1aa5d";
|
||||
yellowBold = "#f39d21";
|
||||
blue = "#4e9fb1";
|
||||
blueBold = "#1e9fd1";
|
||||
magenta = "#9b64fb";
|
||||
magentaBold = "#8542ff";
|
||||
cyan = "#6d878d";
|
||||
cyanBold = "#42717b";
|
||||
white = "#dddddd";
|
||||
whiteBold = "#dddddd";
|
||||
}
|
17
modules/bspwm/default.nix
Normal file
17
modules/bspwm/default.nix
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
layout = "dvorak";
|
||||
libinput = {
|
||||
enable = true;
|
||||
touchpad.disableWhileTyping = true;
|
||||
};
|
||||
displayManager = {
|
||||
lightdm.enable = true;
|
||||
defaultSession = "none+bspwm";
|
||||
};
|
||||
windowManager.bspwm = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
16
modules/bspwm/home.nix
Normal file
16
modules/bspwm/home.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ pkgs, ... }: {
|
||||
|
||||
imports = [
|
||||
./wm.nix
|
||||
./rofi.nix
|
||||
./zsh.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
feh
|
||||
];
|
||||
|
||||
xsession = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
53
modules/bspwm/rofi.nix
Normal file
53
modules/bspwm/rofi.nix
Normal file
@ -0,0 +1,53 @@
|
||||
{ pkgs, ...}:
|
||||
let cs = import ../../lib/colours.nix;
|
||||
in {
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
cycle = true;
|
||||
font = "tewi 8";
|
||||
lines = 10;
|
||||
padding = 5;
|
||||
rowHeight = 1;
|
||||
scrollbar = false;
|
||||
separator = "solid";
|
||||
terminal = "${pkgs.zsh}/bin/zsh";
|
||||
width = 300;
|
||||
borderWidth = 5;
|
||||
colors = {
|
||||
window = {
|
||||
border = cs.fg;
|
||||
separator = cs.red;
|
||||
background = cs.bg;
|
||||
};
|
||||
rows = {
|
||||
active = {
|
||||
background = cs.fg;
|
||||
backgroundAlt = cs.fg;
|
||||
foreground = cs.bg;
|
||||
highlight = {
|
||||
background = cs.red;
|
||||
foreground = cs.redBold;
|
||||
};
|
||||
};
|
||||
urgent = {
|
||||
background = cs.red;
|
||||
backgroundAlt = cs.redBold;
|
||||
foreground = cs.magenta;
|
||||
highlight = {
|
||||
background = cs.greenBold;
|
||||
foreground = cs.yellow;
|
||||
};
|
||||
};
|
||||
normal = {
|
||||
background = cs.bg;
|
||||
backgroundAlt = cs.bg;
|
||||
foreground = cs.fg;
|
||||
highlight = {
|
||||
background = cs.cyanBold;
|
||||
foreground = cs.greenBold;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
64
modules/bspwm/wm.nix
Normal file
64
modules/bspwm/wm.nix
Normal file
@ -0,0 +1,64 @@
|
||||
{ pkgs, config, ... }: {
|
||||
|
||||
home.keyboard.layout = "dvorak";
|
||||
|
||||
# home.file.".xinitrc".text = ''
|
||||
# xrdb ~/.Xresources
|
||||
# sxhkd -m -1 -c ~/.config/sxhkd/sxhkdrc &
|
||||
# exec ${config.xsession.windowManager.command}
|
||||
# '';
|
||||
|
||||
xsession = {
|
||||
enable = true;
|
||||
windowManager.bspwm = {
|
||||
enable = true;
|
||||
monitors = {
|
||||
"LVDS-1" = [ "I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X" ];
|
||||
};
|
||||
rules = {
|
||||
"xterm" = {
|
||||
state = "pseudo_tiled";
|
||||
};
|
||||
};
|
||||
settings = {
|
||||
border_width = 5;
|
||||
window_gap = 10;
|
||||
split_ration = 0.5;
|
||||
};
|
||||
startupPrograms = [
|
||||
"feh --bg-fill .bg"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
services.sxhkd = {
|
||||
enable = true;
|
||||
keybindings = {
|
||||
"super + Return" = "urxvt";
|
||||
"super + {_,shift + }d" = "rofi -show {run,window}";
|
||||
"super + Escape" = "pkill -USR1 -x sxhkd";
|
||||
"super + shift + Escape" = "bspc wm -r";
|
||||
"super + m" = "bspc desktop -l next";
|
||||
"super + {_,shift + }q" = "bspc node -{c,k}";
|
||||
"super + {g, shift+g, c, r}" = "bspc node -t {tiled,pseudo_tiled,floating,fullscreen}";
|
||||
"super + ctrl + {g,c,r,l}" = "bspc node -g {marked,locked,sticky,private}";
|
||||
"super + y" = "bspc node newest.marked.local -n newest.!automatic.local";
|
||||
"super + {_,shift + }{h,t,n,s}" = "bspc node -{f,s} {west,south,north,east}";
|
||||
"super + {p,b,comma,period}" = "bspc node -f @{parent,brother,first,second}";
|
||||
"super + {_,shift + }u" = "bspc node -f {next,prev}.local.!hidden.window";
|
||||
"super + bracket{left,right}" = "bspc desktop -f {prev,next}.local";
|
||||
"super + {_,shift + }{1-9,0}" = "bspc {desktop -f,node -d} '^{1-9,0}'";
|
||||
"super + ctrl + {h,t,n,s}" = "bspc node -p {west,south,north,east}";
|
||||
"super + ctrl + {1-9}" = "bspc node -o 0.{1-9}";
|
||||
"super + ctrl + space" = "bspc node -p cancel";
|
||||
"super + ctrl + shift + space" = "bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel";
|
||||
"super + alt + {h,t,n,s}" = "bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}";
|
||||
"super + alt + shift + {h,t,n,s}" = "bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}";
|
||||
"super + {Left,Down,Up,Right}" = "bspc node -v {-20 0,0 20,0 -20,20 0}";
|
||||
"super + {_,shift + }f" = "bspc node any.local -R {90,270}";
|
||||
"super + ctrl + {_,shift + }f" = "bspc node -R {90,270}";
|
||||
};
|
||||
};
|
||||
|
||||
}
|
39
modules/bspwm/zsh.nix
Normal file
39
modules/bspwm/zsh.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{ pkgs, config, ... } :
|
||||
let
|
||||
wrapPlugin = { name, pkg }: {
|
||||
inherit name;
|
||||
src = pkg + "/share/zsh/site-functions";
|
||||
};
|
||||
in {
|
||||
|
||||
home.packages = [
|
||||
pkgs.swatch
|
||||
];
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableAutosuggestions = true;
|
||||
enableCompletion = true;
|
||||
dotDir = ".config/zsh";
|
||||
history = {
|
||||
expireDuplicatesFirst = true;
|
||||
extended = true;
|
||||
ignoreDups = true;
|
||||
share = true;
|
||||
};
|
||||
initExtra = ''
|
||||
autoload -U colors && colors
|
||||
export PROMPT="%{$fg[white]%}%B$(swatch)%b %{$fg[blue]%}%2~ %{$fg[green]%}%B>%b ";
|
||||
'';
|
||||
shellAliases = {
|
||||
nf = "neofetch --gtk2 off --gtk3 off --ascii_bold on";
|
||||
ls = "ls --color";
|
||||
};
|
||||
plugins = (map wrapPlugin [
|
||||
{ name = "fast-syntax-highlighting";
|
||||
pkg = pkgs.zsh-fast-syntax-highlighting;
|
||||
}
|
||||
]);
|
||||
};
|
||||
programs.dircolors.enableZshIntegration = true;
|
||||
}
|
10
modules/flakes/default.nix
Executable file
10
modules/flakes/default.nix
Executable file
@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }: {
|
||||
|
||||
nix = {
|
||||
package = pkgs.nixUnstable;
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
14
modules/gc/default.nix
Normal file
14
modules/gc/default.nix
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
nix = {
|
||||
autoOptimiseStore = true;
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
extraOptions = ''
|
||||
min-free = ${toString (100*1024*1024)} # 100mb
|
||||
max-free = ${toString (1024*1024*1024)} # free to 1gb free
|
||||
'';
|
||||
};
|
||||
}
|
23
modules/picom/home.nix
Normal file
23
modules/picom/home.nix
Normal file
@ -0,0 +1,23 @@
|
||||
{ pkgs, ... }: {
|
||||
services.picom = {
|
||||
enable = true;
|
||||
activeOpacity = "1.0";
|
||||
inactiveOpacity = "0.85";
|
||||
blur = true;
|
||||
fade = true;
|
||||
fadeDelta = 5;
|
||||
shadow = true;
|
||||
shadowOpacity = "0.8";
|
||||
|
||||
vSync = true;
|
||||
backend = "glx";
|
||||
|
||||
opacityRule = [
|
||||
"99:class_i ?= 'rofi'"
|
||||
];
|
||||
|
||||
extraOptions = ''
|
||||
corner-radius = 5;
|
||||
'';
|
||||
};
|
||||
}
|
10
modules/urxvt/home.nix
Normal file
10
modules/urxvt/home.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }: {
|
||||
programs.urxvt = {
|
||||
enable = true;
|
||||
scroll.bar.enable = false;
|
||||
};
|
||||
|
||||
xresources.extraConfig = ''
|
||||
URxvt.internalBorder: 16
|
||||
'';
|
||||
}
|
10
users/root/default.nix
Normal file
10
users/root/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }: {
|
||||
|
||||
users.users.root = {
|
||||
hashedPassword = "$6$fN9J7sDWZCJU$bybWVlYNHod4qXOTWDl9UZZgn7Bkb17ulM6wTr7hAhyQT4wlmW0An7pcXiYu3SqjSVnEmlma5uujfZ6Z.ZUL91";
|
||||
|
||||
# read all pub keys from ./pubkeys
|
||||
openssh.authorizedKeys.keys = map builtins.readDir ./pubkeys;
|
||||
};
|
||||
|
||||
}
|
24
users/root/home.nix
Executable file
24
users/root/home.nix
Executable file
@ -0,0 +1,24 @@
|
||||
{ lib, pkgs, ... }: {
|
||||
|
||||
imports = [ ];
|
||||
|
||||
home = {
|
||||
|
||||
# keyboard layout, v v important
|
||||
keyboard.layout = "dvorak";
|
||||
|
||||
# packages that only root needs
|
||||
packages = with pkgs; [
|
||||
# system stuff
|
||||
htop gotop
|
||||
git
|
||||
zip p7zip
|
||||
|
||||
# essential things
|
||||
cowsay fortune
|
||||
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
}
|
1
users/root/pubkeys/id_ecdsa.pub
Normal file
1
users/root/pubkeys/id_ecdsa.pub
Normal file
@ -0,0 +1 @@
|
||||
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBADYAmgP0rKhGRTw9+9kRLbl5unjDefQ5X8G20L/5+bLHy5Q0vJkO2PBAqTrfIe23zLSUU7MZwxVyJRF0/3FNPOPfAAP4qv+Tv1waJD3aE1ApJl/Qmvj4a+McwJA3iG3rWdvD59qHs3xVFadE0OxxT21QUi0RAfsHDyEcR+4cnV/9civ4g== thorn avery general use
|
1
users/root/pubkeys/id_ed25519.pub
Normal file
1
users/root/pubkeys/id_ed25519.pub
Normal file
@ -0,0 +1 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIWOEyzcn4ybt6MHXOGP5TSzMXQeoB/pkf9RgQxYtbT2 thorn@iwakura
|
1
users/root/pubkeys/id_rsa.pub
Normal file
1
users/root/pubkeys/id_rsa.pub
Normal file
@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZbZ09bMf8KYtY50WxW0V96GGQ+JA10qskZ1oVeb2+3S9kVdvOBfqbLZ1CTZJ6+j9XOICNTrBPIKBxhWHwYZnikDy+hufxgSkwz1wyMqEKSZv33AxgEV4dhq+rpZMMnan27vmZyaGwyQURio7nI7hZuRJoCdgl/DYz/MrexkwtSZHGR9peZ7wVrjwiT62Nzyly6s4mlP0HjgFDiT67hoFWsC0D+n6xhzM1cYqeuPD32G1kYF91sFau/eqyFoo7RAXM08kDrszChww/otf0q0UeePJR0V9FTmTNaTdFHAxNyy+VYu009qDop+tNyk9BSLBXYSU9olIJDn12Wgw7z/Yn root@TMLAS-487-W10
|
19
users/thorn/default.nix
Normal file
19
users/thorn/default.nix
Normal file
@ -0,0 +1,19 @@
|
||||
{ pkgs, ... }: {
|
||||
|
||||
imports = [
|
||||
./fonts
|
||||
];
|
||||
|
||||
users.users.thorn = {
|
||||
hashedPassword = "$6$fN9J7sDWZCJU$bybWVlYNHod4qXOTWDl9UZZgn7Bkb17ulM6wTr7hAhyQT4wlmW0An7pcXiYu3SqjSVnEmlma5uujfZ6Z.ZUL91";
|
||||
|
||||
# read all pub keys from ./pubkeys
|
||||
openssh.authorizedKeys.keys = map builtins.readFile (builtins.readDir ./pubkeys);
|
||||
isNormalUser = true;
|
||||
home = "/home/thorn";
|
||||
description = "Thorn Avery";
|
||||
extraGroups = [ "wheel" "networkmanager" "disks" ];
|
||||
# shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
}
|
5
users/thorn/fonts/default.nix
Normal file
5
users/thorn/fonts/default.nix
Normal file
@ -0,0 +1,5 @@
|
||||
{ pkgs, ... }: {
|
||||
fonts.fonts = with pkgs; [
|
||||
tewi-font
|
||||
];
|
||||
}
|
9
users/thorn/fonts/home.nix
Normal file
9
users/thorn/fonts/home.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
programs.urxvt.fonts = [
|
||||
"xft:tewi:style=Regular:pixelsize=11"
|
||||
];
|
||||
|
||||
xresources.properties = {
|
||||
"URxvt.boldFont" = "xft:tewi:style=Bold:pixelsize=11";
|
||||
};
|
||||
}
|
81
users/thorn/home.nix
Executable file
81
users/thorn/home.nix
Executable file
@ -0,0 +1,81 @@
|
||||
{ lib, pkgs, ... }: {
|
||||
|
||||
#################################
|
||||
# user level home configuration #
|
||||
#################################
|
||||
|
||||
# this file *should* contain:
|
||||
# * a list of programs i want
|
||||
# * definitions of any files i need in a certain place
|
||||
# * user specific program configuration
|
||||
#
|
||||
# this file should *not* contain:
|
||||
# * default program configuration that is not user specific
|
||||
|
||||
imports = [
|
||||
../../modules/bspwm/home.nix
|
||||
../../modules/urxvt/home.nix
|
||||
../../modules/picom/home.nix
|
||||
|
||||
./fonts/home.nix
|
||||
./xresources.nix
|
||||
];
|
||||
|
||||
home = {
|
||||
|
||||
# keyboard layout, v v important
|
||||
keyboard.layout = "dvorak";
|
||||
|
||||
# packages that are needed
|
||||
packages = with pkgs; [
|
||||
# system stuff
|
||||
htop gotop
|
||||
neofetch scrot
|
||||
git
|
||||
zip p7zip
|
||||
tmux
|
||||
|
||||
# essential things
|
||||
cowsay fortune
|
||||
|
||||
# editors
|
||||
ta.vim
|
||||
|
||||
# web stuff
|
||||
elinks qutebrowser
|
||||
deluge
|
||||
profanity weechat
|
||||
youtube-dl
|
||||
|
||||
# media
|
||||
zathura
|
||||
mpv
|
||||
ncmpcpp
|
||||
|
||||
# prog
|
||||
rgbds sameboy
|
||||
racket
|
||||
stack ghc
|
||||
idris idris2
|
||||
cargo rustc
|
||||
|
||||
# games
|
||||
nethack crawl crawlTiles
|
||||
sgtpuzzles
|
||||
wesnoth openxcom
|
||||
manaplus
|
||||
minetest
|
||||
rftg
|
||||
superTux superTuxKart
|
||||
openttd
|
||||
freeciv unciv
|
||||
opentyrian
|
||||
freedink freedroidrpg
|
||||
freeorion
|
||||
openarena
|
||||
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
}
|
1
users/thorn/pubkeys/id_ecdsa.pub
Normal file
1
users/thorn/pubkeys/id_ecdsa.pub
Normal file
@ -0,0 +1 @@
|
||||
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBADYAmgP0rKhGRTw9+9kRLbl5unjDefQ5X8G20L/5+bLHy5Q0vJkO2PBAqTrfIe23zLSUU7MZwxVyJRF0/3FNPOPfAAP4qv+Tv1waJD3aE1ApJl/Qmvj4a+McwJA3iG3rWdvD59qHs3xVFadE0OxxT21QUi0RAfsHDyEcR+4cnV/9civ4g== thorn avery general use
|
1
users/thorn/pubkeys/id_ed25519.pub
Normal file
1
users/thorn/pubkeys/id_ed25519.pub
Normal file
@ -0,0 +1 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIWOEyzcn4ybt6MHXOGP5TSzMXQeoB/pkf9RgQxYtbT2 thorn@iwakura
|
1
users/thorn/pubkeys/id_rsa.pub
Normal file
1
users/thorn/pubkeys/id_rsa.pub
Normal file
@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZbZ09bMf8KYtY50WxW0V96GGQ+JA10qskZ1oVeb2+3S9kVdvOBfqbLZ1CTZJ6+j9XOICNTrBPIKBxhWHwYZnikDy+hufxgSkwz1wyMqEKSZv33AxgEV4dhq+rpZMMnan27vmZyaGwyQURio7nI7hZuRJoCdgl/DYz/MrexkwtSZHGR9peZ7wVrjwiT62Nzyly6s4mlP0HjgFDiT67hoFWsC0D+n6xhzM1cYqeuPD32G1kYF91sFau/eqyFoo7RAXM08kDrszChww/otf0q0UeePJR0V9FTmTNaTdFHAxNyy+VYu009qDop+tNyk9BSLBXYSU9olIJDn12Wgw7z/Yn root@TMLAS-487-W10
|
27
users/thorn/xresources.nix
Executable file
27
users/thorn/xresources.nix
Executable file
@ -0,0 +1,27 @@
|
||||
let
|
||||
cs = import ../../lib/colours.nix;
|
||||
in {
|
||||
|
||||
xresources.properties = {
|
||||
# "*.font" = "-*-tewi-medium-*-*-*-11-*-*-*-*-*-*-*"
|
||||
"*.foreground" = cs.fg;
|
||||
"*.background" = cs.bg;
|
||||
"*.cursorColor" = cs.cc;
|
||||
"*.color0" = cs.black;
|
||||
"*.color8" = cs.blackBold;
|
||||
"*.color1" = cs.red;
|
||||
"*.color9" = cs.redBold;
|
||||
"*.color2" = cs.green;
|
||||
"*.color10" = cs.greenBold;
|
||||
"*.color3" = cs.yellow;
|
||||
"*.color11" = cs.yellowBold;
|
||||
"*.color4" = cs.blue;
|
||||
"*.color12" = cs.blueBold;
|
||||
"*.color5" = cs.magenta;
|
||||
"*.color13" = cs.magentaBold;
|
||||
"*.color6" = cs.cyan;
|
||||
"*.color14" = cs.cyanBold;
|
||||
"*.color7" = cs.white;
|
||||
"*.color15" = cs.whiteBold;
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user