1
0
Fork 0
mirror of https://git.sr.ht/~roxwize/.dotfiles synced 2025-05-02 19:53:07 +00:00
Signed-off-by: roxwize <rae@roxwize.xyz>
This commit is contained in:
Rae 5e 2025-01-24 16:08:11 -05:00
parent 062c447374
commit c38f040574
Signed by: rae
GPG key ID: 5B1A0FAB9BAB81EE
21 changed files with 5 additions and 4 deletions

187
nixos/flake.lock generated Normal file
View file

@ -0,0 +1,187 @@
{
"nodes": {
"fenix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1734590149,
"narHash": "sha256-NcfLaETnNMPHTlu7/oTrihCjTL6G2DIe6lHZ68o2n8w=",
"owner": "nix-community",
"repo": "fenix",
"rev": "81afc33397436c678482a1560bbc810cc3504dbc",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1734366194,
"narHash": "sha256-vykpJ1xsdkv0j8WOVXrRFHUAdp9NXHpxdnn1F4pYgSw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "80b0fdf483c5d1cb75aaad909bd390d48673857f",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"nix-flatpak": {
"locked": {
"lastModified": 1734128415,
"narHash": "sha256-HLwdVNxpuTsLlM3tCkpbQU6yCehdgf3kOS1G2SDlkzY=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "8bdc2540da516006d07b04019eb57ae0781a04b3",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "latest",
"repo": "nix-flatpak",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1734323986,
"narHash": "sha256-m/lh6hYMIWDYHCAsn81CDAiXoT3gmxXI9J987W5tZrE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "394571358ce82dff7411395829aa6a3aad45b907",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1735471104,
"narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1734554871,
"narHash": "sha256-adKmMR20KSMrSQLAq3HbI1Y8DpgB2Fs4Nyiq9OpI/E4=",
"owner": "nix-community",
"repo": "NUR",
"rev": "52adbe40112836626fb9ed51e14d217e8b2f81c1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"root": {
"inputs": {
"fenix": "fenix",
"home-manager": "home-manager",
"nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1734531725,
"narHash": "sha256-IGe/elaXn5XXA62RIL9OuLMq1vgrUCm+bYPqYCZJ7Ug=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "27fac08c82210837a2ac84fa5e39eee6993f1605",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

51
nixos/flake.nix Normal file
View file

@ -0,0 +1,51 @@
{
description = "rae's nixOS config flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs";
};
# Nix User Repository
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
# Rust toolchains
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, nix-flatpak, ... }@inputs: {
nixosConfigurations =
let
system = hostname: {
name = hostname;
value = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
nix-flatpak.nixosModules.nix-flatpak
./hosts/${hostname}/configuration.nix
];
};
};
in builtins.listToAttrs [
(system "ioides")
(system "qemu")
];
homeConfigurations.rae = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = { inherit inputs; };
modules = [
./home
];
};
};
}

81
nixos/home/base.nix Normal file
View file

@ -0,0 +1,81 @@
{ pkgs, inputs, ... }: {
nixpkgs.overlays = import ../overlays.nix inputs;
home = {
stateVersion = "24.11";
username = "rae";
homeDirectory = "/home/rae";
sessionVariables = {
BROWSER = "firefox";
TERM = "kitty";
};
file = {
".twmrc".source = ../../configs/twm;
".local/share/themes".source = ../../configs/openbox/themes;
};
};
xdg.configFile = {
"openbox".source = ../../configs/openbox;
"rmpc".source = ../../configs/rmpc;
};
programs = {
fish = {
enable = true;
shellInit = ''
set -g fish_greeting
'';
};
git = {
enable = true;
userName = "roxwize";
userEmail = "rae@roxwize.xyz";
};
kitty = {
enable = true;
font.name = "Fira Code";
themeFile = "mayukai";
};
rofi = {
enable = true;
font = "Fira Code Light 11";
terminal = "kitty";
};
};
services = {
flameshot = {
enable = true;
settings = {
General = {
disabledTrayIcon = true;
showStartupLaunchMessage = false;
};
};
};
mpd = {
enable = true;
musicDirectory = "/mnt/world/music";
extraConfig = ''
audio_output {
type "pipewire"
name "main"
}
log_file "/tmp/mpd.log"
'';
};
mpdris2 = {
enable = true;
mpd.musicDirectory = "/mnt/world/music";
multimediaKeys = true;
notifications = true;
};
mpris-proxy.enable = true;
};
gtk = {
enable = true;
cursorTheme.name = "Posy's Cursor";
theme.name = "io.elementary.stylesheet.blueberry";
};
}

33
nixos/home/dconf.nix Normal file
View file

@ -0,0 +1,33 @@
{ ... }: {
dconf.settings = {
"io/elementary/code/settings" = {
font = "Fira Code Light 10";
use-system-font = false;
};
"net/launchpad/plank/docks/dock1" = {
dock-items = [
"gala-multitaskingview.dockitem"
"firefox.dockitem"
"io.elementary.terminal.dockitem"
"codium.dockitem"
"io.elementary.settings.dockitem"
];
};
"org/gnome/desktop/background" = {
picture-uri = "file://" + builtins.toString /home/rae/.dotfiles/assets/wallpapers/current;
};
"org/gnome/desktop/interface" = {
accent-color = "blue";
color-scheme = "prefer-dark";
};
"org/gnome/desktop/wm/preferences" = {
button-layout = ":minimize,maximize,close";
};
"org/pantheon/desktop/gala/appearance" = {
button-layout = ":minimize,maximize,close";
};
"org/pantheon/desktop/gala/behavior" = {
hotcorner-bottomright = "show-workspace-view";
};
};
}

12
nixos/home/default.nix Normal file
View file

@ -0,0 +1,12 @@
{ ... }: {
imports = [
./base.nix
./dconf.nix
./firefox.nix
./neovim.nix
./polybar.nix
./vscode.nix
./yambar.nix
];
}

143
nixos/home/firefox.nix Normal file
View file

@ -0,0 +1,143 @@
{ pkgs, ... }: {
programs.firefox = {
enable = true;
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
ExtensionUpdate = false;
FirefoxHome = {
SponsoredTopSites = false;
Highlights = false;
Pocket = false;
SponsoredPocket = false;
};
FirefoxSuggest = {
SponsoredSuggestions = false;
};
};
profiles.default = {
isDefault = true;
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
canvasblocker
catppuccin-gh-file-explorer
indie-wiki-buddy
privacy-badger
stylus
tabliss
ublock-origin
user-agent-string-switcher
violentmonkey
];
settings = {
"browser.aboutConfig.showWarning" = false;
"browser.newtabpage.activity-stream.default.sites" = "https://en.wikipedia.org/";
"browser.newtabpage.activity-stream.discoverystream.enabled" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = "";
"browser.newtabpage.activity-stream.newtabWallpapers.wallpaper" = "dark-beach";
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"browser.newtabpage.activity-stream.topSitesRows" = 2;
"browser.newtabpage.pinned" = [
{
url = "https://discord.com/app/";
label = "Discord";
}
{
url = "https://en.wikipedia.org/";
label = "Wikipedia";
}
];
"datareporting.healthreport.uploadEnabled" = false;
"font.name.monospace.x-western" = "Fira Code";
"layout.css.prefers-color-scheme.content-override" = 0;
};
bookmarks = [
{
name = "Toolbar";
toolbar = true;
bookmarks = [
{
name = "CUPS interface";
url = "http://127.0.0.1:631/";
}
{
name = "Pinky & Pepper Forever";
url = "https://www.silversprocket.net/2020/05/02/pinky-and-pepper-forever-by-eddy-atoms-part-1-of-2/";
}
];
}
{
name = "Nix sites";
bookmarks = [
{
name = "NixOS search";
url = "https://search.nixos.org/packages";
}
{
name = "Home Manager search";
url = "https://home-manager-options.extranix.com/";
}
{
name = "NUR search";
url = "https://nur.nix-community.org/";
}
{
name = "NixOS wiki";
url = "https://nixos.wiki/";
}
{
name = "Nix functions";
url = "https://teu5us.github.io/nix-lib.html";
}
];
}
];
search = {
default = "DuckDuckGo";
engines = {
"Nix packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
};
"Home Manager options" = {
urls = [{
template = "https://home-manager-options.extranix.com/";
params = [
{ name = "release"; value = "release-24.11"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
};
"Manpages" = {
urls = [{
template = "https://www.mankier.com/";
params = [
{ name = "q"; value = "{searchTerms}"; }
];
}];
};
"Bing".metaData.hidden = true;
"Google".metaData.hidden = true;
};
order = [ "DuckDuckGo" "Nix packages" ];
force = true;
};
};
};
}

63
nixos/home/neovim.nix Normal file
View file

@ -0,0 +1,63 @@
{ pkgs, ... }: {
programs.neovim = {
enable = true;
defaultEditor = true;
vimAlias = true;
plugins = with pkgs.vimPlugins; [
cmp_luasnip
cmp-nvim-lsp
luasnip
nvim-cmp
nvim-lspconfig
rustaceanvim
vim-just
vim-sleuth
vim-wakatime
];
extraLuaConfig = ''
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.number = true
-- cmp
local cmp = require("cmp")
cmp.setup {
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end
},
mapping = {
['<C-up>'] = cmp.mapping.select_prev_item(),
['<C-down>'] = cmp.mapping.select_next_item(),
['<C-space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.close(),
['<tab>'] = cmp.mapping.confirm { select = true }
},
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "luasnip" }
})
}
local caps = vim.tbl_deep_extend(
"force",
vim.lsp.protocol.make_client_capabilities(),
require("cmp_nvim_lsp").default_capabilities(),
{ workspace = { didChangeWatchedFiles = { dynamicRegistration = true } } }
)
-- lspconfig
local lc = require("lspconfig")
lc.nil_ls.setup {
autostart = true,
capabilities = caps,
cmd = { "nil" }
}
'';
};
}

100
nixos/home/polybar.nix Normal file
View file

@ -0,0 +1,100 @@
{ ... }: {
services.polybar = {
enable = true;
script = "polybar &";
settings =
let
background = "#0000";
foreground = "#030910";
color0 = "#d9eafd";
color1 = "#bcccdc";
color2 = "#9aa6b2";
in {
"global/wm" = {
margin-top = 2;
margin-bottom = 2;
};
"bar/top" = {
background = background;
foreground = foreground;
width = "100%";
height = 32;
font-0 = "GohuFont:style=Regular:size=11:antialias=false;3";
modules-left = "xworkspaces audio";
modules-right = "cpu memory date";
module-margin = 1;
offset-y = 14;
padding = 2;
bottom = true;
dpi-x = 96;
dpi-y = 96;
};
"module/cpu" = {
type = "internal/cpu";
label = "CPU: %percentage%%";
label-background = color0;
label-padding = 2;
interval = 2;
};
"module/memory" = {
type = "internal/memory";
label = "RAM: %percentage_used%%";
label-background = color1;
label-padding = 2;
interval = 2;
};
"module/xwindow" = {
type = "internal/xwindow";
label-active-font = 0;
};
"module/xworkspaces" = {
type = "internal/xworkspaces";
enable-scroll = false;
label-active = "%name%";
label-active-background = color1;
label-active-padding = 1;
label-occupied = "%name%";
label-occupied-background = color2;
label-occupied-padding = 1;
label-empty = "%name%";
label-empty-foreground = "#fff";
label-empty-padding = 1;
label-urgent = "%name%";
label-urgent-background = color0;
label-urgent-padding = 1;
};
"module/audio" = {
type = "internal/alsa";
master-soundcard = "hw:1";
master-mixer = "Master";
format-volume = "<label-volume>";
format-muted = "<label-muted>";
label-volume = "VOL: %percentage%%";
label-muted = "VOL: 0%";
label-volume-background = color0;
label-volume-padding = 2;
label-muted-background = color0;
label-muted-padding = 2;
click-right = "pavucontrol";
};
"module/battery" = {
type = "internal/battery";
battery = "BAT0";
adapter = "ADP1";
label-charging = "BAT: %percentage%%++";
label-discharging = "BAT: %percentage%%";
label-background = color1;
label-padding = 2;
};
"module/date" = {
type = "internal/date";
date = "%b %d %y";
time = "%I:%M %p";
label-background = color2;
label-padding = 2;
interval = 5;
};
};
};
}

55
nixos/home/vscode.nix Normal file
View file

@ -0,0 +1,55 @@
{ pkgs, ... }: {
programs.vscode = {
enable = true;
package = pkgs.vscodium;
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
extensions = with pkgs.vscode-extensions; [
catppuccin.catppuccin-vsc
catppuccin.catppuccin-vsc-icons
editorconfig.editorconfig
esbenp.prettier-vscode
jnoortheen.nix-ide
llvm-vs-code-extensions.vscode-clangd
mesonbuild.mesonbuild
ms-vscode.live-server
rust-lang.rust-analyzer
skellock.just
vadimcn.vscode-lldb
wakatime.vscode-wakatime
];
userSettings =
let
df = lang: formatter: {
name = "[" + lang + "]";
value = {
"editor.defaultFormatter" = formatter;
};
};
in {
"editor.fontFamily" = "'Fira Code Light', monospace";
# "editor.fontLigatures" = true;
"editor.formatOnSave" = false;
"editor.indentSize" = 4;
"editor.tabSize" = 4;
"explorer.confirmDelete" = false;
"explorer.confirmDragAndDrop" = false;
"mesonbuild.buildFolder" = "build";
"prettier.tabWidth" = 4;
"prettier.trailingComma" = "none";
"prettier.singleAttributePerLine" = false;
"prettier.useEditorConfig" = true;
"svelte.enable-ts-plugin" = true;
"telemetry.telemetryLevel" = "off";
"workbench.activityBar.iconClickBehavior" = "toggle";
"workbench.activityBar.location" = "bottom";
"workbench.colorTheme" = "Catppuccin Frappé";
"workbench.iconTheme" = "catppuccin-frappe";
} // builtins.listToAttrs [
(df "css" "esbenp.prettier-vscode")
(df "html" "esbenp.prettier-vscode")
(df "typescript" "esbenp.prettier-vscode")
(df "javascript" "esbenp.prettier-vscode")
];
};
}

85
nixos/home/yambar.nix Normal file
View file

@ -0,0 +1,85 @@
{ pkgs, ... }: {
programs.yambar = {
enable = true;
settings = {
bar = {
location = "top";
height = 18;
background = "00000088";
font = "GohuFont:style=Regular:pixelsize=11";
margin = 16;
spacing = 3;
left = [
{
# https://codeberg.org/dnkl/yambar/issues/53#issuecomment-264088
script = {
#? or /run/current-system/sw/bin/playerctl
path = "${pkgs.playerctl}/bin/playerctl";
args = [
"--follow"
"metadata"
"--format"
''
status|string|{{status}}
artist|string|{{artist}}
title|string|{{title}}
''
];
content.map.conditions = {
"status == Playing && artist != \"\"" = {
string.text = "{artist} - {title}";
};
"status == Playing && artist == \"\"" = {
string.text = "{title}";
};
"status != Playing" = {
string.text = "god's in his heaven | all's right with the world";
};
};
};
}
];
right = [
{
battery = {
name = "BAT0";
content.map.conditions."state != unknown".string.text = "bat {capacity}% |";
};
}
{
pipewire = {
content.map.conditions."type == sink".string = {
text = "vol {cubic_volume}% |";
on-click = {
left = "pavucontrol";
wheel-up = "amixer sset Master 1%+";
wheel-down = "amixer sset Master 1%-";
};
};
};
}
{
cpu = {
poll-interval = 2000;
content.map.conditions."id < 0".string.text = "cpu {cpu}%";
};
}
{
mem = {
poll-interval = 2000;
content.string.text = "ram {percent_used}% |";
};
}
{
clock = {
date-format = "%b %d %y";
time-format = "%I:%M %p";
content.string.text = "{date} {time}";
};
}
];
};
};
};
}

150
nixos/hosts/base.nix Normal file
View file

@ -0,0 +1,150 @@
{ pkgs, inputs, ... }:
{
imports = [
../packages.nix
];
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nixpkgs = {
config.allowUnfree = true;
overlays = import ../overlays.nix inputs;
};
networking.networkmanager.enable = true;
users.users.rae = {
isNormalUser = true;
extraGroups = [ "wheel" "docker" ];
hashedPassword = "$y$j9T$YPq.Kl8rss1JmJ5Vg6cHE/$2kdfzCkkhaO.I4u714EQnS/ZFert5byisiRVxtC.9G2";
shell = pkgs.fish;
};
programs = {
dconf.enable = true;
firefox.enable = true;
fish.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
nix-ld.enable = true;
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
};
services = {
# Xorg
xserver = {
enable = true;
xkb.layout = "us";
windowManager = {
cwm.enable = true;
openbox.enable = true;
twm.enable = true;
};
};
displayManager = {
sddm = {
enable = true;
settings = {
Autologin = {
User = "rae";
Session = "none+openbox";
};
};
theme = "catppuccin-mocha";
};
};
# Touchpad support
libinput.enable = true;
# Sound
pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
# CUPS printing
# Can be configured at http://127.0.0.1:631/
# Local printers are host-specific (see `hardware.printers`)
# Avahi enables IPP Everywhere
printing.enable = true;
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
# misc
flatpak = {
enable = true;
packages = [
"com.github.tchx84.Flatseal"
{ flatpakref = "https://sober.vinegarhq.org/sober.flatpakref"; sha256 = "1pj8y1xhiwgbnhrr3yr3ybpfis9slrl73i0b1lc9q89vhip6ym2l"; }
];
};
blueman.enable = true;
openssh = {
enable = true;
knownHosts = {
"git.sr.ht" = {
hostNames = [ "git.sr.ht" ];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMZvRd4EtM7R+IHVMWmDkVU3VLQTSwQDSAvW0t2Tkj60";
};
"github.com" = {
hostNames = [ "github.com" ];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl";
};
"verygay.world" = {
hostNames = [ "verygay.world" ];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICMql669TiEneexyQsUWfCo9ouEJwk3f21d9chpBqFge";
};
};
};
};
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
};
xdg.portal = {
enable = true;
config = {
common = {
default = [ "gtk" ];
};
};
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
};
fonts = {
enableDefaultPackages = true;
fontconfig = {
enable = true;
defaultFonts = {
emoji = [ "Twitter Color Emoji" "Noto Color Emoji" ];
monospace = [ "Fira Code Light" ];
};
};
packages = with pkgs; [
fira-code
gohufont
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
twemoji-color-font
];
};
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "gr928-8x16-thin"; # https://adeverteuil.github.io/linux-console-fonts-screenshots/
keyMap = "us";
};
virtualisation.docker.enable = true;
}

View file

@ -0,0 +1,57 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
../base.nix
];
boot.loader = {
efi = {
canTouchEfiVariables = false;
efiSysMountPoint = "/efi";
};
grub = {
enable = true;
efiSupport = true;
efiInstallAsRemovable = true;
devices = [ "nodev" ];
};
};
# Music pendrive
fileSystems."/mnt/world" = {
device = "/dev/disk/by-uuid/639bae80-0f5d-481c-ae4e-d2c70f754a1c";
fsType = "ext4";
neededForBoot = false;
};
networking.hostName = "ioides";
services = {
xserver.videoDrivers = [ "nvidia" ];
};
hardware = {
graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-sdk
];
};
nvidia = {
modesetting.enable = true;
powerManagement = {
enable = false;
finegrained = false;
};
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
};
fonts.fontconfig.subpixel.rgba = "rgb";
time.timeZone = "America/New_York";
system.stateVersion = "24.11";
}

View file

@ -0,0 +1,46 @@
# 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 = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "uas" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/bf247e42-e44d-41ce-ab3d-7444242f7c44";
fsType = "xfs";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/3b36f28c-d7f3-4235-a3e2-a4ca4f81a15e";
fsType = "ext4";
};
fileSystems."/efi" =
{ device = "/dev/disk/by-uuid/9065-FC15";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/98760dd1-4291-4e4d-8e75-466b21fc5437"; }
];
# 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.enp0s31f6.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,20 @@
{ ... }:
{
imports = [
./hardware-configuration.nix
../base.nix
];
boot.loader = {
grub = {
enable = true;
device = "/dev/sda";
};
};
networking.hostName = "qemu";
time.timeZone = "America/New_York";
system.stateVersion = "24.11";
}

View file

@ -0,0 +1,33 @@
# 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 + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "floppy" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/2812e740-47e5-4246-b9ef-9cf9900665fa";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/efc2c587-0227-4c85-a49d-0e508f1b75a6"; }
];
# 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.ens3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

10
nixos/overlays.nix Normal file
View file

@ -0,0 +1,10 @@
{ nur, fenix, nixpkgs-unstable, ... }: [
nur.overlays.default
fenix.overlays.default
(import ./pkgs/overlay.nix {})
(final: prev: {
unstable = import nixpkgs-unstable {
system = prev.system;
};
})
]

97
nixos/packages.nix Normal file
View file

@ -0,0 +1,97 @@
{ pkgs, ... }:
{
# I'm not sure if you actually need stuff like GTK4 to be
# in here when it's really only used with nix-shell and the
# amount of time it saves during installation is probably
# only like a few seconds
environment.systemPackages = with pkgs; [
# development
cc65 # C compiler for processors of 6502 family
chibicc-uxn # A small C compiler... for uxn
llvmPackages_19.clang-tools # Standalone command line tools for C++ development
(fenix.default.withComponents [ "cargo" "rustc" ])
gcc # GNU Compiler Collection, version 13.3.0 (wrapper script)
git # Distributed version control system
gnumake # Tool to control the generation of non-source files from sources
godot_4 # Free and Open Source 2D and 3D game engine
gtk4 # Multi-platform toolkit for creating graphical user interfaces
just # Handy way to save and run project-specific commands
meson # Open source, fast and friendly build system made in Python
nodejs_23 # Event-driven I/O framework for the V8 JavaScript engine
pnpm # Fast, disk space efficient package manager for JavaScript
python314 # High-level dynamically-typed programming language
vala # Compiler for GObject type system
## language servers
mesonlsp # Meson
nil # Nix
rust-analyzer # Rust
vala-language-server # Vala
# games
alvr # Stream VR games from your PC to your headset via Wi-Fi
unstable.luanti # An open source voxel game engine (formerly Minetest)
prismlauncher # Free, open source launcher for Minecraft
steam-run # Run commands in the same FHS environment that is used for Steam
uxn # Assembler and emulator for the Uxn stack machine
x16 # Official emulator of CommanderX16 8-bit computer
x16-rom # ROM file for CommanderX16 8-bit computer
# graphics
flameshot # Powerful yet simple to use screenshot software
gimp # GNU Image Manipulation Program
imagemagick # Software suite to create, edit, compose, or convert bitmap images
krita # Free and open source painting application
maim # Command-line screenshot utility
# gtk
posy-cursors # Posy's Improved Cursors for Linux
pantheon.elementary-gtk-theme # GTK theme designed to be smooth, attractive, fast, and usable
# internet
nicotine-plus # Graphical client for the SoulSeek peer-to-peer system
slack # Desktop client for Slack
vesktop # Alternate client for Discord with Vencord built-in
yt-dlp # Command-line tool to download videos from YouTube.com and other sites (youtube-dl fork)
# system tools
android-tools # Android SDK platform tools
bat # Cat(1) clone with syntax highlighting and Git integration
btop # Monitor of resources
dconf-editor # GSettings editor for GNOME
kdePackages.dolphin # File manager by KDE
ffmpeg # Complete, cross-platform solution to record, convert and stream audio and video
kdePackages.filelight # Quickly visualize your disk space usage
gparted # Graphical disk partitioning tool
home-manager # Nix-based user environment configurator
hyfetch # neofetch with pride flags <3
kitty # Modern, hackable, featureful, OpenGL based terminal emulator
monitor # Manage processes and monitor system resources
unzip # Extraction utility for archives compressed in .zip format
usbutils # Tools for working with USB devices, such as lsusb
wine # Open Source implementation of the Windows API on top of X, OpenGL, and Unix
xclip # Tool to access the X clipboard from a console application
zellij # Terminal workspace with batteries included
# text editors
neovim # Vim text editor fork focused on extensibility and agility
vscodium # Open source source code editor developed by Microsoft for Windows, Linux and macOS (VS Code without MS branding/telemetry/licensing)
# audio
alsa-utils # ALSA, the Advanced Linux Sound Architecture utils
audacity # Sound editor with graphical UI
mpc # Minimalist command line interface to MPD
pavucontrol # PulseAudio Volume Control
playerctl # Command-line utility and library for controlling media players that implement MPRIS
reaper # Digital audio workstation
unstable.rmpc # TUI music player client for MPD with album art support via kitty image protocol
sunvox # Small, fast and powerful modular synthesizer with pattern-based sequencer
# X11
hsetroot # Allows you to compose wallpapers ('root pixmaps') for X
nitrogen # Wallpaper browser and setter for X11
polybarFull # Fast and easy-to-use tool for creating status bars
rofi # Window switcher, run dialog and dmenu replacement
xcompmgr #
xdotool # Fake keyboard/mouse input, window management, and more
xorg.xev #
xorg.xwininfo #
yambar # Modular status panel for X11 and Wayland
# misc
catppuccin-sddm # Soothing pastel theme for SDDM
kdePackages.kdenlive # Free and open source video editor, based on MLT Framework and KDE Frameworks
nmap # Free and open source utility for network discovery and security auditing
qemu_kvm # Generic and open source machine emulator and virtualizer
];
}

View file

@ -0,0 +1,23 @@
{ lib, stdenv, fetchFromGitHub }: stdenv.mkDerivation {
pname = "chibicc-uxn";
version = "1.0.0";
src = fetchFromGitHub {
owner = "lynn";
repo = "chibicc";
rev = "0a590db363fb8d69b80fc70d9dfb7e655aafe656";
sha256 = "1jf18dh9ns0q79q8ql5yiw7l3zswyy0qjlz089xr3kw4zpqaqfmn";
};
installPhase = ''
mkdir -p $out/bin
cp chibicc $out/bin
'';
meta = {
description = "A small C compiler... for uxn";
homepage = "https://github.com/lynn/chibicc";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
};
}

3
nixos/pkgs/overlay.nix Normal file
View file

@ -0,0 +1,3 @@
{ ... }: final: prev: with final; {
chibicc-uxn = callPackage ./chibicc-uxn {};
}