Compare commits

...

59 Commits

Author SHA1 Message Date
b2458bbefc Update files 2026-04-06 22:40:40 +01:00
70302671ff Update files 2026-04-06 20:07:34 +01:00
0c78fd12a1 Update files 2026-04-06 17:52:15 +01:00
7a2a6ccd23 Update files 2026-04-06 13:54:31 +01:00
ad70686b05 fix krita 2026-04-05 22:47:17 +01:00
0c69a2c32e Update files 2026-04-05 15:17:12 +01:00
0c631272ea Update files 2026-04-05 15:13:37 +01:00
b745739914 Update 2026-04-05 15:02:20 +01:00
67b3c38f52 Update files 2026-04-05 14:16:59 +01:00
e70a5473c4 Update files 2026-04-01 20:42:51 +01:00
96a17d3313 Update files 2026-03-29 21:31:08 +00:00
ed2def05a2 Update files 2026-03-28 17:22:04 +00:00
0482012f79 Update files 2026-03-28 17:21:40 +00:00
f5cd434ac0 Update files 2026-03-28 17:21:19 +00:00
48e51cb952 Update files 2026-03-28 14:07:08 +00:00
7463facb62 Update files 2026-03-27 14:56:46 +00:00
d006e30a31 Update files 2026-03-27 13:48:02 +00:00
7aa9f6c785 Update files 2026-03-27 13:43:07 +00:00
55534e65ff Update files 2026-03-27 13:42:29 +00:00
e934e19ecb Update files 2026-03-27 11:50:47 +00:00
b4f21226ef Update files 2026-03-27 09:56:39 +00:00
ca8931192d Update files 2026-03-27 09:56:09 +00:00
c9fa01aaf0 Update files 2026-03-27 09:47:23 +00:00
6a5fd198b5 Update files 2026-03-27 09:41:53 +00:00
795e73be77 Update files 2026-03-27 09:36:24 +00:00
b4c63b8b79 Update files 2026-03-27 09:31:53 +00:00
356b2a82aa Update files 2026-03-27 08:47:15 +00:00
448432926f Update files 2026-03-26 18:33:47 +00:00
1447336288 Update files 2026-03-26 17:09:56 +00:00
104ef84243 Update files 2026-03-25 21:14:36 +00:00
898868900c Update files 2026-03-25 21:07:14 +00:00
0fb5035fc1 Update files 2026-03-25 21:03:32 +00:00
59c4299ae7 Update files 2026-03-25 20:58:46 +00:00
921b0527ab Update files 2026-03-25 20:57:19 +00:00
36ed8aeff0 Update files 2026-03-24 21:37:51 +00:00
91f10904d2 Update files 2026-03-24 21:01:17 +00:00
bc73d5ec6e Update files 2026-03-24 20:42:44 +00:00
e8b47ea4a5 Update files 2026-03-24 20:39:25 +00:00
b941192860 Update files 2026-03-24 19:07:10 +00:00
249e95075c Update files 2026-03-24 19:03:39 +00:00
876f7e6c3f Update files 2026-03-23 22:33:29 +00:00
6ed74b4d37 Update files 2026-03-23 22:33:11 +00:00
95c859b3f4 Sound 2026-03-23 22:32:55 +00:00
2325e48006 Update files 2026-03-23 22:20:28 +00:00
39ac040d98 Update files 2026-03-23 22:20:05 +00:00
608506ec3b Update files 2026-03-23 22:18:20 +00:00
204803689f Update files 2026-03-23 22:17:22 +00:00
43e0876595 Update files 2026-03-23 21:32:14 +00:00
dea59a0c17 Update files 2026-03-23 21:22:48 +00:00
14043ea855 Update files 2026-03-23 21:12:18 +00:00
b78485c0d6 Update files 2026-03-23 20:13:45 +00:00
1542c5ba2f Update files 2026-03-22 21:48:00 +00:00
aea31984d0 Update files 2026-03-22 21:39:15 +00:00
efe8575777 Update files 2026-03-22 21:36:40 +00:00
805e028eaa Update files 2026-03-22 21:25:04 +00:00
5885f86813 Update files 2026-03-22 21:23:48 +00:00
e41939f2e1 Update files 2026-03-21 17:28:54 +00:00
c1a50c2ce9 Update files 2026-03-21 17:27:28 +00:00
f89861cad7 Update files 2026-03-21 17:25:14 +00:00
23 changed files with 231 additions and 87 deletions

View File

@@ -0,0 +1,3 @@
[Trash Info]
Path=/home/chris/.config/nixos/initial-configs/nextcloud.cfg
DeletionDate=2026-03-23T21:32:08

78
flake.lock generated
View File

@@ -25,11 +25,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1772866605,
"narHash": "sha256-r2ucLztXQFRu70VrGtNcL3PONyazxDPwq/hSn7opD+I=",
"lastModified": 1774640361,
"narHash": "sha256-5PLTPbnbtK0iDbsB9yFeHr5y/pv6/XzoVm/CDeXXt/c=",
"owner": "abenz1267",
"repo": "elephant",
"rev": "1a52df65c679d17f9889abeb5593aa7ffc40f681",
"rev": "d30652147d8e16ebc849b779b8ef495a894b0dd4",
"type": "github"
},
"original": {
@@ -46,11 +46,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1772957263,
"narHash": "sha256-Rg/pXdpJFK5pGwUEu0wop942QgbrEch+dWB05h3l7uc=",
"lastModified": 1775448173,
"narHash": "sha256-C6OJuD3A4KDNz4QaYedkYtXzKHPecG5YYyMGLq7UwY8=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "be0d1413792f3811be7e0c4e9b17e94cbbe73fb9",
"rev": "5b0fb7d54dea38c47e5c58058c166e790a0e0cf1",
"type": "gitlab"
},
"original": {
@@ -81,11 +81,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1772408722,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
"lastModified": 1775087534,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github"
},
"original": {
@@ -140,11 +140,11 @@
]
},
"locked": {
"lastModified": 1772893680,
"narHash": "sha256-JDqZMgxUTCq85ObSaFw0HhE+lvdOre1lx9iI6vYyOEs=",
"lastModified": 1775036584,
"narHash": "sha256-zW0lyy7ZNNT/x8JhzFHBsP2IPx7ATZIPai4FJj12BgU=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "8baab586afc9c9b57645a734c820e4ac0a604af9",
"rev": "4e0eb042b67d863b1b34b3f64d52ceb9cd926735",
"type": "github"
},
"original": {
@@ -182,11 +182,11 @@
]
},
"locked": {
"lastModified": 1772633058,
"narHash": "sha256-SO7JapRy2HPhgmqiLbfnW1kMx5rakPMKZ9z3wtRLQjI=",
"lastModified": 1775425411,
"narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "080657a04188aca25f8a6c70a0fb2ea7e37f1865",
"rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe",
"type": "github"
},
"original": {
@@ -243,11 +243,11 @@
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1774013813,
"narHash": "sha256-gaKNu+dW6lA4LU8PM4pNqmaqoY8hIggM7ticP6VjVFk=",
"lastModified": 1775445570,
"narHash": "sha256-Vo+fChd5PkSnbHDKPQSROMDPmPPuFsRTqeVpEWd7afU=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "342bd5c65526d57b7bed200c8219d1a48414c806",
"rev": "98a1511fbc84643be14c6c60816bdad1d00a004a",
"type": "github"
},
"original": {
@@ -274,11 +274,11 @@
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1772328832,
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
"lastModified": 1774748309,
"narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
"rev": "333c4e0545a6da976206c74db8773a1645b5870a",
"type": "github"
},
"original": {
@@ -304,11 +304,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1772773019,
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
"lastModified": 1775036866,
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "aca4d95fce4914b3892661bcb80b8087293536c6",
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
"type": "github"
},
"original": {
@@ -320,11 +320,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1772773019,
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
"lastModified": 1764242076,
"narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "aca4d95fce4914b3892661bcb80b8087293536c6",
"rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4",
"type": "github"
},
"original": {
@@ -352,11 +352,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1773507054,
"narHash": "sha256-Q8U5VXgrcxmCxPtCCJCIZkcAX3FCZwGh1GNVIXxMND0=",
"lastModified": 1775126147,
"narHash": "sha256-J0dZU4atgcfo4QvM9D92uQ0Oe1eLTxBVXjJzdEMQpD0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e80236013dc8b77aa49ca90e7a12d86f5d8d64c9",
"rev": "8d8c1fa5b412c223ffa47410867813290cdedfef",
"type": "github"
},
"original": {
@@ -368,11 +368,11 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1772822230,
"narHash": "sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw=",
"lastModified": 1775305101,
"narHash": "sha256-/74n1oQPtKG52Yw41cbToxspxHbYz6O3vi+XEw16Qe8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "71caefce12ba78d84fe618cf61644dce01cf3a96",
"rev": "36a601196c4ebf49e035270e10b2d103fe39076b",
"type": "github"
},
"original": {
@@ -471,11 +471,11 @@
]
},
"locked": {
"lastModified": 1772443545,
"narHash": "sha256-oD3lameQXilKcgxQORR2l0+iDbnCO61+mjYD3MEVbuQ=",
"lastModified": 1775048999,
"narHash": "sha256-w35TNOdJcgMdt98XusY8DjmY4UPv3NQ7m+vR8oliWRU=",
"owner": "peteonrails",
"repo": "voxtype",
"rev": "d011f3ff074a6a14c14e75fefb375a408e9e8887",
"rev": "f292b6e1c9dbcfe4cdc7f781048db8be16c40c18",
"type": "github"
},
"original": {
@@ -495,11 +495,11 @@
"systems": "systems_3"
},
"locked": {
"lastModified": 1772866748,
"narHash": "sha256-Z18wVHImX/w9zoruMlSQuh4JcrJh28jxDwR96oevCzM=",
"lastModified": 1773675699,
"narHash": "sha256-GrormZ2KxchtCLuO90+5fioEQmlUCKBIil0Mzr9w0Iw=",
"owner": "abenz1267",
"repo": "walker",
"rev": "ddaf9a02a81155c0de8b7b8db9341825afba319e",
"rev": "d2702235710da3d7daf55c912ca7534261cf20f5",
"type": "github"
},
"original": {

View File

@@ -61,13 +61,6 @@
exit
fi
DEST_FILE="$HOME/.config/Nextcloud/nextcloud.cfg"
if [ ! -f "$DEST_FILE" ]; then
mkdir -p "$(dirname "$DEST_FILE")"
cp "${../initial-configs/nextcloud.cfg}" "$DEST_FILE"
fi
DEST_FILE="$HOME/.config/sinew.in/Enpass.conf"
if [ ! -f "$DEST_FILE" ]; then

View File

@@ -4,35 +4,40 @@
#imports = [ impermanence.nixosModules.impermanence ];
home.persistence."/persist" = {
directories = [
"Downloads"
"Tower"
"Code"
".steam"
".config/dotfiles"
".cache/zsh"
".mozilla/firefox"
".config/nvim"
".cache/Nextcloud"
".cache/wal"
".config/yazi/plugins"
".config/nixos"
".config/Nextcloud"
".config/spotify"
".config/sinew.in"
".config/chromium"
".config/obsidian"
".config/superProductivity"
".cache/zsh"
".config/.gemini"
".config/Antigravity"
".local/share/direnv"
".local/share/nvim"
".local/share/krita"
".local/share/voxtype"
".local/share/zoxide"
".config/Nextcloud"
".config/chromium"
".config/dotfiles"
".config/nixos"
".config/Signal"
".config/nvim"
".config/obsidian"
".config/sinew.in"
".config/spotify"
".config/superProductivity"
".config/yazi/plugins"
".local/share/android"
".local/share/Enpass"
".local/share/Steam"
".local/share/direnv"
".local/share/keyrings"
".local/share/krita"
".local/share/nvim"
".local/share/station"
".local/share/voxtype"
".local/share/zoxide"
".local/state/station"
".local/share/Nextcloud"
".local/state/wireplumber"
".mozilla/firefox"
".ssh"
".steam"
"Code"
"Downloads"
"Tower"
];
files = [
".config/shell/.env"

View File

@@ -1,6 +1,7 @@
{ pkgs, pkgs-unstable, try-cli, ... }:
{ pkgs, pkgs-unstable, try-cli, nix-direnv, ... }:
let
krita-appimage = pkgs.callPackage ../packages/krita.nix { };
enpass = pkgs.enpass.overrideAttrs (oldAttrs: rec {
version = "6.11.13.1957";
src = pkgs.fetchurl {
@@ -23,21 +24,20 @@ in
};
};
home.packages = with pkgs; [
antigravity # Gemini AI coding assistant
pkgs-unstable.antigravity # Gemini AI coding assistant
bluetui # Bluetooth TUI
direnv # Directory environment manager
enpass # Password manager
enpass-cli # Enpass CLI tool
expressvpn # VPN
ffmpeg # Video tools
ffmpegthumbnailer # Video thumbnailer
pkgs-unstable.gemini-cli # Gemini AI CLI tool
ghostty # Terminal emulator
gimp # Image manipulation software
gpu-screen-recorder # GPU screen recorder for Linux
imv # Image viewer
inkscape # Vector graphics software
kdePackages.wacomtablet # Wacom tablet manager
krita # Digital art software
krita-appimage # Custom digital art software (from AppImage)
libreoffice-fresh # Office suite
lunar-client # Minecraft launcher
mpv # Video player

View File

@@ -15,6 +15,10 @@
Status = "locked";
};
in {
direnv = {
enable = true;
nix-direnv.enable = true;
};
walker = {
enable = true;
config = {};

View File

@@ -0,0 +1 @@
$6$MCVd.EUOYYB0A1eS$S1/gSfAq1c2dBCofvJp9RtW.o5mLi78h0Y39LABIeIauPRjlEny/1R5aXEA7uPrZ3TPxhnYOYxTdbCi0imFZp.

40
packages/krita.nix Normal file
View File

@@ -0,0 +1,40 @@
{
lib,
appimageTools,
fetchurl,
makeWrapper
}:
let
version = "6.0.1";
pname = "krita-appimage";
src = fetchurl {
url = "https://download.kde.org/stable/krita/${version}/krita-${version}-x86_64.AppImage";
hash = "sha256-lzIgaqZiTnUOW5FSRF+1ROpj3RASWC390aLVFSBBTQo=";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/org.kde.krita.desktop $out/share/applications/krita.desktop
install -m 444 -D ${appimageContents}/krita.png $out/share/icons/hicolor/256x256/apps/krita.png
substituteInPlace $out/share/applications/krita.desktop \
--replace-fail "Exec=krita" "Exec=krita-appimage"
source ${makeWrapper}/nix-support/setup-hook
wrapProgram $out/bin/${pname} \
--set FONTCONFIG_FILE /etc/fonts/fonts.conf
'';
meta = {
description = "Digital painting and illustration application";
homepage = "https://krita.org";
license = lib.licenses.gpl3Only;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [ ];
};
}

View File

@@ -58,6 +58,9 @@ in
];
bootspec.enable = true;
resumeDevice = "/dev/disk/by-partlabel/disk-${hostname}-root";
kernel.sysctl = {
"net.ipv4.ip_unprivileged_port_start" = 0;
};
};
systemd = {

View File

@@ -11,6 +11,8 @@
./programs.nix
./fonts.nix
./hardware.nix
./virtualization.nix
./sound.nix
./virtualisation.nix
./time.nix
];
}

View File

@@ -5,6 +5,19 @@
packages = with pkgs; [
nerd-fonts.jetbrains-mono
nerd-fonts.fira-code
noto-fonts
noto-fonts-cjk-sans
noto-fonts-color-emoji
liberation_ttf
];
fontconfig = {
enable = true;
defaultFonts = {
monospace = [ "JetBrainsMono Nerd Font" ];
sansSerif = [ "Noto Sans" ];
serif = [ "Noto Serif" ];
};
};
};
}

View File

@@ -8,5 +8,9 @@
enable = true;
enable32Bit = true;
};
opentabletdriver.enable = true;
uinput.enable = true;
};
boot.kernelModules = [ "uinput" ];
}

View File

@@ -10,6 +10,7 @@
"/var/log"
"/var/lib/bluetooth"
"/var/lib/networkmanager"
"/var/lib/docker"
"/var/lib/nixos"
"/var/lib/systemd/coredump"
"/etc/NetworkManager/system-connections"

View File

@@ -14,8 +14,40 @@
firewall = {
enable = true;
# Ports used by Local Send
allowedTCPPorts = [ 53317 ];
allowedUDPPorts = [ 53317 ];
allowedTCPPorts = [
53317
8001
8002
8003
8004
];
allowedUDPPorts = [
53317
8001
8002
8003
8004
];
extraCommands = "
iptables -I nixos-fw 1 -i br+ -j ACCEPT
";
extraStopCommands = "
iptables -D nixos-fw -i br+ -j ACCEPT
";
};
hosts = {
"127.0.0.1" = [
"localhost"
"host.docker.internal"
"runcats.test"
"dev.runcats.test"
"landing.runcats.test"
"api.runcats.test"
"mail.runcats.test"
"kibana.runcats.test"
"img.runcats.test"
"docs.runcats.test"
];
};
};
}

View File

@@ -15,6 +15,7 @@
gcc # C compiler
git # Git
gnome-calculator # Calculator TODO: Find a better TUI calculator
gnome-keyring
grim # Screenshot tool TODO: Figure out and configure
gum # Terminal UI tool
highlight # Syntax highlighting tool TODO: Hook up to ZSH
@@ -29,14 +30,17 @@
lazygit # Git TUI
less # Pager
libnotify # Notification daemon
localsend # Local file sharing tool
makima # Key remapper for Linux TODO: Figure out and configure
mako # Notification daemon
neovim # Editor
pkgs-unstable.neovim # Editor
nix-gaming.mo2installer
nodePackages.pnpm # JavaScript package manager (used by Neovim plugins)
tree-sitter # Incremental parsing tool for editors
nodejs_24 # JavaScript runtime
openssl # SSL/TLS toolkit
p7zip # 7-Zip archiver
pipewire
pkgs-unstable.yazi # Terminal file manager
pywal16 # Image colorscheme generator
qt6.qtwayland # qtwayland support
@@ -45,6 +49,7 @@
rustc # Rust compiler
rustfmt # Rust formatter
satty # Screenshot editor TODO: Figure out and configure
seahorse # GNOME Keyring manager
sshpass # SSH with password in CLI, used by install scripts
swaybg # Wayland wallpaper utility
tldr # Simplified man pages

View File

@@ -1,24 +1,26 @@
{ pkgs, pkgs-unstable, hostname, ... }:
{
programs = {
# Easy file sharing on local network
localsend = {
enable = true;
openFirewall = true;
};
nix-ld.enable = true;
zsh = {
enable = true;
};
hyprland = {
enable = true;
package = pkgs-unstable.hyprland;
portalPackage = pkgs-unstable.xdg-desktop-portal-hyprland;
xwayland.enable = true;
withUWSM = true;
};
steam = {
enable = hostname == "station";
package = pkgs-unstable.steam;
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

View File

@@ -26,6 +26,7 @@
autoLogin.user = "chris";
defaultSession = "hyprland-uwsm";
};
gnome.gnome-keyring.enable = true;
};
security.pam.services.sddm.enableGnomeKeyring = true;
}

11
system/sound.nix Normal file
View File

@@ -0,0 +1,11 @@
{ ... }:
{
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
}

5
system/time.nix Normal file
View File

@@ -0,0 +1,5 @@
{...}:
{
time.timeZone = "Europe/London";
}

View File

@@ -4,12 +4,28 @@
users.users.chris = {
uid = 1000;
isNormalUser = true;
initialPassword = "changeme123";
hashedPasswordFile = "/persist/passwords/chris";
shell = pkgs.zsh;
extraGroups = [
"chris"
"wheel"
"networkmanager"
"docker"
];
};
system.activationScripts = {
setupInitialPassword = {
text = ''
# Ensure the directory exists
mkdir -p /persist/passwords
# Copy the initial hash if the file is missing
if [ ! -f /persist/passwords/chris ]; then
cp ${../initial-configs/passwords/chris} /persist/passwords/chris
chmod 600 /persist/passwords/chris
chown root:root /persist/passwords/chris
fi
'';
};
};
}

10
system/virtualisation.nix Normal file
View File

@@ -0,0 +1,10 @@
{ ... }:
{
virtualisation = {
docker = {
enable = true;
autoPrune.enable = true;
};
};
}

View File

@@ -1,7 +0,0 @@
{ ... }:
{
virtualization = {
docker.enable = true;
};
}