init
This commit is contained in:
commit
f3d47705d8
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
||||||
19
README.md
Normal file
19
README.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# My Dotfiles ✨
|
||||||
|
These are my dotfiles for my laptop (which I use [NixOS](https://nixos.org/) on). I'm still working on porting more configs to [home-manager](https://github.com/nix-community/home-manager).
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
The `nix` folder contains two sub directories, `etcnixos` and `home-manager`. The former is the contents of `/etc/nixos` (hence the name), whereas the latter is the contents of `~/.config/home-manager`.
|
||||||
|
`justfile` is the [just](https://github.com/casey/just) script I use for updating my nixOS system and syncing the changes with this repo.
|
||||||
|
|
||||||
|
## What do I use?
|
||||||
|
Browser: Firefox 🦊 (actually Librewolf :p)
|
||||||
|
|
||||||
|
Text Editor: [helix](https://github.com/helix-editor/helix)
|
||||||
|
|
||||||
|
Terminal: [alacritty](https://github.com/alacritty/alacritty)
|
||||||
|
|
||||||
|
Shell: [fish](https://fishshell.com/) with the [pure](https://github.com/pure-fish/pure) prompt
|
||||||
|
|
||||||
|
WM: [niri](https://github.com/YaLTeR/niri) (KDE on my desktop)
|
||||||
|
|
||||||
|
There is more that I'm using, but those are the main ones! Read my configs to get more into the specifics.
|
||||||
21
justfile
Normal file
21
justfile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
update_all: system_update home_update sync_configs
|
||||||
|
|
||||||
|
format_home:
|
||||||
|
nixfmt ~/.config/home-manager
|
||||||
|
|
||||||
|
format_system:
|
||||||
|
doas nixfmt /etc/nixos
|
||||||
|
|
||||||
|
system_update:
|
||||||
|
doas nix flake update /etc/nixos
|
||||||
|
doas nixos-rebuild boot --impure
|
||||||
|
|
||||||
|
home_update:
|
||||||
|
nix flake update ~/.config/home-manager
|
||||||
|
rm -fr ~/.gtkrc-2.0
|
||||||
|
home-manager switch --impure
|
||||||
|
|
||||||
|
sync_configs: format_home format_system
|
||||||
|
rsync -a --delete /etc/nixos/ ~/dotfiles/nix/etcnixos/
|
||||||
|
rsync -a --delete ~/.config/home-manager/ ~/dotfiles/nix/home-manager/
|
||||||
|
cp ~/justfile ~/dotfiles/
|
||||||
205
nix/etcnixos/common.nix
Normal file
205
nix/etcnixos/common.nix
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
username,
|
||||||
|
system,
|
||||||
|
hostname,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [ ./declarative-nm.nix ];
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
#garbage collection and cleanup stuff
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
|
||||||
|
#optimize the store
|
||||||
|
optimise.automatic = true;
|
||||||
|
|
||||||
|
#enable flakes!
|
||||||
|
settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
#kernel options
|
||||||
|
boot = {
|
||||||
|
kernelPackages = pkgs.linuxPackages_cachyos-lto;
|
||||||
|
|
||||||
|
kernel.sysctl = {
|
||||||
|
#for profiling
|
||||||
|
"kernel.perf_event_paranoid" = 1;
|
||||||
|
"kernel.kptr_restrict" = 0;
|
||||||
|
|
||||||
|
#dmesg shushhhhh
|
||||||
|
"kernel.printk" = "2 4 1 7";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Bootloader.
|
||||||
|
loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
initrd = {
|
||||||
|
compressor = "zstd";
|
||||||
|
compressorArgs = [ "-1" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc = {
|
||||||
|
#override default nixos /etc/issue
|
||||||
|
"issue".text = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
#fwupd for updating firmware
|
||||||
|
fwupd = {
|
||||||
|
enable = true;
|
||||||
|
extraRemotes = [ "lvfs-testing" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
#auto detect network printers
|
||||||
|
avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = with pkgs; [ hplip ];
|
||||||
|
};
|
||||||
|
|
||||||
|
#disable fprintd (doesn't compile, idk)
|
||||||
|
fprintd.enable = false;
|
||||||
|
|
||||||
|
#Making sure mullvad works on boot
|
||||||
|
mullvad-vpn.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "America/New_York";
|
||||||
|
|
||||||
|
security = {
|
||||||
|
#lets use doas and not sudo!
|
||||||
|
doas.enable = true;
|
||||||
|
sudo.enable = false;
|
||||||
|
# Configure doas
|
||||||
|
doas.extraRules = [
|
||||||
|
{
|
||||||
|
users = [ "${username}" ];
|
||||||
|
keepEnv = true;
|
||||||
|
persist = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
age.identityPaths = [ "/home/${username}/.ssh/id_ed25519" ];
|
||||||
|
|
||||||
|
age.secrets.wifi-passwords = {
|
||||||
|
file = ./secrets/wifi-passwords.age;
|
||||||
|
path = "/etc/secrets/wifi-passwords.nix";
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets.primary-password = {
|
||||||
|
file = ./secrets/primary-password.age;
|
||||||
|
path = "/etc/secrets/primary-password";
|
||||||
|
};
|
||||||
|
|
||||||
|
#networking
|
||||||
|
networking =
|
||||||
|
let
|
||||||
|
wifi-passwords = import "${config.age.secrets.wifi-passwords.path}";
|
||||||
|
in
|
||||||
|
import ./networking.nix { inherit hostname wifi-passwords; };
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
i18n.extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable Bluetooth
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
|
||||||
|
#Enable experimental features for battery % of bluetooth devices
|
||||||
|
settings.General.Experimental = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
#apply gtk themes by enabling dconf
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
|
||||||
|
# Enable sound with pipewire.
|
||||||
|
hardware.pulseaudio.enable = false; # pipewire >>>>>>> pulseaudio
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
# If you want to use JACK applications, uncomment this
|
||||||
|
# jack.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Define my user account (the rest of the configuration if found in `~/.config/home-manager/...`)
|
||||||
|
users.users.${username} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"wheel"
|
||||||
|
"video"
|
||||||
|
"camera"
|
||||||
|
];
|
||||||
|
hashedPasswordFile = config.age.secrets.primary-password.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gvfs.enable = true;
|
||||||
|
programs.gphoto2.enable = true;
|
||||||
|
|
||||||
|
# Enable thermal data
|
||||||
|
services.thermald.enable = true;
|
||||||
|
|
||||||
|
services.pcscd.enable = true;
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
pinentryPackage = pkgs.pinentry-curses;
|
||||||
|
enableSSHSupport = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
#System packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
mullvad-vpn
|
||||||
|
|
||||||
|
#secureboot ctl
|
||||||
|
sbctl
|
||||||
|
|
||||||
|
dmidecode
|
||||||
|
|
||||||
|
(inputs.agenix.packages.${pkgs.system}.default.override { ageBin = "${pkgs.rage}/bin/rage"; })
|
||||||
|
];
|
||||||
|
|
||||||
|
#wayland with electron/chromium applications
|
||||||
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
52
nix/etcnixos/declarative-nm.nix
Normal file
52
nix/etcnixos/declarative-nm.nix
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
# from: https://discourse.nixos.org/t/imperative-declarative-wifi-networks-with-wpa-supplicant/12394/6
|
||||||
|
let
|
||||||
|
cfg = config.networking.networkmanager;
|
||||||
|
|
||||||
|
getFileName = stringAsChars (x: if x == " " then "-" else x);
|
||||||
|
|
||||||
|
createWifi = ssid: opt: {
|
||||||
|
name = "NetworkManager/system-connections/${getFileName ssid}.nmconnection";
|
||||||
|
value = {
|
||||||
|
mode = "0400";
|
||||||
|
source = pkgs.writeText "${ssid}.nmconnection" ''
|
||||||
|
[connection]
|
||||||
|
id=${ssid}
|
||||||
|
type=wifi
|
||||||
|
|
||||||
|
[wifi]
|
||||||
|
ssid=${ssid}
|
||||||
|
|
||||||
|
[wifi-security]
|
||||||
|
${optionalString (opt.psk != null) ''
|
||||||
|
key-mgmt=wpa-psk
|
||||||
|
psk=${opt.psk}''}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keyFiles = mapAttrs' createWifi config.networking.wireless.networks;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.etc = keyFiles;
|
||||||
|
|
||||||
|
systemd.services.NetworkManager-predefined-connections = {
|
||||||
|
restartTriggers = mapAttrsToList (name: value: value.source) keyFiles;
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = "${pkgs.coreutils}/bin/true";
|
||||||
|
ExecReload = "${pkgs.networkmanager}/bin/nmcli connection reload";
|
||||||
|
};
|
||||||
|
reloadIfChanged = true;
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
458
nix/etcnixos/flake.lock
generated
Normal file
458
nix/etcnixos/flake.lock
generated
Normal file
@ -0,0 +1,458 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"agenix": {
|
||||||
|
"inputs": {
|
||||||
|
"darwin": "darwin",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1723293904,
|
||||||
|
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"alvr": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726175462,
|
||||||
|
"narHash": "sha256-OWnvv900LI20DypGLMAsceRTFdkahMns6BHO2OKzmM0=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d5c6dd163d933674a4e3871a89ddddb87036c751",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "pull/308097/head",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chaotic": {
|
||||||
|
"inputs": {
|
||||||
|
"fenix": "fenix",
|
||||||
|
"flake-schemas": "flake-schemas",
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
|
"jovian": "jovian",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726403681,
|
||||||
|
"narHash": "sha256-G922au3LygfpO+4CsAzQmtlg+KXjx8dSwehDwkCFMjQ=",
|
||||||
|
"owner": "chaotic-cx",
|
||||||
|
"repo": "nyx",
|
||||||
|
"rev": "68d822079a1b3e31db3cf1e30e32a69b46e6dfa3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "chaotic-cx",
|
||||||
|
"ref": "nyxpkgs-unstable",
|
||||||
|
"repo": "nyx",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"crane": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1721842668,
|
||||||
|
"narHash": "sha256-k3oiD2z2AAwBFLa4+xfU+7G5fisRXfkvrMTCJrjZzXo=",
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"rev": "529c1a0b1f29f0d78fa3086b8f6a134c71ef3aaf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darwin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1700795494,
|
||||||
|
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lnl7",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fenix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"chaotic",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726230467,
|
||||||
|
"narHash": "sha256-YyMNF7IFyysZ2KeqEO6AmV3nQeaDSxyNXLdHp1ghO60=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "fenix",
|
||||||
|
"rev": "43efa7a3a97f290441bd75b18defcd4f7b8df220",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "fenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1719994518,
|
||||||
|
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-schemas": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1721999734,
|
||||||
|
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
|
||||||
|
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
|
||||||
|
"revCount": 75,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"pre-commit-hooks-nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1703113217,
|
||||||
|
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"chaotic",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726222338,
|
||||||
|
"narHash": "sha256-KuA8ciNR8qCF3dQaCaeh0JWyQUgEwkwDHr/f49Q5/e8=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "503af483e1b328691ea3a434d331995595fb2e3d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jovian": {
|
||||||
|
"inputs": {
|
||||||
|
"nix-github-actions": "nix-github-actions",
|
||||||
|
"nixpkgs": [
|
||||||
|
"chaotic",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726115155,
|
||||||
|
"narHash": "sha256-VDylz5VX4JD4/TZv6xUJDwuvNdgLRGoOpue1dlZGdIQ=",
|
||||||
|
"owner": "Jovian-Experiments",
|
||||||
|
"repo": "Jovian-NixOS",
|
||||||
|
"rev": "02cf60ce20b6034fc0459e5116cec7016aaff6e4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Jovian-Experiments",
|
||||||
|
"repo": "Jovian-NixOS",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lanzaboote": {
|
||||||
|
"inputs": {
|
||||||
|
"crane": "crane",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725379389,
|
||||||
|
"narHash": "sha256-qS1H/5/20ewJIXmf8FN2A5KTOKKU9elWvCPwdBi1P/U=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "lanzaboote",
|
||||||
|
"rev": "e7bd94e0b5ff3c1e686f2101004ebf4fcea9d871",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "lanzaboote",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-github-actions": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"chaotic",
|
||||||
|
"jovian",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1690328911,
|
||||||
|
"narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=",
|
||||||
|
"owner": "zhaofengli",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"rev": "96df4a39c52f53cb7098b923224d8ce941b64747",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "zhaofengli",
|
||||||
|
"ref": "matrix-name",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixos-hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725885300,
|
||||||
|
"narHash": "sha256-5RLEnou1/GJQl+Wd+Bxaj7QY7FFQ9wjnFq1VNEaxTmc=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"rev": "166dee4f88a7e3ba1b7a243edb1aca822f00680e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726243404,
|
||||||
|
"narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720386169,
|
||||||
|
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit-hooks-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"lanzaboote",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1721042469,
|
||||||
|
"narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "f451c19376071a90d8c58ab1a953c6e9840527fd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"agenix": "agenix",
|
||||||
|
"alvr": "alvr",
|
||||||
|
"chaotic": "chaotic",
|
||||||
|
"lanzaboote": "lanzaboote",
|
||||||
|
"nixos-hardware": "nixos-hardware",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-analyzer-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725985110,
|
||||||
|
"narHash": "sha256-0HKj+JI6rtxaE6Kzcd6HyFNbEFJRsLy5DoNgVF1pyRM=",
|
||||||
|
"owner": "rust-lang",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
|
"rev": "bcc708992104c2059f310fbc3ac00bfc377f9ea8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rust-lang",
|
||||||
|
"ref": "nightly",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722219664,
|
||||||
|
"narHash": "sha256-xMOJ+HW4yj6e69PvieohUJ3dBSdgCfvI0nnCEe6/yVc=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "a6fbda5d9a14fb5f7c69b8489d24afeb349c7bb4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
62
nix/etcnixos/flake.nix
Normal file
62
nix/etcnixos/flake.nix
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
description = "A simple NixOS flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
lanzaboote = {
|
||||||
|
url = "github:nix-community/lanzaboote";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
alvr.url = "github:NixOS/nixpkgs/pull/308097/head";
|
||||||
|
|
||||||
|
chaotic = {
|
||||||
|
url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
agenix = {
|
||||||
|
url = "github:ryantm/agenix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
lanzaboote,
|
||||||
|
nixos-hardware,
|
||||||
|
chaotic,
|
||||||
|
agenix,
|
||||||
|
...
|
||||||
|
}@inputs:
|
||||||
|
let
|
||||||
|
username = "primary";
|
||||||
|
hostname = nixpkgs.lib.strings.removeSuffix "\n" (builtins.readFile /etc/hostname);
|
||||||
|
system = "x86_64-linux";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
nixosConfigurations.${hostname} = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs username hostname;
|
||||||
|
};
|
||||||
|
modules =
|
||||||
|
[
|
||||||
|
./system-${hostname}.nix
|
||||||
|
chaotic.nixosModules.default
|
||||||
|
agenix.nixosModules.default
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
if ("${hostname}" == "mreow") then # laptop
|
||||||
|
[
|
||||||
|
nixos-hardware.nixosModules.framework-12th-gen-intel
|
||||||
|
lanzaboote.nixosModules.lanzaboote
|
||||||
|
]
|
||||||
|
else
|
||||||
|
[ ]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
58
nix/etcnixos/hardware_desktop.nix
Normal file
58
nix/etcnixos/hardware_desktop.nix
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"usb_storage"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/ff51be5a-b87b-4e6a-9c1d-796ceeaca153";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/3D37-E610";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [
|
||||||
|
"fmask=0022"
|
||||||
|
"dmask=0022"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/media/steam" = {
|
||||||
|
device = "/dev/disk/by-uuid/df865fc2-6b26-4689-809b-1615f860507e";
|
||||||
|
fsType = "btrfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
53
nix/etcnixos/hardware_laptop.nix
Normal file
53
nix/etcnixos/hardware_laptop.nix
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
#if this is removed, then niri doesn't start, TODO! look into wtf this does
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"nvme"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/acbd96e3-e7c7-442d-82cc-ce2913a9e90c";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [
|
||||||
|
"subvol=@"
|
||||||
|
"compress=zstd"
|
||||||
|
"autodefrag"
|
||||||
|
"noatime"
|
||||||
|
"space_cache=v2"
|
||||||
|
"discard"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."luks-0f481d5f-528c-4838-bd8a-d2780b4ba234".device = "/dev/disk/by-uuid/0f481d5f-528c-4838-bd8a-d2780b4ba234";
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/4D19-520E";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp166s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
17
nix/etcnixos/networking.nix
Normal file
17
nix/etcnixos/networking.nix
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{ hostname, wifi-passwords, ... }:
|
||||||
|
{
|
||||||
|
hostName = "${hostname}";
|
||||||
|
|
||||||
|
networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
insertNameservers = [
|
||||||
|
"1.1.1.1"
|
||||||
|
"8.8.8.8"
|
||||||
|
];
|
||||||
|
wifi = {
|
||||||
|
scanRandMacAddress = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wireless.networks = wifi-passwords;
|
||||||
|
}
|
||||||
BIN
nix/etcnixos/secrets/primary-password.age
Normal file
BIN
nix/etcnixos/secrets/primary-password.age
Normal file
Binary file not shown.
14
nix/etcnixos/secrets/secrets.nix
Normal file
14
nix/etcnixos/secrets/secrets.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
let
|
||||||
|
laptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH";
|
||||||
|
desktop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJjT5QZ3zRDb+V6Em20EYpSEgPW5e/U+06uQGJdraxi";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"wifi-passwords.age".publicKeys = [
|
||||||
|
laptop
|
||||||
|
desktop
|
||||||
|
];
|
||||||
|
"primary-password.age".publicKeys = [
|
||||||
|
laptop
|
||||||
|
desktop
|
||||||
|
];
|
||||||
|
}
|
||||||
BIN
nix/etcnixos/secrets/wifi-passwords.age
Normal file
BIN
nix/etcnixos/secrets/wifi-passwords.age
Normal file
Binary file not shown.
118
nix/etcnixos/system-mreow.nix
Normal file
118
nix/etcnixos/system-mreow.nix
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
username,
|
||||||
|
system,
|
||||||
|
cpu_arch,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./common.nix
|
||||||
|
./hardware_laptop.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
services.tlp = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
CPU_SCALING_GOVERNOR_ON_AC = "performance";
|
||||||
|
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
||||||
|
|
||||||
|
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
|
||||||
|
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
|
||||||
|
|
||||||
|
CPU_MIN_PERF_ON_AC = 0;
|
||||||
|
CPU_MAX_PERF_ON_AC = 100;
|
||||||
|
CPU_MIN_PERF_ON_BAT = 0;
|
||||||
|
CPU_MAX_PERF_ON_BAT = 60;
|
||||||
|
|
||||||
|
CPU_BOOST_ON_BAT = 0;
|
||||||
|
START_CHARGE_THRESH_BAT0 = 90;
|
||||||
|
STOP_CHARGE_THRESH_BAT0 = 95;
|
||||||
|
RUNTIME_PM_ON_BAT = "auto";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
|
||||||
|
#using btrfs, so lets scrub!
|
||||||
|
btrfs.autoScrub = {
|
||||||
|
enable = true;
|
||||||
|
interval = "weekly";
|
||||||
|
fileSystems = [ "/" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd ${pkgs.niri}/bin/niri-session";
|
||||||
|
user = "${username}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
enableContainers = true;
|
||||||
|
|
||||||
|
lanzaboote = {
|
||||||
|
enable = true;
|
||||||
|
pkiBundle = "/etc/secureboot";
|
||||||
|
};
|
||||||
|
# Bootloader.
|
||||||
|
loader = {
|
||||||
|
/*
|
||||||
|
Lanzaboote currently replaces the systemd-boot module.
|
||||||
|
This setting is usually set to true in configuration.nix
|
||||||
|
generated at installation time. So we force it to false
|
||||||
|
for now.
|
||||||
|
*/
|
||||||
|
systemd-boot.enable = lib.mkForce false;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# this is a life saver.
|
||||||
|
# literally no documentation about this anywhere.
|
||||||
|
# might be good to write about this...
|
||||||
|
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
|
||||||
|
systemd.services.greetd.serviceConfig = {
|
||||||
|
Type = "idle";
|
||||||
|
StandardInput = "tty";
|
||||||
|
StandardOutput = "tty";
|
||||||
|
StandardError = "journal"; # Without this errors will spam on screen
|
||||||
|
# Without these bootlogs will spam on screen
|
||||||
|
TTYReset = true;
|
||||||
|
TTYVHangup = true;
|
||||||
|
TTYVTDisallocate = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable common container config files in /etc/containers
|
||||||
|
virtualisation = {
|
||||||
|
containers.enable = true;
|
||||||
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# Required for containers under podman-compose to be able to talk to each other.
|
||||||
|
# defaultNetwork.settings.dns_enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
distrobox
|
||||||
|
niri
|
||||||
|
mangohud
|
||||||
|
];
|
||||||
|
|
||||||
|
# programs.steam.gamescopeSession.enable = true;
|
||||||
|
# programs.gamescope = {
|
||||||
|
# enable = true;
|
||||||
|
# capSysNice = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
#weird hack to get swaylock working? idk, if you don't put this here, password entry doesnt work
|
||||||
|
#if I move to another lock screen program, i will have to replace `swaylock`
|
||||||
|
security.pam.services.swaylock = { };
|
||||||
|
}
|
||||||
132
nix/etcnixos/system-nixos.nix
Normal file
132
nix/etcnixos/system-nixos.nix
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
username,
|
||||||
|
system,
|
||||||
|
cpu_arch,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./common.nix
|
||||||
|
./hardware_desktop.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
kernelPatches = [
|
||||||
|
{
|
||||||
|
name = "amdgpu-ignore-ctx-privileges";
|
||||||
|
patch = pkgs.fetchpatch {
|
||||||
|
name = "cap_sys_nice_begone.patch";
|
||||||
|
url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch";
|
||||||
|
sha256 = "Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
kernelParams = [ "amdgpu.ppfeaturemask=0xFFF7FFFF" ];
|
||||||
|
|
||||||
|
kernelModules = [
|
||||||
|
# kernel module for case fan control
|
||||||
|
"nct6775"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.enable = false;
|
||||||
|
services.desktopManager.plasma6.enable = true;
|
||||||
|
services.displayManager.sddm = {
|
||||||
|
enable = true;
|
||||||
|
wayland.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
ports = [ 22 ];
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = true;
|
||||||
|
AllowUsers = null; # Allows all users by default. Can be [ "user1" "user2" ]
|
||||||
|
UseDns = true;
|
||||||
|
X11Forwarding = false;
|
||||||
|
PermitRootLogin = "prohibit-password"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.no-rgb =
|
||||||
|
let
|
||||||
|
no-rgb = pkgs.writeScriptBin "no-rgb" ''
|
||||||
|
#!/bin/sh
|
||||||
|
NUM_DEVICES=$(${pkgs.openrgb}/bin/openrgb --noautoconnect --list-devices | grep -E '^[0-9]+: ' | wc -l)
|
||||||
|
|
||||||
|
for i in $(seq 0 $(($NUM_DEVICES - 1))); do
|
||||||
|
${pkgs.openrgb}/bin/openrgb --noautoconnect --device $i --mode direct --color 000000
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
description = "disable rgb";
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${no-rgb}/bin/no-rgb";
|
||||||
|
Type = "oneshot";
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.hardware.openrgb.enable = true;
|
||||||
|
services.udev.packages = [ pkgs.openrgb ];
|
||||||
|
hardware.i2c.enable = true;
|
||||||
|
|
||||||
|
#System packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
openrgb-with-all-plugins
|
||||||
|
lact
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.alvr = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.alvr.legacyPackages.${pkgs.system}.alvr;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
|
pkg:
|
||||||
|
builtins.elem (lib.getName pkg) [
|
||||||
|
"steam"
|
||||||
|
"steam-original"
|
||||||
|
"steam-run"
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||||
|
# dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||||
|
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.packages = with pkgs; [ lact ];
|
||||||
|
systemd.services.lactd.wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
# control case fans with gpu temperature
|
||||||
|
# I have case fans attached to my gpu for better cooling
|
||||||
|
hardware.fancontrol = {
|
||||||
|
enable = true;
|
||||||
|
config =
|
||||||
|
let
|
||||||
|
select_hwmon = "hwmon/hwmon[[:print:]]*";
|
||||||
|
gpu_path = "/sys/devices/pci0000:00/0000:00:03.1/0000:09:00.0/0000:0a:00.0/0000:0b:00.0/${select_hwmon}";
|
||||||
|
mobo_path = "/sys/devices/platform/nct6775.656/${select_hwmon}";
|
||||||
|
fan_speed = "${mobo_path}/pwm4";
|
||||||
|
|
||||||
|
in
|
||||||
|
''
|
||||||
|
INTERVAL=10
|
||||||
|
FCTEMPS=${fan_speed}=${gpu_path}/temp1_input
|
||||||
|
FCFANS= ${fan_speed}=${mobo_path}/fan4_input
|
||||||
|
MINTEMP=${fan_speed}=40
|
||||||
|
MAXTEMP=${fan_speed}=80
|
||||||
|
MINSTART=${fan_speed}=150
|
||||||
|
MINSTOP=${fan_speed}=0
|
||||||
|
MAXPWM=${fan_speed}=255
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
400
nix/home-manager/flake.lock
generated
Normal file
400
nix/home-manager/flake.lock
generated
Normal file
@ -0,0 +1,400 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"agenix": {
|
||||||
|
"inputs": {
|
||||||
|
"darwin": "darwin",
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1723293904,
|
||||||
|
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"binsider": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726404049,
|
||||||
|
"narHash": "sha256-RXxrLtYih9jXGYOXKoFWtQRrmtw/HD5cH8FZslFsQYY=",
|
||||||
|
"owner": "orhun",
|
||||||
|
"repo": "binsider",
|
||||||
|
"rev": "fa152e84907441f64f70e7c97f79d18f6f5c9408",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "orhun",
|
||||||
|
"repo": "binsider",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darwin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1700795494,
|
||||||
|
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lnl7",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"firefox-mod-theme": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726262539,
|
||||||
|
"narHash": "sha256-cqV/tJ9bDionSX8KzMj1dv2LRGSXcQ/xV3CWTn/elhQ=",
|
||||||
|
"owner": "datguypiko",
|
||||||
|
"repo": "Firefox-Mod-Blur",
|
||||||
|
"rev": "cbbaa4dc54a060a01b69d096cf7039d8c7aef5f0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "datguypiko",
|
||||||
|
"repo": "Firefox-Mod-Blur",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726153070,
|
||||||
|
"narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726357542,
|
||||||
|
"narHash": "sha256-p4OrJL2weh0TRtaeu1fmNYP6+TOp/W2qdaIJxxQay4c=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "e524c57b1fa55d6ca9d8354c6ce1e538d2a1f47f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"niri-stable": "niri-stable",
|
||||||
|
"niri-unstable": "niri-unstable",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726404066,
|
||||||
|
"narHash": "sha256-Yt438MuAaZ3DEdRcY2qA3V/L2xCG4MoxR1ROv5PmTGU=",
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"rev": "ed6c5c478bf87eddc276b192100cc16e76172383",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726304152,
|
||||||
|
"narHash": "sha256-4YDrKMwXGVOBkeaISbxqf24rLuHvO98TnqxWYfgiSeg=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "6a48728ffb1e638839b07f9ab2f06b2adb41dc61",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"ref": "v0.1.9",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726304152,
|
||||||
|
"narHash": "sha256-4YDrKMwXGVOBkeaISbxqf24rLuHvO98TnqxWYfgiSeg=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "6a48728ffb1e638839b07f9ab2f06b2adb41dc61",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726243404,
|
||||||
|
"narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-lib": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725233747,
|
||||||
|
"narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726320982,
|
||||||
|
"narHash": "sha256-RuVXUwcYwaUeks6h3OLrEmg14z9aFXdWppTWPMTwdQw=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8f7492cce28977fbf8bd12c72af08b1f6c7c3e49",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"protontricks": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722530921,
|
||||||
|
"narHash": "sha256-t794WEMJx/JNX3gTMHfgquFWB7yXkleW07+QURm1NPM=",
|
||||||
|
"owner": "Matoking",
|
||||||
|
"repo": "protontricks",
|
||||||
|
"rev": "f7b1fa33b0438dbd72f7222703f8442e40edc510",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Matoking",
|
||||||
|
"ref": "appinfo_v29",
|
||||||
|
"repo": "protontricks",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"agenix": "agenix",
|
||||||
|
"binsider": "binsider",
|
||||||
|
"firefox-mod-theme": "firefox-mod-theme",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"niri": "niri",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"protontricks": "protontricks",
|
||||||
|
"rust-overlay": "rust-overlay",
|
||||||
|
"vdf-patch": "vdf-patch",
|
||||||
|
"zen-browser": "zen-browser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726382494,
|
||||||
|
"narHash": "sha256-T7W+ohiXe1IY0yf/PpS4wQItZ0SyRO+/v8kqNpMXlI4=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "ff13821613ffe5dbfeb4fe353b1f4bf291d831db",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vdf-patch": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1719784100,
|
||||||
|
"narHash": "sha256-OPonFrYrEFYtx0T2hvSYXl/idsm0iDPwqlnm1KbTPIo=",
|
||||||
|
"owner": "Matoking",
|
||||||
|
"repo": "vdf",
|
||||||
|
"rev": "981cad270c2558aeb8eccaf42cfcf9fabbbed199",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Matoking",
|
||||||
|
"ref": "support_new_bvdf",
|
||||||
|
"repo": "vdf",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1718165778,
|
||||||
|
"narHash": "sha256-dwF9nI54a6Fo9XU5s4qmvMXSgCid3YQVGxch00qEMvI=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "b6d281967cb0b7bf1dfdb8d0f597b517dc4aa5c5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"ref": "v0.4",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726378112,
|
||||||
|
"narHash": "sha256-OANPb73V/RQDqtpIcbzeJ93KuOHKFQv+1xXC44Ut7tY=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "b962a0f33b503aa39c9cf6919f488b664e5b79b4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zen-browser": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726001766,
|
||||||
|
"narHash": "sha256-ADvEWfo0AuHR06ah1nnzOyhsG05/b5QpUc7vFNbiEfM=",
|
||||||
|
"owner": "MarceColl",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"rev": "06505a088396e2c0b9ad100302502783a6bcdb40",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "MarceColl",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
100
nix/home-manager/flake.nix
Normal file
100
nix/home-manager/flake.nix
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
description = "My nixOS flake for home-manager";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
niri = {
|
||||||
|
url = "github:sodiboo/niri-flake";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
agenix = {
|
||||||
|
url = "github:ryantm/agenix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
rust-overlay = {
|
||||||
|
url = "github:oxalica/rust-overlay";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
binsider = {
|
||||||
|
url = "github:orhun/binsider";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
zen-browser = {
|
||||||
|
url = "github:MarceColl/zen-browser-flake";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# sources to patch protontricks as it doesn't work with latest steam beta
|
||||||
|
# https://github.com/Matoking/protontricks/issues/304#issuecomment-2280920826
|
||||||
|
protontricks = {
|
||||||
|
url = "github:Matoking/protontricks/appinfo_v29";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
vdf-patch = {
|
||||||
|
url = "github:Matoking/vdf/support_new_bvdf";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
firefox-mod-theme = {
|
||||||
|
url = "github:datguypiko/Firefox-Mod-Blur";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
home-manager,
|
||||||
|
niri,
|
||||||
|
rust-overlay,
|
||||||
|
agenix,
|
||||||
|
...
|
||||||
|
}@inputs:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
username = "primary";
|
||||||
|
homeDirectory = "/home/${username}";
|
||||||
|
hostname = nixpkgs.lib.strings.removeSuffix "\n" (builtins.readFile /etc/hostname);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
homeConfigurations.${username} = home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs username homeDirectory;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
./system-${hostname}.nix
|
||||||
|
niri.homeModules.config
|
||||||
|
agenix.homeManagerModules.age
|
||||||
|
|
||||||
|
# add declarative rust modules
|
||||||
|
(
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [ rust-overlay.overlays.default ];
|
||||||
|
|
||||||
|
# home-manager stuff
|
||||||
|
home = {
|
||||||
|
inherit username homeDirectory;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
192
nix/home-manager/gui.nix
Normal file
192
nix/home-manager/gui.nix
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
homeDirectory,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./no-gui.nix
|
||||||
|
./progs/librewolf.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
|
pkg:
|
||||||
|
builtins.elem (lib.getName pkg) [
|
||||||
|
"apple_cursor"
|
||||||
|
"factorio-alpha"
|
||||||
|
];
|
||||||
|
|
||||||
|
age.secrets.factorio = {
|
||||||
|
file = ./secrets/factorio.age;
|
||||||
|
path = "${homeDirectory}/.secrets/factorio.nix";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
#calculator
|
||||||
|
gnome-calculator
|
||||||
|
|
||||||
|
#productivity stuff
|
||||||
|
libreoffice
|
||||||
|
hunspell # spellcheck
|
||||||
|
hunspellDicts.en_US # spellcheck dictionary
|
||||||
|
|
||||||
|
#video and audio downloading
|
||||||
|
parabolic
|
||||||
|
|
||||||
|
#soulseek client
|
||||||
|
nicotine-plus
|
||||||
|
|
||||||
|
#dark web browsing deep web browsing
|
||||||
|
tor-browser
|
||||||
|
|
||||||
|
#audio editing
|
||||||
|
audacity
|
||||||
|
|
||||||
|
#fonts
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-emoji
|
||||||
|
liberation_ttf
|
||||||
|
nerdfonts
|
||||||
|
jetbrains-mono
|
||||||
|
|
||||||
|
#for ebook reading
|
||||||
|
foliate
|
||||||
|
|
||||||
|
#audio mixer (pavucontrol but for pipewire)
|
||||||
|
pwvucontrol
|
||||||
|
|
||||||
|
#minecraft launcher
|
||||||
|
prismlauncher
|
||||||
|
|
||||||
|
mpv
|
||||||
|
mumble
|
||||||
|
system76-keyboard-configurator
|
||||||
|
mission-center
|
||||||
|
|
||||||
|
#jellyfin
|
||||||
|
finamp # music player
|
||||||
|
delfin # jellyfin client
|
||||||
|
|
||||||
|
signal-desktop
|
||||||
|
|
||||||
|
#accounting
|
||||||
|
gnucash
|
||||||
|
|
||||||
|
imagemagick
|
||||||
|
inkscape
|
||||||
|
nomacs
|
||||||
|
|
||||||
|
nautilus
|
||||||
|
|
||||||
|
darktable
|
||||||
|
|
||||||
|
lrcget
|
||||||
|
|
||||||
|
#openstreetmap contributing
|
||||||
|
josm
|
||||||
|
|
||||||
|
easyeffects
|
||||||
|
gparted
|
||||||
|
|
||||||
|
gpt4all
|
||||||
|
|
||||||
|
#small nicities
|
||||||
|
wl-clipboard # wl-copy & wl-paste
|
||||||
|
libnotify # notifications library
|
||||||
|
xdg-utils # xdg utils
|
||||||
|
|
||||||
|
gnome-disk-utility
|
||||||
|
|
||||||
|
puddletag
|
||||||
|
|
||||||
|
inputs.zen-browser.packages."${system}".specific
|
||||||
|
|
||||||
|
(factorio.override (
|
||||||
|
let
|
||||||
|
data = import "${config.age.secrets.factorio.path}";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
username = data.username;
|
||||||
|
token = data.token;
|
||||||
|
}
|
||||||
|
))
|
||||||
|
];
|
||||||
|
|
||||||
|
# make chromium-based stuff use wayland
|
||||||
|
home.file.".config/chromium-flags.conf".text = "--ozone-platform-hint=auto";
|
||||||
|
|
||||||
|
#dark mode
|
||||||
|
dconf.settings = {
|
||||||
|
"org/gnome/desktop/interface" = {
|
||||||
|
color-scheme = "prefer-dark";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
TERMINAL = "alacritty";
|
||||||
|
};
|
||||||
|
|
||||||
|
#rofi for application launcher
|
||||||
|
programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.rofi-wayland;
|
||||||
|
extraConfig = {
|
||||||
|
modi = "window,drun,ssh,combi";
|
||||||
|
combi-modi = "window,drun,ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#Terminal emulator
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.alacritty;
|
||||||
|
settings = import ./progs/alacritty.nix { inherit pkgs; };
|
||||||
|
};
|
||||||
|
|
||||||
|
#for trezor stuff
|
||||||
|
/*
|
||||||
|
trezor-udev-rules #trezor udev rules
|
||||||
|
trezord
|
||||||
|
trezor-suite
|
||||||
|
monero-gui
|
||||||
|
monero-cli
|
||||||
|
trezorctl
|
||||||
|
*/
|
||||||
|
|
||||||
|
#allow extra fonts to be detected by fontconfig
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
#gtk application theming
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
# make gtk3 applications look like libadwaita applications!
|
||||||
|
theme = {
|
||||||
|
package = pkgs.adw-gtk3;
|
||||||
|
name = "adw-gtk3-dark";
|
||||||
|
};
|
||||||
|
iconTheme = {
|
||||||
|
package = pkgs.adwaita-icon-theme;
|
||||||
|
name = "Adwaita";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#qt application theming
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
style = {
|
||||||
|
name = "breeze-dark";
|
||||||
|
package = pkgs.kdePackages.breeze;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#macOS cursor!
|
||||||
|
home.pointerCursor = {
|
||||||
|
gtk.enable = true;
|
||||||
|
package = pkgs.apple-cursor;
|
||||||
|
name = "macOS";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
}
|
||||||
175
nix/home-manager/no-gui.nix
Normal file
175
nix/home-manager/no-gui.nix
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.stateVersion = "24.11";
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
#hex viewer
|
||||||
|
hexyl
|
||||||
|
|
||||||
|
#rust stuff
|
||||||
|
(rust-bin.selectLatestNightlyWith (
|
||||||
|
toolchain:
|
||||||
|
toolchain.default.override {
|
||||||
|
extensions = [
|
||||||
|
"rust-src"
|
||||||
|
"rust-analyzer"
|
||||||
|
"clippy"
|
||||||
|
"rustfmt"
|
||||||
|
"rust-std"
|
||||||
|
"cargo"
|
||||||
|
];
|
||||||
|
#thumbv7m-none-eabi target for stm32
|
||||||
|
targets = [ "thumbv7m-none-eabi" ];
|
||||||
|
}
|
||||||
|
))
|
||||||
|
|
||||||
|
#find typos in code
|
||||||
|
typos
|
||||||
|
|
||||||
|
#python formatter
|
||||||
|
ruff
|
||||||
|
|
||||||
|
#for website generation
|
||||||
|
hugo
|
||||||
|
|
||||||
|
#java development
|
||||||
|
google-java-format # formatter
|
||||||
|
jdk # java
|
||||||
|
jdt-language-server # lsp server
|
||||||
|
|
||||||
|
#for benchmaking stuff
|
||||||
|
hyperfine
|
||||||
|
|
||||||
|
#replacements for common posix tools
|
||||||
|
eza # ls replacement
|
||||||
|
bat # pretty `cat` clone
|
||||||
|
delta # viewer for `git` and `diff` output
|
||||||
|
dust # pretty `du` version
|
||||||
|
duf # better `df` clone
|
||||||
|
gping # `ping`... but with a graph!!
|
||||||
|
tldr # `man` but more straight-forward and simpler
|
||||||
|
ripgrep # grep, but written in rust, respects .gitignore, and very very fast, command is `rg`
|
||||||
|
|
||||||
|
#adds `sensors` command
|
||||||
|
lm_sensors
|
||||||
|
|
||||||
|
#rssfeed
|
||||||
|
newsboat
|
||||||
|
|
||||||
|
#HTML/CSS/JSON/ESLint language servers
|
||||||
|
vscode-langservers-extracted
|
||||||
|
|
||||||
|
just
|
||||||
|
|
||||||
|
pfetch-rs
|
||||||
|
waypipe
|
||||||
|
htop
|
||||||
|
bottom
|
||||||
|
wget
|
||||||
|
unzip
|
||||||
|
mold
|
||||||
|
gcc
|
||||||
|
compsize
|
||||||
|
killall
|
||||||
|
gnumake
|
||||||
|
|
||||||
|
sshfs
|
||||||
|
|
||||||
|
#nix formatter
|
||||||
|
nixfmt-rfc-style
|
||||||
|
|
||||||
|
#serial viewer
|
||||||
|
minicom
|
||||||
|
|
||||||
|
#"~~matt's~~ my trace route"
|
||||||
|
mtr
|
||||||
|
|
||||||
|
file
|
||||||
|
|
||||||
|
b3sum
|
||||||
|
|
||||||
|
ffmpeg-full
|
||||||
|
|
||||||
|
#microcontroller tooling
|
||||||
|
probe-rs
|
||||||
|
|
||||||
|
(python312.withPackages (
|
||||||
|
ps: with ps; [
|
||||||
|
python-lsp-server # lsp
|
||||||
|
python-lsp-ruff # ruff integration
|
||||||
|
]
|
||||||
|
))
|
||||||
|
|
||||||
|
binwalk
|
||||||
|
|
||||||
|
smartmontools
|
||||||
|
|
||||||
|
nil # nix lsp
|
||||||
|
yaml-language-server # yaml lsp
|
||||||
|
marksman # markdown lsp
|
||||||
|
|
||||||
|
#clang-format and clang-tidy
|
||||||
|
clang-tools
|
||||||
|
|
||||||
|
inputs.binsider.packages.${pkgs.system}.binsider
|
||||||
|
|
||||||
|
lldb
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".cargo/config.toml".text = ''
|
||||||
|
[target.${lib.strings.removeSuffix "-linux" pkgs.system}-unknown-linux-gnu]
|
||||||
|
linker = "${pkgs.clang}/bin/clang"
|
||||||
|
rustflags = ["-C", "link-arg=-fuse-ld=${pkgs.mold}/bin/mold"]
|
||||||
|
'';
|
||||||
|
|
||||||
|
#default applications
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "hx";
|
||||||
|
};
|
||||||
|
|
||||||
|
#feed reader
|
||||||
|
programs.newsboat = {
|
||||||
|
enable = true;
|
||||||
|
#store rss feeds in a seperate file beacuse it's *a lot*
|
||||||
|
urls = import ./progs/rss.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
#git (self explanatory)
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.git;
|
||||||
|
userName = "Simon Gardling";
|
||||||
|
userEmail = "titaniumtown@proton.me";
|
||||||
|
|
||||||
|
#better way to view diffs
|
||||||
|
delta.enable = true;
|
||||||
|
|
||||||
|
#master -> main
|
||||||
|
extraConfig = {
|
||||||
|
init = {
|
||||||
|
defaultBranch = "main";
|
||||||
|
};
|
||||||
|
push.autoSetupRemote = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
#gpg signing keys
|
||||||
|
signing = {
|
||||||
|
key = "9AB28AC10ECE533D";
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#fish shell!
|
||||||
|
programs.fish = import ./progs/fish.nix { inherit pkgs; };
|
||||||
|
|
||||||
|
#text editor
|
||||||
|
programs.helix = import ./progs/helix.nix { inherit pkgs; };
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
}
|
||||||
118
nix/home-manager/progs/alacritty.nix
Normal file
118
nix/home-manager/progs/alacritty.nix
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
{
|
||||||
|
#use the fish shell
|
||||||
|
shell.program = "${pkgs.fish}/bin/fish";
|
||||||
|
|
||||||
|
#some programs can't handle alacritty
|
||||||
|
env.TERM = "xterm-256color";
|
||||||
|
|
||||||
|
window = {
|
||||||
|
#using a window manager, no decorations needed
|
||||||
|
decorations = "none";
|
||||||
|
|
||||||
|
#semi-transparent
|
||||||
|
opacity = 0.95;
|
||||||
|
|
||||||
|
#pading between the content of the terminal and the edge
|
||||||
|
padding = {
|
||||||
|
x = 10;
|
||||||
|
y = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
dimensions = {
|
||||||
|
columns = 80;
|
||||||
|
lines = 40;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
scrolling = {
|
||||||
|
history = 1000;
|
||||||
|
multiplier = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
font =
|
||||||
|
let
|
||||||
|
baseFont = {
|
||||||
|
family = "JetBrains Mono Nerd Font";
|
||||||
|
style = "Regular";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
size = 12;
|
||||||
|
|
||||||
|
normal = baseFont;
|
||||||
|
|
||||||
|
bold = baseFont // {
|
||||||
|
style = "Bold";
|
||||||
|
};
|
||||||
|
|
||||||
|
italic = baseFont // {
|
||||||
|
style = "Italic";
|
||||||
|
};
|
||||||
|
|
||||||
|
offset.y = 0;
|
||||||
|
glyph_offset.y = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#color scheme
|
||||||
|
colors = {
|
||||||
|
primary = {
|
||||||
|
background = "0x131621";
|
||||||
|
foreground = "0xa6accd";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
text = "CellBackground";
|
||||||
|
cursor = "CellForeground";
|
||||||
|
};
|
||||||
|
|
||||||
|
search = {
|
||||||
|
matches = {
|
||||||
|
foreground = "0x1b1e28";
|
||||||
|
background = "0xadd7ff";
|
||||||
|
};
|
||||||
|
|
||||||
|
focused_match = {
|
||||||
|
foreground = "0x1b1e28";
|
||||||
|
background = "0xadd7ff";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
selection = {
|
||||||
|
text = "CellForeground";
|
||||||
|
background = "0x303340";
|
||||||
|
};
|
||||||
|
|
||||||
|
vi_mode_cursor = {
|
||||||
|
text = "CellBackground";
|
||||||
|
cursor = "CellForeground";
|
||||||
|
};
|
||||||
|
|
||||||
|
normal = {
|
||||||
|
black = "0x1b1e28";
|
||||||
|
red = "0xd0679d";
|
||||||
|
green = "0x5de4c7";
|
||||||
|
yellow = "0xfffac2";
|
||||||
|
blue = "#435c89";
|
||||||
|
magenta = "0xfcc5e9";
|
||||||
|
cyan = "0xadd7ff";
|
||||||
|
white = "0xffffff";
|
||||||
|
};
|
||||||
|
|
||||||
|
bright = {
|
||||||
|
black = "0xa6accd";
|
||||||
|
red = "0xd0679d";
|
||||||
|
green = "0x5de4c7";
|
||||||
|
yellow = "0xfffac2";
|
||||||
|
blue = "0xadd7ff";
|
||||||
|
magenta = "0xfae4fc";
|
||||||
|
cyan = "0x89ddff";
|
||||||
|
white = "0xffffff";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
style = "Underline";
|
||||||
|
vi_mode_style = "Underline";
|
||||||
|
};
|
||||||
|
}
|
||||||
39
nix/home-manager/progs/borg.nix
Normal file
39
nix/home-manager/progs/borg.nix
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{ homeDirectory }:
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
location = {
|
||||||
|
sourceDirectories = [
|
||||||
|
"/etc/nixos"
|
||||||
|
"${homeDirectory}/.librewolf"
|
||||||
|
"${homeDirectory}/dotfiles"
|
||||||
|
"${homeDirectory}/.config/home-manager"
|
||||||
|
"${homeDirectory}/.config/Signal"
|
||||||
|
"${homeDirectory}/Documents"
|
||||||
|
"${homeDirectory}/projects"
|
||||||
|
"${homeDirectory}/Pictures"
|
||||||
|
"${homeDirectory}/school"
|
||||||
|
"${homeDirectory}/.wallpaper.png"
|
||||||
|
"${homeDirectory}/.ssh"
|
||||||
|
"${homeDirectory}/justfile"
|
||||||
|
"${homeDirectory}/.local/share/fish"
|
||||||
|
"${homeDirectory}/.gnupg"
|
||||||
|
];
|
||||||
|
excludeHomeManagerSymlinks = true;
|
||||||
|
|
||||||
|
repositories = [ "ssh://server-public/mnt/bak/laptop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
retention = {
|
||||||
|
keepHourly = 48;
|
||||||
|
keepDaily = 30;
|
||||||
|
keepWeekly = 26;
|
||||||
|
keepMonthly = 24;
|
||||||
|
keepYearly = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
storage = {
|
||||||
|
#super secret password location (maybe I should find a way to store secrets properly)
|
||||||
|
encryptionPasscommand = "cat ${homeDirectory}/Documents/secrets/borg_bak_pass";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
57
nix/home-manager/progs/fish.nix
Normal file
57
nix/home-manager/progs/fish.nix
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
interactiveShellInit = ''
|
||||||
|
#disable greeting
|
||||||
|
set fish_greeting
|
||||||
|
|
||||||
|
#fixes gnupg password entry
|
||||||
|
export GPG_TTY=(${pkgs.coreutils}/bin/tty)
|
||||||
|
|
||||||
|
#pfetch on shell start
|
||||||
|
PF_INFO="ascii title os host kernel uptime memory editor wm" ${pkgs.pfetch-rs}/bin/pfetch
|
||||||
|
'';
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
c = "${pkgs.cargo}/bin/cargo";
|
||||||
|
cr = "${pkgs.cargo}/bin/cargo run";
|
||||||
|
cb = "${pkgs.cargo}/bin/cargo build";
|
||||||
|
|
||||||
|
# from DistroTube's dot files: Changing "ls" to "eza"
|
||||||
|
ls = "${pkgs.eza}/bin/eza -al --color=always --group-directories-first";
|
||||||
|
la = "${pkgs.eza}/bin/eza -a --color=always --group-directories-first";
|
||||||
|
ll = "${pkgs.eza}/bin/eza -l --color=always --group-directories-first";
|
||||||
|
lt = "${pkgs.eza}/bin/eza -aT --color=always --group-directories-first";
|
||||||
|
|
||||||
|
# gets the largest files in a git repo's history
|
||||||
|
"git-size" = ''
|
||||||
|
${pkgs.git}/bin/git rev-list --objects --all |
|
||||||
|
${pkgs.git}/bin/git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' |
|
||||||
|
${pkgs.gnused}/bin/sed -n 's/^blob //p' |
|
||||||
|
${pkgs.coreutils}/bin/sort --numeric-sort --key=2 |
|
||||||
|
${pkgs.coreutils}/bin/cut -c 1-12,41- |
|
||||||
|
${pkgs.coreutils}/bin/numfmt --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest'';
|
||||||
|
|
||||||
|
#aliases for (I think) macos commands
|
||||||
|
pbcopy = "${pkgs.wl-clipboard}/bin/wl-copy";
|
||||||
|
pbpaste = "${pkgs.wl-clipboard}/bin/wl-paste";
|
||||||
|
};
|
||||||
|
|
||||||
|
shellInit = ''
|
||||||
|
fish_add_path ~/.local/bin
|
||||||
|
fish_add_path ~/.cargo/bin
|
||||||
|
set hydro_color_pwd 62A
|
||||||
|
set hydro_color_error red
|
||||||
|
set hydro_color_duration yellow
|
||||||
|
set hydro_color_prompt green
|
||||||
|
set hydro_color_git blue
|
||||||
|
'';
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "hydro";
|
||||||
|
src = pkgs.fishPlugins.hydro.src;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
288
nix/home-manager/progs/helix.nix
Normal file
288
nix/home-manager/progs/helix.nix
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.helix;
|
||||||
|
settings = {
|
||||||
|
theme = "my_theme";
|
||||||
|
editor = {
|
||||||
|
cursor-shape = {
|
||||||
|
insert = "bar";
|
||||||
|
normal = "block";
|
||||||
|
select = "underline";
|
||||||
|
};
|
||||||
|
|
||||||
|
file-picker = {
|
||||||
|
hidden = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
#wrapping!!
|
||||||
|
soft-wrap.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
languages = {
|
||||||
|
language = [
|
||||||
|
{
|
||||||
|
name = "rust";
|
||||||
|
auto-format = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
themes = {
|
||||||
|
#modified fleet_dark theme
|
||||||
|
my_theme =
|
||||||
|
let
|
||||||
|
white = "#ffffff";
|
||||||
|
gray-120 = "#d1d1d1";
|
||||||
|
gray-110 = "#c2c2c2";
|
||||||
|
gray-100 = "#a0a0a0";
|
||||||
|
gray-90 = "#898989";
|
||||||
|
gray-80 = "#767676";
|
||||||
|
gray-70 = "#5d5d5d";
|
||||||
|
gray-60 = "#484848";
|
||||||
|
gray-50 = "#383838";
|
||||||
|
gray-40 = "#333333";
|
||||||
|
gray-30 = "#2d2d2d";
|
||||||
|
gray-20 = "#292929";
|
||||||
|
gray-15 = "#1F1F1F";
|
||||||
|
gray-10 = "#181818";
|
||||||
|
black = "#000000";
|
||||||
|
blue-110 = "#6daaf7";
|
||||||
|
blue-100 = "#4d9bf8";
|
||||||
|
blue-90 = "#3691f9";
|
||||||
|
blue-80 = "#1a85f6";
|
||||||
|
blue-70 = "#0273eb";
|
||||||
|
blue-60 = "#0c6ddd";
|
||||||
|
blue-50 = "#195eb5";
|
||||||
|
blue-40 = "#194176";
|
||||||
|
blue-30 = "#163764";
|
||||||
|
blue-20 = "#132c4f";
|
||||||
|
blue-10 = "#0b1b32";
|
||||||
|
red-80 = "#ec7388";
|
||||||
|
red-70 = "#ea4b67";
|
||||||
|
red-60 = "#d93953";
|
||||||
|
red-50 = "#ce364d";
|
||||||
|
red-40 = "#c03248";
|
||||||
|
red-30 = "#a72a3f";
|
||||||
|
red-20 = "#761b2d";
|
||||||
|
red-10 = "#390813";
|
||||||
|
green-50 = "#4ca988";
|
||||||
|
green-40 = "#3ea17f";
|
||||||
|
green-30 = "#028764";
|
||||||
|
green-20 = "#134939";
|
||||||
|
green-10 = "#081f19";
|
||||||
|
yellow-60 = "#f8ab17";
|
||||||
|
yellow-50 = "#e1971b";
|
||||||
|
yellow-40 = "#b5791f";
|
||||||
|
yellow-30 = "#7c511a";
|
||||||
|
yellow-20 = "#5a3a14";
|
||||||
|
yellow-10 = "#281806";
|
||||||
|
purple-20 = "#c07bf3";
|
||||||
|
purple-10 = "#b35def";
|
||||||
|
|
||||||
|
blue = "#87C3FF";
|
||||||
|
blue-light = "#ADD1DE";
|
||||||
|
coral = "#CC7C8A";
|
||||||
|
cyan = "#82D2CE";
|
||||||
|
cyan-dark = "#779E9E";
|
||||||
|
lime = "#A8CC7C";
|
||||||
|
orange = "#E09B70";
|
||||||
|
pink = "#E394DC";
|
||||||
|
violet = "#AF9CFF";
|
||||||
|
yellow = "#EBC88D";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"attribute" = lime;
|
||||||
|
"type" = blue;
|
||||||
|
"type.return" = blue-light;
|
||||||
|
"type.parameter" = blue-light;
|
||||||
|
"constructor" = yellow;
|
||||||
|
"constant" = violet;
|
||||||
|
"constant.builtin.boolean" = cyan;
|
||||||
|
"constant.character" = yellow;
|
||||||
|
"constant.character.escape" = cyan;
|
||||||
|
"constant.numeric" = yellow;
|
||||||
|
"string" = pink;
|
||||||
|
"string.regexp" = cyan;
|
||||||
|
"string.special" = {
|
||||||
|
fg = yellow;
|
||||||
|
modifiers = [ "underlined" ];
|
||||||
|
}; # .path / .url / .symbol
|
||||||
|
|
||||||
|
"comment" = gray-90; # .line
|
||||||
|
# "comment.block" = {} # .documentation
|
||||||
|
"variable" = gray-120; # .builtin
|
||||||
|
"variable.builtin" = {
|
||||||
|
fg = coral;
|
||||||
|
};
|
||||||
|
# "variable.other" = {} # .member
|
||||||
|
"variable.other.member" = violet;
|
||||||
|
"label" = yellow;
|
||||||
|
"keyword" = cyan; # .operator / .directive / .function
|
||||||
|
"function" = yellow;
|
||||||
|
"function.declaration" = "#EFEFEF";
|
||||||
|
"function.macro" = lime;
|
||||||
|
"function.builtin" = lime;
|
||||||
|
"function.special" = lime;
|
||||||
|
#"function.declaration.method" = { fg = "lightest", modifiers = ["bold"] } #depends on #4892
|
||||||
|
"tag" = blue;
|
||||||
|
"special" = lime;
|
||||||
|
"namespace" = blue;
|
||||||
|
|
||||||
|
# used in theming
|
||||||
|
# "markup" = {} # .normal / .quote / .raw
|
||||||
|
# "markup.normal" = {} # .completion / .hover
|
||||||
|
"markup.bold" = {
|
||||||
|
modifiers = [ "bold" ];
|
||||||
|
};
|
||||||
|
"markup.italic" = {
|
||||||
|
modifiers = [ "italic" ];
|
||||||
|
};
|
||||||
|
"markup.strikethrough" = {
|
||||||
|
modifiers = [ "crossed_out" ];
|
||||||
|
};
|
||||||
|
"markup.heading" = {
|
||||||
|
fg = cyan;
|
||||||
|
modifiers = [ "bold" ];
|
||||||
|
}; # .marker / .1 / .2 / .3 / .4 / .5 / .6
|
||||||
|
"markup.list" = pink; # .unnumbered / .numbered
|
||||||
|
"markup.list.numbered" = cyan;
|
||||||
|
"markup.list.unnumbered" = cyan;
|
||||||
|
# "markup.link" = "green"
|
||||||
|
"markup.link.url" = {
|
||||||
|
fg = pink;
|
||||||
|
modifiers = [
|
||||||
|
"italic"
|
||||||
|
"underlined"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"markup.link.text" = cyan;
|
||||||
|
"markup.link.label" = purple-20;
|
||||||
|
"markup.quote" = pink;
|
||||||
|
"markup.raw" = pink;
|
||||||
|
"markup.raw.inline" = cyan; # .completion / .hover
|
||||||
|
"markup.raw.block" = "#EB83E2";
|
||||||
|
|
||||||
|
"diff.plus" = green-50;
|
||||||
|
"diff.minus" = red-50;
|
||||||
|
"diff.delta" = blue-80;
|
||||||
|
|
||||||
|
# ui specific
|
||||||
|
# "ui.background" = { bg = gray-10; }; # .separator
|
||||||
|
"ui.background" = { };
|
||||||
|
"ui.statusline" = {
|
||||||
|
fg = gray-120;
|
||||||
|
bg = gray-20;
|
||||||
|
}; # .inactive / .normal / .insert / .select
|
||||||
|
"ui.statusline.normal" = {
|
||||||
|
fg = gray-120;
|
||||||
|
bg = gray-20;
|
||||||
|
};
|
||||||
|
"ui.statusline.inactive" = {
|
||||||
|
fg = gray-90;
|
||||||
|
};
|
||||||
|
"ui.statusline.insert" = {
|
||||||
|
fg = gray-20;
|
||||||
|
bg = blue-90;
|
||||||
|
};
|
||||||
|
"ui.statusline.select" = {
|
||||||
|
fg = gray-20;
|
||||||
|
bg = yellow-60;
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.cursor" = {
|
||||||
|
modifiers = [ "reversed" ];
|
||||||
|
}; # .insert / .select / .match / .primary
|
||||||
|
"ui.cursor.match" = {
|
||||||
|
bg = blue-30;
|
||||||
|
}; # .insert / .select / .match / .primary
|
||||||
|
"ui.selection" = {
|
||||||
|
bg = gray-50;
|
||||||
|
}; # .primary
|
||||||
|
"ui.selection.primary" = {
|
||||||
|
bg = blue-40;
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.cursorline" = {
|
||||||
|
bg = gray-15;
|
||||||
|
};
|
||||||
|
"ui.linenr" = gray-70;
|
||||||
|
"ui.linenr.selected" = gray-110;
|
||||||
|
|
||||||
|
"ui.popup" = {
|
||||||
|
fg = gray-120;
|
||||||
|
bg = gray-20;
|
||||||
|
}; # .info
|
||||||
|
"ui.window" = {
|
||||||
|
fg = gray-50;
|
||||||
|
};
|
||||||
|
"ui.help" = {
|
||||||
|
fg = gray-120;
|
||||||
|
bg = gray-20;
|
||||||
|
};
|
||||||
|
"ui.menu" = {
|
||||||
|
fg = gray-120;
|
||||||
|
bg = gray-20;
|
||||||
|
}; # .selected
|
||||||
|
"ui.menu.selected" = {
|
||||||
|
fg = white;
|
||||||
|
bg = blue-40;
|
||||||
|
}; # .selected
|
||||||
|
# Calculated as #ffffff with 30% opacity
|
||||||
|
"ui.menu.scroll" = {
|
||||||
|
fg = "#dfdfdf";
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.text" = gray-120; # .focus / .info
|
||||||
|
"ui.text.focus" = {
|
||||||
|
fg = white;
|
||||||
|
bg = blue-40;
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.virtual" = gray-90; # .whitespace
|
||||||
|
"ui.virtual.inlay-hint" = {
|
||||||
|
fg = gray-70;
|
||||||
|
};
|
||||||
|
"ui.virtual.ruler" = {
|
||||||
|
bg = gray-20;
|
||||||
|
};
|
||||||
|
|
||||||
|
"hint" = gray-80;
|
||||||
|
"info" = "#A366C4";
|
||||||
|
"warning" = "#FACb66";
|
||||||
|
"error" = "#FF5269";
|
||||||
|
|
||||||
|
"diagnostic.hint" = {
|
||||||
|
underline = {
|
||||||
|
color = gray-80;
|
||||||
|
style = "line";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"diagnostic.info" = {
|
||||||
|
underline = {
|
||||||
|
color = "#A366C4";
|
||||||
|
style = "line";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"diagnostic.warning" = {
|
||||||
|
underline = {
|
||||||
|
color = "#FACB66";
|
||||||
|
style = "line";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"diagnostic.error" = {
|
||||||
|
underline = {
|
||||||
|
color = "#FF5269";
|
||||||
|
style = "line";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"diagnostic.unnecessary" = {
|
||||||
|
modifiers = [ "dim" ];
|
||||||
|
};
|
||||||
|
"diagnostic.deprecated" = {
|
||||||
|
modifiers = [ "crossed_out" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
77
nix/home-manager/progs/librewolf.nix
Normal file
77
nix/home-manager/progs/librewolf.nix
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
{ pkgs, inputs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [ librewolf ];
|
||||||
|
|
||||||
|
programs.librewolf = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
"webgl.disabled" = false;
|
||||||
|
"privacy.resistFingerprinting" = false;
|
||||||
|
"privacy.clearOnShutdown.history" = false;
|
||||||
|
"privacy.clearOnShutdown.cookies" = false;
|
||||||
|
"network.cookie.lifetimePolicy" = 0;
|
||||||
|
"general.useragent.compatMode.firefox" = true;
|
||||||
|
"identity.fxaccounts.enabled" = true;
|
||||||
|
"services.sync.prefs.sync.privacy.clearOnShutdown.cookies" = false;
|
||||||
|
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.cookiesAndStorage" = false;
|
||||||
|
|
||||||
|
"general.useragent.override" = "Mozilla/5.0 (X11; Linux x86_64; rv:${pkgs.firefox.version}) Gecko/20100101 Firefox/${pkgs.firefox.version}";
|
||||||
|
|
||||||
|
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
||||||
|
|
||||||
|
# For themeing
|
||||||
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
|
"browser.tabs.drawInTitlebar" = true;
|
||||||
|
"svg.context-properties.content.enabled" = true;
|
||||||
|
|
||||||
|
#fake location, FIT (just about)
|
||||||
|
"geo.provider.network.url" =
|
||||||
|
"data:application/json,"
|
||||||
|
+ builtins.toJSON {
|
||||||
|
location = {
|
||||||
|
lat = 28.0749;
|
||||||
|
lng = -80.6302;
|
||||||
|
};
|
||||||
|
accuracy = 1.0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file =
|
||||||
|
let
|
||||||
|
chromeTheme = ".librewolf/tckj7njq.default-release/chrome";
|
||||||
|
|
||||||
|
firefoxThemeFile = file: src: {
|
||||||
|
target = "${chromeTheme}/${file}";
|
||||||
|
source = "${inputs.firefox-mod-theme}/${src}/${file}";
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
baseThemeFile = {
|
||||||
|
file = "";
|
||||||
|
src = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
modThemeFiles = [
|
||||||
|
{
|
||||||
|
file = "userChrome.css";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
file = "userContent.css";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
file = "ASSETS";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
in
|
||||||
|
builtins.listToAttrs (
|
||||||
|
map (f: {
|
||||||
|
name = "firefox-theme-${f.file}";
|
||||||
|
value = firefoxThemeFile f.file f.src;
|
||||||
|
}) (map (f: baseThemeFile // f) modThemeFiles)
|
||||||
|
);
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
BROWSER = "librewolf";
|
||||||
|
};
|
||||||
|
}
|
||||||
167
nix/home-manager/progs/niri.nix
Normal file
167
nix/home-manager/progs/niri.nix
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
homeDirectory,
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
prefer-no-csd = true;
|
||||||
|
|
||||||
|
spawn-at-startup = [
|
||||||
|
#waybar
|
||||||
|
{ command = [ "${pkgs.waybar}/bin/waybar" ]; }
|
||||||
|
|
||||||
|
#swaybg works on more than just sway (sets a wallpaper)
|
||||||
|
{
|
||||||
|
command = [
|
||||||
|
"${pkgs.swaybg}/bin/swaybg"
|
||||||
|
"-m"
|
||||||
|
"center"
|
||||||
|
"-i"
|
||||||
|
"${homeDirectory}/.wallpaper.png"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
window-rules = [
|
||||||
|
{ draw-border-with-background = false; }
|
||||||
|
{
|
||||||
|
geometry-corner-radius = {
|
||||||
|
top-left = 10.0;
|
||||||
|
top-right = 10.0;
|
||||||
|
bottom-right = 10.0;
|
||||||
|
bottom-left = 10.0;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{ clip-to-geometry = true; }
|
||||||
|
];
|
||||||
|
|
||||||
|
binds = with config.lib.niri.actions; {
|
||||||
|
#application launcher
|
||||||
|
"Mod+Space".action = spawn [
|
||||||
|
"rofi"
|
||||||
|
"-show"
|
||||||
|
"combi"
|
||||||
|
];
|
||||||
|
|
||||||
|
#open a terminal
|
||||||
|
"Mod+T".action = spawn "${pkgs.alacritty}/bin/alacritty";
|
||||||
|
|
||||||
|
#lock the screen
|
||||||
|
"Mod+X".action = spawn "${pkgs.swaylock}/bin/swaylock";
|
||||||
|
|
||||||
|
#screenshotting
|
||||||
|
"Print".action = screenshot;
|
||||||
|
"Ctrl+Print".action = screenshot-screen;
|
||||||
|
"Alt+Print".action = screenshot-window;
|
||||||
|
|
||||||
|
#Volume control
|
||||||
|
"XF86AudioRaiseVolume".action = spawn [
|
||||||
|
"${pkgs.avizo}/bin/volumectl"
|
||||||
|
"-u"
|
||||||
|
"up"
|
||||||
|
];
|
||||||
|
"XF86AudioLowerVolume".action = spawn [
|
||||||
|
"${pkgs.avizo}/bin/volumectl"
|
||||||
|
"-u"
|
||||||
|
"down"
|
||||||
|
];
|
||||||
|
"XF86AudioMute".action = spawn [
|
||||||
|
"${pkgs.avizo}/bin/volumectl"
|
||||||
|
"toggle-mute"
|
||||||
|
];
|
||||||
|
"XF86AudioMicMute".action = spawn [
|
||||||
|
"${pkgs.avizo}/bin/volumectl"
|
||||||
|
"-m"
|
||||||
|
"toggle-mute"
|
||||||
|
];
|
||||||
|
|
||||||
|
#Display Brightness control
|
||||||
|
"XF86MonBrightnessUp".action = spawn [
|
||||||
|
"${pkgs.avizo}/bin/lightctl"
|
||||||
|
"up"
|
||||||
|
];
|
||||||
|
"XF86MonBrightnessDown".action = spawn [
|
||||||
|
"${pkgs.avizo}/bin/lightctl"
|
||||||
|
"down"
|
||||||
|
];
|
||||||
|
|
||||||
|
#Force close a window
|
||||||
|
"Mod+Q".action = close-window;
|
||||||
|
|
||||||
|
"Mod+Shift+Q".action = quit;
|
||||||
|
|
||||||
|
#bindings for like window management ig
|
||||||
|
|
||||||
|
"Mod+Left".action = focus-column-left;
|
||||||
|
"Mod+Down".action = focus-window-down;
|
||||||
|
"Mod+Up".action = focus-window-up;
|
||||||
|
"Mod+Right".action = focus-column-right;
|
||||||
|
|
||||||
|
"Mod+H".action = focus-column-left;
|
||||||
|
"Mod+J".action = focus-window-down;
|
||||||
|
"Mod+K".action = focus-window-up;
|
||||||
|
"Mod+L".action = focus-column-right;
|
||||||
|
|
||||||
|
"Mod+Ctrl+Left".action = move-column-left;
|
||||||
|
"Mod+Ctrl+Down".action = move-window-down;
|
||||||
|
"Mod+Ctrl+Up".action = move-window-up;
|
||||||
|
"Mod+Ctrl+Right".action = move-column-right;
|
||||||
|
|
||||||
|
"Mod+Ctrl+H".action = move-column-left;
|
||||||
|
"Mod+Ctrl+J".action = move-window-down;
|
||||||
|
"Mod+Ctrl+K".action = move-window-up;
|
||||||
|
"Mod+Ctrl+L".action = move-column-right;
|
||||||
|
|
||||||
|
#fine adjustments to height and width of window
|
||||||
|
"Mod+Minus".action = set-column-width "-10%";
|
||||||
|
"Mod+Equal".action = set-column-width "+10%";
|
||||||
|
"Mod+Shift+Minus".action = set-window-height "-10%";
|
||||||
|
"Mod+Shift+Equal".action = set-window-height "+10%";
|
||||||
|
|
||||||
|
"Mod+Home".action = focus-column-first;
|
||||||
|
"Mod+End".action = focus-column-last;
|
||||||
|
"Mod+Ctrl+Home".action = move-column-to-first;
|
||||||
|
"Mod+Ctrl+End".action = move-column-to-last;
|
||||||
|
|
||||||
|
"Mod+Shift+Left".action = focus-monitor-left;
|
||||||
|
"Mod+Shift+Down".action = focus-monitor-down;
|
||||||
|
"Mod+Shift+Up".action = focus-monitor-up;
|
||||||
|
"Mod+Shift+Right".action = focus-monitor-right;
|
||||||
|
|
||||||
|
"Mod+Shift+H".action = focus-monitor-left;
|
||||||
|
"Mod+Shift+J".action = focus-monitor-down;
|
||||||
|
"Mod+Shift+K".action = focus-monitor-up;
|
||||||
|
"Mod+Shift+L".action = focus-monitor-right;
|
||||||
|
|
||||||
|
"Mod+Shift+Ctrl+Left".action = move-column-to-monitor-left;
|
||||||
|
"Mod+Shift+Ctrl+Down".action = move-column-to-monitor-down;
|
||||||
|
"Mod+Shift+Ctrl+Up".action = move-column-to-monitor-up;
|
||||||
|
"Mod+Shift+Ctrl+Right".action = move-column-to-monitor-right;
|
||||||
|
|
||||||
|
"Mod+Shift+Ctrl+H".action = move-column-to-monitor-left;
|
||||||
|
"Mod+Shift+Ctrl+J".action = move-column-to-monitor-down;
|
||||||
|
"Mod+Shift+Ctrl+K".action = move-column-to-monitor-up;
|
||||||
|
"Mod+Shift+Ctrl+L".action = move-column-to-monitor-right;
|
||||||
|
|
||||||
|
"Mod+Page_Down".action = focus-workspace-down;
|
||||||
|
"Mod+Page_Up".action = focus-workspace-up;
|
||||||
|
"Mod+U".action = focus-workspace-down;
|
||||||
|
"Mod+I".action = focus-workspace-up;
|
||||||
|
|
||||||
|
#move a window up and down workspaces
|
||||||
|
"Mod+Ctrl+Page_Down".action = move-column-to-workspace-down;
|
||||||
|
"Mod+Ctrl+Page_Up".action = move-column-to-workspace-up;
|
||||||
|
|
||||||
|
"Mod+Ctrl+U".action = move-column-to-workspace-down;
|
||||||
|
"Mod+Ctrl+I".action = move-column-to-workspace-up;
|
||||||
|
|
||||||
|
#does little squeeze thing into the left or right position with another window
|
||||||
|
"Mod+BracketLeft".action = consume-or-expel-window-left;
|
||||||
|
"Mod+BracketRight".action = consume-or-expel-window-right;
|
||||||
|
|
||||||
|
"Mod+R".action = switch-preset-column-width;
|
||||||
|
"Mod+F".action = maximize-column;
|
||||||
|
"Mod+Shift+F".action = fullscreen-window;
|
||||||
|
"Mod+C".action = center-column;
|
||||||
|
};
|
||||||
|
}
|
||||||
91
nix/home-manager/progs/rss.nix
Normal file
91
nix/home-manager/progs/rss.nix
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
title = "Stratechery";
|
||||||
|
url = "https://stratechery.passport.online/feed/rss/2gi1tPZ8Ta36Tsx7rDLM5P";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Factorio Blog";
|
||||||
|
url = "https://www.factorio.com/blog/rss";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Firefox Nightly News";
|
||||||
|
url = "https://blog.nightly.mozilla.org/feed/";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Servo Blog";
|
||||||
|
url = "https://servo.org/blog/feed.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Alyssa Rosenzweig";
|
||||||
|
url = "https://rosenzweig.io/feed.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Marc's Blog";
|
||||||
|
url = "https://brooker.co.za/blog/rss.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Fabien Sanglard";
|
||||||
|
url = "https://fabiensanglard.net/rss.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Xuanwo's Blog";
|
||||||
|
url = "https://xuanwo.io/index.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Carlos Galdino";
|
||||||
|
url = "https://blog.carlosgaldino.com/atom.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "soatok";
|
||||||
|
url = "https://soatok.blog/feed/";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Jack Garbus";
|
||||||
|
url = "https://jarbus.net/index.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Terence Eden";
|
||||||
|
url = "https://shkspr.mobi/blog/feed/atom/";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "GioCities";
|
||||||
|
url = "https://blog.giovanh.com/feeds/atom.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "mcyoung";
|
||||||
|
url = "https://mcyoung.xyz/atom.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Embrace the Red";
|
||||||
|
url = "https://embracethered.com/blog/index.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Chips and Cheese";
|
||||||
|
url = "https://chipsandcheese.com/feed/";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "System5";
|
||||||
|
url = "https://blogsystem5.substack.com/feed";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "lwn";
|
||||||
|
url = "https://lwn.net/headlines/Features";
|
||||||
|
}
|
||||||
|
]
|
||||||
31
nix/home-manager/progs/swaylock.nix
Normal file
31
nix/home-manager/progs/swaylock.nix
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
color = "24273a";
|
||||||
|
bs-hl-color = "f4dbd6";
|
||||||
|
caps-lock-bs-hl-color = "f4dbd6";
|
||||||
|
caps-lock-key-hl-color = "a6da95";
|
||||||
|
inside-color = 0;
|
||||||
|
inside-clear-color = 0;
|
||||||
|
inside-caps-lock-color = 0;
|
||||||
|
inside-ver-color = 0;
|
||||||
|
inside-wrong-color = 0;
|
||||||
|
key-hl-color = "a6da95";
|
||||||
|
layout-bg-color = 0;
|
||||||
|
layout-border-color = 0;
|
||||||
|
layout-text-color = "cad3f5";
|
||||||
|
line-color = 0;
|
||||||
|
line-clear-color = 0;
|
||||||
|
line-caps-lock-color = 0;
|
||||||
|
line-ver-color = 0;
|
||||||
|
line-wrong-color = 0;
|
||||||
|
ring-color = "b7bdf8";
|
||||||
|
ring-clear-color = "f4dbd6";
|
||||||
|
ring-caps-lock-color = "f5a97f";
|
||||||
|
ring-ver-color = "8aadf4";
|
||||||
|
ring-wrong-color = "ee99a0";
|
||||||
|
separator-color = 0;
|
||||||
|
text-color = "cad3f5";
|
||||||
|
text-clear-color = "f4dbd6";
|
||||||
|
text-caps-lock-color = "f5a97f";
|
||||||
|
text-ver-color = "8aadf4";
|
||||||
|
text-wrong-color = "ee99a0";
|
||||||
|
}
|
||||||
253
nix/home-manager/progs/waybar.nix
Normal file
253
nix/home-manager/progs/waybar.nix
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
settings.mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
# mod = "dock";
|
||||||
|
# exclusive = true;
|
||||||
|
# gtk-layer-shell = true;
|
||||||
|
margin-bottom = -1;
|
||||||
|
# passthrough = false;
|
||||||
|
height = 32;
|
||||||
|
modules-left =
|
||||||
|
[
|
||||||
|
];
|
||||||
|
modules-center = [ "clock" ];
|
||||||
|
modules-right = [
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"tray"
|
||||||
|
"pulseaudio"
|
||||||
|
"network"
|
||||||
|
"battery"
|
||||||
|
];
|
||||||
|
cpu = {
|
||||||
|
interval = 5;
|
||||||
|
format = " {usage}%";
|
||||||
|
max-length = 10;
|
||||||
|
};
|
||||||
|
memory = {
|
||||||
|
interval = 10;
|
||||||
|
format = " {percentage}%";
|
||||||
|
max-length = 10;
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "RAM - {used:0.1f}GiB used";
|
||||||
|
};
|
||||||
|
tray = {
|
||||||
|
icon-size = 18;
|
||||||
|
spacing = 3;
|
||||||
|
};
|
||||||
|
clock = {
|
||||||
|
format = " {:%R\n %d.%m.%Y}";
|
||||||
|
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||||
|
calendar = {
|
||||||
|
mode = "year";
|
||||||
|
mode-mon-col = 3;
|
||||||
|
weeks-pos = "right";
|
||||||
|
on-scroll = 1;
|
||||||
|
on-click-right = "mode";
|
||||||
|
format = {
|
||||||
|
months = "<span color='#ffead3'><b>{}</b></span>";
|
||||||
|
days = "<span color='#ecc6d9'><b>{}</b></span>";
|
||||||
|
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
|
||||||
|
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
||||||
|
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
actions = {
|
||||||
|
on-click-right = "mode";
|
||||||
|
on-click-forward = "tz_up";
|
||||||
|
on-click-backward = "tz_down";
|
||||||
|
on-scroll-up = "shift_up";
|
||||||
|
on-scroll-down = "shift_down";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
network = {
|
||||||
|
format-wifi = " {icon}";
|
||||||
|
format-ethernet = " ";
|
||||||
|
format-disconnected = " ";
|
||||||
|
format-icons = [
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
];
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
states = {
|
||||||
|
good = 95;
|
||||||
|
warning = 30;
|
||||||
|
critical = 20;
|
||||||
|
};
|
||||||
|
format = " {icon} {capacity}%";
|
||||||
|
format-charging = " {capacity}%";
|
||||||
|
format-plugged = " {capacity}%";
|
||||||
|
format-alt = "{time} {icon}";
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# not actually pulseaudio-specific
|
||||||
|
pulseaudio = {
|
||||||
|
max-volume = 100;
|
||||||
|
scroll-step = 10;
|
||||||
|
format = "{icon}";
|
||||||
|
tooltip-format = "{volume}%";
|
||||||
|
format-muted = "🔇";
|
||||||
|
format-icons = {
|
||||||
|
default = [
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
];
|
||||||
|
};
|
||||||
|
on-click = "${pkgs.pwvucontrol}/bin/pwvucontrol";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
style = ''
|
||||||
|
/*base background color*/
|
||||||
|
@define-color bg_main rgba(25, 25, 25, 1.0);
|
||||||
|
@define-color bg_main_tooltip rgba(0, 0, 0, 0.7);
|
||||||
|
|
||||||
|
|
||||||
|
/*base background color of selections */
|
||||||
|
@define-color bg_hover rgba(200, 200, 200, 0.3);
|
||||||
|
/*base background color of active elements */
|
||||||
|
@define-color bg_active rgba(100, 100, 100, 0.5);
|
||||||
|
|
||||||
|
/*base border color*/
|
||||||
|
@define-color border_main rgba(255, 255, 255, 0.2);
|
||||||
|
|
||||||
|
/*text color for entries, views and content in general */
|
||||||
|
@define-color content_main white;
|
||||||
|
/*text color for entries that are unselected */
|
||||||
|
@define-color content_inactive rgba(255, 255, 255, 0.25);
|
||||||
|
|
||||||
|
* {
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family: "Segoe UI", "Ubuntu";
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 12.7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: @bg_main;
|
||||||
|
border-top: 0;
|
||||||
|
color: @content_main;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background: @bg_main_tooltip;
|
||||||
|
border-radius: 5px;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: @border_main;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip label {
|
||||||
|
color: @content_main;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar {
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button {
|
||||||
|
min-width: 130px;
|
||||||
|
border-bottom: 3px solid rgba(255, 255, 255, 0.3);
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: 2px;
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 8px;
|
||||||
|
color: white;
|
||||||
|
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button.active {
|
||||||
|
border-bottom: 3px solid white;
|
||||||
|
background: @bg_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button:hover {
|
||||||
|
border-bottom: 3px solid white;
|
||||||
|
background: @bg_hover;
|
||||||
|
color: @content_main;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu, #memory {
|
||||||
|
padding:3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-left: 20px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .passive {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .active {
|
||||||
|
border-bottom: 3px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .needs-attention {
|
||||||
|
border-bottom: 3px solid @warning_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > widget {
|
||||||
|
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > widget:hover {
|
||||||
|
background: @bg_hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
font-family: "JetBrainsMono Nerd Font";
|
||||||
|
padding-left: 3px;
|
||||||
|
padding-right: 3px;
|
||||||
|
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio:hover {
|
||||||
|
background: @bg_hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
padding-left: 3px;
|
||||||
|
padding-right: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
|
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock:hover {
|
||||||
|
background: @bg_hover;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
||||||
BIN
nix/home-manager/secrets/factorio.age
Normal file
BIN
nix/home-manager/secrets/factorio.age
Normal file
Binary file not shown.
10
nix/home-manager/secrets/secrets.nix
Normal file
10
nix/home-manager/secrets/secrets.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
let
|
||||||
|
laptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH";
|
||||||
|
desktop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJjT5QZ3zRDb+V6Em20EYpSEgPW5e/U+06uQGJdraxi";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"factorio.age".publicKeys = [
|
||||||
|
laptop
|
||||||
|
desktop
|
||||||
|
];
|
||||||
|
}
|
||||||
161
nix/home-manager/system-mreow.nix
Normal file
161
nix/home-manager/system-mreow.nix
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
homeDirectory,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [ ./gui.nix ];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
wdisplays
|
||||||
|
intel-gpu-tools
|
||||||
|
swaylock
|
||||||
|
|
||||||
|
#manage bluetooth devices
|
||||||
|
blueman
|
||||||
|
];
|
||||||
|
|
||||||
|
#bluetooth manager
|
||||||
|
services.blueman-applet.enable = true;
|
||||||
|
|
||||||
|
#notification daemon
|
||||||
|
services.dunst = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.dunst;
|
||||||
|
};
|
||||||
|
|
||||||
|
#window manager
|
||||||
|
programs.niri = {
|
||||||
|
settings = import ./progs/niri.nix { inherit config pkgs homeDirectory; };
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.swaylock = {
|
||||||
|
enable = true;
|
||||||
|
settings = import ./progs/swaylock.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
#waybar for status bar
|
||||||
|
programs.waybar = import ./progs/waybar.nix { inherit pkgs; };
|
||||||
|
|
||||||
|
#backup utility
|
||||||
|
programs.borgmatic = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.borgmatic;
|
||||||
|
backups = import ./progs/borg.nix { inherit homeDirectory; };
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://community.frame.work/t/speakers-sound-quality/1078/83
|
||||||
|
# Filter: ON HPQ Fc 100.0 Hz Gain 0.0 dB Q 1.0
|
||||||
|
# Filter: ON PK Fc 150.0 Hz Gain 4.02 dB Q 3.0
|
||||||
|
# Filter: ON PK Fc 600.0 Hz Gain -5.07 dB Q 4.000000000000008
|
||||||
|
# Filter: ON PK Fc 1200.0 Hz Gain -3.49 dB Q 4.17
|
||||||
|
# Filter: ON PK Fc 2000.0 Hz Gain 1.43 dB Q 4.0
|
||||||
|
# Filter: ON PK Fc 5300.0 Hz Gain 3.84 dB Q 2.64
|
||||||
|
# Filter: ON HSC Fc 6000.0 Hz Gain 4.02 dB Q 4.36
|
||||||
|
# Filter: ON PK Fc 7500.0 Hz Gain -2.09 dB Q 3.0
|
||||||
|
# Filter: ON PK Fc 8000.0 Hz Gain 2.01 dB Q 4.36
|
||||||
|
# Filter: ON PK Fc 900.0 Hz Gain -4.12 dB Q 5.909999999999967
|
||||||
|
home.file.".config/easyeffects/output/framework.json".text =
|
||||||
|
let
|
||||||
|
baseBand = {
|
||||||
|
mode = "RLC (BT)";
|
||||||
|
mute = false;
|
||||||
|
solo = false;
|
||||||
|
slope = "1x";
|
||||||
|
type = "Bell";
|
||||||
|
};
|
||||||
|
|
||||||
|
bandList = [
|
||||||
|
{
|
||||||
|
frequency = 100.0;
|
||||||
|
gain = 0.0;
|
||||||
|
q = 1.0;
|
||||||
|
slope = "x4";
|
||||||
|
type = "Hi-pass";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 150.0;
|
||||||
|
gain = 4.02;
|
||||||
|
q = 3.0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 600.0;
|
||||||
|
gain = -5.07;
|
||||||
|
q = 4.000000000000008;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 1200.0;
|
||||||
|
gain = -3.49;
|
||||||
|
q = 4.17;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 2000.0;
|
||||||
|
gain = 1.43;
|
||||||
|
q = 4.0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 5300.0;
|
||||||
|
gain = 3.84;
|
||||||
|
q = 2.64;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 6000.0;
|
||||||
|
gain = 4.02;
|
||||||
|
q = 4.36;
|
||||||
|
type = "Hi-shelf";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 7500.0;
|
||||||
|
gain = -2.09;
|
||||||
|
q = 3.0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 8000.0;
|
||||||
|
gain = 2.01;
|
||||||
|
q = 4.36;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 900.0;
|
||||||
|
gain = -4.12;
|
||||||
|
q = 5.909999999999967;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
bands = builtins.listToAttrs (
|
||||||
|
map (f: {
|
||||||
|
name = "band${toString f.snd}";
|
||||||
|
value = baseBand // f.fst;
|
||||||
|
}) (lib.lists.zipLists bandList (lib.range 0 (lib.length (bandList))))
|
||||||
|
);
|
||||||
|
|
||||||
|
in
|
||||||
|
builtins.toJSON {
|
||||||
|
output = {
|
||||||
|
blocklist = [ ];
|
||||||
|
equalizer = {
|
||||||
|
balance = 0.0;
|
||||||
|
bypass = false;
|
||||||
|
input-gain = 0.0;
|
||||||
|
left = bands;
|
||||||
|
right = bands;
|
||||||
|
mode = "IIR";
|
||||||
|
num-bands = 10;
|
||||||
|
output-gain = -1.5;
|
||||||
|
pitch-left = 0.0;
|
||||||
|
pitch-right = 0.0;
|
||||||
|
split-channels = false;
|
||||||
|
};
|
||||||
|
plugins_order = [
|
||||||
|
"equalizer"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.easyeffects = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.easyeffects;
|
||||||
|
preset = "framework";
|
||||||
|
};
|
||||||
|
}
|
||||||
45
nix/home-manager/system-nixos.nix
Normal file
45
nix/home-manager/system-nixos.nix
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [ ./gui.nix ];
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
# Add a protontricks-beta package so we can use protontricks with latest steam beta
|
||||||
|
# https://github.com/Matoking/protontricks/issues/304#issuecomment-2280920826
|
||||||
|
(
|
||||||
|
final: prev:
|
||||||
|
let
|
||||||
|
ps = prev.python312Packages;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
vdf-patch = ps.vdf.overrideAttrs (oldAttrs: {
|
||||||
|
src = inputs.vdf-patch;
|
||||||
|
});
|
||||||
|
protontricks-beta = prev.protontricks.overrideAttrs (oldAttrs: {
|
||||||
|
src = inputs.protontricks;
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
ps.setuptools # implicit dependency, used to find data/icon_placeholder.png
|
||||||
|
final.vdf-patch
|
||||||
|
ps.pillow
|
||||||
|
];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
protontricks-beta
|
||||||
|
beatsabermodmanager
|
||||||
|
protonup-qt
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.alacritty.settings = {
|
||||||
|
window.decorations = lib.mkForce "full";
|
||||||
|
window.opacity = lib.mkForce 1.0;
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user