split modules and profiles

This commit is contained in:
Dmitriy Kholkin 2021-09-15 23:17:00 +03:00
parent 0e0fbd2f44
commit cbf852ce45
88 changed files with 251 additions and 1060 deletions

53
flake.lock generated
View File

@ -34,6 +34,21 @@
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1620759905,
"narHash": "sha256-WiyWawrgmyN0EdmiHyG2V+fqReiVi8bM9cRdMaKQOFg=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b543720b25df6ffdfcf9227afafc5b8c1fabfae8",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -141,6 +156,25 @@
"type": "indirect"
}
},
"nix-direnv": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1631525216,
"narHash": "sha256-lNEEXpSJ0aRmqYkoyRhaofJXffxmPDXkZQgXZgQs0gI=",
"owner": "nix-community",
"repo": "nix-direnv",
"rev": "53c44ae33a453e2c9759cc81e028ca6a86f232d4",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-direnv",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1623798125,
@ -220,6 +254,22 @@
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1622059058,
"narHash": "sha256-t1/ZMtyxClVSfcV4Pt5C1YpkeJ/UwFF3oitLD7Ch/UA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "84aa23742f6c72501f9cc209f29c438766f5352d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1631470189,
"narHash": "sha256-hkUPYlpNOY9nbG1ByRin9NzPAYnPtwq/nGxO/DoeZd0=",
@ -260,7 +310,8 @@
"materia-theme": "materia-theme",
"multimc-cracked": "multimc-cracked",
"nix": "nix",
"nixpkgs": "nixpkgs_3",
"nix-direnv": "nix-direnv",
"nixpkgs": "nixpkgs_4",
"nixpkgs-master": "nixpkgs-master",
"nixpkgs-mozilla": "nixpkgs-mozilla",
"nixpkgs-stable": "nixpkgs-stable",

109
flake.nix
View File

@ -2,47 +2,47 @@
description = "System configuration";
inputs = {
nixpkgs.url = github:nixos/nixpkgs/nixos-unstable;
nixpkgs-master.url = github:nixos/nixpkgs/master;
nixpkgs-stable.url = github:nixos/nixpkgs/nixos-21.05;
home-manager.url = github:nix-community/home-manager;
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-master.url = "github:nixos/nixpkgs/master";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-21.05";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# base16.url = "/shared/nixos/base16-nix";
base16.url = github:alukardbf/base16-nix;
base16.url = "github:alukardbf/base16-nix";
base16-horizon-scheme = {
url = github:michael-ball/base16-horizon-scheme;
url = "github:michael-ball/base16-horizon-scheme";
flake = false;
};
materia-theme = {
url = github:nana-4/materia-theme;
url = "github:nana-4/materia-theme";
flake = false;
};
zsh-autosuggestions = {
url = github:zsh-users/zsh-autosuggestions;
url = "github:zsh-users/zsh-autosuggestions";
flake = false;
};
zsh-nix-shell = {
url = github:chisui/zsh-nix-shell;
url = "github:chisui/zsh-nix-shell";
flake = false;
};
zsh-you-should-use = {
url = github:MichaelAquilina/zsh-you-should-use;
url = "github:MichaelAquilina/zsh-you-should-use";
flake = false;
};
zsh-cod = {
url = github:dim-an/cod;
url = "github:dim-an/cod";
flake = false;
};
i3lock-fancy-rapid = {
url = github:yvbbrjdr/i3lock-fancy-rapid;
url = "github:yvbbrjdr/i3lock-fancy-rapid";
flake = false;
};
nixpkgs-mozilla = {
url = github:mozilla/nixpkgs-mozilla;
url = "github:mozilla/nixpkgs-mozilla";
flake = false;
};
rycee = {
url = gitlab:rycee/nur-expressions;
url = "gitlab:rycee/nur-expressions";
flake = false;
};
multimc-cracked = {
@ -54,42 +54,63 @@
type = "git";
};
qbittorrent-ee = {
url = github:c0re100/qBittorrent-Enhanced-Edition;
url = "github:c0re100/qBittorrent-Enhanced-Edition";
flake = false;
};
nix-direnv.url = "github:nix-community/nix-direnv";
};
outputs = { nixpkgs, nix, self, ... }@inputs: {
nixosModules = import ./modules;
outputs = { nixpkgs, nix, self, ... }@inputs:
let
findModules = dir:
builtins.concatLists (builtins.attrValues (builtins.mapAttrs
(name: type:
if type == "regular" then
[{
name = builtins.elemAt (builtins.match "(.*)\\.nix" name) 0;
value = dir + "/${name}";
}]
else if (builtins.readDir (dir + "/${name}"))
? "default.nix" then [{
inherit name;
value = dir + "/${name}";
}] else
findModules (dir + "/${name}"))
(builtins.readDir dir)));
in {
nixosModules = builtins.listToAttrs (findModules ./modules);
nixosProfiles = import ./profiles;
# Generate system config for each of hardware configuration
nixosConfigurations = with nixpkgs.lib;
let
hosts = builtins.attrNames (builtins.readDir ./machines);
mkHost = name: let
system = builtins.readFile (./machines + "/${name}/system");
modules = [ (import (./machines + "/${name}")) { device = name; } ];
specialArgs = { inherit inputs; };
in nixosSystem { inherit system modules specialArgs; };
in genAttrs hosts mkHost;
nixosProfiles = builtins.listToAttrs (findModules ./profiles);
legacyPackages.x86_64-linux =
(builtins.head (builtins.attrValues self.nixosConfigurations)).pkgs;
nixosRoles = import ./roles;
# Generate system config for each of hardware configuration
nixosConfigurations = with nixpkgs.lib;
let
hosts = builtins.attrNames (builtins.readDir ./machines);
mkHost = name:
nixosSystem {
system = builtins.readFile (./machines + "/${name}/system");
modules = [ (import (./machines + "/${name}")) { device = name; } ];
specialArgs = { inherit inputs; };
};
in genAttrs hosts mkHost;
devShell.x86_64-linux = let
pkgs = self.legacyPackages.x86_64-linux;
rebuild = pkgs.writeShellScriptBin "rebuild" ''
if [[ -z $1 ]]; then
echo "Usage: $(basename $0) {switch|boot|test}"
elif [[ $1 = "iso" ]]; then
nix build .#nixosConfigurations.Flakes-ISO.config.system.build.isoImage
else
sudo nixos-rebuild $1 --flake .
fi
'';
in pkgs.mkShell {
nativeBuildInputs = [ rebuild ];
legacyPackages.x86_64-linux =
(builtins.head (builtins.attrValues self.nixosConfigurations)).pkgs;
devShell.x86_64-linux = let
pkgs = self.legacyPackages.x86_64-linux;
rebuild = pkgs.writeShellScriptBin "rebuild" ''
if [[ -z $1 ]]; then
echo "Usage: $(basename $0) {switch|boot|test}"
elif [[ $1 = "iso" ]]; then
nix build .#nixosConfigurations.Flakes-ISO.config.system.build.isoImage
else
sudo nixos-rebuild $1 --flake .
fi
'';
in pkgs.mkShell {
nativeBuildInputs = [ rebuild ];
};
};
};
}

View File

@ -1,7 +1,7 @@
{ inputs, lib, ... }: {
imports = [
./hardware-configuration.nix
inputs.self.nixosProfiles.desktop
inputs.self.nixosRoles.desktop
];
deviceSpecific.devInfo = {

View File

@ -1,7 +1,7 @@
{ inputs, config, pkgs, ... }: {
imports = with inputs.self.nixosModules; [
./hardware-configuration.nix
inputs.self.nixosProfiles.desktop
inputs.self.nixosRoles.desktop
];
deviceSpecific.devInfo = {

View File

@ -1,7 +1,7 @@
{ modulesPath, lib, inputs, pkgs, ... }: {
imports = with inputs.self.nixosModules; [
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
inputs.self.nixosProfiles.base
inputs.self.nixosRoles.base
inputs.base16.hmModule
alacritty

View File

@ -1,7 +1,7 @@
{ inputs, ... }: {
imports = with inputs.self.nixosModules; [
./hardware-configuration.nix
inputs.self.nixosProfiles.desktop
inputs.self.nixosRoles.desktop
];
deviceSpecific.devInfo = {

Binary file not shown.

View File

@ -1,51 +0,0 @@
[CherryBlossom]
main_fg = d98ba1
secondary_fg = 816e7c
main_bg = 131c26
sidebar_and_player_bg = 131c26
#tl_selected_hover = EEEEEE
cover_overlay_and_shadow = 816e7c
indicator_fg_and_button_bg = d98ba1
pressing_fg = d98ba1
slider_bg = 131c26
sidebar_indicator_and_hover_button_bg = d98ba1
scrollbar_fg_and_selected_row_bg = 131c26
pressing_button_fg = 816e7c
pressing_button_bg = d98ba1
selected_button = 816e7c
miscellaneous_bg = 131c26
miscellaneous_hover_bg = 131c26
preserve_1 = 131c26
[Coral]
main_fg = f88379
secondary_fg = 8c92ac
main_bg = 1d1f28
sidebar_and_player_bg = 1d1f28
#tl_selected_hover = EEEEEE
cover_overlay_and_shadow = 8c92ac
indicator_fg_and_button_bg = f88379
pressing_fg = f88379
slider_bg = 1d1f28
sidebar_indicator_and_hover_button_bg = f88379
scrollbar_fg_and_selected_row_bg = 1d1f28
pressing_button_fg = 8c92ac
pressing_button_bg = f88379
selected_button = 8c92ac
miscellaneous_bg = 1d1f28
miscellaneous_hover_bg = 1d1f28
preserve_1 = 1d1f28
#Greyish Pink = #c79da9
#Purplish grey = #816e7c
#Very dark (mostly black) blue = #131c26
#NEED TO DO
#corner radius when hovering to edit playlist image
#downloaded status is fully colored
#connect to device shadow

View File

@ -1,647 +0,0 @@
:root {
--bar-height: 120px;
}
/*Round corner cover image*/
.card-image,
.card-placeholder-wrapper,
.card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image,
.Card:not(.Card--artist) .Card__image-wrapper {
border-radius: 10px !important;
overflow: hidden !important
}
/*Hide some annoying elements like profile name and pic, upgrade button and device connect bar at bottom, new playlist button*/
.profile.content-top-bar__profile-link,
.upgrade-button,
.view-player .remote-playback-bar,
.NewPlaylistButton {
display: none !important;
}
/*Exclude these elements from draggable property because it stops them from clickable*/
.profile-items-container,
.profile {
-webkit-app-region: no-drag !important;
}
/*Thinner scrollbar*/
::-webkit-scrollbar {
height: 6px !important;
width: 6px !important;
background-color: transparent;
}
/*Round corner scrollbar*/
::-webkit-scrollbar-thumb {
border-radius: 3px !important;
}
/*Hide top and bottom buttons of scrollbar */
/*who uses those, lol*/
::-webkit-scrollbar-button {
display: none !important;
}
/*Hide cover image overlay*/
.card-overlay {
visibility: hidden !important;
}
/*Lift up cover when hovering on it*/
.card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image-wrapper {
transition-property: transform, box-shadow !important;
transition-duration: 1s !important;
transition-timing-function: cubic-bezier(.3,0,0,1) !important;
box-shadow: 0 5px 20px rgba(0,0,0,0.1);
}
.card-image-hit-area:not(.no-hover):hover .card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image-hit-area-counter-scale:hover .Card__image-wrapper {
transform: translateY(-10px);
box-shadow: 0 15px 30px rgba(0,0,0,0.3);
}
.card-image-hit-area .card-button-add,
.card-image-hit-area .card-button-play,
.card-image-hit-area .card-button-more,
.Card__image-hit-area .card-button-add,
.Card__image-hit-area .card-button-play,
.Card__image-hit-area .card-button-more,
.Card__image-hit-area .Card__play-button,
.Card__image-hit-area .Card__add-button,
.Card__image-hit-area .Card__more-button,
.Card__image-hit-area .Card__overlay {
transition-property: all !important;
transition-duration: 1s !important;
transition-timing-function: cubic-bezier(.3,0,0,1) !important;
opacity: 0 !important;
}
.card-image-hit-area:not(.no-hover):hover .card-button-add,
.card-image-hit-area:not(.no-hover):hover .card-button-play,
.card-image-hit-area:not(.no-hover):hover .card-button-more,
.Card__image-hit-area:not(.no-hover):hover .card-button-add,
.Card__image-hit-area:not(.no-hover):hover .card-button-play,
.Card__image-hit-area:not(.no-hover):hover .card-button-more {
opacity: 1 !important;
transform: translateY(-10px);
}
.Card__image-hit-area:hover .Card__play-button,
.Card__image-hit-area:hover .Card__add-button,
.Card__image-hit-area:hover .Card__more-button,
.Card__image-hit-area:hover .Card__overlay {
opacity: 1 !important;
}
.glue-page-header__content .glue-page-header__image-inner {
border-radius: 10px;
box-shadow: unset !important;
}
.glue-page-header__full-description-overlay {
box-shadow: unset !important;
}
.card-placeholder-wrapper {
background: transparent !important;
}
/*Spice up search input background*/
.SearchInput {
color: var(--modspotify_main_fg);
}
.SearchInput__input {
color: var(--modspotify_secondary_fg);
background-color: rgba(var(--modspotify_rgb_scrollbar_fg_and_selected_row_bg), 0.5) !important;
border-radius: 4px !important;
padding-left: 34px;
}
.sidebar:hover .sidebar-navbar.sidebar-scroll-element {
opacity: 1!important;
}
.view-player .player-controls-container,
.view-player .player-controls-container .controls {
overflow: visible !important;
}
.view-player .player-controls-container .controls .button-play{
height:50px !important;
border-radius:50px !important;
background: transparent !important;
box-shadow:0 0 0 0 !important;
width:50px !important;
overflow: visible !important;
box-shadow: 0 4px 15px rgba(0,0,0,0.2) !important;
transition:none 0.3s cubic-bezier(.3,0,.7,1);
}
.view-player .player-controls-container .controls .button-play:before{
font-size:18px !important;
padding-left: 16px !important;
padding-top: 9px !important;
}
.view-player .player-controls-container .controls .button-play:after {
box-shadow: unset !important;
}
.view-player .player-controls-container {
position: absolute !important;
width: 100% !important;
}
.view-player .player-controls-container .controls {
width: 100% !important;
height: 100% !important;
align-items: center !important;
margin-top : 0px !important;
}
/*
Hide the song duration and elapsed text. I dont know where to put those so I just hide them
*/
.view-player .player-controls-container .progress-container .elapsed,
.view-player .player-controls-container .progress-container .remaining {
display: none !important;
}
/* Add round corner for Gerne and Mood cards */
.gc-image-container,
.gc-image {
border-radius: 10px !important;
}
/*
Collage of 3 album covers is usually seen in Browse and Chart.
*/
.card-puff__image-wrapper,
.card-puff__info-container,
.card-puff__card-image {
border-radius: 10px !important;
}
.card-puff__image-wrapper {
overflow: visible;
}
.card-puff__card-image {
box-shadow: 5px 0 30px rgba(0,0,0,0.7);
overflow: visible;
}
.card-puff__title-container {
background-color: transparent !important;
}
.card-puff.pressed .card-puff__image-wrapper,
.card-puff.pressed .card-puff__info-container {
opacity: 0.7 !important;
}
.card-puff__title {
padding: 5px 10px 5px 10px !important;
background-color: var(--modspotify_main_bg) !important;
border-radius: 4px;
border: 2px solid var(--modspotify_main_fg);
}
/*
We use round corner on cover so they look weird in original
form, so I move last cover to the right 20px and first one to the left 20px
*/
.card-puff__card-image:nth-child(1) {
right: 20px;
box-shadow: 0 0 0 0 !important;
}
.card-puff__card-image:nth-child(3) {
left: 20px;
}
.grid-overlay-label {
top: 140px !important;
}
/**/
.glue-page-header__background-color {
background-image: none !important;
background: var(--modspotify_main_bg);
}
/* .glue-page-header__sticky {
padding-top: 60px !important;
} */
/*
Remove those title, cringy description and
meaningless followers number
*/
.carousel .card-info-subtitle-description,
.carousel .card-info-subtitle-metadata,
.carousel .card:not(.card-type-station).card-info-title,
.carousel .card.card-type-playlist.image-loaded .card-info-subtitle-description,
.carousel .card.card-type-playlist.image-loaded .card-info-subtitle-metadata {
display: none !important;
}
/*
In top of Browse usually has bunch of Playlist or Album cards,
and they has .carousel as a wrapper and it hides anything that
overflows from its zone, aka our shadow and lifting animation.
*/
.carousel {
overflow: visible !important;
}
/*
Button with text Play
*/
.button.button-green,
.GlueButton.GlueButton--style-green {
color: var(--modspotify_main_bg) !important;
}
/*
Change text color in playlist
*/
.tl-explicit .label,
.tl-premium .label,
.tl-cell:not(.tl-number),
.tl-cell a:link,
.tl-highlight {
color: var(--modspotify_secondary_fg);
}
.card-type-album .card-info-title,
.card-type-track .card-info-title,
.card-type-collection-album .card-info-title,
.card-type-episode .card-info-title {
font-size: 15px;
font-weight: 900 !important;
text-align: center !important;
width: 100% !important;
}
.card-type-album .card-info-subtitle-links,
.card-type-track .card-info-subtitle-links,
.card-type-collection-album .card-info-subtitle-links,
.card-type-episode .card-info-subtitle-links {
text-align: center !important;
width: 100% !important;
}
.tracklist-station-container::after {
background: transparent !important;
}
.GlueHeader__background-overlay {
background: var(--modspotify_main_bg) !important;
}
/* Move navigation buttons and search field to the right and down */
.browser-navigation-top-bar {
margin-left: 40px !important;
margin-top: 15px !important;
}
.SearchInput__input,
.SearchInput__searchIcon,
.SearchInput__clearButton {
margin-top: 15px !important;
}
.content-top-bar__profile-menu-button {
margin-top: 15px !important;
}
.body-container--windows:not(.with-buddy-list):not(.messagebar) .content-top-bar__profile {
margin-right: 110px !important;
margin-top: -5px;
}
/* Spice up Fullscreen mode */
#view-player .album-art .album-art__image {
border-radius: 30px !important;
box-shadow: 0 10px 70px rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.5) !important;
}
#view-player .album-art .album-art__image .card-image-content-wrapper,
#view-player .album-art .album-art__image .card-image-content-wrapper .card-image {
border-radius: 30px !important;
}
/* Daily mixes */
.carousel .card-info-wrapper.card-info-with-description.card-info-with-metadata {
height: 50px !important;
}
/* Remove section divider */
.section-divider {
border-bottom: 0 !important;
}
/* Adjust Position of border active tab in Nav bar at top
and add little glowing effect
*/
.nav.navbar-nav {
overflow: hidden !important;
}
.nav.navbar-nav a {
overflow: visible !important;
}
.nav.navbar-nav a::after {
bottom: 0px !important;
width: 100% !important;
}
.nav.navbar-nav .active a::after{
box-shadow: 0 0px 20px !important;
}
.nav.navbar-nav a:focus:not(.button):active::after{
background-color: var(--modspotify_pressing_fg) !important;
}
/* Notification bar */
#content-wrapper #view-message-bar {
position: absolute !important;
width: calc(100% - 160px) !important;
margin-left: 80px !important;
border-radius: 0 0 10px 10px !important;
}
/* Small cover Big cover mechanism */
.now-playing.cover-size-transition.active.image-expanded .cover-image {
width: 10px !important;
height: 10px !important;
}
.now-playing.cover-size-transition.active.image-expanded .caption {
padding-left: 0px !important;
}
#view-now-playing a.image {
overflow: visible !important;
}
#view-now-playing.expanded {
width: 200px;
height: 200px;
}
#now-playing-image-large .cover-image {
height: 200px !important;
}
/* Profile arrow in top left */
.content-top-bar__profile-menu-button .dropdown {
position: fixed !important;
top: 10px !important;
-webkit-app-region: no-drag !important;
}
body.body-container--windows .content-top-bar__profile-menu-button .dropdown {
right: 190px !important;
}
body:not(.body-container--windows) .content-top-bar__profile-menu-button .dropdown {
right: 20px !important;
}
/* Small tooltip */
#tooltip {
box-shadow: 0 0 10px rgba(0,0,0,0.2) !important;
border-radius: 5px !important;
border: 2px solid var(--modspotify_main_fg);
padding: 10px 10px;
}
.tooltip-arrow-top, .tooltip-arrow-bottom {
display: none !important;
}
.lyrics-lines-container,
.message-container {
color: #FFFFFF !important;
}
/* Home page */
.GlueCarousel__grid-wrapper::-webkit-scrollbar-thumb {
display: none;
}
.GlueCard__info-wrapper,
.Card__info-wrapper {
margin-bottom: 30px;
}
.card-horizontal-interior-wrapper .card-info-title {
text-align: start !important;
}
.tl-row.selected:hover .tl-cell {
background: var(--modspotify_scrollbar_fg_and_selected_row_bg) !important;
}
.GlueTableRow--is-selected {
background-color: var(--modspotify_scrollbar_fg_and_selected_row_bg) !important;
}
.tracklist-podcast .tl-progress .row-progress__bar {
background-color: var(--modspotify_main_fg);
}
.Header__background-color{
background-color: var(--modspotify_main_bg) !important;
}
.Button--style-green,
.button.button-green, .button.button-white {
border-radius: 4px;
color: var(--modspotify_main_bg) !important;
}
.glue-page-header:not(.glue-page-header--album):not(.glue-page-header--playlist):not(.glue-page-header--artist):not(.glue-page-header--dailymix):not(.glue-page-header--user):not(.glue-page-header--show)
.glue-page-header__content-inner .glue-page-header__title-text,
.HomeHeader .Header__content-inner .Header__title-text-inner,
.MadeForYouHeader .Header__content-inner .Header__title-text-inner,
.RecentlyPlayedPage__header .Header__content-inner .Header__title-text-inner {
background-color: var(--modspotify_main_bg);
padding: 5px 20px;
border: 5px solid var(--modspotify_main_fg) !important;
border-radius: 6px;
box-shadow: 0 4px 12px 0 rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.2);
text-transform: uppercase;
}
.glue-page-header.glue-page-header--album .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--artist .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--dailymix .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--playlist .glue-page-header__content-inner .glue-page-header__title {
margin-top: 10px;
}
span.glue-page-header__title-text {
color: var(--modspotify_main_fg);
}
.glue-page-header .glue-page-header__content-inner .glue-page-header__button {
margin-top: 40px;
}
.glue-page-header__content-inner,
.glue-page-header__data,
.glue-page-header__title,
.Header__content-inner,
.Header__data,
.Header__title,
.Header__title-text,
.Header__title-text-inner {
overflow: visible !important;
}
/*Force player bar to has fixed height*/
.view-player {
height: var(--bar-height) !important;
border-top: 0;
}
.view-player .now-playing {
overflow: unset;
}
.view-player .now-playing .cover-image-link,
.view-player .now-playing .cover-image-link figure {
width: var(--bar-height);
height: var(--bar-height);
}
#now-playing-image-small .cover-image {
position: fixed !important;
width: var(--bar-height);
height: var(--bar-height);
left: 0;
bottom: 0;
}
.view-player .now-playing .cover-image-link-wrapper {
flex: 0 1 calc(var(--bar-height) + 10px);
}
.text-container {
z-index: 3;
}
.view-player .now-playing-container .button-add {
color: var(--modspotify_main_fg) !important;
}
.progress-container .progress-bar,
.progress-container .inner {
top: 0 !important;
margin-top: 0 !important;
height: 5px;
}
.progress-container .progress-bar-wrapper {
top: 0 !important;
height: 5px;
}
.progress-container {
position: fixed !important;
width: 100% !important;
bottom: var(--bar-height) !important;
margin : 0 !important;
}
.progress-container .inner {
border-radius: 0 2px 2px 0 !important;
background-color: var(--modspotify_main_fg) !important;
box-shadow: 0 2px 2px 0 var(--modspotify_main_fg);
}
.glue-page-header__p2s-details,
.glue-page-header__p2s-followers {
display: none;
}
.context-menu {
border: 2px solid var(--modspotify_main_fg);
box-shadow: 0 4px 12px 0 rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.2);
border-radius: 7px !important;
overflow: hidden;
}
#menu-wrapper ::-webkit-scrollbar {
display: none;
}
#menu-wrapper {
border-right: 3px solid black;
border-image: linear-gradient(0deg, transparent , var(--modspotify_scrollbar_fg_and_selected_row_bg) 40%, var(--modspotify_scrollbar_fg_and_selected_row_bg) 60%, transparent 90%) 2 90%;
}
.main-view-wrapper {
overflow: unset;
}
.Button--style-icon-stroke:after,
.Button--style-icon-stroke:hover:after,
.Button--style-icon-stroke,
.glue-page-header__button .button-icon-with-stroke,
.glue-page-header__button .button-icon-with-stroke::after {
box-shadow: unset;
}
.glue-page-header.glue-page-header--artist .glue-page-header__label {
padding-top: 10px;
}
.glue-page-header.glue-page-header--artist.has-custom-image .glue-page-header__label {
padding-top: 8px;
}
.glue-page-header__content .glue-page-header__label {
margin-left: -2px;
z-index: 2;
}
.glue-page-header__label span,
.Header__label span {
background-color: var(--modspotify_main_fg);
color: var(--modspotify_main_bg);
padding: 2px 10px;
}
.glue-page-header__label .header-verified-check {
background-color: transparent;
}
body.remotebar .view-player .player-bar-wrapper {
height: 100%;
}
.SidebarListItem--is-active:after,
.RootlistItem--is-active:after,
/* For Linux */ #view-navigation-bar .item.active:after {
background-color: transparent;
background-image: linear-gradient(90deg, var(--modspotify_sidebar_indicator_and_hover_button_bg) , transparent);
opacity: 0.2;
bottom: unset;
top: 5%;
height: 90%;
width: 100%
}
.Header__image-inner {
box-shadow: unset;
}

View File

@ -1,17 +0,0 @@
let
findModules = dir:
builtins.concatLists (builtins.attrValues (builtins.mapAttrs (name: type:
if type == "regular" then
(if name == "default.nix" then
[ ]
else [{
name = builtins.elemAt (builtins.match "(.*)\\.nix" name) 0;
value = dir + "/${name}";
}])
else if (builtins.readDir (dir + "/${name}")) ? "default.nix" then [{
inherit name;
value = dir + "/${name}";
}] else
findModules (dir + "/${name}")) (builtins.readDir dir)));
in builtins.listToAttrs (findModules ./.)

View File

@ -65,7 +65,12 @@ let
else
echo "Failed to decrypt the secret"
rm '${decrypted}.tmp'
exit 1
if [[ -f '${decrypted}' ]]; then
echo "The decrypted file exists anyways, not failing"
exit 0
else
exit 1
fi
fi
'';

View File

@ -1,5 +0,0 @@
{
"device": "alsa_output.pci-0000_00_1f.3.analog-stereo",
"device-profile": "output:analog-stereo+input:analog-stereo",
"preset-name": "HE4XX"
}

View File

@ -1,5 +0,0 @@
{
"device": "bluez_output.D8_37_3B_60_5D_55.a2dp-sink",
"device-profile": "a2dp-sink-aac",
"preset-name": "Bluetooth"
}

View File

@ -1,14 +0,0 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.deviceSpecific.wireguard;
kernel = config.boot.kernelPackages;
in {
config = mkIf cfg.enable {
boot.extraModulePackages = optional (versionOlder kernel.kernel.version "5.6") kernel.wireguard;
networking.firewall.checkReversePath = "loose";
environment.systemPackages = [ pkgs.wireguard-tools pkgs.mullvad-vpn ];
services.mullvad-vpn.enable = true;
startupApplications = [ "${pkgs.mullvad-vpn}/share/mullvad/mullvad-gui" ];
};
}

View File

@ -1,14 +0,0 @@
{ config, pkgs, lib, ... }: {
home-manager.users.alukard = {
programs.command-not-found = {
enable = true;
dbPath = ../../misc/programs.sqlite;
};
};
environment.sessionVariables = {
NIX_AUTO_RUN = "1";
};
}

View File

@ -1,119 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfgC = config.services.barrier.client;
cfgS = config.services.barrier.server;
in
{
options = {
services.barrier = {
client = {
enable = mkOption {
default = false;
description = "
Whether to enable the Barrier client (receive keyboard and mouse events from a Barrier server).
";
};
screenName = mkOption {
default = "";
description = ''
Use the given name instead of the hostname to identify
ourselves to the server.
'';
};
serverAddress = mkOption {
description = ''
The server address is of the form: [hostname][:port]. The
hostname must be the address or hostname of the server. The
port overrides the default port, 24800.
'';
};
autoStart = mkOption {
default = true;
type = types.bool;
description = "Whether the Barrier client should be started automatically.";
};
};
server = {
enable = mkOption {
default = false;
description = ''
Whether to enable the Barrier server (send keyboard and mouse events).
'';
};
configFile = mkOption {
default = "/etc/barrier-server.conf";
description = "The Barrier server configuration file.";
};
screenName = mkOption {
default = "";
description = ''
Use the given name instead of the hostname to identify
this screen in the configuration.
'';
};
address = mkOption {
default = "";
description = "Address on which to listen for clients.";
};
autoStart = mkOption {
default = true;
type = types.bool;
description = "Whether the Barrier server should be started automatically.";
};
};
};
};
config = mkMerge [
(mkIf cfgC.enable {
systemd.user.services."barrier-client" = {
after = [ "network.target" "graphical-session.target" ];
description = "Barrier client";
wantedBy = optional cfgC.autoStart "graphical-session.target";
path = [ pkgs.barrier ];
serviceConfig.ExecStart = ''${pkgs.barrier}/bin/barrierc -f ${optionalString (cfgC.screenName != "") "-n ${cfgC.screenName}"} ${cfgC.serverAddress}'';
serviceConfig.Restart = "on-failure";
};
})
(mkIf cfgS.enable {
systemd.user.services."barrier-server" = {
after = [ "network.target" "graphical-session.target" ];
description = "Barrier server";
wantedBy = optional cfgS.autoStart "graphical-session.target";
path = [ pkgs.barrier ];
serviceConfig.ExecStart = ''${pkgs.barrier}/bin/barriers -c ${cfgS.configFile} -f ${optionalString (cfgS.address != "") "-a ${cfgS.address}"} ${optionalString (cfgS.screenName != "") "-n ${cfgS.screenName}" }'';
serviceConfig.Restart = "on-failure";
};
})
({
services.barrier = if config.device == "AMD-Workstation" then {
server.enable = true;
server.autoStart = true;
server.configFile = pkgs.writeTextFile {
name = "barrier.conf";
text = ''
section: screens
ataraxia-pc:
dell-ataraxia:
end
section: links
dell-ataraxia:
right = ataraxia-pc
end
section: options
keystroke(super+alt+left) = switchInDirection(left)
keystroke(super+alt+right) = switchInDirection(right)
end
'';
};
} else {
client.enable = true;
client.serverAddress = "ataraxia-pc";
server.autoStart = false;
};
})
];
}

View File

@ -1,27 +0,0 @@
{ config, lib, pkgs, ... }:
{
home-manager.users.alukard = {
xresources.properties = with config.lib.base16.theme; {
"*foreground" = "#${base05-hex}";
"*background" = "#${base00-hex}";
"*cursorColor" = "#${base05-hex}";
"*color0" = "#${base00-hex}";
"*color1" = "#${base08-hex}";
"*color2" = "#${base0B-hex}";
"*color3" = "#${base0A-hex}";
"*color4" = "#${base0D-hex}";
"*color5" = "#${base0E-hex}";
"*color6" = "#${base0C-hex}";
"*color7" = "#${base05-hex}";
"*color8" = "#${base03-hex}";
"*color9" = "#${base09-hex}";
"*color10" = "#${base01-hex}";
"*color11" = "#${base02-hex}";
"*color12" = "#${base04-hex}";
"*color13" = "#${base06-hex}";
"*color14" = "#${base0F-hex}";
"*color15" = "#${base07-hex}";
};
};
}

View File

@ -75,12 +75,7 @@ with config.deviceSpecific; {
youtube-to-mpv
zathura
zoom-us
# misc
# i3status-rust
] ++ lib.optionals (!(isVM || isISO)) [
# rust-stable
# rust-nightly
libreoffice
] ++ lib.optionals isGaming [
lutris
@ -92,11 +87,6 @@ with config.deviceSpecific; {
acpi
] ++ lib.optionals (config.device == "AMD-Workstation") [
multimc
# xonar-fp
# Android dev
# androidenv.androidPkgs_9_0.androidsdk
# android-studio
# scrcpy
] ++ lib.optionals (enableVirtualisation) [
virt-manager
];

View File

@ -81,29 +81,4 @@ in {
};
}
];
}
# {
# home-manager.users.alukard = {
# # xdg.configFile."spicetify/Themes/base16/color.ini".source = ./color.ini;
# # xdg.configFile."spicetify/Themes/base16/user.css".source = ./user.css;
# services.spotifyd = {
# enable = true;
# package = (pkgs.spotifyd.override { withALSA = false; withPulseAudio = true; withPortAudio = false; });
# settings = {
# global = {
# username = "${config.secrets.spotify.user}";
# password = "${config.secrets.spotify.password}";
# backend = "pulseaudio";
# volume_controller = "softvol";
# device_name = "nix";
# bitrate = 320;
# no_audio_cache = true;
# volume_normalisation = false;
# device_type = "computer";
# cache_path = "${config.users.users.alukard.home}/.cache/spotifyd";
# };
# };
# };
# };
# }
}

View File

@ -9,9 +9,9 @@ in
cmd = "${pkgs.rxvt-unicode}/bin/urxvt";
desktop = "urxvt";
};
home-manager.users.alukard = {
home-manager.users.alukard = lib.mkIf (isISO || isVM) {
programs.urxvt = {
enable = (isISO || isVM);
enable = true;
extraConfig = {
"font" = "xft:${thm.powerlineFont}:style=Regular:size=${thm.smallFontSize}";
"boldFont" = "xft:${thm.powerlineFont}:style=Bold:size=${thm.smallFontSize}";
@ -65,5 +65,26 @@ in
"color21" = "#${thm.base06-hex}";
};
};
xresources.properties = with config.lib.base16.theme; {
"*foreground" = "#${base05-hex}";
"*background" = "#${base00-hex}";
"*cursorColor" = "#${base05-hex}";
"*color0" = "#${base00-hex}";
"*color1" = "#${base08-hex}";
"*color2" = "#${base0B-hex}";
"*color3" = "#${base0A-hex}";
"*color4" = "#${base0D-hex}";
"*color5" = "#${base0E-hex}";
"*color6" = "#${base0C-hex}";
"*color7" = "#${base05-hex}";
"*color8" = "#${base03-hex}";
"*color9" = "#${base09-hex}";
"*color10" = "#${base01-hex}";
"*color11" = "#${base02-hex}";
"*color12" = "#${base04-hex}";
"*color13" = "#${base06-hex}";
"*color14" = "#${base0F-hex}";
"*color15" = "#${base07-hex}";
};
};
}

View File

@ -2,7 +2,6 @@
boot = {
loader = {
systemd-boot.enable = lib.mkIf (pkgs.system == "x86_64-linux") true;
# efi.canTouchEfiVariables = true;
};
kernelPackages = pkgs.linuxPackages_latest;

View File

@ -5,7 +5,6 @@ with rec {
with deviceSpecific;
{
secrets.samba = {
# encrypted = "${config.home-manager.users.alukard.xdg.dataHome}/password-store/samba/linux.gpg";
services = [ ];
};

View File

@ -4,7 +4,6 @@ with config.deviceSpecific; {
hardware.cpu.${devInfo.cpu.vendor}.updateMicrocode = true;
hardware.enableRedistributableFirmware = true;
# Enable hardware video acceleration for Intel
nixpkgs.config.packageOverrides = pkgs: {
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
};
@ -33,9 +32,4 @@ with config.deviceSpecific; {
] else if devInfo.gpu.vendor == "intel" then [
i915
] else [ ];
# environment.systemPackages = if devInfo.gpu.vendor == "amd" then
# # [ (pkgs.mesa.override { enableRadv = true; }) ]
# [ pkgs.mesa ]
# else
# [ ];
}

10
profiles/mullvad.nix Normal file
View File

@ -0,0 +1,10 @@
{ pkgs, lib, config, ... }:
let
vpn = config.deviceSpecific.wireguard;
in {
config = lib.mkIf vpn.enable {
services.mullvad-vpn.enable = true;
home-manager.users.alukard.home.packages = [ pkgs.mullvad-vpn ];
startupApplications = [ "${pkgs.mullvad-vpn}/share/mullvad/mullvad-gui" ];
};
}

View File

@ -12,7 +12,9 @@
autoOptimiseStore = false;
package = inputs.nix.packages.x86_64-linux.nix;
package = inputs.nix.packages.x86_64-linux.nix.overrideAttrs (oa: {
patches = [./nix.patch] ++ oa.patches or [];
});
extraOptions = ''
experimental-features = nix-command flakes

42
profiles/nix/nix.patch Normal file
View File

@ -0,0 +1,42 @@
diff --git a/src/libstore/profiles.cc b/src/libstore/profiles.cc
index 5d1723886..4f2e4f5db 100644
--- a/src/libstore/profiles.cc
+++ b/src/libstore/profiles.cc
@@ -250,13 +250,6 @@ Path getDefaultProfile()
{
Path profileLink = getHome() + "/.nix-profile";
try {
- if (!pathExists(profileLink)) {
- replaceSymlink(
- getuid() == 0
- ? settings.nixStateDir + "/profiles/default"
- : fmt("%s/profiles/per-user/%s/profile", settings.nixStateDir, getUserName()),
- profileLink);
- }
return absPath(readLink(profileLink), dirOf(profileLink));
} catch (Error &) {
return profileLink;
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc
index e04954d45..5649bd01a 100644
--- a/src/nix-env/nix-env.cc
+++ b/src/nix-env/nix-env.cc
@@ -1336,19 +1336,6 @@ static int main_nix_env(int argc, char * * argv)
globals.instSource.nixExprPath = getHome() + "/.nix-defexpr";
globals.instSource.systemFilter = "*";
- if (!pathExists(globals.instSource.nixExprPath)) {
- try {
- createDirs(globals.instSource.nixExprPath);
- replaceSymlink(
- fmt("%s/profiles/per-user/%s/channels", settings.nixStateDir, getUserName()),
- globals.instSource.nixExprPath + "/channels");
- if (getuid() != 0)
- replaceSymlink(
- fmt("%s/profiles/per-user/root/channels", settings.nixStateDir),
- globals.instSource.nixExprPath + "/channels_root");
- } catch (Error &) { }
- }
-
globals.dryRun = false;
globals.preserveInstalled = false;
globals.removeAll = false;

View File

@ -32,6 +32,7 @@ in
vscode-fhs = master.vscode-fhs;
vivaldi = master.vivaldi;
multimc = pkgs.qt5.callPackage ./packages/multimc.nix { multimc-repo = inputs.multimc-cracked; };
nix-direnv = inputs.nix-direnv.defaultPackage.${system};
steam = super.steam.override {
extraLibraries = pkgs: with pkgs; [
pipewire

View File

@ -7,47 +7,24 @@ with config.deviceSpecific; {
hardware.bluetooth.enable = true;
services.blueman.enable = true;
services.redshift = {
enable = true;
temperature.day = 6500;
temperature.night = 3000;
};
services.earlyoom = {
enable = devInfo.ram < 16;
freeMemThreshold = 5;
freeSwapThreshold = 100;
};
# Enable zram, disable zswap
zramSwap = {
enable = true;
algorithm = "zstd";
memoryPercent = 60;
numDevices = 1;
};
boot.kernelParams = [ "zswap.enabled=0" ];
services.fstrim = {
enable = isSSD;
interval = "weekly";
};
services.udev.packages = [ pkgs.stlink ];
services.redshift = {
enable = true;
temperature.day = 6500;
temperature.night = 3000;
};
# services.avahi = {
# enable = true;
# nssmdns = true;
# publish = {
# enable = true;
# addresses = true;
# domain = true;
# };
# };
systemd.services.systemd-udev-settle.enable = false;
services.upower.enable = true;
services.thermald.enable = isLaptop;
services.tlp = {
enable = isLaptop;
@ -78,5 +55,18 @@ with config.deviceSpecific; {
gpuOffset = -48; # -54
};
services.thermald.enable = isLaptop;
services.udev.packages = [ pkgs.stlink ];
services.upower.enable = true;
systemd.services.systemd-udev-settle.enable = false;
# Enable zram, disable zswap
zramSwap = {
enable = true;
algorithm = "zstd";
memoryPercent = 60;
numDevices = 1;
};
boot.kernelParams = [ "zswap.enabled=0" ];
}

View File

@ -26,23 +26,6 @@ in {
markup = "full";
};
# urgency_low = {
# background = "#${thm.base01-hex}";
# foreground = "#${thm.base03-hex}";
# timeout = 5;
# };
# urgency_normal = {
# background = "#${thm.base02-hex}";
# foreground = "#${thm.base05-hex}";
# timeout = 10;
# };
# urgency_critical = {
# background = "#${thm.base08-hex}";
# foreground = "#${thm.base06-hex}";
# timeout = 15;
# };
urgency_low = {
background = "#${thm.base01-hex}";
foreground = "#${thm.base05-hex}";

View File

@ -11,12 +11,9 @@ in
roboto
roboto-mono
roboto-slab
# powerline-fonts
# Icons
# font-awesome_4
font-awesome
material-icons
# material-design-icons
];
fontconfig = {
enable = lib.mkForce true;

View File

@ -4,6 +4,7 @@
LESS = "MR";
LESSHISTFILE = "~/.local/share/lesshist";
SYSTEMD_LESS = LESS;
CARGO_HOME = "${config.home-manager.users.alukard.xdg.dataHome}/cargo";
};
home-manager.users.alukard = {

View File

@ -23,6 +23,7 @@
"100:class_i ?= 'vivaldi-stable'"
"100:class_g = 'mpv'"
"100:class_g = 'explorer.exe'"
"100:class_g = '.scrcpy-wrapped'"
"90:class_g = 'URxvt' && focused"
"70:class_g = 'URxvt' && !focused"
];

View File

@ -67,18 +67,27 @@
nixify() {
if [ ! -e ./.envrc ]; then
echo 'use nix' > .envrc
echo 'use flake' > .envrc
direnv allow
fi
if [ ! -e shell.nix ]; then
cat > shell.nix <<'EOF'
{ pkgs ? import <nixpkgs> {} }:
# with import <nixpkgs> {};
pkgs.mkShell {
# Hack SSL Cert error
GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt;
SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt;
buildInputs = [];
if [ ! -e flake.nix ]; then
cat > flake.nix <<'EOF'
{
description = "shell environment";
inputs = {
nixpkgs.url = github:nixos/nixpkgs/nixos-unstable;
};
outputs = { self, nixpkgs, ... }@inputs: {
devShell.x86_64-linux = let
pkgs = import nixpkgs { config.allowUnfree = true; localSystem = "x86_64-linux"; };
in pkgs.mkShell {
nativeBuildInputs = [ ];
buildInputs = with pkgs; [ ];
shellHook = "";
};
};
}
EOF
fi

View File

@ -1,5 +1,5 @@
{ inputs, ... }: {
imports = with inputs.self.nixosModules; [
imports = with inputs.self.nixosModules; with inputs.self.nixosProfiles; [
inputs.home-manager.nixosModules.home-manager
applications

View File

@ -1,17 +1,17 @@
{ inputs, ... }: {
imports = with inputs.self.nixosModules; [
imports = with inputs.self.nixosModules; with inputs.self.nixosProfiles; [
./base.nix
inputs.base16.hmModule
applications-setup
filesystems
hardware
mullvad
samba
services
sound
themes
virtualisation
wireguard
xserver
alacritty
@ -39,6 +39,5 @@
light
picom
print-scan
xresources
];
}