618 lines
13 KiB
Plaintext
618 lines
13 KiB
Plaintext
|
||
+--------------------------------------------+
|
||
| Dump tree for directory: . |
|
||
+--------------------------------------------+
|
||
├── home.nix
|
||
├── hosts
|
||
│ └── steamdeck
|
||
│ ├── configuration.nix
|
||
│ └── hardware-configuration.nix
|
||
└── users
|
||
└── jeirmeister
|
||
├── packages
|
||
│ ├── default.nix
|
||
│ └── repo2text.nix
|
||
└── programs
|
||
├── appimage.nix
|
||
├── default.nix
|
||
├── git.nix
|
||
├── gpg.nix
|
||
├── obsidian.nix
|
||
├── ssh.nix
|
||
├── sublime.nix
|
||
├── tailscale.nix
|
||
├── tmux.nix
|
||
├── vr.nix
|
||
├── vscode.nix
|
||
└── zsh.nix
|
||
|
||
|
||
|
||
--- Path: ./home.nix ---
|
||
|
||
# home.nix
|
||
{ config, pkgs, ... }:
|
||
let
|
||
customPackages = import ./users/jeirmeister/packages { inherit pkgs; };
|
||
in
|
||
{
|
||
imports = [
|
||
./users/jeirmeister/programs
|
||
];
|
||
|
||
home = {
|
||
username = "jeirmeister";
|
||
homeDirectory = "/home/jeirmeister";
|
||
stateVersion = "24.05";
|
||
|
||
packages = with pkgs; [
|
||
htop
|
||
fortune
|
||
ripgrep
|
||
fd
|
||
jq
|
||
tree
|
||
xclip
|
||
bitwarden-desktop
|
||
floorp
|
||
bitwarden-cli
|
||
immersed
|
||
nix-prefetch-git
|
||
customPackages.repo2text
|
||
|
||
];
|
||
};
|
||
|
||
programs.home-manager.enable = true;
|
||
|
||
nixpkgs = {
|
||
config = {
|
||
allowUnfree = true;
|
||
permittedInsecurePackages = [
|
||
"openssl-1.1.1w"
|
||
];
|
||
};
|
||
};
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./hosts/steamdeck/configuration.nix ---
|
||
|
||
{ config, pkgs, lib, ... }:
|
||
|
||
let
|
||
jovianNixosRev = "f6423d86bec22c25a576b23262495c5536b0d069";
|
||
jovianNixos = builtins.fetchTarball {
|
||
url = "https://github.com/Jovian-Experiments/Jovian-NixOS/archive/${jovianNixosRev}.tar.gz";
|
||
sha256 = "sha256:1frd1dfqd97idwf1rj29ab0wvyfa2nx2h3bp9hkbmfa1m802avmb";
|
||
};
|
||
in
|
||
{
|
||
imports = [
|
||
./hardware-configuration.nix
|
||
(jovianNixos + "/modules")
|
||
];
|
||
|
||
nixpkgs.overlays = [
|
||
(import (jovianNixos + "/overlay.nix"))
|
||
];
|
||
|
||
nix.settings = {
|
||
experimental-features = [ "nix-command" "flakes" ];
|
||
substituters = [
|
||
"https://cache.nixos.org"
|
||
];
|
||
allowed-users = [ "@wheel" "jeirmeister" ];
|
||
auto-optimise-store = true;
|
||
};
|
||
|
||
# Hardware detection
|
||
jovian.hardware.has.amd.gpu = true;
|
||
|
||
# Steam Deck Configuration
|
||
jovian = {
|
||
devices.steamdeck = {
|
||
enable = true;
|
||
|
||
# Hardware features
|
||
enableControllerUdevRules = true;
|
||
enableDefaultStage1Modules = true;
|
||
enablePerfControlUdevRules = true;
|
||
enableOsFanControl = true;
|
||
enableSoundSupport = true;
|
||
enableXorgRotation = true;
|
||
enableKernelPatches = true;
|
||
|
||
# Disable firmware updates temporarily
|
||
enableFwupdBiosUpdates = false;
|
||
autoUpdate = false;
|
||
};
|
||
|
||
# Steam Deck UI - disabled for now
|
||
steam.enable = false;
|
||
|
||
# Enable workarounds
|
||
workarounds.ignoreMissingKernelModules = true;
|
||
};
|
||
|
||
# Add explicit permissions for fan control
|
||
services.udev.extraRules = ''
|
||
# Steam Deck Fan Control
|
||
SUBSYSTEM=="hwmon*", KERNEL=="hwmon*", ACTION=="add", RUN+="${pkgs.coreutils}/bin/chmod a+rw /sys/%p/pwm1"
|
||
SUBSYSTEM=="hwmon*", KERNEL=="hwmon*", ACTION=="add", RUN+="${pkgs.coreutils}/bin/chmod a+rw /sys/%p/fan1_input"
|
||
'';
|
||
|
||
# Modify the fan control service
|
||
systemd.services.jupiter-fan-control = {
|
||
path = [ pkgs.dmidecode ];
|
||
serviceConfig = lib.mkForce {
|
||
Environment = "PYTHONUNBUFFERED=1";
|
||
StandardOutput = "journal";
|
||
StandardError = "journal";
|
||
ExecStart = "${pkgs.jupiter-fan-control}/share/jupiter-fan-control/fancontrol.py --run";
|
||
ExecStopPost = "${pkgs.jupiter-fan-control}/share/jupiter-fan-control/fancontrol.py --stop";
|
||
OOMScoreAdjust = -1000;
|
||
Restart = "on-failure";
|
||
};
|
||
};
|
||
|
||
# Hardware configuration
|
||
hardware = {
|
||
enableRedistributableFirmware = lib.mkForce true;
|
||
firmware = lib.mkForce [ pkgs.linux-firmware ];
|
||
|
||
graphics = {
|
||
enable = true;
|
||
enable32Bit = true;
|
||
};
|
||
};
|
||
|
||
# Boot configuration
|
||
boot = {
|
||
loader.systemd-boot.enable = true;
|
||
loader.efi.canTouchEfiVariables = true;
|
||
|
||
initrd.kernelModules = [ "amdgpu" ];
|
||
kernelModules = [ "amdgpu" ];
|
||
};
|
||
|
||
# Network configuration
|
||
networking = {
|
||
hostName = "nixos";
|
||
networkmanager.enable = true;
|
||
};
|
||
|
||
# Time and Locale
|
||
time.timeZone = "America/Los_Angeles";
|
||
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";
|
||
};
|
||
|
||
# Display and Desktop
|
||
services = {
|
||
xserver = {
|
||
enable = true;
|
||
xkb = {
|
||
layout = "us";
|
||
variant = "";
|
||
};
|
||
};
|
||
desktopManager.plasma6.enable = true;
|
||
displayManager.sddm.enable = true;
|
||
|
||
# Important system services
|
||
pipewire = {
|
||
enable = true;
|
||
alsa.enable = true;
|
||
pulse.enable = true;
|
||
};
|
||
|
||
openssh = {
|
||
enable = true;
|
||
settings = {
|
||
PasswordAuthentication = true;
|
||
AllowUsers = [ "jeirmeister" ];
|
||
};
|
||
};
|
||
};
|
||
|
||
# User configuration
|
||
users.users.jeirmeister = {
|
||
isNormalUser = true;
|
||
description = "jeirmeister";
|
||
extraGroups = [
|
||
"networkmanager"
|
||
"wheel"
|
||
"input"
|
||
"video"
|
||
"audio"
|
||
"render"
|
||
"gamepad"
|
||
];
|
||
packages = with pkgs; [
|
||
kdePackages.kate
|
||
tailscale
|
||
];
|
||
};
|
||
|
||
users.groups = {
|
||
gamepad = {};
|
||
render = {};
|
||
};
|
||
|
||
programs.firefox.enable = true;
|
||
nixpkgs.config.allowUnfree = true;
|
||
services.tailscale.enable = true;
|
||
# System packages
|
||
environment.systemPackages = with pkgs; [
|
||
# Debugging tools
|
||
pciutils
|
||
usbutils
|
||
lm_sensors
|
||
dmidecode
|
||
|
||
# Basic utilities
|
||
tree
|
||
git
|
||
wget
|
||
curl
|
||
binutils
|
||
];
|
||
|
||
system.stateVersion = "24.05";
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./hosts/steamdeck/hardware-configuration.nix ---
|
||
|
||
# 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" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
|
||
boot.initrd.kernelModules = [ ];
|
||
boot.kernelModules = [ "kvm-amd" ];
|
||
boot.extraModulePackages = [ ];
|
||
|
||
fileSystems."/" =
|
||
{ device = "/dev/disk/by-uuid/f3cc4aae-428e-435d-b9f7-333f7dad06b2";
|
||
fsType = "ext4";
|
||
};
|
||
|
||
fileSystems."/boot" =
|
||
{ device = "/dev/disk/by-uuid/580E-5E90";
|
||
fsType = "vfat";
|
||
options = [ "fmask=0077" "dmask=0077" ];
|
||
};
|
||
|
||
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.enp4s0f3u1u4u4.useDHCP = lib.mkDefault true;
|
||
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
|
||
|
||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/packages/default.nix ---
|
||
|
||
# users/jeirmeister/packages/default.nix
|
||
{ pkgs }:
|
||
|
||
{
|
||
repo2text = pkgs.callPackage ./repo2text.nix {};
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/packages/repo2text.nix ---
|
||
|
||
# users/jeirmeister/packages/repo2text.nix
|
||
{ pkgs }:
|
||
|
||
let
|
||
pythonEnv = pkgs.python3.withPackages (ps: with ps; [
|
||
# Add any future dependencies here if needed
|
||
]);
|
||
in
|
||
pkgs.stdenv.mkDerivation {
|
||
pname = "repo2text";
|
||
version = "0.1.0";
|
||
|
||
src = pkgs.fetchFromGitHub {
|
||
owner = "pde-rent";
|
||
repo = "repo2text";
|
||
rev = "2024b0eebebf739136401dc2f2df096be828558c";
|
||
hash = "sha256-80T28lXkk8hl/chzIy3Wvs1Jbs/rspxlnvWKa2DwJnU=";
|
||
};
|
||
|
||
buildInputs = [ pythonEnv ];
|
||
|
||
installPhase = ''
|
||
mkdir -p $out/bin
|
||
cp main.py $out/bin/repo2text
|
||
chmod +x $out/bin/repo2text
|
||
# Ensure it uses python interpreter
|
||
sed -i "1i#!${pythonEnv}/bin/python" $out/bin/repo2text
|
||
'';
|
||
|
||
meta = with pkgs.lib; {
|
||
description = "Tool to dump a repository into a single text file";
|
||
homepage = "https://github.com/pde-rent/repo2text";
|
||
license = licenses.mit;
|
||
maintainers = [];
|
||
};
|
||
}
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/appimage.nix ---
|
||
|
||
# users/jeirmeister/programs/appimage.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
home.packages = with pkgs; [
|
||
# Required for AppImage support
|
||
appimage-run
|
||
|
||
# Optional but useful tools for AppImage management
|
||
zlib
|
||
fuse
|
||
fuse3
|
||
];
|
||
}
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/default.nix ---
|
||
|
||
# users/jeirmeister/programs/default.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
imports = [
|
||
./appimage.nix
|
||
./git.nix
|
||
./gpg.nix
|
||
./obsidian.nix
|
||
./ssh.nix
|
||
./sublime.nix
|
||
./tailscale.nix
|
||
./tmux.nix
|
||
./vscode.nix
|
||
./zsh.nix
|
||
];
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/git.nix ---
|
||
|
||
# users/jeirmeister/programs/git.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
programs.git = {
|
||
enable = true;
|
||
lfs.enable = true;
|
||
userName = "jeirmeister";
|
||
userEmail = "jeir@jeirslab.xyz";
|
||
extraConfig = {
|
||
init.defaultBranch = "main";
|
||
pull.rebase = false;
|
||
};
|
||
ignores = [
|
||
".DS_Store"
|
||
"*.swp"
|
||
".vscode/"
|
||
".idea/"
|
||
];
|
||
};
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/gpg.nix ---
|
||
|
||
# users/jeirmeister/programs/gpg.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
programs.gpg = {
|
||
enable = true;
|
||
# settings = {
|
||
# # Basic GPG settings
|
||
# default-key = "jeir@jeirslab.xyz"; # Replace with your key ID
|
||
# keyserver = "hkps://keys.openpgp.org";
|
||
# };
|
||
};
|
||
|
||
services.gpg-agent = {
|
||
enable = true;
|
||
defaultCacheTtl = 1800;
|
||
enableSshSupport = true;
|
||
# pinentryPackage = "curses"; # You can use "gtk2", "curses", or "tty" instead
|
||
};
|
||
|
||
# Make sure we have the tools we need
|
||
home.packages = with pkgs; [
|
||
gnupg
|
||
pinentry-qt # Change this based on your pinentryFlavor
|
||
];
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/obsidian.nix ---
|
||
|
||
# users/jeirmeister/programs/obsidian.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
home.packages = with pkgs; [
|
||
obsidian
|
||
];
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/ssh.nix ---
|
||
|
||
# users/jeirmeister/programs/ssh.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
programs.ssh = {
|
||
enable = true;
|
||
# Add your SSH configurations here
|
||
# matchBlocks = {
|
||
# "github.com" = {
|
||
# hostname = "github.com";
|
||
# user = "git";
|
||
# identityFile = "~/.ssh/github";
|
||
# };
|
||
# };
|
||
};
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/sublime.nix ---
|
||
|
||
# users/jeirmeister/programs/sublime.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
home.packages = with pkgs; [
|
||
sublime4
|
||
];
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/tailscale.nix ---
|
||
|
||
# users/jeirmeister/programs/tailscale.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
home.packages = with pkgs; [
|
||
tailscale
|
||
];
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/tmux.nix ---
|
||
|
||
# users/jeirmeister/programs/tmux.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
programs.tmux = {
|
||
enable = true;
|
||
clock24 = true;
|
||
# Add your tmux configurations here
|
||
};
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/vr.nix ---
|
||
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
programs.immersed.enable = true;
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/vscode.nix ---
|
||
|
||
# users/jeirmeister/programs/vscode.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
programs.vscode = {
|
||
enable = true;
|
||
package = pkgs.vscode;
|
||
|
||
# Uncomment when you know which extensions you want
|
||
# extensions = with pkgs.vscode-extensions; [
|
||
# vscodevim.vim
|
||
# yzhang.markdown-all-in-one
|
||
# bbenoist.nix
|
||
# ms-python.python
|
||
# ];
|
||
|
||
userSettings = {
|
||
"editor.fontSize" = 14;
|
||
"editor.fontFamily" = "FiraCode Nerd Font";
|
||
"editor.formatOnSave" = true;
|
||
"files.autoSave" = "onFocusChange";
|
||
};
|
||
};
|
||
}
|
||
|
||
|
||
|
||
--- Path: ./users/jeirmeister/programs/zsh.nix ---
|
||
|
||
# users/jeirmeister/programs/zsh.nix
|
||
{ config, pkgs, ... }:
|
||
|
||
{
|
||
programs.zsh = {
|
||
enable = true;
|
||
autosuggestion.enable = true;
|
||
enableCompletion = true;
|
||
syntaxHighlighting.enable = true;
|
||
|
||
oh-my-zsh = {
|
||
enable = true;
|
||
theme = "robbyrussell";
|
||
plugins = [ "git" "docker" "kubectl" ];
|
||
};
|
||
|
||
# Add this section to ensure home-manager paths are properly sourced
|
||
initExtra = ''
|
||
# Add home-manager applications to PATH
|
||
export PATH=$HOME/.nix-profile/bin:$PATH
|
||
|
||
# Ensure XDG directories are set
|
||
export XDG_DATA_HOME=$HOME/.local/share
|
||
export XDG_CONFIG_HOME=$HOME/.config
|
||
export XDG_CACHE_HOME=$HOME/.cache
|
||
'';
|
||
};
|
||
|
||
# Make zsh the default shell
|
||
home.sessionVariables = {
|
||
SHELL = "${pkgs.zsh}/bin/zsh";
|
||
};
|
||
}
|